Don't change cv_skin or cv_playercolor if there is no need to

This commit is contained in:
Lactozilla 2023-08-15 04:29:50 -03:00
parent 0bb65166c9
commit 062af20628
8 changed files with 39 additions and 52 deletions

View file

@ -1626,6 +1626,14 @@ void D_SRB2Main(void)
autostart = true; autostart = true;
} }
// Set default singleplayer skin
if (!dedicated)
{
pickedchar = R_SkinAvailable(cv_defaultskin.string);
if (pickedchar == -1)
pickedchar = 0;
}
// user settings come before "+" parameters. // user settings come before "+" parameters.
if (dedicated) if (dedicated)
COM_ImmedExecute(va("exec \"%s"PATHSEP"adedserv.cfg\"\n", srb2home)); COM_ImmedExecute(va("exec \"%s"PATHSEP"adedserv.cfg\"\n", srb2home));

View file

@ -1274,25 +1274,22 @@ static void SendNameAndColor(void)
players[consoleplayer].mo->color = P_GetPlayerColor(&players[consoleplayer]); players[consoleplayer].mo->color = P_GetPlayerColor(&players[consoleplayer]);
if (metalrecording) if (metalrecording)
{ // Starring Metal Sonic as themselves, obviously.
SetPlayerSkinByNum(consoleplayer, 5);
CV_StealthSet(&cv_skin, skins[5].name);
}
else if ((foundskin = R_SkinAvailable(cv_skin.string)) != -1 && R_SkinUsable(consoleplayer, foundskin))
{ {
cv_skin.value = foundskin; // Starring Metal Sonic as themselves, obviously.
SetPlayerSkinByNum(consoleplayer, 5);
SetPlayerSkin(consoleplayer, cv_skin.string);
CV_StealthSet(&cv_skin, skins[cv_skin.value].name);
} }
else if (splitscreen)
{
if ((foundskin = R_SkinAvailable(cv_skin.string)) != -1 && R_SkinUsable(consoleplayer, foundskin))
SetPlayerSkin(consoleplayer, cv_skin.string);
else else
{ {
cv_skin.value = players[consoleplayer].skin;
CV_StealthSet(&cv_skin, skins[players[consoleplayer].skin].name);
// will always be same as current // will always be same as current
SetPlayerSkin(consoleplayer, cv_skin.string); SetPlayerSkin(consoleplayer, cv_skin.string);
} }
}
else
SetPlayerSkinByNum(consoleplayer, pickedchar);
return; return;
} }
@ -1365,7 +1362,6 @@ static void SendNameAndColor2(void)
if (!Playing()) if (!Playing())
return; return;
// If you're not in a netgame, merely update the skin, color, and name.
if (botingame) if (botingame)
{ {
players[secondplaya].skincolor = botcolor; players[secondplaya].skincolor = botcolor;
@ -1377,6 +1373,7 @@ static void SendNameAndColor2(void)
} }
else if (!netgame) else if (!netgame)
{ {
// If you're not in a netgame, merely update the skin, color, and name.
INT32 foundskin; INT32 foundskin;
CleanupPlayerName(secondplaya, cv_playername2.zstring); CleanupPlayerName(secondplaya, cv_playername2.zstring);
@ -1387,7 +1384,7 @@ static void SendNameAndColor2(void)
if (players[secondplaya].mo && !players[secondplaya].powers[pw_dye]) if (players[secondplaya].mo && !players[secondplaya].powers[pw_dye])
players[secondplaya].mo->color = P_GetPlayerColor(&players[secondplaya]); players[secondplaya].mo->color = P_GetPlayerColor(&players[secondplaya]);
if (cv_forceskin.value >= 0 && (netgame || multiplayer)) // Server wants everyone to use the same player if (cv_forceskin.value >= 0 && multiplayer) // Server wants everyone to use the same player
{ {
const INT32 forcedskin = cv_forceskin.value; const INT32 forcedskin = cv_forceskin.value;
@ -1395,16 +1392,9 @@ static void SendNameAndColor2(void)
CV_StealthSet(&cv_skin2, skins[forcedskin].name); CV_StealthSet(&cv_skin2, skins[forcedskin].name);
} }
else if ((foundskin = R_SkinAvailable(cv_skin2.string)) != -1 && R_SkinUsable(secondplaya, foundskin)) else if ((foundskin = R_SkinAvailable(cv_skin2.string)) != -1 && R_SkinUsable(secondplaya, foundskin))
{
cv_skin2.value = foundskin;
SetPlayerSkin(secondplaya, cv_skin2.string); SetPlayerSkin(secondplaya, cv_skin2.string);
CV_StealthSet(&cv_skin2, skins[cv_skin2.value].name); else if (splitscreen)
}
else
{ {
cv_skin2.value = players[secondplaya].skin;
CV_StealthSet(&cv_skin2, skins[players[secondplaya].skin].name);
// will always be same as current // will always be same as current
SetPlayerSkin(secondplaya, cv_skin2.string); SetPlayerSkin(secondplaya, cv_skin2.string);
} }
@ -2094,7 +2084,6 @@ static void Got_Mapcmd(UINT8 **cp, INT32 playernum)
{ {
SetPlayerSkinByNum(0, cv_chooseskin.value-1); SetPlayerSkinByNum(0, cv_chooseskin.value-1);
players[0].skincolor = skins[players[0].skin].prefcolor; players[0].skincolor = skins[players[0].skin].prefcolor;
CV_StealthSetValue(&cv_playercolor, players[0].skincolor);
} }
mapnumber = M_MapNumber(mapname[3], mapname[4]); mapnumber = M_MapNumber(mapname[3], mapname[4]);

View file

@ -1500,8 +1500,12 @@ void G_BeginRecording(void)
demo_p += 16; demo_p += 16;
// Color // Color
for (i = 0; i < MAXCOLORNAME && cv_playercolor.string[i]; i++) UINT16 skincolor = players[0].skincolor;
name[i] = cv_playercolor.string[i]; if (skincolor >= numskincolors)
skincolor = SKINCOLOR_NONE;
const char *skincolor_name = skincolors[skincolor].name;
for (i = 0; i < MAXCOLORNAME && skincolor_name[i]; i++)
name[i] = skincolor_name[i];
for (; i < MAXCOLORNAME; i++) for (; i < MAXCOLORNAME; i++)
name[i] = '\0'; name[i] = '\0';
M_Memcpy(demo_p,name,MAXCOLORNAME); M_Memcpy(demo_p,name,MAXCOLORNAME);
@ -2263,7 +2267,6 @@ void G_DoPlayDemo(char *defdemoname)
players[0].skincolor = i; players[0].skincolor = i;
break; break;
} }
CV_StealthSetValue(&cv_playercolor, players[0].skincolor);
if (players[0].mo) if (players[0].mo)
{ {
players[0].mo->color = players[0].skincolor; players[0].mo->color = players[0].skincolor;

View file

@ -55,6 +55,8 @@ gameaction_t gameaction;
gamestate_t gamestate = GS_NULL; gamestate_t gamestate = GS_NULL;
UINT8 ultimatemode = false; UINT8 ultimatemode = false;
INT32 pickedchar;
boolean botingame; boolean botingame;
UINT8 botskin; UINT8 botskin;
UINT16 botcolor; UINT16 botcolor;
@ -4770,12 +4772,9 @@ void G_LoadGame(UINT32 slot, INT16 mapoverride)
Z_Free(savebuffer); Z_Free(savebuffer);
save_p = savebuffer = NULL; save_p = savebuffer = NULL;
// gameaction = ga_nothing;
// G_SetGamestate(GS_LEVEL);
displayplayer = consoleplayer; displayplayer = consoleplayer;
multiplayer = splitscreen = false; multiplayer = splitscreen = false;
// G_DeferedInitNew(sk_medium, G_BuildMapName(1), 0, 0, 1);
if (setsizeneeded) if (setsizeneeded)
R_ExecuteSetViewSize(); R_ExecuteSetViewSize();
@ -4968,9 +4967,9 @@ cleanup:
// Can be called by the startup code or the menu task, // Can be called by the startup code or the menu task,
// consoleplayer, displayplayer, playeringame[] should be set. // consoleplayer, displayplayer, playeringame[] should be set.
// //
void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 pickedchar, boolean SSSG, boolean FLS) void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 character, boolean SSSG, boolean FLS)
{ {
UINT16 color = skins[pickedchar].prefcolor; pickedchar = character;
paused = false; paused = false;
if (demoplayback) if (demoplayback)
@ -4991,10 +4990,7 @@ void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 pickedchar, b
SplitScreen_OnChange(); SplitScreen_OnChange();
} }
color = skins[pickedchar].prefcolor; SetPlayerSkinByNum(consoleplayer, character);
SetPlayerSkinByNum(consoleplayer, pickedchar);
CV_StealthSet(&cv_skin, skins[pickedchar].name);
CV_StealthSetValue(&cv_playercolor, color);
if (mapname) if (mapname)
D_MapChange(M_MapNumber(mapname[3], mapname[4]), gametype, pultmode, true, 1, false, FLS); D_MapChange(M_MapNumber(mapname[3], mapname[4]), gametype, pultmode, true, 1, false, FLS);

