Zum Hauptinhalt springen

6. Status Lights - Statuslichter

Übersicht​

Warnung außerhalb der Saison Mit Status Lights kannst du Lichter anzeigen, die sich je nach Produktionsstatus ändern.

💡 Beispiel: Grünes Licht wenn Produktion läuft, rotes Licht bei fehlenden Inputs, gelbes Licht wenn inaktiv.

Funktionsweise​

  • Lichter zeigen den aktuellen Status einer Produktion
  • Automatisches Umschalten bei Statusänderung
  • Lichter können blinken (optional)
  • Mehrere Lichter pro Status möglich

Produktionsstatus​

Es gibt 4 verschiedene Status:

StatusBedeutung
INACTIVEProduktion ist gestoppt
RUNNINGProduktion läuft
MISSING_INPUTSInputs fehlen
NO_OUTPUT_SPACEKein Platz für Outputs

XML-Konfiguration​

Basis-Struktur​

<placeable>
<productionExtension>
<productions>
<production id="baeckerei" name="Bäckerei" cyclesPerHour="2" costsPerActiveHour="10">
<inputs>
<input fillType="FLOUR" amount="500"/>
</inputs>
<outputs>
<output fillType="BREAD" amount="10"/>
</outputs>

<!-- Status Lights -->
<statusVisuals>
<light status="INACTIVE" node="0>1|4|0"/>
<light status="RUNNING" node="0>1|4|1"/>
<light status="MISSING_INPUTS" node="0>1|4|2"/>
<light status="NO_OUTPUT_SPACE" node="0>1|4|3"/>
</statusVisuals>
</production>
</productions>
</productionExtension>
</placeable>
WICHTIG

Das <statusVisuals> Element kommt innerhalb der <production>!

Parameter​

ParameterBeschreibungPflichtStandard
statusProduktionsstatus✅-
nodei3d Node zum Licht✅-
blinkEnabledBlinken aktivieren❌false
blinkFrequencyBlink-Frequenz in Hz❌1.0
blinkPatternBlink-Muster❌CONSTANT

Einfache Lichter (ohne Blinken)​

Beispiel: Dauerlicht​

<statusVisuals>
<!-- Gelbes Licht wenn inaktiv -->
<light status="INACTIVE" node="0>1|4|0"/>

<!-- Grünes Licht wenn aktiv -->
<light status="RUNNING" node="0>1|4|1"/>

<!-- Rotes Licht bei fehlenden Inputs -->
<light status="MISSING_INPUTS" node="0>1|4|2"/>

<!-- Orange Licht bei vollem Output -->
<light status="NO_OUTPUT_SPACE" node="0>1|4|3"/>
</statusVisuals>

📷 [SCREENSHOT: Gebäude mit Dauerlicht in verschiedenen Farben]

Blinkende Lichter​

Blinken aktivieren​

<light status="RUNNING"
node="0>1|4|1"
blinkEnabled="true"
blinkFrequency="1.0"/>

Ergebnis: Licht blinkt 1x pro Sekunde (1 Hz)

Die blinkFrequency gibt an, wie oft pro Sekunde geblinkt wird:

FrequenzBlinks pro SekundeVerwendung
0.5Alle 2 SekundenLangsam
1.01x pro SekundeStandard
2.02x pro SekundeSchnell
3.03x pro SekundeSehr schnell

Beispiel:

<!-- Langsames Blinken -->
<light status="INACTIVE" node="0>1|4|0" blinkEnabled="true" blinkFrequency="0.5"/>

<!-- Schnelles Blinken -->
<light status="MISSING_INPUTS" node="0>1|4|2" blinkEnabled="true" blinkFrequency="2.0"/>

Es gibt 4 verschiedene Blink-Muster:

MusterAn/Aus-VerhältnisBeschreibung
CONSTANT50% an, 50% ausGleichmäßig
SLOW70% an, 30% ausLänger leuchtend
FAST30% an, 70% ausKurzes Aufblitzen
PULSE10% an, 90% ausSehr kurze Pulse

Beispiele​

<!-- Gleichmäßiges Blinken -->
<light status="RUNNING"
node="0>1|4|1"
blinkEnabled="true"
blinkFrequency="1.0"
blinkPattern="CONSTANT"/>

<!-- Langes Leuchten, kurze Pause -->
<light status="RUNNING"
node="0>1|4|1"
blinkEnabled="true"
blinkFrequency="1.0"
blinkPattern="SLOW"/>

<!-- Kurzes Aufblitzen -->
<light status="MISSING_INPUTS"
node="0>1|4|2"
blinkEnabled="true"
blinkFrequency="2.0"
blinkPattern="FAST"/>

<!-- Kurze Pulse -->
<light status="NO_OUTPUT_SPACE"
node="0>1|4|3"
blinkEnabled="true"
blinkFrequency="0.5"
blinkPattern="PULSE"/>

📷 [SCREENSHOT: Verschiedene Blink-Muster im Vergleich]

Mehrere Lichter pro Status​

Du kannst mehrere Lichter für denselben Status definieren:

<statusVisuals>
<!-- 3 Lichter wenn läuft -->
<light status="RUNNING" node="0>1|4|0"/>
<light status="RUNNING" node="0>1|4|1"/>
<light status="RUNNING" node="0>1|4|2"/>

<!-- 2 Lichter bei fehlendem Input -->
<light status="MISSING_INPUTS" node="0>1|5|0" blinkEnabled="true" blinkFrequency="2.0"/>
<light status="MISSING_INPUTS" node="0>1|5|1" blinkEnabled="true" blinkFrequency="2.0"/>
</statusVisuals>

Komplettes Beispiel​

