* Rename TICQUEUE to BACKUPTICS.
* Add CLIENTBACKUPTICS to limit the time gap players can send tics in at once
* This likely means freezes are more possible, and this variable could be raised later, but prevents some potential duplication in the extrapolerated tic.
This will be necessary when newmenus comes around and it is no longer advantageous to have a menu for testing bosses, given they won't be a headline feature in v2 or accessible via multiplayer at this time.
Previously interpolated from last 35th of a second, which
may be offset from game time due to connection lag.
Consider this the proper fix to 6ecac4159a too.
Previously interpolated from last 35th of a second, which
may be offset from game time due to connection lag.
Consider this the proper fix to 6ecac4159a too.
- Add menu control fallbacks.
- If it could not find a bind using your existing keys, then it looks at default controls.
- If it could not find it then, and you're P1, then it looks through gamepads, and then lastly settles for keyboard.
- Changed around the order of operations on the character select menu, to accommodate for this change.
- Added initroutine to menu_t, which is called every time without question when going to a new menu. This solves many, many minor bugs you could experience in the character select menu when changing between menus, due to things only being properly reset when selecting the character select menu option.
Ultra mega hacked in, by saving all "discarded" joysticks to an array so they don't get totally closed & we can still poll them. Events now properly send the device number instead of the player number, which means we can store all controllers pressing buttons, and thus, can detect when ANY controller is pressing anything, and THUS we can make the character select work like we wanted to :V
Did not bother fixing any of the bugs, however. First of all, the opening menus do not properly fallback to default controls. Yet again, we may need a more robust system -- storing all keys from gamekeydown separately? Additionally it seems like when I input gamepad it makes me use keyboard anyway, so I think something fishy is up.
* Don't overwrite the first player's name when joining with multiple local splitscreen players. (resolves#151)
* The defaults for unprovided names are now consistently "Player A/B/C/D" as opposed to some being letter-based and some being number-based.
* Send local player info once per local splitscreen player, rather than n^2 times (where n is the number of local splitscreen players).
* Since the packet *requires* four names to be sent every time you join a server, send dummy names for local splitscreen players who aren't connecting, instead of your actual cvars (no data leakage you didn't ask for!)
Events have a player ID instead of adding billions of keys for separate gamepads. Axis movement (mouse movement, analog sticks) now are counted as keys, so axes don't need to be separately implemented for all controls. Game controls emulate a Saturn controller (some of the external functions like screenshot / gif should be readded, but I got lazy)
This will allow later us to save a config for a controller that can be reused for any player slot, which is one of the main goals for profiles.
Only just enough was made to use the new input system to make it compile. Menus in this branch should aim to move to using PlayerInputDown entirely, instead of using hardcoded keys & simply remapping to those
We had SEENAMES disabled before, and vanilla removed the define, so I went ahead and removed it. Repurposed the old seenames console variable for our nametags.
Since Sryder mentioned it, the main difference is:
- player->angleturn is the absolute angle, like vanilla, but it's now an angle_t, so it doesn't need shifted.
- cmd->turning modifies player->angleturn relatively, instead of absolute angles being stored in the cmd (makes the system less cheatable for kart)
- Because the absolute angle is no longer stored in the cmd, all of the pre/post angleturn values that vanilla has basically just need to be flat-out removed.