mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-05-03 23:42:07 +00:00
Fix crash when editing profile character with existing follower
This commit is contained in:
parent
54b7e8e78e
commit
60449b8a26
4 changed files with 37 additions and 16 deletions
|
|
@ -1399,24 +1399,27 @@ static void M_DrawProfileCard(INT32 x, INT32 y, boolean greyedout, profile_t *p)
|
||||||
if (M_DrawCharacterSprite(x-22, y+119, skinnum, V_FLIP, colormap))
|
if (M_DrawCharacterSprite(x-22, y+119, skinnum, V_FLIP, colormap))
|
||||||
V_DrawMappedPatch(x+14, y+66, 0, faceprefix[skinnum][FACE_RANK], colormap);
|
V_DrawMappedPatch(x+14, y+66, 0, faceprefix[skinnum][FACE_RANK], colormap);
|
||||||
|
|
||||||
if (M_DrawFollowerSprite(x-44 +12, y+119, 0, V_FLIP, 0, sp))
|
if (sp->mdepth >= CSSTEP_FOLLOWER)
|
||||||
{
|
{
|
||||||
UINT16 col = (unsigned)p->followercolor;
|
if (M_DrawFollowerSprite(x-44 +12, y+119, 0, V_FLIP, 0, sp))
|
||||||
patch_t *ico = W_CachePatchName(followers[sp->followern].icon, PU_CACHE);
|
|
||||||
UINT8 *fcolormap;
|
|
||||||
|
|
||||||
switch (col)
|
|
||||||
{
|
{
|
||||||
case FOLLOWERCOLOR_MATCH: // "Match"
|
UINT16 col = (unsigned)p->followercolor;
|
||||||
col = sp->color;
|
patch_t *ico = W_CachePatchName(followers[sp->followern].icon, PU_CACHE);
|
||||||
break;
|
UINT8 *fcolormap;
|
||||||
case FOLLOWERCOLOR_OPPOSITE: // "Opposite"
|
|
||||||
col = skincolors[sp->color].invcolor;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
fcolormap = R_GetTranslationColormap(TC_DEFAULT, col, GTC_MENUCACHE);
|
switch (col)
|
||||||
V_DrawMappedPatch(x+14+18, y+66, 0, ico, fcolormap);
|
{
|
||||||
|
case FOLLOWERCOLOR_MATCH: // "Match"
|
||||||
|
col = sp->color;
|
||||||
|
break;
|
||||||
|
case FOLLOWERCOLOR_OPPOSITE: // "Opposite"
|
||||||
|
col = skincolors[sp->color].invcolor;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
fcolormap = R_GetTranslationColormap(TC_DEFAULT, col, GTC_MENUCACHE);
|
||||||
|
V_DrawMappedPatch(x+14+18, y+66, 0, ico, fcolormap);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sp->mdepth == CSSTEP_ALTS || sp->mdepth == CSSTEP_COLORS || sp->mdepth == CSSTEP_FOLLOWERCOLORS)
|
if (sp->mdepth == CSSTEP_ALTS || sp->mdepth == CSSTEP_COLORS || sp->mdepth == CSSTEP_FOLLOWERCOLORS)
|
||||||
|
|
|
||||||
|
|
@ -2153,7 +2153,7 @@ void M_CharacterSelectInit(void)
|
||||||
if (optionsmenu.profile) // In menu, setting up profile character/follower
|
if (optionsmenu.profile) // In menu, setting up profile character/follower
|
||||||
{
|
{
|
||||||
setup_player[j].profilen = optionsmenu.profilen;
|
setup_player[j].profilen = optionsmenu.profilen;
|
||||||
PR_ApplyProfile(setup_player[j].profilen, 0);
|
PR_ApplyProfileLight(setup_player[j].profilen, 0);
|
||||||
}
|
}
|
||||||
else // gamestate != GS_MENU, in that case, assume this is whatever profile we chose to play with.
|
else // gamestate != GS_MENU, in that case, assume this is whatever profile we chose to play with.
|
||||||
setup_player[j].profilen = cv_lastprofile[j].value;
|
setup_player[j].profilen = cv_lastprofile[j].value;
|
||||||
|
|
|
||||||
|
|
@ -188,6 +188,19 @@ void PR_ApplyProfile(UINT8 profilenum, UINT8 playernum)
|
||||||
CV_StealthSetValue(&cv_currprofile, profilenum);
|
CV_StealthSetValue(&cv_currprofile, profilenum);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PR_ApplyProfileLight(UINT8 profilenum, UINT8 playernum)
|
||||||
|
{
|
||||||
|
profile_t *p = PR_GetProfile(profilenum);
|
||||||
|
|
||||||
|
CV_StealthSet(&cv_skin[playernum], p->skinname);
|
||||||
|
CV_StealthSetValue(&cv_playercolor[playernum], p->color);
|
||||||
|
CV_StealthSet(&cv_playername[playernum], p->playername);
|
||||||
|
|
||||||
|
// Followers
|
||||||
|
CV_StealthSet(&cv_follower[playernum], p->follower);
|
||||||
|
CV_StealthSetValue(&cv_followercolor[playernum], p->followercolor);
|
||||||
|
}
|
||||||
|
|
||||||
UINT8 PR_GetProfileNum(profile_t *p)
|
UINT8 PR_GetProfileNum(profile_t *p)
|
||||||
{
|
{
|
||||||
UINT8 i;
|
UINT8 i;
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,11 @@ void PR_LoadProfiles(void);
|
||||||
// Applies the given profile's settings to the given player.
|
// Applies the given profile's settings to the given player.
|
||||||
void PR_ApplyProfile(UINT8 profilenum, UINT8 playernum);
|
void PR_ApplyProfile(UINT8 profilenum, UINT8 playernum);
|
||||||
|
|
||||||
|
// PR_ApplyProfileLight(UINT8 profilenum, UINT8 playernum)
|
||||||
|
// Similar to PR_ApplyProfile but only applies skin and follower values.
|
||||||
|
// Controls, kickstartaccel and "current profile" data is *not* modified.
|
||||||
|
void PR_ApplyProfileLight(UINT8 profilenum, UINT8 playernum);
|
||||||
|
|
||||||
// PR_GetProfileNum(profile_t *p)
|
// PR_GetProfileNum(profile_t *p)
|
||||||
// Gets the profile's index # in profilesList
|
// Gets the profile's index # in profilesList
|
||||||
UINT8 PR_GetProfileNum(profile_t *p);
|
UINT8 PR_GetProfileNum(profile_t *p);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue