Commit graph

225 commits

Author SHA1 Message Date
Marcus Minhorst
e9dbf55f2e Implemented dinput stubs 2025-07-08 10:11:28 -03:00
Marcus Minhorst
a41ced099c Implemented rawps2 stubs 2025-07-08 10:11:28 -03:00
Marcus Minhorst
bac24118c2 Implemented xinput stubs 2025-07-08 10:11:28 -03:00
Marcus Minhorst
8c12037ef4 Unified gamepad settings 2025-07-08 10:11:28 -03:00
Marcus Minhorst
92e66479fc Added stubs and helper functions 2025-07-08 10:11:28 -03:00
Marcus Minhorst
d75d3aacf9 SDL2 GameController API utilized 2025-07-08 10:11:28 -03:00
Marcus Minhorst
6ec17f28eb Cleanup: Alignment, long lines, Replace 0 with SDLK_UNKNOWN 2025-07-08 10:11:28 -03:00
Marcus Minhorst
0f72a671fc Revert "Gamepad Improvements"
This reverts commit 2a5cce543b.
2025-07-06 20:40:03 -03:00
Boondorl
9701bfaa5c Added multiplayer tab for launcher + backend improvements
Adds a multiplayer tab to allow hosting and joining games from within the GZDoom launcher rather than needed to use the command line. This has its own set of defaults independent from the main play page which necessitated rewriting how this information is passed and stored in the backend. A startup info struct is now passed back which has its defaults set from the cvars and then propagates any changes to it back to the defaults after selection is complete, making it much simpler to interface with the engine defaults.
2025-07-05 18:12:21 -03:00
Marcus Minhorst
2a5cce543b
Gamepad Improvements
* Cleanup: Alignment, long lines, Replace 0 with SDLK_UNKNOWN

* Gamecontroller api analogue input

* Added some button handling

* Added mapping for other buttons

* Added trigger events

* Added force_joystick flag

* Removed force_joystick flag

Rationale:
1. It was actually broken lol
2. I cannot think of a case where enabling this would be a useful thing for
gzdoom. If the user is using a gamecontroller, it is pointless. If they are
not using a gamecontroller, it will just default to using the joystick api.
If they are not using a gamecontroller, but SDL thinks they are, it is an
SDL bug, and will be reported and fixed

* Modified default mapping

* Added analogue to digital threshold

* Added analogue response curve

* Per axis settings

* Fixed controller reconnect

* Added threshold and curve to IJoystickConfig
Enabled saving of settings

* Added stubs

* Cleanup

Constants are no longer defines.
Constants are mostly shared between backends.
Moved some logic to m_joy

* Implemented xinput stubs

* Implemented dinput stubs

* Implemented ps2 stubs (untested)

* Fixed inclusive check

* Implemented osx stubs (untested)

* Fixed curve implementation

No longer savable, I screwed the curve function up.
I though it needed 2 control points, but it needs 4.
Need to re-do controller settings :(

* Now using CubicBezier struct

* Fixed SetDefaultConfig to match xinput behavior

* Expanded gamepad CCMD

* Rename enum JoyResponseCurve to EJoyCurve

* Initial menu implementation

* Fixed SDL controller setting saving

* SDL gamepads can now actually be disabled

* Fixed initial controller connect of some versions of SDL

* Spelling error

* Enable gamepad by default

* Fixed segfault on some versions of SDL

* Only block keydown
2025-07-05 17:41:40 -03:00
Boondorl
cf9a9097b9 Fix up saving in multiplayer
By default allow only settings controllers to save the game. Use actual file names to help prevent possible save file overriding as savexx is unreliable online. Prevent quicksave behavior from working with the rotator. Force a unique netgame subfolder for multiplayer saves to remove the ability to override singleplayer saves. Send over the host's -loadgame argument to make loading easier (will not override the guest's -loadgame in case they need a special file name).
2025-07-02 12:33:50 -03:00
Marcus Minhorst
a4b7c95153 Added missing import for Solaris 2025-06-24 21:22:55 -03:00
Marcus Minhorst
a881e86ff7 Fixed typo 2025-06-24 21:22:55 -03:00
Marcus Minhorst
481848b3c5 Now with TDeletingArray 2025-06-09 16:37:52 -03:00
Marcus Minhorst
abfe5601c7 Check for SDL_JOYDEVICEADDED and SDL_JOYDEVICEREMOVED 2025-06-09 16:37:52 -03:00
Boondorl
ad3bcfddba Lobby Overhaul
Rewrote lobby to unify common and Doom-specific packet structure, allowing for saner handling of in-game joining. Added a new per-client stage system that allows individual clients to be handled at a time when gathering and sharing info. Reworked lobby UI to display user info and added kick/ban functionalities. Bans are only a temporary per-game IP ban (use passwords to keep unwanted users out). Increased max player count to 64 and unified engine constant.
2025-03-07 20:32:52 -05:00
Boondorl
94be307225 Netcode Overhaul
Rewrote netcode to be more stable and functional. Packet-server mode has been restrategized and will now be the default netmode when playing with 3+ non-LAN players. TryRunTics has been cleaned up with older tick control behavior removed to account for the rewritten renderer. The main thread is now more consistent when playing online to prevent potential slow downs and lock ups. Load barriers are better accounted for to prevent spikes on level transition. Improvements to chat and lobby systems including a force start game button. Added a suite of new host options such as kicking and controlling who can pause the game. Max players increased from 8 to 16 since the new code can now handle it.

