flexibles Moddingsystem. Wie ist es am besten ?
-
Ich lasse eine Datei mit allen Standartgebäuden laden.
die sieht ungf so aus:Building start
set Typ = "Wirtschaft";
set Name = "Bohrturm";
set Upgragable = "true";
set CostsMetall = "10";
set ProduktionOil = "2";
set UpgradePercentageOil = "50";
set Time = "5";
set TimePercentage = "50";
Building endJe nach typ lasse ich einer Listbox den Namen des Gebäudes schreiben.
Die Informationen muss ich immer wieder aufrufen.Mir sind dazu folgende Möglichkeiten eingefallen, die ich auch behersche:
Klasse mit einem Haufen arrays
Klasse mit einem Haufen Vectoren oder Deques
Alles im Falle in Datei lesen.erstes und letzteres finde ich aus folgenden Gründen schlecht:
1. Arrays sind begrenzt oder unnötig groß... Könnten theoretisch ∞ Gebäude sein
2. Zeitlich lesen ist zu Zeitaufwändig und belastet die Festplatte zu sehrWürdet ihr auch Typ 2 nehmen oder was komplett anderes tun ?
-
Hallo
Lies alles einmal zur Laufzeit aus der Datei in einen passenden Container, sei es nun ein dynamisches C-Array oder ein std::vector (ich würde zweiteres empfehlen). Beides ist weder begrenzt (außer durch den verfügbaren Arbeitsspeicher) noch unnötig groß, wenn du es richtig machst.
bis bald
akari
-
Wenn du viele Gebäude hast und danach dann dynamisch suchen willst (z.B. nach Typ), dann könntest du auch eine std::map<Key, Building> verwenden (Key dann entsprechend der Datentyp, z.B. std::string).
P.S. schönes neues Wort: Upgragable -)
-
Ich bin jetzt schon weiter und hab einfach ein paar vektoren benutzt:
class AlleGebäude { public: std::vector <std::string> BName; std::vector <std::string> BTyp; std::vector <std::string> BUpgradable; std::vector <std::string> BCostsMetall; std::vector <std::string> BCostsOil; std::vector <std::string> BCostsPlutonium; std::vector <std::string> BProduktionMetall; std::vector <std::string> BProduktionOil; std::vector <std::string> BProduktionPlutonium; std::vector <std::string> BUpgradePercentageMetall; std::vector <std::string> BUpgradePercentageOil; std::vector <std::string> BUpgradePercentagePlutonium; std::vector <std::string> BDamage; std::vector <std::string> BDefense; std::vector <std::string> BRunCostsMetall; std::vector <std::string> BRunCostsOil; std::vector <std::string> BRunCostsPlutonium; std::vector <std::string> BScript; std::vector <std::string> BTime; std::vector <std::string> BTimePercentage; public: void PushArgument(String Element, String Value); };
Bisher erfüllt das voll und ganz was ich brauche und die benutzung funktioniert hervorragend, ich hatte bisher keine Probleme.