Bitte in diesem Thread nur dokumentieren, nicht diskutieren. Diskussionsbeiträge werden kommentarlos verschoben oder gelöscht - ich bitte um Verständnis. - W.B.
Da ich mittlerweile einige Änderungen durchgeführt habe, will ich versuchen hier diese Änderungen zu dokumentieren. Das soll euch z.B. eine bessere Übersicht über neue XML-Eigenschaften geben, die ich hinzugefügt habe. Die Liste wird nach und nach erweitert.
Neue XML-Eigenschaften:
- CIV4BuildingInfo.xml:
- FreeBuildings, RemoveBuildings: Legen fest welche Gebäunde bei Fertigstellung eines anderen Gebäudes zusätzlich gebaut werden.
Es ist auch möglich dass sich ein Gebäude selber sofort wieder löscht, wenn es gebaut wurde. Die Syntax von FreeBuildings und RemoveBuildings ist identisch.
Beispiel:
Achtung Spoiler:- bDestructable: Legt fest, ob ein Gebäude (bei Schiffen sollte man eher an Aufbauten/Ausbauten denken) wieder entfernen kann. Im Schiffsbildschirm wird ein Button (WIDGET_DESTRUCT_BUILDING ) eingeblendet, über den
ein Menü zum Entfernen von Gebäuden eingeblendet werden kann. Gebäude, die Voraussetzungen von anderen gebauten Gebäuden sind, können nicht entfernt werden.- PortBuildingClass: Ist dieser Wert ungleich NONE und handelt es sich um eine „Schiffs-Stadt”, so wird geprüft ob in der Stadt, in dem sich das Schiff derzeit befindet, diese Gebäudeklasse vorhanden ist. Damit kann man den Bau von Verbesserungen auf Schiffen beispielsweise davon abhängig machen, ob ein Trockendock vorhanden ist. Man kann damit auch komplett den Bau von Verbesserungen auf hoher See unterdrücken (das ist derzeit auch das Ziel).
- CIV4UnitInfos.xml:
- bShipCrew: Gibt an, ob eine Einheit Berufe auf Schiffen ergreifen kann.
Derzeit gilt, dass normale Bürger auf Schiffen nicht arbeiten können und Mitglieder einer Schiffsmannschaft nicht in normalen Städten. Man kann normale Bürger aber auf Schiffen anheuern, was sie in Matrosen (Standardeinheit für Schiffe) umwandelt.- CIV4PromotionInfos.xml:
bNextPromotionIsBetter markiert eine Beförderung als Vorgängerbeförderung der nächsten in der XML-Datei. D.h. die Reihenfolge der Einträge ist wichtig. Dies wird benutzt, um das Beförderungs-Icon des Vorgängers im Interface auszublenden, wenn auch die Nachfolgebeförderung vorhanden ist. Im SDK und Python wurden die entsprechenden Methoden zum Auslesen der Eigenschaft implementiert. isNextPromotionIsBetter().
Neue Python-Eigenschaften:
- Screens/CvMainInterface.py:
- Enthält die Daten für den Schiffsbildschirm. Das ist der normale Stadtbildschirm, für den an bestimmten Stellen im Code
ein paar Änderungen vorgenommen wurden. Es wird für die Unterscheidungen die Boolean-Variable pCity.hasCityShip() getestet.- An der Stelle an der die Positionen der Gebäude definiert werden (BUILDING_DATA) wird auch noch ein Array BUILDING_SHIP angelegt, welches speichert, ob es ein Gebäudeslot für Schiffe oder normale Städte ist. Die Gebäudegrafik wird dann nur in einem der beiden Fälle gezeichnet.
- MAX_NUMBER_OF_CARGO_YIELDS_PER_SCREEN: Gibt die Anzahl der Waren in der Leiste des Stadtbildschirms an. Standardwert ist 20 (bis Handelswaren/Rum).
- ShipYields (Array): Gibt die Waren an, welche im Schiffbildschirm am unteren Rand eingeblendet werden. Es wird darauf geachtet, dass die Waren im Schiffsbildschirm an den gleichen Positionen landen, wie im normalen Schirm, wenn es zu überschneiden kommt. Zur Zeit wird das Feature nicht genutzt und dieses Array entspricht den gleichen Waren wie im Stadtbildschirm.
- ExtraYields Dieses 3x3-Array enthält die Yield-Typen, die im Schiffsbildschirm in der Mitte eingeblendet werden. (Dort, wo üblicherweise die Stadtfelder angezeigt werden.)
- CityManagerBackgroundShip: Die Hintergrundgrafik im linken Bereich des Bildschirms.
- CityPlotHider: Der Grafikcontainer, welcher die Stadtfelder überdeckt.
- Neue Buttons: Im Code nach 450, 451, 452,… suchen. Bisher gibt es Buttons zum
- Öffnen des Stadtbildschirmes (450),
- Anheuern eines Matrosen (451),
- Anschluss eines Matrosen (451),
- Einlagern von Waren in Schiffinnerem (451) und,
- Rausschmiss eines Matrosen (452)
Auslesen der Anzahl an Runden, die ein Schiff nicht in einer Stadt stationiert war (z.B. für Events): pUnit.getOutOfTownRounds() .
DLL-Änderungen:
- Liste der neuen Yields, die für die Verwendung auf Schiffen gedacht sind. Fünf Namen können sich noch ändern.
Achtung Spoiler:- Es stehen folgende neue Methoden zum Auslesen/Ändern der Einheitenwerte zur Verfügung:
Achtung Spoiler:
Um beispielsweise die Stärke einer Einheit zu ändern, kann „setExtra2Combat(iVal)“ genutzt werden.- In Städten kann man mit [get|set|has]CityShip(...) die Verbindung zu einer Einheit prüfen oder setzen.
- In Einheiten kann man mit [get|set|has]ShipCity(...) die Verbindung einer Stadt prüfen oder setzen.
- Intern wurden viele Methoden um einen zusätzlichen Parameter für eine Stadt versehen, damit es technisch möglich ist mehrerer Städte auf ein Feld zu setzen. (Dann liefert pPlot->getCity() im Allgemeinen nicht die richtige Stadt.)