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 aktivierenfalse
blinkFrequencyBlink-Frequenz in Hz1.0
blinkPatternBlink-MusterCONSTANT

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