[Add] Be a little trickiar when generating mission id's.

This commit is contained in:
Allanis 2013-05-23 21:34:42 +01:00
parent 97baac1c3e
commit e4f76c9b08

View File

@ -39,6 +39,7 @@ static int mission_nstack = 0;
extern int misn_run(Mission* misn, char* func);
// Static.
static unsigned int mission_genID(void);
static int mission_init(Mission* mission, MissionData* misn);
static void mission_freeData(MissionData* mission);
static int mission_alreadyRunning(MissionData* misn);
@ -47,6 +48,19 @@ static int mission_matchFaction(MissionData* misn, int faction);
static int mission_location(char* loc);
static MissionData* mission_parse(const xmlNodePtr parent);
// Generate a new id for the mission.
static unsigned int mission_genID(void) {
unsigned int id;
int i;
id = ++mission_id; // Default id, not safe if loading.
// We save mission id's, so check for collisions with players missions.
for(i = 0; i < MISSION_MAX; i++)
if(id == player_missions[i].id) // Mission id was loaded from save.
return mission_genID(); // Recursive try again.
return id;
}
// Gets the ID from mission name.
int mission_getID(char* name) {
int i;
@ -69,7 +83,7 @@ static int mission_init(Mission* mission, MissionData* misn) {
char* buf;
uint32_t bufsize;
mission->id = ++mission_id;
mission->id = mission_genID();
mission->data = misn;
// Sane defaults.