View file

@ -174,8 +174,7 @@ void G_SpawnPlayer(INT32 playernum);
// Can be called by the startup code or M_Responder. // Can be called by the startup code or M_Responder.
// A normal game starts at map 1, but a warp test can start elsewhere // A normal game starts at map 1, but a warp test can start elsewhere
void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 pickedchar, void G_DeferedInitNew(boolean pultmode, const char *mapname, INT32 character, boolean SSSG, boolean FLS);
boolean SSSG, boolean FLS);
void G_DoLoadLevel(boolean resetplayer); void G_DoLoadLevel(boolean resetplayer);
void G_StartTitleCard(void); void G_StartTitleCard(void);
void G_PreLevelTitleCard(void); void G_PreLevelTitleCard(void);

View file

@ -53,9 +53,11 @@ typedef enum
extern gamestate_t gamestate; extern gamestate_t gamestate;
extern UINT8 titlemapinaction; extern UINT8 titlemapinaction;
extern UINT8 ultimatemode; // was sk_insane extern UINT8 ultimatemode;
extern gameaction_t gameaction; extern gameaction_t gameaction;
extern INT32 pickedchar;
extern boolean botingame; extern boolean botingame;
extern UINT8 botskin; extern UINT8 botskin;
extern UINT16 botcolor; extern UINT16 botcolor;

