Commit graph

61 commits

Author SHA1 Message Date
toaster
a07a9e2191 Don't use skincolor unlocks in situations where gamedata is inappropriate
- Recieving a different client's XD_NAMEANDCOLOR
- Loading profiles on game boot
2023-07-18 10:50:25 +01:00
toaster
5036719280 Merge branch 'master' of https://git.do.srb2.org/KartKrew/Kart into seeecret-colors
# Conflicts:
#	src/k_menudraw.c
2023-06-26 23:25:47 +01:00
toaster
5f1f3a6fe3 When converting Gamedata, Profiles, and Serverstats files forwards to future versions, create backups.
- Same name, but with a ".bak" appended.
- Also prevents future versions of serverstats from being loaded into older executables.
2023-05-31 13:18:56 +01:00
toaster
317c30f7c1 Profiles: Fix deficiencies with pre-existing color handling that was exacerbated by this branch
- Do not turn SKINCOLOR_NONE into prefcolor automatically anymore (removed PR_GetProfileColor)
- M_DrawProfileCard:
    - Handle SKINCOLOR_NONE into prefcolor directly
    - Profile Card should not turn NONE-green if skin uses different startcolor for remap
    - Do not attempt to draw Follower if simply not selected for this profile
2023-04-25 14:19:53 +01:00
Sally Coolatta
c486ec19af SECRET_COLOR 2023-04-25 14:19:52 +01:00
toaster
86fe3e266b allZero doesn't need to be memset 2023-04-11 20:05:53 +01:00
toaster
d85779c12b Newlines at end of k_profiles and k_serverstats 2023-04-11 20:05:43 +01:00
toaster
d61d822231 Compilation fixes: Unused variable warnings 2023-04-11 20:02:39 +01:00
toaster
a97373cb7a Increment PROFILEVER due to merge conflict resolution 2023-04-11 19:49:08 +01:00
AJ Martinez
4f569641fc Store total wins in profiles 2023-04-11 19:38:02 +01:00
AJ Martinez
3012839138 Serverside PWR: Completely rip out profile PWR, add PWR to XD_ADDPLAYER 2023-04-11 19:38:02 +01:00
toaster
046ff49134 Update PROFILEVER handling to account for Rumble support 2023-04-06 20:09:42 +01:00
toaster
44bd11f95d Update new PROFILEVER to 4 to account for public/private key-related changes 2023-04-06 20:02:12 +01:00
James R
d9faef58cb Add game control for lossless video recording, set default keys for gc_screenshot, etc
Renames gc_startgif to gc_startmovie.

Default controls:

- gc_screenshot - F8
- gc_startmovie - F9
- gc_startlossless - F10

Bumps PROFILEVER to 3, safely migrates existing profiles.
2023-04-06 20:02:11 +01:00
toaster
89fc9a618e Rumble toggle attached to profile
- Will silently merge conflict with !1093, make sure to adjust PROFILEVER handling
- (profile_t *)->rumble
- cv_rumble[MAXSPLITSCREENPLAYERS]
- cv_dummyprofilerumble
- Disables all current rumbles when toggling off
- Prevents new rumbles from being set while turned off
2023-04-02 23:16:58 +01:00
James R
3b67f99d0d RRID: correct remaining instances of hardcoded sizes to defines 2023-03-28 03:54:29 -07:00
AJ Martinez
9a1de18491 Fix memory leak in GetPrettyRRID 2023-03-28 03:07:52 -07:00
James R
4413939e85 RRID: generate keys for old profiles
Bump PROFILEVER to 3
2023-03-28 01:25:56 -07:00
AJ Martinez
bf4781d26c Use READ/WRITEMEM instead of STRINGN for data that can contain 0s, dummy! 2023-03-28 01:25:56 -07:00
AJ Martinez
936da9870c Move guest profile checks into dedicated method 2023-03-28 01:20:43 -07:00
AJ Martinez
66c6ba125d Final fixup for profile-level keys and passing to player_t 2023-03-28 01:20:41 -07:00
AJ Martinez
4ffae5d862 Store keypairs in profiles, do signature verification for all splitscreen players 2023-03-28 01:19:43 -07:00
toaster
e87d4b88ec PR_SaveProfiles: Do not attempt to save if Guest profile data hasn't been initialised yet.
- This only happens at the very end of PR_LoadProfiles, so it marks the clear point data is good.
- Resolves #451
2023-02-25 14:42:40 +00:00
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