Note: Demo functionality is untested. This will be rewritten at a later time alongside improvements to GZDoom's playback features (e.g. freecam mode).
2025-03-05 12:52:52 -05:00
Rachael Alexanderson
047e1e8b74
- remove priority changing code entirely - replace with vid_lowerinbackground which activates FPS capping in background 2025-02-08 21:42:39 -05:00
Rachael Alexanderson
f21b68c8f6
- revamp priority changing on windows, add cvar i_allowprioritychange to disallow priority changing entirely, allowing batch scripts to dictate GZDoom's process priority 2025-01-31 06:07:14 -05:00
Boondorl
b6fd65988b Added stubs for NetClose on other platforms
These will need someone with much better experience to implement correctly to abort the net window
2024-11-15 23:54:04 -03:00
Boondorl
3f4513c571 Updated packet handling
Added "game in progress" message for players trying to join late.  Improved "unknown host" packet logging to only log when truly unknown. Correctly abort network window so game can process fatal errors instead of hanging on waiting to connect. Unexpected disconnects in lobby now correctly update the state of the game.
2024-11-15 23:54:04 -03:00
Christoph Oelckers
a899571d8c got rid of strlwr.
The 3 remaining uses were completely redundant.
2024-11-02 09:07:07 +01:00
Christoph Oelckers
261881e0d7 do not set console mode from an uninitialized variable. 2024-10-16 16:54:15 +02:00
Rachael Alexanderson
2a8b629a12
- keep ENABLE_VIRTUAL_TERMINAL_PROCESSING mode in isolated console mode 2024-10-16 06:05:15 -04:00
Rachael Alexanderson
fcf65bee27
- we don't need these includes anymore 2024-10-16 06:01:34 -04:00
Rachael Alexanderson
0a9eb474cd
- fix isolated console mode (i.e. launching from explorer.exe) 2024-10-16 05:59:59 -04:00
Rachael Alexanderson
70eb4b974d
- enable console subsystem processing for Windows, enable runtime detection 2024-10-15 10:50:24 -04:00
Magnus Norddahl
f0ff273620
Stop grabbing mouse when game window doesn't have the focus 2024-08-23 01:14:28 -04:00
Ricardo Luís Vaz Silva
b044baf850 don't change priority to idle if i_pauseinbackground is false 2024-08-09 18:04:51 -03:00
Ricardo Luís Vaz Silva
1655f7e3b7 Allow XInput joysticks to work while the game is unfocused 2024-08-09 18:04:51 -03:00
Ricardo Luís Vaz Silva
9129f0121b Fix MacOS Compilation 2024-05-04 03:17:16 -04:00
Ricardo Luís Vaz Silva
c3ac4c9c38 Handle Extra Args 2024-05-04 03:17:16 -04:00
Rachael Alexanderson
a3e61ce33b - -norun now implies -stdout on Windows as it's useless without it 2024-04-22 23:26:36 +02:00
Ricardo Luís Vaz Silva
f0b96bff00 further fix mouse visibility 2024-04-11 07:18:43 +02:00
Ricardo Luís Vaz Silva
97effb9047 fix mouse cursor randomly becoming invisible outside gzdoom 2024-04-11 07:18:43 +02:00
Rachael Alexanderson
7f8ce13d24
- add missing include for macos 2024-03-17 00:58:24 -04:00
Rachael Alexanderson
c73ec97027
- accidentally added erroneous quotes to the last commit 2024-03-16 23:22:42 -04:00
Rachael Alexanderson
1e2a491f9e
- don't show path if longsavemessages is false. fixes https://github.com/ZDoom/gzdoom/issues/2467 2024-03-16 22:58:29 -04:00
Rachael Alexanderson
08a093ffda
- merge pull request https://github.com/ZDoom/gzdoom/pull/1577/files 2024-03-01 05:56:15 -05:00
nashmuhandes
01a462e9d4 Fix the default controller axes on Linux. The third axis is actually the Left Trigger, which causes the player to uncontrollably look upwards. Fixed by mapping said axis to nothing. 2024-02-04 22:45:34 +01:00
nashmuhandes
f6bdc02a8a Use a better default deadzone value for Linux. Fixes uncontrollable menus 2024-02-02 09:43:40 +01:00
Christoph Oelckers
f7a4f00177 adapted string table so that it can be initialized without full game data being available.
This is for the IWAD picker which runs before many things are known.
2024-01-09 17:22:59 +01:00
Christoph Oelckers
83aa9388ca backend update from Raze
* moving large allocations off the stack
* use proper printf formatters for size_t and ptrdiff_t.
* adding some missing 'noexcept'.
2024-01-06 15:24:10 +01:00
Christoph Oelckers
c62ecc44e2 eliminated the small white part of the initial window content after the IWAD picker. 2024-01-04 22:21:27 +01:00
Christoph Oelckers
9ced091b19 fixed Linux include 2024-01-04 21:10:00 +01:00
Christoph Oelckers
e7ac2fe741 moved launcher window out of common.
This needs to be different for Raze so it cannot be in shared code.
2024-01-04 20:44:27 +01:00
Christoph Oelckers
a2a7667442 added render backend selection to the new IWAD picker.
Unlike VkDoom we still need this.
2024-01-04 19:25:25 +01:00
Christoph Oelckers
243006987d remove old GTK-based Linux picker dialog. 2024-01-02 21:30:28 +01:00
Christoph Oelckers
4afe1686da hide the old main window as it no longer contains the startup. 2024-01-02 17:23:05 +01:00
Magnus Norddahl
2863c89af7 Hook up the zwidget launcher window on Linux 2024-01-02 16:56:19 +01:00