View file

@ -7179,20 +7179,14 @@ static void P_ForceCharacter(const char *forcecharskin)
{ {
SetPlayerSkin(secondarydisplayplayer, forcecharskin); SetPlayerSkin(secondarydisplayplayer, forcecharskin);
if ((unsigned)cv_playercolor2.value != skins[players[secondarydisplayplayer].skin].prefcolor) if ((unsigned)cv_playercolor2.value != skins[players[secondarydisplayplayer].skin].prefcolor)
{
CV_StealthSetValue(&cv_playercolor2, skins[players[secondarydisplayplayer].skin].prefcolor);
players[secondarydisplayplayer].skincolor = skins[players[secondarydisplayplayer].skin].prefcolor; players[secondarydisplayplayer].skincolor = skins[players[secondarydisplayplayer].skin].prefcolor;
} }
}
SetPlayerSkin(consoleplayer, forcecharskin); SetPlayerSkin(consoleplayer, forcecharskin);
// normal player colors in single player // normal player colors in single player
if ((unsigned)cv_playercolor.value != skins[players[consoleplayer].skin].prefcolor) if ((unsigned)cv_playercolor.value != skins[players[consoleplayer].skin].prefcolor)
{
CV_StealthSetValue(&cv_playercolor, skins[players[consoleplayer].skin].prefcolor);
players[consoleplayer].skincolor = skins[players[consoleplayer].skin].prefcolor; players[consoleplayer].skincolor = skins[players[consoleplayer].skin].prefcolor;
} }
}
} }
static void P_ResetSpawnpoints(void) static void P_ResetSpawnpoints(void)

View file

@ -346,10 +346,6 @@ static void SetSkin(player_t *player, INT32 skinnum)
if (!(cv_debug || devparm) && !(netgame || multiplayer || demoplayback)) if (!(cv_debug || devparm) && !(netgame || multiplayer || demoplayback))
{ {
if (player == &players[consoleplayer])
CV_StealthSetValue(&cv_playercolor, skin->prefcolor);
else if (player == &players[secondarydisplayplayer])
CV_StealthSetValue(&cv_playercolor2, skin->prefcolor);
player->skincolor = newcolor = skin->prefcolor; player->skincolor = newcolor = skin->prefcolor;
if (player->bot && botingame) if (player->bot && botingame)
{ {