Build 8763
SVN-
General
Fix stupid menu bug
SVN handles and Git names are merged into one person.
Fix stupid menu bug
GCC 9.3.0 Windows build fix
Fix GCC 9.3.0 signedness warning
Add file selector for choosing which .sf2 bank to use
This also adds a menu option for OPL3 stereo mode. Windows MME output device selection is probably next (this can already be done through the console).
Stylistic changes to driver_winmm
This changes the code formatting and style of driver_winmm to better match our style guidelines.
Move a couple things around in the audiolib headers so we can access them from the game code
Make quitting by closing the window, now done via CON_Quit,
a bit more usable in multiplayer, hiding the engine's console.
Modify MenuLevel and RunLevel by using CON_Quit,
toggling MultiPlayQuitFlag on instead of QuitFlag in multiplayer games if a player tries to close the window. Further update MNU_QuitCustom to use CON_Quit. - In RunLevel, this fixes quit of game for all players. - In MenuLevel, this leads to transmit of PACKET_TYPE_MENU_LEVEL_QUIT. However, the work isn't complete, since the game isn't shut down on the peers' sides, leading to possibly undesired side-effects. Currently known issue: - If the master closes the window, the scores won't be shown for the master. Reason is that waitforeverybody will terminate the app.
sw/src/game.cpp:StatScreen crash bug fix: For a given player p,
use p->TeamColor instead of User[p->PlayerSprite]->spal, since it's possible the player left before the map was loaded.
Add a few calls to handleevents around key press loops. Also check
quitevent in the game, and further call getpackets within StatScreen.
Make sure StatScreen is called around the same time for
all players after level change. This is done by adding calls to getpackets within the BonusScreen and StatScreen while loops. It is related to a change from the DOS versions of 1997. Basically, dosendpackets immediately sends all packets via the commit driver under DOS, while in the mmulti port in use here, sending might be postponed. This was leading to a problem with the game entering waitforeverybody before showing the stats. In particular, it initially attempted to send a PACKET_TYPE_PLAYER_READY message, which could get postponed in the manner described above. In case it received PACKET_TYPE_PLAYER_READY messages from all other peers before the time arrived for sending pending packets, though, waitforeverybody would return, eventually leading to a call to StatScreen/BonusScreen, without sending the pending message until the user in question continued. Other peers would have to wait for the given player to confirm level change before they could see their own stat screens.
Engine compatibility update: ksqrt
Add userdata field to DemandFeed
Backported from Rednukem.
Fix OOB in polymost_spriteIsModelOrVoxel
Revert r8712
I forgot this bunch of SDL2 headers like an idiot
Fix IF crouch jumping and unintentional automatic crouching under sprites
ifndef EDUKE32_STANDALONE a couple more hard-coded Duke3D sound IDs that were missed previously
Reduce width of a couple fields in memberlabel_t
Make gamestructures a proper object
sw/src/game.cpp: Fix crash following an abort of InitGame while
processing multiplayer params or waiting for players. It's been decided that Control won't call TerminateGame in this case, one implication being that voidsw.cfg is not updated.
Do limit Master/Slave support to 2-players sessions.
Thanks to LittleTijn for testing and inspecting.
mmulti.cpp: Resurrect P2P multiplayer with 3+ players from SVN r129
sw/src/game.cpp: Update processing of multiplayer-related arguments,
mostly from JFSW commits 7a95dee807c735de6588372e268af7a5c7cdc533 and 6137b48d6d432c34d94d08fea527b89539cc3adb. In particular, this makes Master/Slave usable for 2-player sessions, with SW's networking code behaving as if these were actually Peer-2-Peer sessions. Thanks to JonoF for his work on the support.
sw/src/draw.cpp:ResizeView: Make map zooming less dependent
on the frame rate
sw/src/menus.cpp: Remove nonexisting MNU_ClearDialog function prototype
sw/src/weapon.cpp: Comment out unused MissileSeek and ComboMissileSeek
params, but leave them for documentation. Note that currently, the only use of ComboMissileSeek is in the saveable_weapon_code array.
Comment out function parameters accessed only in commented out code
Mark function parameters as unused in cases we can't easily change
the functions' signatures (often due to being used as callbacks/hooks)
Take care of unused parameters in sw/src/menus.cpp:MNU_DoMenu.
Note that the passed type is always ct_mainmenu.
sw/src/player.cpp: Remove unused globals related to mouse status
sw/src/player.cpp: A bit more complicated cases of unused vars
Handle cases in which the result of an expression
with (possible) side-effects is written to an unused var.
sw/src/inv.cpp: Move unused global pal arrays to #if 0 block
Comment out unused vars, which would become
used if previously commented out code was uncommented (including a few instances of uninitialized var reads).
Add O_BINARY to buildvfs_open_read
Fix two sources of null text drawing
Add null pointer checks to G_ScreenText*
sw/src/network.cpp:getpackets: Fix trimming of message in
packet of type PACKET_TYPE_MESSAGE. This reverts a tiny portion of JFShadowWarrior commit 6b01a4703d55ae3e131d8c11903ff2dcd78c15d8.
sw/src/network.*: Sync the player's MouseAimingOn field. This is required for the slope tilting check in player.cpp:PlayerAutoLook, introduced in JFBuild commit 1915f408962b4d9c814f64affda634d28582e25e and updated in commit ef9aea53aced8fd90c701d0c8a9a927a23dd0a40.
Make the gtkbuild_msgbox/gtkbuild_ynbox dialog disappear after response
build/src/sdlayer.cpp: Fix crash following
video mode change in USE_OPENGL=0 build.
kenbuild/src/game.cpp: Expose restartvid, vidmode and map OSD commands
in USE_OPENGL=0 builds, and further make setrendermode usable.
Fix USE_OPENGL=0 build
kenbuild/src/game.cpp: Set console key default to `
kenbuild/src/game.cpp: Import mirror fix for SW from SVN r8588.
Import mmulti.c from JFBuild commit 6308de2d1664fbd4e81c7e3f9c1a436db1e2a686 with minor changes
Import mmulti.h from JFBuild commit c651d35c56eae07488a9cef421fbe33ae9dc9f9a,
with minor changes.
Refresh status bar after showing tiled overhead map in GL mode
Move minitext_lowercase calculation to a new G_InitText() in text.cpp
Big refactor to take an array of tilenums (or control codes) instead of a C string
Remove TEXT_LINEWRAP
Move TEXT_{INTERNAL,TILE}{SPACE,LINE} handling off the critical path
Eliminate GetSubString, including its heap allocation
polymost.cpp: In gloadtile_art_indexed(), reallocate a texture when the tile changes dimensions even if it is shrinking
Macros for a couple hardcoded values
This lets the player jump into the vents in DUKEDC3.MAP
Since this is Duke3D, I'm sure this change breaks something else.
Re-enable ignoring 256 units of curb when clipping against ceilings
This fixes getting stuck on tiny lips created by sloppy slopes in the undersized vents in DUKEDC3.MAP.
Bump clang-format ColumnLimit to 165
Rename ZOFFSET1 to ACTOR_FLOOR_OFFSET and use ACTOR_MAXFALLINGZVEL in several places where it should have been used
Activate engine compatibility
Backport engine compatibility variable from NBlood/Rednukem/PCExhumed
Don't restart the music when loading a save playing the same track
Add handleevents to end credits
From JFSW commit 0c651743f8371fade0231e9c3206ca25e6ae5269
Fix potential blank 3DR logo
From JFSW commit 18d1c68893693e68d0ce7d41bd1eacbec5655d4f
Fix stupid typo that broke conveyor belts
Improve player input locking logic
This fixes the issue with mouse input and viewscreens.
Print HRESULT error message when DwmGetCompositionTimingInfo() fails (wtf?)
Fix hilarious bug where holding the strafe modifier and pressing turn left/right moved the player in the wrong direction
Revert "Hackish fix for spline interpolation crash in libxmp-lite"
Add -nosteam command line parameter
Call communityapiInit() from the game's app_main() instead of baselayer_init()
Add r_maxfps -1, an automatic setting that limits the framerate to the refresh rate -1 for each increment over 60Hz the refresh rate is
E.g 60Hz > 59 fps 120Hz > 118 fps 144Hz > 141 fps 165Hz > 162 fps This also changes G_FPSLimit() back to a more simplistic calculation, because what was there didn't quite seem to make sense.
Custom driver-independent VSync implementation for Windows