game_context¶
Quelle: base/tealdef/gui/main/game_context.d.tl
Hinweise
Typen für den gemeinsamen GUI-Kontext im Spiel (GameContext), die APIs für Dialog-Overlay und Callouts, die API der Spielgeschwindigkeit und die GUI-Speicherdaten des Basisspiels.
Globale Namen¶
Typen
| Name | Definition | Beschreibung |
|---|---|---|
Notification |
hier deklariert, definiert in Notification |
Eine Benachrichtigung, wie sie mit dem Script-Event Notifications/add gesendet und in NotificationsState gespeichert wird. |
DialogueOverlayApi¶
record global base/tealdef/gui/main/game_context.d.tl:5
global record DialogueOverlayApi
Hinweise
API des Dialog-Overlays der Missionen. Es spielt vertonte Dialoge, Anleitungen und den Abspann ab.
Details
Kommt vom Recipe DialogueOverlay in mission/mission_react_util.tl. Aus dem Spielkontext holst du es mit
gameCtx.dialogueOverlayRef:get():getApi().
Funktionen
isPlaying() : boolean base/tealdef/gui/main/game_context.d.tl:6
Hinweise
Ob gerade ein Dialog oder eine Anleitung angezeigt wird.
Rückgabe boolean
getPlayingForTask() : string base/tealdef/gui/main/game_context.d.tl:7
Hinweise
UID der Missionsaufgabe, zu der der gerade angezeigte Dialog oder die Anleitung gehört.
Rückgabe string: Die Aufgaben-UID, oder nil, wenn nichts läuft.
areCreditsPlaying() : boolean base/tealdef/gui/main/game_context.d.tl:9
Hinweise
Ob gerade der Abspann läuft.
Rückgabe boolean
stopCredits() : boolean base/tealdef/gui/main/game_context.d.tl:10
Hinweise
Hält den Abspann an, falls er läuft.
Rückgabe boolean
abortCurrent() base/tealdef/gui/main/game_context.d.tl:12
Hinweise
Hält den Abspann und die aktuelle Sprachausgabe an und beendet den aktuellen Dialog oder die Anleitung. Wartet eine weitere Anleitung, beginnt sie.
Details
Das Basisspiel ruft die Funktion über die Eingabeaktion uiCloseAll auf.
skipCurrentLine() base/tealdef/gui/main/game_context.d.tl:13
Hinweise
Hält die aktuelle Zeile der Sprachausgabe an. Eine Anleitung wird beendet (die nächste wartende beginnt), in einem Dialog wird nur die aktuelle Zeile übersprungen.
Details
Das Basisspiel ruft die Funktion über die Eingabeaktion IA_SKIP_VOICEOVER_AND_CUTSCENE auf.
enqueueUnlessExisting(taskUid : string, instructionKey : string, function() : MissionDialogueData.InstructionData) base/tealdef/gui/main/game_context.d.tl:14
Hinweise
Zeigt eine Missionsanleitung sofort oder reiht sie ein, wenn schon etwas läuft. Steht dieselbe Kombination aus Aufgaben-UID und Anleitungsschlüssel schon in der Warteschlange, passiert nichts.
| Parameter | Typ | Beschreibung |
|---|---|---|
taskUid |
string |
UID der Missionsaufgabe, zu der die Anleitung gehört. |
instructionKey |
string |
Schlüssel, der die Anleitung innerhalb der Aufgabe kennzeichnet. |
#3 |
function() : MissionDialogueData.InstructionData |
Funktion, die die Daten der Anleitung baut. Sie wird nur aufgerufen, wenn die Anleitung wirklich hinzukommt. Gibt sie nil zurück, wird ein Fehler geloggt und nichts hinzugefügt. |
CalloutApi¶
record global base/tealdef/gui/main/game_context.d.tl:17
global record CalloutApi
Hinweise
API des Callout-Containers, einer schwebenden Ebene, die immer nur ein Callout zeigt (ein Popup-Recipe neben einem GUI-Element oder an einer Position).
Details
Im Spiel holst du sie mit gameCtx.calloutContainerRef:get():getApi(). Das Hauptmenü hat einen eigenen
Container (commonParams.calloutContainerRef). Ein neues Callout ersetzt das aktuelle.
Beispiel
-- aus gui/construction/construction.tl
gameCtx.calloutContainerRef:get():getApi().open({
recipe = ConstructionInfoPanelCallout,
recipeParam = { info = nameAndDescription },
anchor = api.type.Vec2f.new(0.0, 1.0),
parent = params.listRef,
getPositionFn = function() return nameAndDescription.position end,
delay = 0.5,
})
Funktionen
open<R is IRecipeParamWithMeta>(CalloutParamsT<R>) base/tealdef/gui/main/game_context.d.tl:33
Hinweise
Zeigt ein Callout und ersetzt das aktuelle. Ein erneuter Aufruf mit gleichen Parametern lässt das offene Callout unverändert.
Details
Die Position kommt aus getPositionFn, falls angegeben, sonst aus der Position von parent bei gravity.
Sie wird in jedem Frame neu berechnet. Das Callout schließt sich von selbst, wenn sein Eltern-Node
zerstört wird.
close(any) base/tealdef/gui/main/game_context.d.tl:34
any=ReactRefWrap (interfaces don't work)
CalloutApi.CalloutParamsT¶
record base/tealdef/gui/main/game_context.d.tl:18
record CalloutParamsT<R is IRecipeParamWithMeta>
Hinweise
Parameter von CalloutApi.open.
Im Basisspiel verwendet: 10-mal in 6 Dateien
base/content/game_mechanics/game_mechanics/celebrations/celebration_react_util.tl:179
base/content/gui/gui/main/callout_container.tl:10
base/content/gui/gui/main/content_card.tl:110
} as CalloutApi.CalloutParamsT<IRecipeParamWithMeta> -- Note: teal does not understand that CalloutParamsT<TextViewParam> can be treated as subtype of CalloutPa
base/content/gui/gui/main/tile_list_react_util.tl:75
base/content/gui/gui/menu/main_page.tl:395
base/content/gui/gui/menu/new_game_or_map_settings_page.tl:724
Felder
| Name | Typ | Beschreibung |
|---|---|---|
recipe |
Recipe<R> |
Recipe, das als Inhalt des Callouts gerendert wird. |
recipeParam |
R |
Parameter für recipe. Er wird kopiert, und sein Stylesheet bekommt anchorPoint = anchor. |
anchor |
Vec2f |
Ankerpunkt des Callout-Inhalts in relativen Koordinaten (0..1 je Achse), der an die berechnete Position gesetzt wird. |
parent |
any |
any=ReactRefWrap (interfaces don't work) |
gravity |
Vec2f |
requires parent |
delay |
number |
default 0 seconds |
noRepeatedDelay |
boolean |
default false, if true, the delay will not be applied if the callout is already open |
Funktionen
getPositionFn() : Vec2f base/tealdef/gui/main/game_context.d.tl:26
overrides automatic placement
Rückgabe Vec2f
recipeParamCompareFn(R, R) : boolean base/tealdef/gui/main/game_context.d.tl:27
overrides default compare
Rückgabe boolean
GameContext¶
record global base/tealdef/gui/main/game_context.d.tl:37
global record GameContext
Hinweise
Gemeinsamer Kontext der GUI im Spiel. Enthält Referenzen auf die Haupt-Renderer-Komponente, den Fenster-Container und den Werkzeug-Stack, dazu Missionsfilter, deaktivierte Funktionen und einige gemeinsame Zustände.
Details
Wird einmal von GameUIRoot in gui/main/game.tl angelegt und als gameCtx an Werkzeuge, Fenster und
HUD-Recipes weitergegeben (zum Beispiel toolParam.gameCtx). Code ohne gameCtx erreicht die wichtigsten
Teile über GameReactGlobals (gui/main/game_react_globals.tl).
Beispiel
Felder
| Name | Typ | Beschreibung |
|---|---|---|
rendererComponent |
ReactRefWrapApiT<Builtin.RendererComponentParam, Builtin.RenderComponentAPI> |
Referenz auf die 3D-Hauptansicht (builtin.RendererComponent). Dient zum Beispiel als Ziel von react.fireEvent(gameCtx.rendererComponent, "selectEntity", ...). |
windowContainer |
ReactRefWrapApiT<Builtin.WindowContainerDelegateParam, Builtin.WindowAPI> |
Referenz auf den Fenster-Container im Spiel. gameCtx.windowContainer:get():getApi() liefert die Builtin.WindowAPI, mit der Fenster hinzugefügt und entfernt werden. |
toolStack |
ReactRefWrapApiT<Builtin.ToolStackParam, Builtin.ToolStackAPI> |
Referenz auf den Werkzeug-Stack im Spiel. gameCtx.toolStack:get():getApi() liefert die Builtin.ToolStackAPI, mit der Werkzeuge auf den Stack gelegt und wieder entfernt werden. |
metroMode |
ReactStateT<boolean> |
Gemeinsamer Zustand „Metro-Modus“, anfangs false. Solange er true ist und die Kamera mehr als 500 m über dem Gelände steht, zeigt die Linienansicht nur die HUD-Icons der Fahrzeuge. |
preferredLayerConfig |
ReactRefT<LayerConfig> |
Layer-Konfiguration, die zuletzt über das React-Ereignis preferredLayerConfig angefordert wurde (nil, wenn zurückgesetzt). |
dialogueOverlayRef |
ReactRefWrapApi0<DialogueOverlayApi> |
Referenz auf das Dialog-Overlay der Missionen. getApi() liefert eine DialogueOverlayApi. |
calloutContainerRef |
ReactRefWrapApi0<CalloutApi> |
Referenz auf den Callout-Container im Spiel. getApi() liefert eine CalloutApi. |
filters |
ReactRefT<Filters> |
Aktuelle Missionsfilter (siehe GameContext.Filters). Lesen mit gameCtx.filters:get(). |
disableFeatures |
ReactRefT<{DisableFeatures : boolean}> |
Menge der gerade deaktivierten GUI-Funktionen (Namen aus DisableFeatures, die auf true zeigen). Das React-Ereignis setDisableFeatures, das das Missionssystem auslöst, ersetzt sie. |
Funktionen
accessNotificationCacheFn(Engine.Entity) : {Notification} base/tealdef/gui/main/game_context.d.tl:64
Hinweise
Gibt die dauerhaften Benachrichtigungen einer Entität zurück, aus einem Cache, der in jedem Frame erneuert wird.
| Parameter | Typ | Beschreibung |
|---|---|---|
#1 |
Engine.Entity |
Entitäts-Id. |
Rückgabe {Notification}: Liste der Benachrichtigungen der Entität (jeweils mit gesetztem notificationId). Leer, wenn es keine gibt.
focusGameBar() base/tealdef/gui/main/game_context.d.tl:72
Hinweise
Setzt den Tastatur- bzw. Gamepad-Fokus auf die Spielleiste.
GameContext.Filters¶
record base/tealdef/gui/main/game_context.d.tl:38
record Filters
Hinweise
GUI-Einschränkungen, die das Missionssystem setzt (Baumenü, Fahrzeugladen, geschützte Entitäten, auswählbare Entitäten).
Details
Gefüllt über die React-Ereignisse setMenuFilter, setVehicleFilter, setProtectedEntities und
setSelectorEntityFilter, die mission/mission_sim.script.tl auslöst, wenn sich die aktiven Missionsaufgaben
ändern. Alle Filter sind anfangs leer, also ohne Einschränkung.
Im Basisspiel verwendet: 2-mal in 2 Dateien
base/content/gui/gui/main/game.tl:135
base/content/gui/gui/main/selector_react_util.tl:89
Felder
| Name | Typ | Beschreibung |
|---|---|---|
menuFilter |
MenuFilter |
Einschränkung des Baumenüs. |
vehicleFilter |
VehicleFilter |
Einschränkung des Fahrzeugladens. |
protectedEntities |
{Engine.Entity : ProtectionConfig | boolean} |
Entitäten (Linien, Fahrzeuge), die der Spieler nicht ändern darf, zum Beispiel im Linien-Manager. true schützt die Entität ganz, eine ProtectionConfig schützt nur die aufgeführten Halte einer Linie. |
selectorEntityFilter |
{Engine.Entity : boolean} |
Ist die Liste nicht leer, lassen sich mit dem Standard-Selektor nur diese Entitäten überfahren und auswählen. |
GameContext.Filters.MenuFilter¶
record base/tealdef/gui/main/game_context.d.tl:39
record MenuFilter
Hinweise
Einschränkung des Baumenüs.
Details
Einträge werden über ihren Konstruktions-Tag erkannt: den resName der Definition, bei
Vorlagen-Konstruktionen ergänzt um @<constructionTemplate> (oder den Aktionsnamen, wenn es keinen
Ressourcennamen gibt).
Im Basisspiel verwendet: 5-mal in 3 Dateien
base/content/gui/gui/construction/construction.tl:484
base/content/gui/gui/main/game.tl:149
base/content/mission/mission/mission_sim.script.tl:18
Felder
GameContext.Filters.VehicleFilter¶
record base/tealdef/gui/main/game_context.d.tl:44
record VehicleFilter
Hinweise
Einschränkung des Fahrzeugladens.
Im Basisspiel verwendet: 6-mal in 3 Dateien
base/content/gui/gui/line_vehicle_mgmt/vehicle_store_window.tl:2402
base/content/gui/gui/main/game.tl:153
base/content/mission/mission/mission_sim.script.tl:20
Felder
GameContext.Filters.ProtectionConfig¶
record base/tealdef/gui/main/game_context.d.tl:48
record ProtectionConfig
Hinweise
Teilschutz einer Entität, steht in protectedEntities anstelle von true.
Im Basisspiel verwendet: 14-mal in 7 Dateien
base/content/gui/gui/line_vehicle_mgmt/line_util.tl:1734
base/content/gui/gui/line_vehicle_mgmt/vehicle_react_util.tl:321
base/content/gui/gui/main/game.tl:157
base/content/mission/mission/mission_sim.script.tl:22
base/content/mission/mission/tasks/assign_vehicle/assign_vehicle.tl:17
getProtectedEntities = function(ctx : TaskContext<S, P>) : {Engine.Entity : GameContext.Filters.ProtectionConfig|boolean}
base/content/mission/mission/tasks/task_decorator.tl:342
… und 1 weitere Dateien.
Felder
| Name | Typ | Beschreibung |
|---|---|---|
line |
Line |
Schutz einzelner Halte einer Linie. Pflicht, wenn die geschützte Entität eine Linie ist. |
GameContext.Filters.ProtectionConfig.Line¶
record base/tealdef/gui/main/game_context.d.tl:49
record Line
Hinweise
Schutzeinstellungen für eine Linie.
Felder
| Name | Typ | Beschreibung |
|---|---|---|
stationGroups |
{Engine.Entity : boolean} |
Stationsgruppen, deren Halte auf der Linie geschützt sind (auf true gesetzt). |
GameSpeedApi¶
record global base/tealdef/gui/main/game_context.d.tl:75
global record GameSpeedApi
Hinweise
API des Helfers für die Spielgeschwindigkeit, über den die Spielleiste die Simulationsgeschwindigkeit liest und ändert.
Details
Kommt vom Recipe GameSpeedHelper in gui/main/game.tl. Geschwindigkeiten sind Beschleunigungsfaktoren:
0 heißt pausiert, 1, 2 und 4 sind die normalen Stufen. Änderungen gehen mit
api.cmd.makeGameSetSpeedCmd hinaus und werden auf api.gui.game.getEstimatedMaximumGameSpeed() begrenzt.
Funktionen
isEnabled() : boolean base/tealdef/gui/main/game_context.d.tl:76
Hinweise
Ob die Steuerung der Spielgeschwindigkeit aktiv ist, die Funktion GameSpeedControl also nicht deaktiviert ist.
Rückgabe boolean
getSpeed() : integer base/tealdef/gui/main/game_context.d.tl:77
Hinweise
Aktueller Beschleunigungsfaktor.
Rückgabe integer: 0, wenn pausiert, sonst die letzte Beschleunigung ungleich null.
setSpeed(integer) base/tealdef/gui/main/game_context.d.tl:78
Hinweise
Setzt den Beschleunigungsfaktor (0 pausiert). Pausieren wird ignoriert, solange die Funktion GameSpeedPause deaktiviert ist.
togglePause() base/tealdef/gui/main/game_context.d.tl:79
Hinweise
Pausiert das Spiel oder setzt es mit der letzten Geschwindigkeit ungleich null fort.
cycleSpeed() base/tealdef/gui/main/game_context.d.tl:80
Hinweise
Schaltet auf die nächste Geschwindigkeitsstufe (1, 2, 4, dann wieder 1). Ist das Spiel pausiert, läuft es mit Stufe 1 weiter.
BaseGUISaveData¶
record global base/tealdef/gui/main/game_context.d.tl:83
global record BaseGUISaveData
Hinweise
GUI-Daten, die das Basisspiel im Spielstand ablegt. Lesen mit api.gui.game.getGuiSaveData(""), schreiben mit api.gui.game.setGuiSaveData("", data).
Beispiel
Felder
| Name | Typ | Beschreibung |
|---|---|---|
hudFilter |
HUDFilter |
Filtereinstellungen der HUD-Icons. nil, bis der Spieler einen Filter ändert. |
BaseGUISaveData.FilterState¶
enum base/tealdef/gui/main/game_context.d.tl:84
enum FilterState
Hinweise
Sichtbarkeit einer Art von HUD-Icons.
| Wert | Beschreibung |
|---|---|
"Hidden" |
Die Icons sind ausgeblendet. |
"Default" |
Die Icons werden angezeigt (Standard). |
BaseGUISaveData.HUDFilter¶
record base/tealdef/gui/main/game_context.d.tl:88
record HUDFilter
Hinweise
Einstellungen der Filterebene für HUD-Icons (gui/layers/layer_hud_filter.tl). Fehlende Einträge gelten als angezeigt.
Im Basisspiel verwendet: 2-mal in 1 Datei
base/content/gui/gui/layers/layer_hud_filter.tl:36
Felder
| Name | Typ | Beschreibung |
|---|---|---|
preFilters |
{Engine.ComponentType : FilterState} |
Sichtbarkeit der HUD-Icons pro Komponententyp (Stationen, Industrien, Lager, Städte, Wahrzeichen). |
preFilterTvCarriers |
{Carrier : FilterState} |
Sichtbarkeit der Fahrzeug-HUD-Icons pro Verkehrsträger (Schiene, Straße, Tram, Wasser, Luft). Sind alle Verkehrsträger ausgeblendet, verschwinden die Fahrzeug-Icons ganz. |
showIncome |
boolean |
Ob HUD-Icons für Einnahmen angezeigt werden (Schalter „Income“). |
showCosts |
boolean |
Ob HUD-Icons für Ausgaben angezeigt werden (Schalter „Costs“). |
showEventIcons |
boolean |
Ob Ereignis-Icons angezeigt werden, zum Beispiel für Änderungen der Zufriedenheit oder Effekte von Marketing und Begrünung (Schalter „Events“). |
showCargoFlow |
boolean |
Ob der Güterfluss angezeigt wird (Schalter „Cargo Flow“). |