Zum Inhalt

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

} as CalloutApi.CalloutParamsT<IRecipeParamWithMeta>
base/content/gui/gui/main/callout_container.tl:10
current : CalloutApi.CalloutParamsT<IRecipeParamWithMeta>
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
} as CalloutApi.CalloutParamsT<IRecipeParamWithMeta>
base/content/gui/gui/menu/main_page.tl:395
} as CalloutApi.CalloutParamsT<IRecipeParamWithMeta>
base/content/gui/gui/menu/new_game_or_map_settings_page.tl:724
} as CalloutApi.CalloutParamsT<IRecipeParamWithMeta>

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

-- ein Singleton-Fenster öffnen und ein Werkzeug über den Kontext auf den Stack legen
gameCtx.windowContainer:get():getApi().addSingletonWindow(ContextHelperWindow, { gameCtx = gameCtx, onClose = onClose })
gameCtx.toolStack:get():getApi().push(FinanceTool, nil, toolParam)

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

local filters : ReactRefT<GameContext.Filters> = react.useRef({
base/content/gui/gui/main/selector_react_util.tl:89
allowStacking : boolean, filters? : ReactRefT<GameContext.Filters>, invertedSelectionColors? : boolean) : TreeNodeId

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

local getMenuFilterState = function(gameCtx : GameContext) : GameContext.Filters.MenuFilter
base/content/gui/gui/main/game.tl:149
local menuFilter = param as GameContext.Filters.MenuFilter
base/content/mission/mission/mission_sim.script.tl:18
menuFilter : GameContext.Filters.MenuFilter

Felder

Name Typ Beschreibung
enabledItems {string} Konstruktions-Tags, die im Baumenü erlaubt sind. Ist die Liste nicht leer, erscheinen nur diese Einträge, und disabledItems wird ignoriert.
disabledItems {string} Konstruktions-Tags, die im Baumenü ausgeblendet werden (gilt, wenn enabledItems leer ist).
disabledParams {string} Ids von Konstruktionsparametern, die in den Parameter-Steuerelementen der Konstruktion ausgeblendet werden.

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

getVehicleFilterState : function() : GameContext.Filters.VehicleFilter
base/content/gui/gui/main/game.tl:153
local vehicleFilter = param as GameContext.Filters.VehicleFilter
base/content/mission/mission/mission_sim.script.tl:20
vehicleFilter : GameContext.Filters.VehicleFilter

Felder

Name Typ Beschreibung
enabledVehicles {string} Modellpfade der Fahrzeuge, die der Fahrzeugladen anbietet. Ist die Liste nicht leer, sind alle anderen Fahrzeuge ausgeblendet.
disabledVehicles {string} Modellpfade der Fahrzeuge, die im Fahrzeugladen ausgeblendet werden.

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

protectedEntities : {Engine.Entity : GameContext.Filters.ProtectionConfig|boolean}
base/content/gui/gui/line_vehicle_mgmt/vehicle_react_util.tl:321
protectedEntities : {Engine.Entity : GameContext.Filters.ProtectionConfig|boolean},
base/content/gui/gui/main/game.tl:157
local protectedEntities = param as {Engine.Entity : GameContext.Filters.ProtectionConfig|boolean}
base/content/mission/mission/mission_sim.script.tl:22
protectedEntities : {Engine.Entity : GameContext.Filters.ProtectionConfig|boolean}
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
getProtectedEntities = function(ctx : MissionInterface.TaskContext<DecoratorState<S, GS>, DecoratorParam<P, GP>>) : {Engine.Entity : GameContext.Filters.Protect
… 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

-- aus gui/hud/cargo_flow.script.tl
local hudFilter = (api.gui.game.getGuiSaveData("") as BaseGUISaveData).hudFilter
if not hudFilter or hudFilter.showCargoFlow then
    -- Güterfluss zeichnen
end

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

local hudFilterState = engine_react_util.useStepState(function() : BaseGUISaveData.HUDFilter

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“).