Commit graph

38 commits

Author SHA1 Message Date
toaster
2786c2095e More incorrect/inconsistent frees 2023-01-04 14:22:04 +00:00
James R
5c51ad77f6 Use P_SaveBufferFree everywhere
- Fixes PR_SaveProfiles calling stdlib free on zone
memory.
- Also touched g_demo.c
2023-01-03 23:23:34 -08:00
Sally Coolatta
aa4fd8ab13 Add functions to initialize savebuffer_t
g_demo.c is mostly unaltered because it is made of twigs.
2023-01-02 19:47:59 -05:00
Sally Coolatta
761be01dbb Contain end & size into savebuffer_t
I would've liked to make it use a single allocate function to do this very cleanly, but these cases were very clearly not meant to be standardized and use wildly different methods to allocate & free...
2023-01-01 00:23:23 -08:00
Sally Coolatta
38a35b6f78 Make save_p / savebuffers not global
This caused some scary issues with P_SaveNetGame the other day, and it's making ACS net sync harder. Let's just cut this off right now.

Also fixed some scary mix-ups in some of the Lua archiving code.
2023-01-01 00:22:56 -08:00
toaster
db95e3144d Re-add mid-game rankings
- gc_rankings, bound to TAB by default
- Now a toggle, rather than a hold behaviour
- Rearrange HU_Drawer to have chat (and cecho/music credits) render over everything else (like, say, tab rankings)
- Update PROFILEVER to 2 so we can add the new control to old profiles
2022-11-25 17:59:18 +00:00
toaster
8882406ff3 On second thoughts, restrict ANY profile application in dedicated - not just on initial startup - to the Guest profile 2022-11-12 17:48:00 +00:00
toaster
49f7552009 Improve profile deletion further
- Also adjust cv_currprofile in PR_DeleteProfile, instead of half-heartedly outside
- Make it clearer if you're going to destroy your current profile
- Add an "[In use]" identifier to the menu's visuals
2022-09-04 21:44:39 +01:00
toaster
8946bf9e01 Refactor PR_ApplyProfile and its ilk
- Reduces copypasted code.
- Preperation for the next commit.
2022-09-03 00:16:41 +01:00
toaster
5c4ff2ead0 Rewrite Profile saving and loading
- Previous implementation used fopen, fwrite, fread, etc.
- Instead, use the byteptr.h macros to/from a buffer, performing IO all at once before/after.
- This way, if we do something unrecoverable mid-write, we won't corrupt the user's profile.
- Also cross-endian compatible AND now capable of supporting changes in the struct.
- Sadly not back-compatible. This should be the last time we destroy the team's existing profiles...

Also, modify a typo in a gamedata error this system used as reference.
2022-09-02 19:38:54 +01:00
toaster
cd2bb2b300 Extra profile menu improvements
* Don't allow creation/loading of more profiles than the game supports.
* Add a few missing M_SetMenuDelay()'s
* Fix PRF%c default name generation issues
   * There could still be an infinite loop if MAXPROFILES is ever increased >= 26... but we can handle that one later.
2022-09-01 18:44:56 +01:00
toaster
a6843bae78 Improve profile deletion further
- Fix the check for deleting the current profile
- Handle cv_ttlprofilen like cv_lastprofile[]
2022-09-01 17:40:26 +01:00
toaster
b0c9fccd2d Rework profile deletion
- O(n) instead of O(4n)
- Actually free the sacrificed profile's memory
- Don't hop to profile 1 after deleting a later profile, to reduce the % of footguns/losing your place in the list.
2022-08-31 22:52:06 +01:00
Sally Coolatta
abac095d06 Properly use 0 power for the guest player 2022-08-30 04:07:42 -04:00
Sally Coolatta
d5a4954dd3 Profiles handle power level properly now
Overwriting the global power level all the time and not updating any code to use the profile was extremely yikes. This also allows for splitscreen players with power levels.
2022-08-30 03:51:35 -04:00
Sally Coolatta
b388890647 Profile fixes
- Less M_StartMessage spam
- Say "NEW" instead of "EMPTY" for new profile creation
- Use Eggman instead of Sonic for the Guest profile
- Instead of needing to hold X for 3 seconds to exit the test controls menu, you simply press nothing for 5 seconds.
- Add separate back option to controls menu.
- Started on the ability to use prefcolor as your profile color
- Allow guest online because there is literally already mechanics for having a player with no power level :V
2022-08-29 04:08:12 -04:00
toaster
5b13d4f75d Repair character colors and followercolors via the menu, both visually and mechanically.
* Fully reimplement the MenuColor system from 2.2's codebase, so super and emerald colours are now inaccessible again.
* Add FOLLOWERCOLOR_ constants and internal loop support to M_GetColorBefore and M_GetColorAfter.
* Fix improper initialisation of certain menu colour data.
* Repair previously created (or manually-edited) profiles with invalid colours.
* Add an actual function to turn followercolor constants to effective values.
2022-05-22 16:57:26 +01:00
SinnamonLat
e0754358fe Shift cv_lastprofile values when deleting profiles 2022-05-21 18:10:05 +02:00
SinnamonLat
c58624bca2 Fixed fresh profiles being able to have duplicate names after deleting other Profiles 2022-05-21 18:04:43 +02:00
SinnamonLat
399272946c Tie POWERLEVEL to Profiles 2022-05-21 17:47:15 +02:00
SinnamonLat
60449b8a26 Fix crash when editing profile character with existing follower 2022-05-20 16:47:03 +02:00
SinnamonLat
d0db7e4381 rethink input mapping menu (again (again)) 2022-05-20 01:15:29 +02:00
SinnamonLat
0ee02ce1e1 slight oversights 2022-05-18 14:31:05 +02:00
SinnamonLat
d5d34f9b99 profiles may now be deleted from data options 2022-05-18 14:20:19 +02:00
SinnamonLat
66c62b38da Various fixes in charsel / charswitch menus 2022-04-13 00:53:27 +02:00
toaster
e3f9a925d8 Fix a fresh profile not having kickstartaccel zeroed out. 2022-04-01 20:32:48 +01:00
SinnamonLat
ed5005cb05 Add kickstartaccel on profile controls 2022-02-26 15:09:39 +01:00
SinnamonLat
5801d67706 Add profile # and player name on the card 2022-02-20 15:23:08 +01:00
James R
c24c0457e3 NUL terminate profilename 2022-02-19 20:26:31 -08:00
James R
a756b669b7 Save kartprofiles.cfg in config directory 2022-02-19 14:28:09 -08:00
James R
c83803dd42 Refactor profiles code to use pointers 2022-02-19 14:25:34 -08:00
SinnamonLat
2b74b7188f profiles: they work(?) now 2022-02-19 18:57:17 +01:00
SinnamonLat
3aadf1bff0 Allow creating new profiles 2022-02-19 16:08:50 +01:00
SinnamonLat
ebc2156b7e Profiles: control setup (wip but does what it needs to for now) 2022-02-19 13:26:02 +01:00
SinnamonLat
8efba24df7 profiles: start on edit menu (it does nothing) 2022-02-16 23:57:06 +01:00
SinnamonLat
aea066b70f Update menus to use the new input system all over... 2022-02-15 23:30:51 +01:00
SinnamonLat
8c53108d17 Start on profiles menu (does nothing and softlocks) 2022-02-15 01:28:57 +01:00
SinnamonLat
1789dd1255 Rudimentary start on profiles 2022-02-14 23:14:25 +01:00