Commit graph

460 commits

Author SHA1 Message Date
James R
30e8d1663d Register a bunch of commands with COM_AddDebugCommand, so they show up on the cheats menu
- angle
- archivetest
- assert
- bind
- causecfail
- clearscores
- countmobjs
- crash
- debugrender_highlight
- devmode
- displayplayer
- downloads
- eval
- gametype
- give
- god
- goto
- gravflip
- grayscale
- help
- hurtme
- isgamemodified
- listmapthings
- listwad
- memdump
- memfree
- minigen
- musicdef
- noclip
- numthinkers
- objectplace
- ping
- playsound
- randommap
- resetcamera
- respawnat
- restartaudio
- rteleport
- savecheckpoint
- scale
- setrings
- setscore
- setspheres
- showmap
- showscores
- showtime
- skynum
- teleport
- togglemodified
- tunes
- version
- view
- weather
2023-09-01 22:13:17 +01:00
James R
6c0b042eed Refactor cvar definitions completely, move everything to cvars.cpp
- No need to call CV_RegisterVar
- Cvar definitions live in only one file, easier to locate
- Organized into sections -- netvars, cheats, etc.
- Use builder pattern to initialize cvars
- Still need to extern if you want to read the cvar value
2023-08-25 17:22:40 -07:00
James R
f4ca6001d8 s_sound: remove unused OpenMPT stuff 2023-08-24 04:56:02 -07:00
James R
c5e341769b Remove unused cvars
- growmusicfade
- invincmusicfade
- music_resync_powerups_only
- music_resync_threshold
- renderstats (wasn't even registered in the console!)
- resetspecialmusic
- resume
- samplerate
- stretch
- tailspickup
2023-08-24 04:52:41 -07:00
James R
dbca307ad4 Fix sound handling in demo freecam
- Object sounds are audible from the location of the
  camera
- Certain HUD sounds should no longer be audible
  - For instance, lap complete sfx
2023-08-19 05:01:40 -07:00
James R
d3577c02b9 Port tunes command to new music system
The tunes command basically operates the Stereo now, with
the distinction that the song loops forever.

tunes -none will stop music indefinitely. Only the Stereo
can override it.

tunes -default restores level music to the correct time.
2023-08-06 17:31:45 -07:00
James R
feada89364 Port Sound Test (Stereo) code to new music system
Much of struct soundtest was removed, since the music
system handles its functionality now.
2023-08-06 17:31:45 -07:00
James R
39f46a0f20 Replace music handling
(This commit does not compile. Sound test and tunes
command code needs to be ported after this.)

This is a big one. Here's the rundown:

The old music system was very direct, much of the time
just a proxy to the real sound API in i_sound.h.

You could change the music on command, but there wasn't
a consistent way to prevent some music from playing over
others. P_RestoreMusic is one example of needing to
address this problem. The jingles system was intended as
another solution. Furthermore, sound test (Stereo) has its
own needs.

I am removing all of that. Music handling in general is
now a very deliberate system, kind of similar to jingles.

In the new system, "tunes" are registered. The tune stores
info such as whether it should loop or fade out. Most of
the configuration is intended to be initialized only ONCE.
Tunes can be mapped to an actual music lump. They can be
remapped at any time too.

Tunes are also configured with a priority number. This
determines which tune is heard, if multiple are supposed
to be playing at a time. You can even tell a tune how long
it should play, so it's unnecessary to track this with
bespoke timers.
2023-08-06 17:31:45 -07:00
James R
646701c55c Remove Lua Music API
In preparation for replacing music handling entirely.
Eventually, we can make a new Lua API.
2023-08-05 16:26:53 -07:00
AJ Martinez
5a703240bd Slow down level music in Encore - "vape mode" 2023-08-01 19:04:30 -07:00
toaster
2dbb11af89 Use S_AttemptToRestoreMusic to handle music after server connection
Resolves #473
2023-07-22 19:24:25 +01:00
toaster
c5dc430b50 V_6WIDTHSPACE no longer a pitfall for using V_DrawThinString
The bunched text behaviour is now the primary mode of operation for TINY_FONT.
2023-07-12 09:00:29 +01:00
toaster
a536f884ce V_ALLOWLOWERCASE --> V_FORCEUPPERCASE
Content of commit was originally written by Sal, but as a monolithic commit. The author of this commit is chunking it up for easier review.

Simple inversion on the face of things, but with a long tail of consequences, including 19 changed files.

Forced uppercase has been applied in a handful of locations where it was aesthetically imperative. Most menus will follow in another commit, so that that may be reverted if we change the default menu font.
2023-07-12 09:00:29 +01:00
toaster
d9589edbb8 S_ShowMusicCredit: If the track has no title, clear existing music credit. 2023-06-13 22:15:33 +01:00
toaster
d9fd0eda2e Fix lack of NULL setting for the last musicdef in the list's sequence.next 2023-06-13 20:37:31 +01:00
toaster
ff089afad1 S_StopSoundByID: Permit NULL origin to be stopped manually 2023-06-09 18:36:48 +01:00
toaster
ce6737aa67 S_SoundTestPlay: Set MINIMUM looping of ~4 seconds, for the sake the extremely short votepick song. 2023-06-03 15:41:52 +01:00
toaster
1d619d10f2 Add Podium level to Stereo Mode
- LF2_HIDEINMENU is considered equivalent to LF2_FINISHNEEDED for:
    - S_SoundTestDefLocked
        - So you don't see podium stuff without having beaten a GP
    - MV_FINISHNEEDED
        - So the status is saved to gamedata and persists between launches if custom
- G_UpdateVisited is now called in K_FinishCeremony, so level is marked as beaten
2023-06-03 14:24:46 +01:00
toaster
4c34d04f8a recorddata_t handling adjustments
Preperatory work for the next feature on my agenda.
- No longer independently allocated.
    - This was a byproduct of the previous NUMMAPS-based implementation. It's just cleaner to have it live directly on the mapheader_t, no caveats about it.
- Now contains mapvisited bitflag array.
    - Now all to-gamedata properties on a mapheader's struct are grouped together.
        - I was of two minds about it, but decided that this would have cleaner guarantees for compartmentalisation, saving, and loading.
        - They can still be wiped independently (G_ClearRecords for time/lap and M_ClearSecrets for mapvisited).
2023-05-30 12:21:39 +01:00
toaster
6935bf4754 S_AttemptToRestoreMusic: Handle both GS_INTERMISSION and musiccountdown (via FALLTHRU) 2023-05-02 18:16:26 +01:00
toaster
a31d83cd6b Resolve #510 by not stopping attempted playback/sequence when song duration is 0 2023-04-08 12:39:02 +01:00
toaster
d432cf3837 musicdef important parameter: Guarantee match by touppering the character 2023-04-08 12:32:47 +01:00
toaster
dc8a97475f musicdef_t: Add an important parameter
If set to true/yes/1, add at the head of the sequence in S_PopulateSoundTestSequence.
Otherwise, append to the tail.
2023-04-08 12:32:47 +01:00
toaster
5dd4e36b72 S_StopMusicCredit: Make killing a music credit a request, not a guarantee
Fixes some menu events causing Stereo-caused music credits to disappear
2023-04-08 12:32:47 +01:00
toaster
2e687b4033 Sound credits no longer go off the screen
Uses V_ThinStringWidth to check whether it'd exceed BASEVIDWIDTH.
Does not apply to the main song title - if that exceeds the width of the screen, just visibly fail.
2023-04-08 12:32:46 +01:00
toaster
37c1a40da6 S_SoundTestPlay: Improvements
- Tidy conditionals
    - Fixes dosequencefadeout potentially not being set for this particular track.
- Only functionally loop the song if the duration before looping is less than 3 minutes.
    - Ensures particularly long songs that already do minor variations of the same loop don't overstay their welcome.
2023-04-08 12:32:46 +01:00
toaster
1bdbfdf22b S_TickSoundTest: Clean up significantly.
- Introduce comments to make flow understandable.
- Abstract the number of seconds in the fade out (previously handled across multiple places) into SOUNDTEST_FADEOUTSECONDS.
- Make all next/conclude song cases for autosequence and non-looping track handled in one place.
    - Fixes the case where a non-looping track could stop the Sound Test even in autosequence mode.
2023-04-08 12:32:46 +01:00
Oni
dec66ee9b1 Merge branch 'jam-project' into 'master'
Stereo Mode

See merge request KartKrew/Kart!1097
2023-03-31 01:07:38 +00:00
toaster
027fd2be04 Time elapsed functionality
- Shown on the menu
- soundtest.autosequence
    - Plays all songs in sequence, skipping over the soundtest entry.
        - Plays each looping song twice (and fades out if it's the last one in the musicdef's tracks)
        - Plays non-looping songs once with no fade ever
   - Disabled when S_SoundTestStop called
- Songs that end outside of autosequence will now stop the visible Playing.
2023-03-31 00:27:20 +01:00
toaster
fe8db18066 Store non-looping information in musicdef
Preface with a `\` (ie `Lump VOTEEA,\VOTEEB`) to indicate the preference is not to loop.
This is for special jingles that have definitive conclusions.
2023-03-30 23:28:51 +01:00
James R
6e79ae9a3e Command_MusicDef_f: fix typo 2023-03-29 18:24:49 -07:00
toaster
5a802219ce M_SoundTestNextPrev: Set cv_soundtest to 0 when returning to the soundtest entry 2023-03-30 01:11:22 +01:00
toaster
53fc4aec0a Adjustments to user handling of Stereo
Per VC discussion:
- Pressing STOP does not NULL your selected song
    - ...unless you press it a second time while already stopped
- Pressing PLAY should de-activate pause if active, not restart the track
- Pressing PAUSE while paused should not de-activate pause
- Removed the Extra functionality from TRACK.
2023-03-29 16:04:13 +01:00
toaster
bc07cfa94b S_SoundTestTogglePause
Instead of a fake S_StopMusic-based Pause, make it use the S_PauseAudio/S_ResumeAudio system.
2023-03-29 13:39:40 +01:00
toaster
b1b6756e6a S_AttemptToRestoreMusic
Per review, combine all spots where s_sound.c attempts to restore music into one gamestate-specific switch case system.
2023-03-29 12:56:28 +01:00
James R
8bd6c9cffb Add musicdef->debug_volume, add musicdef console command
musicdef -volume <volume> changes the volume of the
currently playing song. The change persists through song
changes and is visible with devmode music.

musicdef -show prints all changed musicdef volumes.

The intention of this command is to allow editing music
volumes quickly in game, without having to quit, edit
music.pk3, and reopen the game.
2023-03-29 01:22:40 -07:00
toaster
9a343bd465 mapheader_t: PositionMusic property
A little off-piste, but a trivial addition since I'm changing this part of the code.
- Plays in Position outside of Encore
- Shows up first in the Sound Test sequence for that map
2023-03-28 15:14:09 +01:00
toaster
3e476568ea mapheader_t: AssociatedMusic property
Enables things like the Goin' Down!? segment in Speed Highway to be connected directly to access to that map.
2023-03-28 13:50:05 +01:00
toaster
8e8c2273e9 S_FindMusicDef: Handle NULL/empty string explicitly 2023-03-28 13:47:25 +01:00
toaster
1f82285c39 S_SoundTestDefLocked: Account for Sealed Stars-style LF2_FINISHNEEDED completion lock. 2023-03-28 13:13:22 +01:00
toaster
8bd3786895 S_UpdateSoundTest: Add a "dotracks" parameter
- Integrates the maps with multiple tracks into the Next/Prev sequence, if true.
- For testing, currently active - but I may add features later that would be more fitting.
2023-03-28 13:06:39 +01:00
toaster
4f4976024c S_UpdateSoundTest: Corrections
- Fix inverted skipnull condition for forward sequence traversal
- Remove comment stating we used a naive implementation. The author of this commit used a triple pointer in the last one, this is anything but naive
2023-03-28 12:42:22 +01:00
toaster
90d5cb3752 S_PopulateSoundTestSequence: Sound Test sequence system
- Called on game start and file add
- Creates a seperate linked list sequence for map-related order
    - All tracks without associated map in level order
    - All tracks with maps in a cup in cup order
    - All tracks with maps in Lost and Found
2023-03-28 01:41:53 +01:00
toaster
3d40e83700 S_SoundTestPlay: Exit early into S_SoundTestStop if current entry is NULL 2023-03-28 01:31:39 +01:00
toaster
8f592c196f Stereo mode
- Minimum viable implementation
- New horizontal menu
    - FUTURE WORK: visuals are extremely basic
- Accessible from both Extras and in-game Pause if SECRET_SOUNDTEST is unlocked
- Rather than the Shadow-the-Hedgehog style free select of SRB2's Sound Test, it's a Best Of The Hacks And Fan Music Sega CD player.
    - Back
        - Exit menu
    - Stop
       - Stops Stereo music entirely
    - Pause
      - Pauses Stereo music without losing place in sequence
          - FUTURE WORK: This should probably just pause the actual player ala minimised viewport
    - Play
      - Begins Stereo music on non-NULL musicdef entry
    - Track
      - For NULL soundtest entry:
          - Switches between sfx
      - For musicdefs with multiple tracks:
          - Switches between them
    - Prev and Next
        - Changes musicdef entry
            - FUTURE WORK: This is extremely naive and doesn't respect the following
                - Cup order
                - Unlocks
- Overrides all game-requested music changes when in Play or Pause mode
    - This makes it an actual fun in-game feature as a menuification of the `tunes` command, not just a pure novelty.
2023-03-25 23:37:07 +00:00
toaster
afff038e34 s_sound.c: Only call P_RestoreMusic in GS_LEVEL
This function isn't supposed to be called outside of it
2023-03-25 22:43:54 +00:00
toaster
a0fa45bcec S_PlaysimMusicDisabled
Simplifies/unifies conditions that except regular music play other sections of the game can modify
2023-03-25 22:16:58 +00:00
toaster
62a573090b musicdef_t: Permit multiple tracks (music lumps) associated with the same entry
- Now supports "Lump MENU2,MENU3".
- Automagically appends (A) and (B) instead of having to user-specify them as part of the track name.
2023-03-23 20:08:44 +00:00
toaster
cb4d9b527e musicdef_t: Add hash field
Slight optimisation for S_FindMusicDef, but will net us some big wins with our next feature.
2023-03-22 23:34:01 +00:00
James R
253489b75c Merge branch 'vol-cvar-defaults' into 'master'
Normalize all volume scales to 0-100

See merge request KartKrew/Kart!1030
2023-03-12 03:50:57 +00:00