mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-10-30 08:01:28 +00:00
Tie POWERLEVEL to Profiles
This commit is contained in:
parent
13c74efa41
commit
399272946c
6 changed files with 70 additions and 1 deletions
|
|
@ -2246,6 +2246,33 @@ static void Command_connect(void)
|
||||||
CONS_Printf(M_GetText("You cannot connect while in a game. End this game first.\n"));
|
CONS_Printf(M_GetText("You cannot connect while in a game. End this game first.\n"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else if (cv_currprofile.value == 0)
|
||||||
|
{
|
||||||
|
CONS_Printf(M_GetText("You cannot connect while using the Guest Profile. Use a Custom Profile to play Online.\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (cv_currprofile.value == -1)
|
||||||
|
{
|
||||||
|
// No profile set, we're attempting to connect from the title screen. (Discord RPC / connect command)
|
||||||
|
// Automatically apply the last profiles for every potential split player.
|
||||||
|
// Make sure Player 1's Profile ISN'T the guest profile even if we do that.
|
||||||
|
|
||||||
|
UINT8 i;
|
||||||
|
|
||||||
|
CONS_Printf(M_GetText("No Profile set, attempting to use last used Profiles...\n"));
|
||||||
|
|
||||||
|
for (i = 0; i < cv_splitplayers.value; i++)
|
||||||
|
{
|
||||||
|
if (cv_lastprofile[i].value || i > 0)
|
||||||
|
PR_ApplyProfile(cv_lastprofile[i].value, i);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CONS_Printf(M_GetText("Player 1's last used Profile is the Guest Profile, which cannot be used to play Online.\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
CONS_Printf(M_GetText("Profiles have been automatically set according to the last used Profiles.\n"));
|
||||||
|
}
|
||||||
|
|
||||||
// modified game check: no longer handled
|
// modified game check: no longer handled
|
||||||
// we don't request a restart unless the filelist differs
|
// we don't request a restart unless the filelist differs
|
||||||
|
|
@ -2308,6 +2335,7 @@ static void Command_connect(void)
|
||||||
SplitScreen_OnChange();
|
SplitScreen_OnChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
M_ClearMenus(true);
|
||||||
CL_ConnectToServer();
|
CL_ConnectToServer();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -4122,6 +4122,9 @@ void G_SaveGameData(void)
|
||||||
FIL_WriteFile(va(pandf, srb2home, gamedatafilename), savebuffer, length);
|
FIL_WriteFile(va(pandf, srb2home, gamedatafilename), savebuffer, length);
|
||||||
free(savebuffer);
|
free(savebuffer);
|
||||||
save_p = savebuffer = NULL;
|
save_p = savebuffer = NULL;
|
||||||
|
|
||||||
|
// Also save profiles here.
|
||||||
|
PR_SaveProfiles();
|
||||||
}
|
}
|
||||||
|
|
||||||
#define VERSIONSIZE 16
|
#define VERSIONSIZE 16
|
||||||
|
|
|
||||||
|
|
@ -1369,7 +1369,7 @@ static void M_DrawProfileCard(INT32 x, INT32 y, boolean greyedout, profile_t *p)
|
||||||
colormap = R_GetTranslationColormap(TC_DEFAULT, p->color, GTC_CACHE);
|
colormap = R_GetTranslationColormap(TC_DEFAULT, p->color, GTC_CACHE);
|
||||||
strcpy(pname, p->profilename);
|
strcpy(pname, p->profilename);
|
||||||
skinnum = R_SkinAvailable(p->skinname);
|
skinnum = R_SkinAvailable(p->skinname);
|
||||||
powerlevel = 1000; // Test
|
powerlevel = p->powerlevels[0]; // Only display race power level.
|
||||||
}
|
}
|
||||||
|
|
||||||
// check setup_player for colormap for the card.
|
// check setup_player for colormap for the card.
|
||||||
|
|
|
||||||
|
|
@ -3565,9 +3565,19 @@ void M_MPOptSelectInit(INT32 choice)
|
||||||
{
|
{
|
||||||
INT16 arrcpy[3][3] = {{0,68,0}, {0,12,0}, {0,64,0}};
|
INT16 arrcpy[3][3] = {{0,68,0}, {0,12,0}, {0,64,0}};
|
||||||
UINT8 i = 0, j = 0; // To copy the array into the struct
|
UINT8 i = 0, j = 0; // To copy the array into the struct
|
||||||
|
const UINT8 pid = 0;
|
||||||
|
|
||||||
(void)choice;
|
(void)choice;
|
||||||
|
|
||||||
|
// Don't allow guest profile online
|
||||||
|
if (cv_currprofile.value == 0)
|
||||||
|
{
|
||||||
|
M_StartMessage(M_GetText("Cannot play online with\nGuest Profile.\nMake a custom Profile and try again.\n\n(Press any key)"), NULL, MM_NOTHING);
|
||||||
|
S_StartSound(NULL, sfx_s3k7b);
|
||||||
|
M_SetMenuDelay(pid);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
mpmenu.modechoice = 0;
|
mpmenu.modechoice = 0;
|
||||||
mpmenu.ticker = 0;
|
mpmenu.ticker = 0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ INT32 PR_GetNumProfiles(void)
|
||||||
profile_t* PR_MakeProfile(const char *prname, const char *pname, const char *sname, const UINT16 col, const char *fname, UINT16 fcol, INT32 controlarray[num_gamecontrols][MAXINPUTMAPPING])
|
profile_t* PR_MakeProfile(const char *prname, const char *pname, const char *sname, const UINT16 col, const char *fname, UINT16 fcol, INT32 controlarray[num_gamecontrols][MAXINPUTMAPPING])
|
||||||
{
|
{
|
||||||
profile_t *new = Z_Malloc(sizeof(profile_t), PU_STATIC, NULL);
|
profile_t *new = Z_Malloc(sizeof(profile_t), PU_STATIC, NULL);
|
||||||
|
UINT8 i;
|
||||||
|
|
||||||
new->version = PROFILEVER;
|
new->version = PROFILEVER;
|
||||||
|
|
||||||
|
|
@ -43,6 +44,10 @@ profile_t* PR_MakeProfile(const char *prname, const char *pname, const char *sna
|
||||||
// Copy from gamecontrol directly as we'll be setting controls up directly in the profile.
|
// Copy from gamecontrol directly as we'll be setting controls up directly in the profile.
|
||||||
memcpy(new->controls, controlarray, sizeof(new->controls));
|
memcpy(new->controls, controlarray, sizeof(new->controls));
|
||||||
|
|
||||||
|
// Init both power levels
|
||||||
|
for (i = 0; i < PWRLV_NUMTYPES; i++)
|
||||||
|
new->powerlevels[i] = PWRLVRECORD_START;
|
||||||
|
|
||||||
return new;
|
return new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -114,6 +119,14 @@ void PR_SaveProfiles(void)
|
||||||
{
|
{
|
||||||
FILE *f = NULL;
|
FILE *f = NULL;
|
||||||
|
|
||||||
|
// save powerlevel in the current profile.
|
||||||
|
// granted we're using a profile that isn't guest, that is.
|
||||||
|
if (cv_currprofile.value > 0)
|
||||||
|
{
|
||||||
|
profile_t *pr = PR_GetProfile(cv_currprofile.value);
|
||||||
|
memcpy(&pr->powerlevels, vspowerlevel, sizeof(vspowerlevel));
|
||||||
|
}
|
||||||
|
|
||||||
f = fopen(va(pandf, srb2home, PROFILESFILE), "w");
|
f = fopen(va(pandf, srb2home, PROFILESFILE), "w");
|
||||||
if (f != NULL)
|
if (f != NULL)
|
||||||
{
|
{
|
||||||
|
|
@ -166,6 +179,14 @@ void PR_ApplyProfile(UINT8 profilenum, UINT8 playernum)
|
||||||
{
|
{
|
||||||
profile_t *p = PR_GetProfile(profilenum);
|
profile_t *p = PR_GetProfile(profilenum);
|
||||||
|
|
||||||
|
// this CAN happen!!
|
||||||
|
if (p == NULL)
|
||||||
|
{
|
||||||
|
CONS_Printf("Profile '%d' could not be loaded as it does not exist. Guest Profile will be loaded instead.\n", profilenum);
|
||||||
|
profilenum = 0; // make sure to set this so that the cvar is set properly.
|
||||||
|
p = PR_GetProfile(0); // Use guest profile instead if things went south somehow.
|
||||||
|
}
|
||||||
|
|
||||||
CV_StealthSet(&cv_skin[playernum], p->skinname);
|
CV_StealthSet(&cv_skin[playernum], p->skinname);
|
||||||
CV_StealthSetValue(&cv_playercolor[playernum], p->color);
|
CV_StealthSetValue(&cv_playercolor[playernum], p->color);
|
||||||
CV_StealthSet(&cv_playername[playernum], p->playername);
|
CV_StealthSet(&cv_playername[playernum], p->playername);
|
||||||
|
|
@ -184,8 +205,13 @@ void PR_ApplyProfile(UINT8 profilenum, UINT8 playernum)
|
||||||
CV_StealthSetValue(&cv_lastprofile[playernum], profilenum);
|
CV_StealthSetValue(&cv_lastprofile[playernum], profilenum);
|
||||||
|
|
||||||
// If we're doing this on P1, also change current profile.
|
// If we're doing this on P1, also change current profile.
|
||||||
|
// and update the powerlevel local array.
|
||||||
|
|
||||||
if (!playernum)
|
if (!playernum)
|
||||||
|
{
|
||||||
CV_StealthSetValue(&cv_currprofile, profilenum);
|
CV_StealthSetValue(&cv_currprofile, profilenum);
|
||||||
|
memcpy(&vspowerlevel, p->powerlevels, sizeof(p->powerlevels));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PR_ApplyProfileLight(UINT8 profilenum, UINT8 playernum)
|
void PR_ApplyProfileLight(UINT8 profilenum, UINT8 playernum)
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,8 @@ typedef struct profile_s
|
||||||
char follower[SKINNAMESIZE+1]; // Follower
|
char follower[SKINNAMESIZE+1]; // Follower
|
||||||
UINT16 followercolor; // Follower color
|
UINT16 followercolor; // Follower color
|
||||||
|
|
||||||
|
UINT16 powerlevels[PWRLV_NUMTYPES]; // PWRLV for race & battle.
|
||||||
|
|
||||||
// Player-specific consvars.
|
// Player-specific consvars.
|
||||||
// @TODO: List all of those
|
// @TODO: List all of those
|
||||||
boolean kickstartaccel; // cv_kickstartaccel
|
boolean kickstartaccel; // cv_kickstartaccel
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue