[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);
|
extern int misn_run(Mission* misn, char* func);
|
||||||
|
|
||||||
// Static.
|
// Static.
|
||||||
|
static unsigned int mission_genID(void);
|
||||||
static int mission_init(Mission* mission, MissionData* misn);
|
static int mission_init(Mission* mission, MissionData* misn);
|
||||||
static void mission_freeData(MissionData* mission);
|
static void mission_freeData(MissionData* mission);
|
||||||
static int mission_alreadyRunning(MissionData* misn);
|
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 int mission_location(char* loc);
|
||||||
static MissionData* mission_parse(const xmlNodePtr parent);
|
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.
|
// Gets the ID from mission name.
|
||||||
int mission_getID(char* name) {
|
int mission_getID(char* name) {
|
||||||
int i;
|
int i;
|
||||||
@ -69,7 +83,7 @@ static int mission_init(Mission* mission, MissionData* misn) {
|
|||||||
char* buf;
|
char* buf;
|
||||||
uint32_t bufsize;
|
uint32_t bufsize;
|
||||||
|
|
||||||
mission->id = ++mission_id;
|
mission->id = mission_genID();
|
||||||
mission->data = misn;
|
mission->data = misn;
|
||||||
|
|
||||||
// Sane defaults.
|
// Sane defaults.
|
||||||
|
Loading…
Reference in New Issue
Block a user