6. Status Lights - Statuslichter
Übersicht
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:
| Status | Bedeutung |
|---|---|
INACTIVE | Produktion ist gestoppt |
RUNNING | Produktion läuft |
MISSING_INPUTS | Inputs fehlen |
NO_OUTPUT_SPACE | Kein 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>
Das <statusVisuals> Element kommt innerhalb der <production>!
Parameter
| Parameter | Beschreibung | Pflicht | Standard |
|---|---|---|---|
status | Produktionsstatus | ✅ | - |
node | i3d Node zum Licht | ✅ | - |
blinkEnabled | Blinken aktivieren | ❌ | false |
blinkFrequency | Blink-Frequenz in Hz | ❌ | 1.0 |
blinkPattern | Blink-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)
Blink-Frequenz
Die blinkFrequency gibt an, wie oft pro Sekunde geblinkt wird:
| Frequenz | Blinks pro Sekunde | Verwendung |
|---|---|---|
0.5 | Alle 2 Sekunden | Langsam |
1.0 | 1x pro Sekunde | Standard |
2.0 | 2x pro Sekunde | Schnell |
3.0 | 3x pro Sekunde | Sehr 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"/>
Blink-Muster
Es gibt 4 verschiedene Blink-Muster:
| Muster | An/Aus-Verhältnis | Beschreibung |
|---|---|---|
CONSTANT | 50% an, 50% aus | Gleichmäßig |
SLOW | 70% an, 30% aus | Länger leuchtend |
FAST | 30% an, 70% aus | Kurzes Aufblitzen |
PULSE | 10% an, 90% aus | Sehr 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
- Erstelle ein Light Node in deinem i3d
- Stelle die Farbe ein (z.B. Grün für RUNNING, Rot für MISSING_INPUTS)
- Notiere den Node-Pfad (z.B.
0>1|4|0) - 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
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
- Beacon Lights - Animierte Warnlichter
- Production State Visuals - Visuelle Effekte
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