Correctly handle free play mode.
This commit is contained in:
parent
7cfac40aa8
commit
2031d5a301
|
@ -152,6 +152,8 @@ void initHub(void)
|
||||||
|
|
||||||
teeka = NULL;
|
teeka = NULL;
|
||||||
|
|
||||||
|
unlockedMissions = 0;
|
||||||
|
|
||||||
for (mission = hubMissionHead.next ; mission != NULL ; mission = mission->next)
|
for (mission = hubMissionHead.next ; mission != NULL ; mission = mission->next)
|
||||||
{
|
{
|
||||||
if (requiredMissionUnlocked(mission->requires) || dev.cheatLevels || game.isComplete)
|
if (requiredMissionUnlocked(mission->requires) || dev.cheatLevels || game.isComplete)
|
||||||
|
@ -161,34 +163,29 @@ void initHub(void)
|
||||||
|
|
||||||
mission->status = getMissionStatus(mission->id);
|
mission->status = getMissionStatus(mission->id);
|
||||||
|
|
||||||
if (strcmp(mission->id, "teeka") == 0)
|
if (!game.isComplete)
|
||||||
{
|
{
|
||||||
teeka = mission;
|
if (strcmp(mission->id, "teeka") == 0)
|
||||||
|
{
|
||||||
|
teeka = mission;
|
||||||
|
}
|
||||||
|
else if (mission->status != MS_COMPLETE)
|
||||||
|
{
|
||||||
|
unlockTeeka = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mission->status == MS_MISSING_HEART_CELL)
|
||||||
|
{
|
||||||
|
STRNCPY(mission->description, app.strings[ST_HEART_CELL], MAX_DESCRIPTION_LENGTH);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (mission->status != MS_COMPLETE)
|
else
|
||||||
{
|
|
||||||
unlockTeeka = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
game.totalMissions++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (mission = hubMissionHead.next ; mission != NULL ; mission = mission->next)
|
|
||||||
{
|
|
||||||
if (game.isComplete)
|
|
||||||
{
|
{
|
||||||
STRNCPY(mission->description, app.strings[ST_FREEPLAY], MAX_DESCRIPTION_LENGTH);
|
STRNCPY(mission->description, app.strings[ST_FREEPLAY], MAX_DESCRIPTION_LENGTH);
|
||||||
}
|
}
|
||||||
else if (mission->status == MS_MISSING_HEART_CELL)
|
|
||||||
{
|
game.totalMissions++;
|
||||||
STRNCPY(mission->description, app.strings[ST_HEART_CELL], MAX_DESCRIPTION_LENGTH);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* keep our unlock count in sync */
|
|
||||||
unlockedMissions = 0;
|
|
||||||
for (mission = hubMissionHead.next ; mission != NULL ; mission = mission->next)
|
|
||||||
{
|
|
||||||
if (mission->status != MS_LOCKED)
|
if (mission->status != MS_LOCKED)
|
||||||
{
|
{
|
||||||
unlockedMissions++;
|
unlockedMissions++;
|
||||||
|
@ -508,6 +505,12 @@ static void unlockMission(char *id)
|
||||||
if (t->value.i == MS_LOCKED || game.isComplete)
|
if (t->value.i == MS_LOCKED || game.isComplete)
|
||||||
{
|
{
|
||||||
t->value.i = MS_INCOMPLETE;
|
t->value.i = MS_INCOMPLETE;
|
||||||
|
|
||||||
|
/* if the game is complete, don't reset these two */
|
||||||
|
if (game.isComplete && (strcmp(t->key, "teeka") == 0 || strcmp(t->key, "beachApproach") == 0))
|
||||||
|
{
|
||||||
|
t->value.i = MS_COMPLETE;
|
||||||
|
}
|
||||||
|
|
||||||
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "Unlocked mission %s", id);
|
SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_DEBUG, "Unlocked mission %s", id);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue