Some cleanup.

This commit is contained in:
onpon4 2016-01-08 22:57:06 -05:00
parent ac844d8d54
commit 9a474f1416
2 changed files with 83 additions and 80 deletions

View File

@ -44,6 +44,7 @@ static void intermission_setStatusLines()
int timeTaken = game.timeTaken; int timeTaken = game.timeTaken;
int y; int y;
// XXX: Magic number
for (int i = 0 ; i < 10 ; i++) for (int i = 0 ; i < 10 ; i++)
{ {
if (systemPlanet[i].missionNumber > -1) if (systemPlanet[i].missionNumber > -1)

View File

@ -19,12 +19,14 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "Starfighter.h" #include "Starfighter.h"
// XXX: Magic number
Planet systemPlanet[10]; Planet systemPlanet[10];
mission currentMission; mission currentMission;
static mission missions[MISN_MAX]; static mission missions[MISN_MAX];
void initPlanetMissions(int system) void initPlanetMissions(int system)
{ {
// XXX: Magic number
for (int i = 0 ; i < 10 ; i++) for (int i = 0 ; i < 10 ; i++)
{ {
systemPlanet[i].missionNumber = -1; // no mission for this planet systemPlanet[i].missionNumber = -1; // no mission for this planet
@ -35,97 +37,97 @@ void initPlanetMissions(int system)
{ {
// Spirit // Spirit
case 0: case 0:
systemPlanet[0].missionNumber = MISN_HAIL; systemPlanet[PLANET_HAIL].missionNumber = MISN_HAIL;
systemPlanet[0].missionCompleted = 0; systemPlanet[PLANET_HAIL].missionCompleted = 0;
systemPlanet[1].missionNumber = MISN_CERADSE; systemPlanet[PLANET_CERADSE].missionNumber = MISN_CERADSE;
systemPlanet[1].missionCompleted = 0; systemPlanet[PLANET_CERADSE].missionCompleted = 0;
systemPlanet[2].missionNumber = MISN_HINSTAG; systemPlanet[PLANET_HINSTAG].missionNumber = MISN_HINSTAG;
systemPlanet[2].missionCompleted = 0; systemPlanet[PLANET_HINSTAG].missionCompleted = 0;
systemPlanet[3].missionNumber = MISN_JOLDAR; systemPlanet[PLANET_JOLDAR].missionNumber = MISN_JOLDAR;
systemPlanet[3].missionCompleted = 0; systemPlanet[PLANET_JOLDAR].missionCompleted = 0;
systemPlanet[4].missionNumber = MISN_MOEBO; systemPlanet[PLANET_MOEBO].missionNumber = MISN_MOEBO;
systemPlanet[4].missionCompleted = -1; systemPlanet[PLANET_MOEBO].missionCompleted = -1;
break; break;
// Eyananth // Eyananth
case 1: case 1:
systemPlanet[0].missionNumber = MISN_NEROD; systemPlanet[PLANET_NEROD].missionNumber = MISN_NEROD;
systemPlanet[0].missionCompleted = 0; systemPlanet[PLANET_NEROD].missionCompleted = 0;
systemPlanet[1].missionNumber = MISN_ALLEZ; systemPlanet[PLANET_ALLEZ].missionNumber = MISN_ALLEZ;
systemPlanet[1].missionCompleted = 0; systemPlanet[PLANET_ALLEZ].missionCompleted = 0;
systemPlanet[2].missionNumber = MISN_URUSOR; systemPlanet[PLANET_URUSOR].missionNumber = MISN_URUSOR;
systemPlanet[2].missionCompleted = -1; systemPlanet[PLANET_URUSOR].missionCompleted = -1;
systemPlanet[3].missionNumber = MISN_DORIM; systemPlanet[PLANET_DORIM].missionNumber = MISN_DORIM;
systemPlanet[3].missionCompleted = -1; systemPlanet[PLANET_DORIM].missionCompleted = -1;
systemPlanet[4].missionNumber = MISN_ELAMALE; systemPlanet[PLANET_ELAMALE].missionNumber = MISN_ELAMALE;
systemPlanet[4].missionCompleted = -2; systemPlanet[PLANET_ELAMALE].missionCompleted = -2;
// This one is for the slaves // This one is for the slaves
systemPlanet[9].missionNumber = MISN_RESCUESLAVES; systemPlanet[PLANET_RESCUESLAVES].missionNumber = MISN_RESCUESLAVES;
systemPlanet[9].missionCompleted = 0; systemPlanet[PLANET_RESCUESLAVES].missionCompleted = 0;
break; break;
// Mordor // Mordor
case 2: case 2:
systemPlanet[0].missionNumber = MISN_ODEON; systemPlanet[PLANET_ODEON].missionNumber = MISN_ODEON;
systemPlanet[0].missionCompleted = 0; systemPlanet[PLANET_ODEON].missionCompleted = 0;
systemPlanet[1].missionNumber = MISN_FELLON; systemPlanet[PLANET_FELLON].missionNumber = MISN_FELLON;
systemPlanet[1].missionCompleted = 0; systemPlanet[PLANET_FELLON].missionCompleted = 0;
systemPlanet[2].missionNumber = MISN_SIVEDI; systemPlanet[PLANET_SIVEDI].missionNumber = MISN_SIVEDI;
systemPlanet[2].missionCompleted = -1; systemPlanet[PLANET_SIVEDI].missionCompleted = -1;
systemPlanet[3].missionNumber = MISN_ALMARTHA; systemPlanet[PLANET_ALMARTHA].missionNumber = MISN_ALMARTHA;
systemPlanet[3].missionCompleted = -1; systemPlanet[PLANET_ALMARTHA].missionCompleted = -1;
systemPlanet[4].missionNumber = MISN_POSWIC; systemPlanet[PLANET_POSWIC].missionNumber = MISN_POSWIC;
systemPlanet[4].missionCompleted = -2; systemPlanet[PLANET_POSWIC].missionCompleted = -2;
systemPlanet[5].missionNumber = MISN_ELLESH; systemPlanet[PLANET_ELLESH].missionNumber = MISN_ELLESH;
systemPlanet[5].missionCompleted = -3; systemPlanet[PLANET_ELLESH].missionCompleted = -3;
// This one is for the experimental fighter // This one is for the experimental fighter
systemPlanet[9].missionNumber = MISN_CLOAKFIGHTER; systemPlanet[PLANET_CLOAKFIGHTER].missionNumber = MISN_CLOAKFIGHTER;
systemPlanet[9].missionCompleted = 0; systemPlanet[PLANET_CLOAKFIGHTER].missionCompleted = 0;
break; break;
// Sol // Sol
case 3: case 3:
systemPlanet[8].missionNumber = MISN_PLUTO; systemPlanet[PLANET_PLUTO].missionNumber = MISN_PLUTO;
systemPlanet[8].missionCompleted = 0; systemPlanet[PLANET_PLUTO].missionCompleted = 0;
systemPlanet[7].missionNumber = MISN_NEPTUNE; systemPlanet[PLANET_NEPTUNE].missionNumber = MISN_NEPTUNE;
systemPlanet[7].missionCompleted = 0; systemPlanet[PLANET_NEPTUNE].missionCompleted = 0;
systemPlanet[6].missionNumber = MISN_URANUS; systemPlanet[PLANET_URANUS].missionNumber = MISN_URANUS;
systemPlanet[6].missionCompleted = 0; systemPlanet[PLANET_URANUS].missionCompleted = 0;
systemPlanet[5].missionNumber = MISN_SATURN; systemPlanet[PLANET_SATURN].missionNumber = MISN_SATURN;
systemPlanet[5].missionCompleted = -1; systemPlanet[PLANET_SATURN].missionCompleted = -1;
systemPlanet[4].missionNumber = MISN_JUPITER; systemPlanet[PLANET_JUPITER].missionNumber = MISN_JUPITER;
systemPlanet[4].missionCompleted = -2; systemPlanet[PLANET_JUPITER].missionCompleted = -2;
systemPlanet[3].missionNumber = MISN_MARS; systemPlanet[PLANET_MARS].missionNumber = MISN_MARS;
systemPlanet[3].missionCompleted = -3; systemPlanet[PLANET_MARS].missionCompleted = -3;
systemPlanet[2].missionNumber = MISN_EARTH; systemPlanet[PLANET_EARTH].missionNumber = MISN_EARTH;
systemPlanet[2].missionCompleted = -4; systemPlanet[PLANET_EARTH].missionCompleted = -4;
systemPlanet[1].missionNumber = MISN_VENUS; systemPlanet[PLANET_VENUS].missionNumber = MISN_VENUS;
systemPlanet[1].missionCompleted = -5; systemPlanet[PLANET_VENUS].missionCompleted = -5;
break; break;
} }
@ -257,9 +259,9 @@ void setMission(int mission)
if (currentMission.timeLimit2[i] > engine.minutes) if (currentMission.timeLimit2[i] > engine.minutes)
engine.minutes = currentMission.timeLimit2[i]; engine.minutes = currentMission.timeLimit2[i];
if (currentMission.completed1[i] == 0) if (currentMission.completed1[i] == OB_INCOMPLETE)
currentMission.remainingObjectives1++; currentMission.remainingObjectives1++;
if (currentMission.completed2[i] == 0) if (currentMission.completed2[i] == OB_INCOMPLETE)
currentMission.remainingObjectives1++; currentMission.remainingObjectives1++;
} }
@ -294,13 +296,13 @@ void checkTimer()
for (int i = 0 ; i < 3 ; i++) for (int i = 0 ; i < 3 ; i++)
{ {
if ((currentMission.timeLimit1[i] == -1) && (currentMission.completed1[i] == OB_INCOMPLETE)) if ((currentMission.timeLimit1[i] == -1) && (currentMission.completed1[i] == OB_INCOMPLETE))
currentMission.completed1[i] = -2; currentMission.completed1[i] = OB_JUST_FAILED;
} }
for (int i = 0 ; i < 3 ; i++) for (int i = 0 ; i < 3 ; i++)
{ {
if ((currentMission.timeLimit2[i] == -1) && (currentMission.completed2[i] == OB_INCOMPLETE)) if ((currentMission.timeLimit2[i] == -1) && (currentMission.completed2[i] == OB_INCOMPLETE))
currentMission.completed2[i] = -2; currentMission.completed2[i] = OB_JUST_FAILED;
} }
// Find out if there are any uncompleted missions that require the timer // Find out if there are any uncompleted missions that require the timer
@ -334,9 +336,9 @@ static void evaluateRequirement(int type, int id, int *completed, int *targetVal
char message[25]; char message[25];
if ((*targetValue <= 0) && (type != M_PROTECT_TARGET) && if ((*targetValue <= 0) && (type != M_PROTECT_TARGET) &&
(type != M_PROTECT_PICKUP)) (type != M_PROTECT_PICKUP))
{ {
*completed = 2; *completed = OB_JUST_COMPLETED;
checkTimer(); checkTimer();
if ((game.area == MISN_URUSOR) && (type == M_DISABLE_TARGET)) if ((game.area == MISN_URUSOR) && (type == M_DISABLE_TARGET))
setRadioMessage(FS_SID, "All vessels disabled!", 1); setRadioMessage(FS_SID, "All vessels disabled!", 1);
@ -367,13 +369,13 @@ static void evaluateRequirement(int type, int id, int *completed, int *targetVal
} }
break; break;
case M_PROTECT_PICKUP: case M_PROTECT_PICKUP:
*completed = -2; *completed = OB_JUST_FAILED;
switch(id) switch(id)
{ {
case P_CARGO: case P_CARGO:
sprintf(message, "Cargo pod destroyed!"); sprintf(message, "Cargo pod destroyed!");
if (game.area == MISN_CERADSE) // Get lectured by Sid if (game.area == MISN_CERADSE) // Get lectured by Sid
setRadioMessage(FS_SID, "Chris, we needed that pod!! I warned you that we couldn't afford to lose a single one!!", 1); setRadioMessage(FS_SID, "Chris, we needed that pod! I told you that we couldn't afford to lose a single one!", 1);
break; break;
case P_ESCAPEPOD: case P_ESCAPEPOD:
sprintf(message, "Escape Pod lost!"); sprintf(message, "Escape Pod lost!");
@ -385,7 +387,7 @@ static void evaluateRequirement(int type, int id, int *completed, int *targetVal
case M_PROTECT_TARGET: case M_PROTECT_TARGET:
if (*targetValue <= 0) if (*targetValue <= 0)
{ {
*completed = -2; *completed = OB_JUST_FAILED;
switch (game.area) switch (game.area)
{ {
case MISN_NEROD: case MISN_NEROD:
@ -403,7 +405,7 @@ static void evaluateRequirement(int type, int id, int *completed, int *targetVal
case M_DESTROY_TARGET_TYPE: case M_DESTROY_TARGET_TYPE:
if ((*targetValue <= 10) || (*targetValue % 10 == 0)) if ((*targetValue <= 10) || (*targetValue % 10 == 0))
{ {
if ((rand() % 2) == 0) if (CHANCE(0.5))
sprintf(message, "%d more to go...", *targetValue); sprintf(message, "%d more to go...", *targetValue);
else else
sprintf(message, "Destroy %d more...", *targetValue); sprintf(message, "Destroy %d more...", *targetValue);
@ -434,7 +436,7 @@ void updateMissionRequirements(int type, int id, int value)
{ {
setInfoLine("Sid has been killed!!", FONT_RED); setInfoLine("Sid has been killed!!", FONT_RED);
setRadioMessage(FS_CHRIS, "Sid... I... I'm sorry...", 1); setRadioMessage(FS_CHRIS, "Sid... I... I'm sorry...", 1);
currentMission.completed1[0] = -2; currentMission.completed1[0] = OB_JUST_FAILED;
} }
for (int i = 0 ; i < 3 ; i++) for (int i = 0 ; i < 3 ; i++)
@ -442,8 +444,8 @@ void updateMissionRequirements(int type, int id, int value)
if ((currentMission.completed1[i] == OB_INCOMPLETE) || (currentMission.completed1[i] == OB_CONDITION)) if ((currentMission.completed1[i] == OB_INCOMPLETE) || (currentMission.completed1[i] == OB_CONDITION))
{ {
if ((currentMission.primaryType[i] == type) && if ((currentMission.primaryType[i] == type) &&
((currentMission.target1[i] == id) || ((currentMission.target1[i] == id) ||
(currentMission.target1[i] == CD_ANY))) (currentMission.target1[i] == CD_ANY)))
{ {
matched = 1; matched = 1;
currentMission.targetValue1[i] -= value; currentMission.targetValue1[i] -= value;
@ -461,8 +463,8 @@ void updateMissionRequirements(int type, int id, int value)
if ((currentMission.completed2[i] == OB_INCOMPLETE) || (currentMission.completed2[i] == OB_CONDITION)) if ((currentMission.completed2[i] == OB_INCOMPLETE) || (currentMission.completed2[i] == OB_CONDITION))
{ {
if ((currentMission.secondaryType[i] == type) && if ((currentMission.secondaryType[i] == type) &&
((currentMission.target2[i] == id) || ((currentMission.target2[i] == id) ||
(currentMission.target2[i] == CD_ANY))) (currentMission.target2[i] == CD_ANY)))
{ {
currentMission.targetValue2[i] -= value; currentMission.targetValue2[i] -= value;
evaluateRequirement(type, id, &currentMission.completed2[i], &currentMission.targetValue2[i], FONT_YELLOW); evaluateRequirement(type, id, &currentMission.completed2[i], &currentMission.targetValue2[i], FONT_YELLOW);
@ -505,9 +507,9 @@ void updateMissionRequirements(int type, int id, int value)
This is only used as few times in the game. This is only used as few times in the game.
Missions 11 and 23 to be exact! Missions 11 and 23 to be exact!
*/ */
static char revealHiddenObjectives() static int revealHiddenObjectives()
{ {
char allDone = 1; int allDone = 1;
char string[255] = ""; char string[255] = "";
for (int i = 0 ; i < 3 ; i++) for (int i = 0 ; i < 3 ; i++)
@ -548,7 +550,7 @@ bool allMissionsCompleted()
{ {
if ((currentMission.primaryType[i] == M_DESTROY_ALL_TARGETS) && (engine.allAliensDead) && (currentMission.remainingObjectives1 + currentMission.remainingObjectives2 == 1)) if ((currentMission.primaryType[i] == M_DESTROY_ALL_TARGETS) && (engine.allAliensDead) && (currentMission.remainingObjectives1 + currentMission.remainingObjectives2 == 1))
{ {
currentMission.completed1[i] = 2; currentMission.completed1[i] = OB_JUST_COMPLETED;
checkTimer(); checkTimer();
} }
} }
@ -560,7 +562,7 @@ bool allMissionsCompleted()
{ {
if ((currentMission.secondaryType[i] == M_DESTROY_ALL_TARGETS) && (engine.allAliensDead) && (currentMission.remainingObjectives1 + currentMission.remainingObjectives2 == 1)) if ((currentMission.secondaryType[i] == M_DESTROY_ALL_TARGETS) && (engine.allAliensDead) && (currentMission.remainingObjectives1 + currentMission.remainingObjectives2 == 1))
{ {
currentMission.completed2[i] = 2; currentMission.completed2[i] = OB_JUST_COMPLETED;
checkTimer(); checkTimer();
} }
} }
@ -568,7 +570,7 @@ bool allMissionsCompleted()
for (int i = 0 ; i < 3 ; i++) for (int i = 0 ; i < 3 ; i++)
{ {
if (currentMission.completed1[i] == 2) if (currentMission.completed1[i] == OB_JUST_COMPLETED)
{ {
if (currentMission.remainingObjectives1 > 1) if (currentMission.remainingObjectives1 > 1)
{ {
@ -604,7 +606,7 @@ bool allMissionsCompleted()
} }
} }
if (currentMission.completed2[i] == 2) if (currentMission.completed2[i] == OB_JUST_COMPLETED)
{ {
if (currentMission.remainingObjectives2 > 1) if (currentMission.remainingObjectives2 > 1)
{ {
@ -626,13 +628,13 @@ bool allMissionsCompleted()
} }
} }
if (currentMission.completed1[i] == -2) if (currentMission.completed1[i] == OB_JUST_FAILED)
{ {
setInfoLine(">>> MISSION FAILED <<<", FONT_RED); setInfoLine(">>> MISSION FAILED <<<", FONT_RED);
currentMission.completed1[i] = OB_FAILED; currentMission.completed1[i] = OB_FAILED;
} }
if (currentMission.completed2[i] == -2) if (currentMission.completed2[i] == OB_JUST_FAILED)
{ {
setInfoLine(">>> Secondary Objective Failed <<<", FONT_RED); setInfoLine(">>> Secondary Objective Failed <<<", FONT_RED);
currentMission.completed2[i] = OB_FAILED; currentMission.completed2[i] = OB_FAILED;
@ -650,7 +652,7 @@ bool allMissionsCompleted()
{ {
if (currentMission.primaryType[i] != M_NONE) if (currentMission.primaryType[i] != M_NONE)
{ {
if (currentMission.completed1[i] == 0) if (currentMission.completed1[i] == OB_INCOMPLETE)
{ {
currentMission.remainingObjectives1++; currentMission.remainingObjectives1++;
if (currentMission.primaryType[i] == M_DESTROY_ALL_TARGETS) if (currentMission.primaryType[i] == M_DESTROY_ALL_TARGETS)
@ -658,12 +660,12 @@ bool allMissionsCompleted()
allDone = false; allDone = false;
} }
if (currentMission.completed1[i] < 0) if (currentMission.completed1[i] < OB_INCOMPLETE)
return false; return false;
} }
if (currentMission.secondaryType[i] != M_NONE) if (currentMission.secondaryType[i] != M_NONE)
{ {
if (currentMission.completed2[i] == 0) if (currentMission.completed2[i] == OB_INCOMPLETE)
{ {
currentMission.remainingObjectives2++; currentMission.remainingObjectives2++;
if (currentMission.secondaryType[i] == M_DESTROY_ALL_TARGETS) if (currentMission.secondaryType[i] == M_DESTROY_ALL_TARGETS)
@ -690,7 +692,7 @@ bool missionFailed()
{ {
for (int i = 0 ; i < 3 ; i++) for (int i = 0 ; i < 3 ; i++)
{ {
if (currentMission.completed1[i] < 0) if (currentMission.completed1[i] < OB_INCOMPLETE)
{ {
return true; return true;
} }
@ -884,7 +886,7 @@ void missionFinishedScreen()
if (currentMission.secondaryType[i] != M_NONE) if (currentMission.secondaryType[i] != M_NONE)
{ {
strcpy(temp, currentMission.secondaryObjective[i]); strcpy(temp, currentMission.secondaryObjective[i]);
if (currentMission.completed2[i] >= 1) if (currentMission.completed2[i] >= OB_COMPLETED)
{ {
screen_renderString("COMPLETED", 550, 274 + (i * 30), FONT_GREEN); screen_renderString("COMPLETED", 550, 274 + (i * 30), FONT_GREEN);
game.secondaryMissionsCompleted++; game.secondaryMissionsCompleted++;