<productionExtension>
<productions>
<production id="muehle" name="Mühle" cyclesPerHour="2" costsPerActiveHour="15">
<inputs>
<input fillType="WHEAT" amount="1000"/>
</inputs>
<outputs>
<output fillType="FLOUR" amount="800"/>
</outputs>

<statusVisuals>
<!-- Gelbes Dauerlicht wenn INACTIVE -->
<light status="INACTIVE" node="0>1|4|0"/>

<!-- Grünes blinkendes Licht wenn RUNNING -->
<light status="RUNNING"
node="0>1|4|1"
blinkEnabled="true"
blinkFrequency="1.0"
blinkPattern="CONSTANT"/>

<!-- Rotes schnell blinkendes Licht bei MISSING_INPUTS -->
<light status="MISSING_INPUTS"
node="0>1|4|2"
blinkEnabled="true"
blinkFrequency="2.0"
blinkPattern="FAST"/>

<!-- Orange pulsierendes Licht bei NO_OUTPUT_SPACE -->
<light status="NO_OUTPUT_SPACE"
node="0>1|4|3"
blinkEnabled="true"
blinkFrequency="0.5"
blinkPattern="PULSE"/>
</statusVisuals>
</production>
</productions>
</productionExtension>

📷 [SCREENSHOT: Mühle mit allen Statuslichtern]

i3d Setup​

Lichter im Giants Editor erstellen​

  1. Erstelle ein Light Node in deinem i3d
  2. Stelle die Farbe ein (z.B. Grün für RUNNING, Rot für MISSING_INPUTS)
  3. Notiere den Node-Pfad (z.B. 0>1|4|0)
  4. Nutze den Pfad in der XML

📷 [SCREENSHOT: Giants Editor mit Light-Node und Eigenschaften]

Tipps​

  • Lichttyp: Spot Light
  • Farben:
    • 🟢 Grün = RUNNING
    • 🔴 Rot = MISSING_INPUTS
    • 🟡 Gelb = INACTIVE
    • 🟠 Orange = NO_OUTPUT_SPACE

Häufige Fehler​

❌ Licht leuchtet nicht​

Ursache: Node existiert nicht oder falscher Pfad

Lösung: Überprüfe den Node-Pfad im Giants Editor

❌ Alle Lichter leuchten gleichzeitig​

Ursache: Vergessen, verschiedene Nodes zu verwenden

<!-- FALSCH - alle nutzen denselben Node -->
<light status="INACTIVE" node="0>1|4|0"/>
<light status="RUNNING" node="0>1|4|0"/>

<!-- RICHTIG - jedes Licht hat eigenen Node -->
<light status="INACTIVE" node="0>1|4|0"/>
<light status="RUNNING" node="0>1|4|1"/>

❌ Blinken funktioniert nicht​

Ursache: blinkEnabled="false" oder nicht gesetzt

<!-- FALSCH - blinkt nicht -->
<light status="RUNNING" node="0>1|4|1"/>

<!-- RICHTIG - blinkt -->
<light status="RUNNING" node="0>1|4|1" blinkEnabled="true"/>

Praktische Anwendungen​

Einfaches Ampel-System​

<statusVisuals>
<light status="RUNNING" node="0>1|4|0"/> <!-- Grün -->
<light status="INACTIVE" node="0>1|4|1"/> <!-- Gelb -->
<light status="MISSING_INPUTS" node="0>1|4|2"/> <!-- Rot -->
</statusVisuals>

Warn-Lichter mit Blinken​

<statusVisuals>
<!-- Ruhig wenn läuft -->
<light status="RUNNING" node="0>1|4|0"/>

<!-- Blinkt bei Problemen -->
<light status="MISSING_INPUTS"
node="0>1|4|1"
blinkEnabled="true"
blinkFrequency="2.0"
blinkPattern="FAST"/>

<light status="NO_OUTPUT_SPACE"
node="0>1|4|2"
blinkEnabled="true"
blinkFrequency="1.0"
blinkPattern="CONSTANT"/>
</statusVisuals>

Mehrere Produktionen mit eigenen Lichtern​

<productions>
<production id="muehle">
<statusVisuals>
<light status="RUNNING" node="0>1|0|0"/>
<light status="MISSING_INPUTS" node="0>1|0|1"/>
</statusVisuals>
</production>

<production id="baeckerei">
<statusVisuals>
<light status="RUNNING" node="0>2|0|0"/>
<light status="MISSING_INPUTS" node="0>2|0|1"/>
</statusVisuals>
</production>
</productions>

Jede Produktion hat ihre eigenen Lichter!

Automatische Status-Erkennung​

Verbesserungen

Das System wurde optimiert für zuverlässige Status-Erkennung:

Initiale Anzeige beim Laden:

  • Lichter zeigen beim Laden des Spiels sofort den korrekten Status
  • Funktioniert auch wenn Produktion außerhalb der Öffnungszeiten ist
  • Keine verzögerte Aktivierung mehr

NO_OUTPUT_SPACE Status:

  • Lichter reagieren jetzt korrekt auf vollen Output-Speicher
  • Wechsel von grün (RUNNING) zu rot/orange (NO_OUTPUT_SPACE) funktioniert zuverlässig
  • Alle konfigurierten Lichter und Animationen werden korrekt getriggert

Beispieldatei​

Siehe: examples/01_StatusLights.xml

Verwandte Features​

Zusammenfassung​

✅ Lichter zeigen Produktionsstatus ✅ 4 Status verfügbar (INACTIVE, RUNNING, MISSING_INPUTS, NO_OUTPUT_SPACE) ✅ Blinken mit verschiedenen Mustern möglich ✅ Mehrere Lichter pro Status ✅ Einfaches i3d Setup ✅ Automatisches Umschalten