Code ist auf github, nicht (mehr) Launchpad:
https://github.com/Return-To-The-Roots/
Erklären ist schwierig, da ich das wenn dann so haben möchte, dass man das nicht noch 3 mal ändern muss.
Im Prinzip: Ein Singleton für das laden von "GameData" wobei GameData (später mal) alle Konstanten sind, die jetzt frei im Code rumirren.
Für die Farben braucht man eine Klasse/struktur PlayerColors, die in dem Fall ein einfacher Vektor(-ReadOnly-Wrapper) sein kann. Beim Laden (im GameData objekt) öffnet er dann eine playerColors.xml und lädt die Einträge in den Vektor. Dazu kann die xml so aussehen, dass unter dem root-node "PlayerColors" je ein "Color" Node ist, mit dem Farbwert in Hex.
Beim Laden eines Spiels muss überprüft werden, dass für alle verwendeten color-indizes auch ein eintrag in dem Vektor ist ( size() )
Ansonsten sind die verwendbaren Farben einfach die Einträge im Vektor.
Beim Spiel eröffnen muss der Host noch vorgeben, wieviele Farben möglich sind und die Clients müssen prüfen, dass die genug Farben haben.
Für den XMLSerializer und dessen Verwendung kann mein Branch "dynamicNations" angeguckt werden. (Den branch selbst noch nicht verwenden!)
Aber wie gesagt, dass kann ich auch machen. Wenn du nur Farben ändern willst, änder die colors.h und compilier neu, oder warte, bis die Änderung fertig ist.
---
Github:
https://github.com/Flamefire