Beides hat mMn Vor- und Nachteile.
Was man in Beiden Fällen machen müsste, wäre zusätzlich sich die Routen-ID merken.
enum e_PlayerMuellInfo {
bool:pmi_bAktiv, // Könnte man entfernen, wenn pmi_RoutenID = 0 bedeutet Inaktiv und alles 1>= Aktiv
pmi_Checkpoint,
pmi_Route //Neu
}
Ein extra enum für jede Route ist nicht so klug. Da würde ich eher nur ein extra Wert anlegen um die Route zu speichern.
Also so:
//Methode 1)
enum e_Muell {
Float:M_fX,
Float:M_fY,
Float:M_fZ,
Float:M_fRad,
M_iRoute //Neu
}
new
Muellabfuhr_Stationen[][e_Muell] = { ... };
Dann muss man aber zusätzlich durchzählen, bei welchem Index in der Variable Muellabfuhr_Stationen die Route für den Spieler beginnt und wie viele
Checkpoints diese hat (zB 12).
Also zB:
ZitatRoute 1 beginnt bei Index 0 und hat 7 Checkpoints (0-6)
Route 2 beginnt bei Index 7 und hat 12 Checkpoints (7-18)
etc
Das könnte man in eine extra Variable auslagern ( zb: Muellabfuhr_Routen mit Routen-ID und Anzahl an CPs ) oder man sammelt die Information jedes mal wenn
die benötigt werden.
Eine Andere Möglichkeit wäre, man legt für jede Route eine extra Variable an.
//Methode 2)
// Keine Veränderung am enum
enum e_Muell {
Float:M_fX,
Float:M_fY,
Float:M_fZ,
Float:M_fRad
}
new
Muellabfuhr_Stationen_Route1[][e_Muell] = { ... },
Muellabfuhr_Stationen_Route2[][e_Muell] = { ... },
Muellabfuhr_Stationen_Route3[][e_Muell] = { ... };
Könnte man auch machen, allerdings müsste man mit jeder neuen Route auch den Code anpassen (Abgesehen von den Daten für die Routen).
Möglich wäre auch, dass mit der Pointer Include zu machen. Damit
sollte es sogar einfacher sein,die 2. Methode umzusetzen. Bin mir aber auch nicht ganz sicher, ob das funktioniert (denke aber schon).
So oder so, in Beiden Fällen müsste man den Code etwas umschreiben. Ich würde aber die 1.Methode nehmen, wenn ich sowas machen müsste.