mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-01-09 16:32:33 +00:00
extras-challenges.c, M_UpdateChallengeGridExtraData: Be less lazy about reallocation
- Z_Calloc once, on menu load, instead of every time data changes - Free once, on menu exit, instead of every time data changes
This commit is contained in:
parent
8dc4971c2a
commit
339617a54e
3 changed files with 21 additions and 20 deletions
17
src/m_cond.c
17
src/m_cond.c
|
|
@ -260,24 +260,19 @@ quickcheckagain:
|
|||
}
|
||||
}
|
||||
|
||||
challengegridextradata_t *M_ChallengeGridExtraData(void)
|
||||
void M_UpdateChallengeGridExtraData(challengegridextradata_t *extradata)
|
||||
{
|
||||
UINT8 i, j, num, id, tempid, work;
|
||||
challengegridextradata_t *extradata;
|
||||
boolean idchange;
|
||||
|
||||
if (!gamedata->challengegrid)
|
||||
if (gamedata->challengegrid == NULL)
|
||||
{
|
||||
return NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
extradata = Z_Malloc(
|
||||
(gamedata->challengegridwidth * CHALLENGEGRIDHEIGHT * sizeof(challengegridextradata_t)),
|
||||
PU_STATIC, NULL);
|
||||
|
||||
if (!extradata)
|
||||
if (extradata == NULL)
|
||||
{
|
||||
I_Error("M_ChallengeGridExtraData: was not able to allocate extradata");
|
||||
return;
|
||||
}
|
||||
|
||||
//CONS_Printf(" --- \n");
|
||||
|
|
@ -430,8 +425,6 @@ challengegridextradata_t *M_ChallengeGridExtraData(void)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
return extradata;
|
||||
}
|
||||
|
||||
void M_AddRawCondition(UINT8 set, UINT8 id, conditiontype_t c, INT32 r, INT16 x1, INT16 x2)
|
||||
|
|
|
|||
|
|
@ -199,7 +199,7 @@ struct challengegridextradata_t
|
|||
UINT8 flags;
|
||||
};
|
||||
|
||||
challengegridextradata_t *M_ChallengeGridExtraData(void);
|
||||
void M_UpdateChallengeGridExtraData(challengegridextradata_t *extradata);
|
||||
|
||||
#define CHE_NONE 0
|
||||
#define CHE_HINT 1
|
||||
|
|
|
|||
|
|
@ -174,7 +174,12 @@ menu_t *M_InterruptMenuWithChallenges(menu_t *desiredmenu)
|
|||
|
||||
M_PopulateChallengeGrid();
|
||||
if (gamedata->challengegrid)
|
||||
challengesmenu.extradata = M_ChallengeGridExtraData();
|
||||
{
|
||||
challengesmenu.extradata = Z_Calloc(
|
||||
(gamedata->challengegridwidth * CHALLENGEGRIDHEIGHT * sizeof(challengegridextradata_t)),
|
||||
PU_STATIC, NULL);
|
||||
M_UpdateChallengeGridExtraData(challengesmenu.extradata);
|
||||
}
|
||||
|
||||
memset(setup_explosions, 0, sizeof(setup_explosions));
|
||||
memset(&challengesmenu.unlockcount, 0, sizeof(challengesmenu.unlockcount));
|
||||
|
|
@ -318,11 +323,15 @@ void M_ChallengesTick(void)
|
|||
challengesmenu.unlockcount[CC_TALLY]++;
|
||||
challengesmenu.unlockcount[CC_ANIM]++;
|
||||
|
||||
Z_Free(challengesmenu.extradata);
|
||||
if ((challengesmenu.extradata = M_ChallengeGridExtraData()))
|
||||
if (challengesmenu.extradata)
|
||||
{
|
||||
unlockable_t *ref = &unlockables[challengesmenu.currentunlock];
|
||||
UINT16 bombcolor = SKINCOLOR_NONE;
|
||||
unlockable_t *ref;
|
||||
UINT16 bombcolor;
|
||||
|
||||
M_UpdateChallengeGridExtraData(challengesmenu.extradata);
|
||||
|
||||
ref = &unlockables[challengesmenu.currentunlock];
|
||||
bombcolor = SKINCOLOR_NONE;
|
||||
|
||||
if (ref->color != SKINCOLOR_NONE && ref->color < numskincolors)
|
||||
{
|
||||
|
|
@ -413,8 +422,7 @@ boolean M_ChallengesInputs(INT32 ch)
|
|||
gamedata->challengegrid = NULL;
|
||||
gamedata->challengegridwidth = 0;
|
||||
M_PopulateChallengeGrid();
|
||||
Z_Free(challengesmenu.extradata);
|
||||
challengesmenu.extradata = M_ChallengeGridExtraData();
|
||||
M_UpdateChallengeGridExtraData(challengesmenu.extradata);
|
||||
|
||||
M_ChallengesAutoFocus(challengesmenu.currentunlock, true);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue