mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2026-04-28 04:51:42 +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;
|
UINT8 i, j, num, id, tempid, work;
|
||||||
challengegridextradata_t *extradata;
|
|
||||||
boolean idchange;
|
boolean idchange;
|
||||||
|
|
||||||
if (!gamedata->challengegrid)
|
if (gamedata->challengegrid == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
extradata = Z_Malloc(
|
if (extradata == NULL)
|
||||||
(gamedata->challengegridwidth * CHALLENGEGRIDHEIGHT * sizeof(challengegridextradata_t)),
|
|
||||||
PU_STATIC, NULL);
|
|
||||||
|
|
||||||
if (!extradata)
|
|
||||||
{
|
{
|
||||||
I_Error("M_ChallengeGridExtraData: was not able to allocate extradata");
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//CONS_Printf(" --- \n");
|
//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)
|
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;
|
UINT8 flags;
|
||||||
};
|
};
|
||||||
|
|
||||||
challengegridextradata_t *M_ChallengeGridExtraData(void);
|
void M_UpdateChallengeGridExtraData(challengegridextradata_t *extradata);
|
||||||
|
|
||||||
#define CHE_NONE 0
|
#define CHE_NONE 0
|
||||||
#define CHE_HINT 1
|
#define CHE_HINT 1
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,12 @@ menu_t *M_InterruptMenuWithChallenges(menu_t *desiredmenu)
|
||||||
|
|
||||||
M_PopulateChallengeGrid();
|
M_PopulateChallengeGrid();
|
||||||
if (gamedata->challengegrid)
|
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(setup_explosions, 0, sizeof(setup_explosions));
|
||||||
memset(&challengesmenu.unlockcount, 0, sizeof(challengesmenu.unlockcount));
|
memset(&challengesmenu.unlockcount, 0, sizeof(challengesmenu.unlockcount));
|
||||||
|
|
@ -318,11 +323,15 @@ void M_ChallengesTick(void)
|
||||||
challengesmenu.unlockcount[CC_TALLY]++;
|
challengesmenu.unlockcount[CC_TALLY]++;
|
||||||
challengesmenu.unlockcount[CC_ANIM]++;
|
challengesmenu.unlockcount[CC_ANIM]++;
|
||||||
|
|
||||||
Z_Free(challengesmenu.extradata);
|
if (challengesmenu.extradata)
|
||||||
if ((challengesmenu.extradata = M_ChallengeGridExtraData()))
|
|
||||||
{
|
{
|
||||||
unlockable_t *ref = &unlockables[challengesmenu.currentunlock];
|
unlockable_t *ref;
|
||||||
UINT16 bombcolor = SKINCOLOR_NONE;
|
UINT16 bombcolor;
|
||||||
|
|
||||||
|
M_UpdateChallengeGridExtraData(challengesmenu.extradata);
|
||||||
|
|
||||||
|
ref = &unlockables[challengesmenu.currentunlock];
|
||||||
|
bombcolor = SKINCOLOR_NONE;
|
||||||
|
|
||||||
if (ref->color != SKINCOLOR_NONE && ref->color < numskincolors)
|
if (ref->color != SKINCOLOR_NONE && ref->color < numskincolors)
|
||||||
{
|
{
|
||||||
|
|
@ -413,8 +422,7 @@ boolean M_ChallengesInputs(INT32 ch)
|
||||||
gamedata->challengegrid = NULL;
|
gamedata->challengegrid = NULL;
|
||||||
gamedata->challengegridwidth = 0;
|
gamedata->challengegridwidth = 0;
|
||||||
M_PopulateChallengeGrid();
|
M_PopulateChallengeGrid();
|
||||||
Z_Free(challengesmenu.extradata);
|
M_UpdateChallengeGridExtraData(challengesmenu.extradata);
|
||||||
challengesmenu.extradata = M_ChallengeGridExtraData();
|
|
||||||
|
|
||||||
M_ChallengesAutoFocus(challengesmenu.currentunlock, true);
|
M_ChallengesAutoFocus(challengesmenu.currentunlock, true);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue