3. Opening Hours - Öffnungszeiten
Übersicht
Mit Opening Hours können Produktionen auf bestimmte Tageszeiten beschränkt werden.
🕐 Beispiel 1: Eine Bäckerei läuft nur von 3:00 - 12:00 Uhr, eine Molkerei von 6:00 - 18:00 Uhr. 🕐 Beispiel 2: Eine Kalk Produktion läuft nur von 06:00 - 22:00 Uhr.
Funktionsweise
- Während Öffnungszeiten: Produktion kann normal laufen
- Außerhalb Öffnungszeiten:
- Laufende Produktionen werden automatisch gestoppt
- Beim Startversuch erscheint eine Warnung
- Im Info-Trigger werden die Öffnungszeiten angezeigt
XML-Konfiguration
Basis-Struktur
<placeable>
<productionExtension>
<openingHours>
<production id="baeckerei" openHour="3" closeHour="12"/>
</openingHours>
<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>
</production>
</productions>
</productionExtension>
</placeable>
Die id muss mit der Production-ID übereinstimmen!
Parameter
| Parameter | Beschreibung | Pflicht | Standard |
|---|---|---|---|
id | Production ID | ✅ | - |
openHour | Öffnungszeit (0-23 Uhr) | ❌ | 6 |
closeHour | Schließzeit (0-23 Uhr) | ❌ | 22 |
autoResume | Automatisch weitermachen beim Öffnen | ❌ | true |
showDialog | Dialog beim Schließen anzeigen | ❌ | true |
Beispiele
Einfache Öffnungszeiten
Bäckerei von 3:00 - 12:00 Uhr:
<openingHours>
<production id="baeckerei" openHour="3" closeHour="12"/>
</openingHours>
📷 [SCREENSHOT: Bäckerei aktiv um 8:00 Uhr, gestoppt um 14:00 Uhr]
Mehrere Produktionen
Jedes Placeable hat nur EINE Produktion. Beispiele für verschiedene Öffnungszeiten:
Placeable 1 - Bäckerei:
<placeable>
<productionExtension>
<openingHours>
<production id="baeckerei" openHour="3" closeHour="12"/>
</openingHours>
<productions>
<production id="baeckerei" name="Bäckerei" .../>
</productions>
</productionExtension>
</placeable>
Placeable 2 - Molkerei:
<placeable>
<productionExtension>
<openingHours>
<production id="molkerei" openHour="6" closeHour="18"/>
</openingHours>
<productions>
<production id="molkerei" name="Molkerei" .../>
</productions>
</productionExtension>
</placeable>
Über Mitternacht (Nachtbetrieb)
Brauerei von 18:00 - 3:00 Uhr (über Mitternacht):
<openingHours>
<production id="brauerei" openHour="18" closeHour="3"/>
</openingHours>
Öffnungszeiten:
- ✅ Offen: 18:00, 19:00, ..., 23:00, 0:00, 1:00, 2:00
- ❌ Geschlossen: 3:00, 4:00, ..., 17:00
Wenn openHour > closeHour, läuft die Produktion über Mitternacht!
autoResume Parameter
autoResume="true" (Standard)
Produktion startet automatisch wieder, wenn Öffnungszeit erreicht wird (falls sie vorher lief):
<production id="baeckerei" openHour="3" closeHour="12" autoResume="true"/>
Verhalten:
- 11:59 Uhr: Produktion läuft
- 12:00 Uhr: Automatisch gestoppt
- 03:00 Uhr (nächster Tag): Automatisch wieder gestartet
autoResume="false"
Produktion startet nicht automatisch wieder:
<production id="brauerei" openHour="18" closeHour="3" autoResume="false"/>
Verhalten:
- 02:59 Uhr: Produktion läuft
- 03:00 Uhr: Automatisch gestoppt
- 18:00 Uhr: NICHT automatisch gestartet (Spieler muss manuell starten)
Nutze autoResume="false" für Produktionen, die der Spieler manuell kontrollieren soll.
showDialog Parameter
showDialog="true" (Standard)
Zeigt Benachrichtigung beim Schließen:
<production id="baeckerei" openHour="3" closeHour="12" showDialog="true"/>
showDialog="false"
Keine Benachrichtigung beim Schließen:
<production id="molkerei" openHour="6" closeHour="18" showDialog="false"/>
Gut bei vielen Produktionen, um Benachrichtigungs-Spam zu vermeiden.
24/7 Produktionen
Produktionen ohne <openingHours> laufen rund um die Uhr.
Beispiel - Mühle läuft 24/7:
<placeable>
<productionExtension>
<!-- Keine openingHours = läuft 24/7 -->
<productions>
<production id="baeckerei" name="Bäckerei" .../>
<production id="muehle" name="Mühle" .../> <!-- Läuft 24/7! -->
</productions>
Anzeige der Öffnungszeiten
In-World Display
Mit dem Production Display System können Öffnungszeiten direkt im 3D-Raum angezeigt werden:
<productionExtension>
<!-- Opening Hours konfigurieren -->
<openingHours>
<production id="baeckerei" openHour="3" closeHour="12"/>
</openingHours>
<!-- Display für Öffnungsstatus -->
<ProductionDisplay>
<display rootNode="0>5|0" font="LICENSE_PLATE_DE" size="0.06" color="1 1 1 1">
<displayLine
customTextNode="0>5|0|0"
customText="BÄCKEREI"/>
<displayLine
openingHoursStatusNode="0>5|0|1"
productionIndex="1"/>
</display>
</ProductionDisplay>
</productionExtension>
Anzeige:
- "GEÖFFNET" (grün) - Während der Öffnungszeiten
- "CLOSED" (rot) - Außerhalb der Öffnungszeiten
Features:
- Automatische Farb-Kodierung (grün/rot)
- Echtzeit-Update bei Stundenänderung
- Kombinierbar mit anderen Display-Elementen
- Mehrsprachig via i18n Keys (
openingHours_open,openingHours_closed)
Kombination mit Seasonal Production
Opening Hours und Seasonal Production können kombiniert werden:
<seasonalProduction>
<production id="bier" seasons="summer,autumn"/>
</seasonalProduction>
<openingHours>
<production id="bier" openHour="8" closeHour="18"/>
</openingHours>
Verhalten:
- Im Sommer/Herbst: Läuft nur 8:00 - 18:00 Uhr
- Im Frühling/Winter: Immer gestoppt (egal welche Uhrzeit)
Siehe auch: Seasonal Production
Häufige Fehler
❌ Produktion läuft trotz Schließzeit
Ursache: Production ID stimmt nicht überein
<!-- FALSCH -->
<openingHours>
<production id="Baeckerei" openHour="3" closeHour="12"/> <!-- Großes B -->
</openingHours>
<production id="baeckerei" name="..."> <!-- Kleines b -->
<!-- RICHTIG -->
<openingHours>
<production id="baeckerei" openHour="3" closeHour="12"/>
</openingHours>
<production id="baeckerei" name="...">
❌ Zeiten über Mitternacht funktionieren nicht
Ursache: Falsche Reihenfolge
Für Nachtbetrieb muss openHour > closeHour sein:
<!-- FALSCH - läuft nur von 3:00 - 18:00 -->
<production id="bar" openHour="3" closeHour="18"/>
<!-- RICHTIG - läuft von 18:00 - 3:00 -->
<production id="bar" openHour="18" closeHour="3"/>
Praktische Beispiele
Bäckerei (Frühbetrieb)
<openingHours>
<production id="baeckerei" openHour="3" closeHour="12" autoResume="true"/>
</openingHours>
Läuft: 3:00 - 11:59 Uhr
Molkerei (Tagbetrieb)
<openingHours>
<production id="molkerei" openHour="6" closeHour="18" autoResume="true"/>
</openingHours>
Läuft: 6:00 - 17:59 Uhr
Brauerei (Nachtbetrieb)
<openingHours>
<production id="brauerei" openHour="18" closeHour="3" autoResume="false"/>
</openingHours>
Läuft: 18:00 - 2:59 Uhr (über Mitternacht)
Spinnerei (Tagschicht)
<openingHours>
<production id="spinnerei" openHour="6" closeHour="18" autoResume="true"/>
</openingHours>
Läuft: 6:00 - 17:59 Uhr
Vollständiges Beispiel
Bäckerei mit Öffnungszeiten 3:00 - 12:00 Uhr:
<placeable>
<productionExtension>
<openingHours>
<production id="baeckerei"
openHour="3"
closeHour="12"
autoResume="true"
showDialog="true"/>
</openingHours>
<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>
</production>
</productions>
</productionExtension>
</placeable>
Pro Placeable kann nur EINE Produktion definiert werden. Für mehrere Produktionen benötigst du mehrere Placeables.
📷 [SCREENSHOT: Produktionsmenü mit verschiedenen Öffnungszeiten]
Beispieldatei
Siehe: examples/05_OpeningHours.xml
Verwandte Features
- Seasonal Production - Saisonale Produktionen
- Production Display - In-World Anzeigen (inkl. Öffnungsstatus)
- Production Templates - Produktionsketten
Zusammenfassung
✅ Produktionen auf Tageszeiten beschränken ✅ Automatisches Stoppen/Starten ✅ Unterstützt Zeiten über Mitternacht ✅ Kombinierbar mit Seasonal Production ✅ Multiplayer-kompatibel



