[Add] Be a little trickiar when generating mission id's.
This commit is contained in:
parent
97baac1c3e
commit
e4f76c9b08
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user