Zum Inhalt

view_manager

Quelle: base/tealdef/gui/entity_window/view_manager.d.tl

Hinweise

Typen der Verwaltung der Infofenster (/gui/entity_window/view_manager.tl) und der Funktionen, die den Inhalt der Infofenster bauen (make_entity_window.tl, make_non_entity_window.tl). Dazu kommt der Rückgabetyp, den das entityWindowScript einer Konstruktion oder eines Modells liefern muss.

IEntityWindowParam

interface global base/tealdef/gui/entity_window/view_manager.d.tl:3

global interface IEntityWindowParam

Hinweise

Basisparameter, die jedes Inhalts-Recipe eines Infofensters erhält (Fenster für Fahrzeuge, Städte, Industrien, Stationen …).

Details

Die Inhalts-Recipes erzeugt make_entity_window.makeEntityWindowContent, zurückgegeben werden sie in einem ViewManager.MakeEntityWindowResult. Ein Inhalts-Recipe ruft meist params.setActionFn(...) auf, um die Auswahlaktion des Fensters zu setzen (z. B. selector_react_util.makeDefaultSelectorAction(params.gameCtx, layerConfig, true)).

Felder

Name Typ Beschreibung
meta Meta React-Metadaten des Inhalts. Das Basisspiel setzt ein tag wie "temp.view.entity.content.vehicle".
keyEntity Engine.Entity The entity which the window is displaying (mutually exclusive with keyNonEntity)
replacedEntity Engine.Entity Unterkonstruktion, für die das Fenster geöffnet wurde, wenn es ihre übergeordnete Konstruktion zeigt. Damit wird der passende Tab vorausgewählt.
keyNonEntity string Special case where EntityWindow tool is used for non-entities (mutually exclusive with keyEntity)
gameCtx GameContext Spielkontext der GUI.
simple boolean Auf true gesetzt, wenn der Inhalt als Tab in einem ConstructionWindow erscheint.
isMapEditor boolean True, wenn das Fenster im Karten-Editor geöffnet wird.
isSandboxMode boolean True, wenn das Spiel im Sandkastenmodus läuft.
setActionFn_compareProxy any Wert, den React statt setActionFn vergleicht, wenn es prüft, ob sich die Parameter geändert haben.
closeFn_compareProxy any Wert, den React statt closeFn vergleicht, wenn es prüft, ob sich die Parameter geändert haben.

Funktionen

setActionFn(actionFn? : (function() : TreeNodeId), key2? : string) base/tealdef/gui/entity_window/view_manager.d.tl:16

Hinweise

Setzt die Aktionsfunktion (den aktiven Selektor oder das Werkzeug, solange das Fenster den Fokus hat). key2 ist ein optionaler Schlüssel, der die Aktion kennzeichnet.

closeFn() base/tealdef/gui/entity_window/view_manager.d.tl:18

Hinweise

Schließt das Fenster.

SetActionFnAndProxy

record global base/tealdef/gui/entity_window/view_manager.d.tl:22

global record SetActionFnAndProxy<T>

Hinweise

Eine Setter-Funktion für die Aktion zusammen mit ihrem Vergleichs-Proxy, geliefert von ViewManager.MakeEntityWindowContentFn.makeSetActionFnWithCombinedKey.

Felder

Name Typ Beschreibung
proxy any Vergleichs-Proxy, zu übergeben als IEntityWindowParam.setActionFn_compareProxy.

Funktionen

fn(actionFn? : (function() : TreeNodeId), key2? : string) base/tealdef/gui/entity_window/view_manager.d.tl:23

Hinweise

Setter für die Aktion, zu übergeben als IEntityWindowParam.setActionFn.

ConstructionWindowParam

record global base/tealdef/gui/entity_window/view_manager.d.tl:27

global record ConstructionWindowParam is IEntityWindowParam

Hinweise

Parameter von ViewManager.MakeEntityWindowContentFn.ConstructionWindow, dem Fenster einer Konstruktion, deren Teile als Tabs erscheinen.

Felder

Name Typ Beschreibung
initialSubconstruction Engine.Entity Unterkonstruktion, deren Tab anfangs ausgewählt ist.
customTabs {ConData} Zusätzliche Tabs vor den Tabs der Unterkonstruktionen, z. B. der Tab „Landmark“, den das entityWindowScript der Wahrzeichen hinzufügt.

Funktionen

filter(Engine.Entity) : boolean base/tealdef/gui/entity_window/view_manager.d.tl:40

Hinweise

Nur Unterkonstruktionen, für die diese Funktion true liefert, bekommen einen Tab.

Rückgabe boolean

ConstructionWindowParam.ConData

record base/tealdef/gui/entity_window/view_manager.d.tl:28

record ConData

Hinweise

Ein Tab eines ConstructionWindow.

Im Basisspiel verwendet: 7-mal in 3 Dateien

base/content/game_mechanics/game_mechanics/emission/pollution_cleanup_facility_hud.script.tl:37

local customTabs : {ConstructionWindowParam.ConData} = {}
base/content/gui/gui/entity_window/make_entity_window.tl:121
subconstructions : {ConstructionWindowParam.ConData}
base/content/landmarks/landmark_hud.script.tl:29
local customTabs : {ConstructionWindowParam.ConData} = {}

Felder

Name Typ Beschreibung
entity Engine.Entity Entität der Unterkonstruktion (oder Konstruktion), die der Tab zeigt.
name string Name der Entität des Tabs.
description string Beschriftung des Tabs, z. B. „Train Station“, „Depot“, „Industry“, „Landmark“ (dt. „Bahnhof“, „Depot“, „Industrie“, „Wahrzeichen“).
subconstructionIndex integer Index in subconstructions der Konstruktion, beginnend bei 1. -1 steht für die Konstruktion selbst.
sortKey integer Sortierschlüssel des Tabs (kleinere zuerst). Das Basisspiel verwendet Werte wie 6000 für Industrien und ab 11000 für Stationen.
customTabData ViewManager.MakeEntityWindowResult Fertiger Fensterinhalt für den Tab. Bei nil wird der Inhalt der Unterkonstruktion mit makeEntityWindowContent gebaut.

ViewManager

record global base/tealdef/gui/entity_window/view_manager.d.tl:43

global record ViewManager

Laden: local view_manager = ug_require "::/gui/entity_window/view_manager.tl" as ViewManager

Hinweise

Verwaltung der Infofenster. Sie öffnet ein Fenster, wenn eine Entität ausgewählt wird.

Details

Das Recipe ViewManager hört auf die React-Events selectEntity ({entity, stack, dontBlink}), selectViewKey ({entity, nonEntity, stack, dontBlink, extraParam}, für Fenster ohne Entität wie Missionen und Subventionen) und closeAllWindows. Um aus GUI-Code das Fenster einer Entität zu öffnen, löst du react.fireEvent(nil, "selectEntity", { entity = entity, stack = true }) aus. Mit stack = false werden vorher die anderen nicht angehefteten Fenster geschlossen.

Felder

Name Typ Beschreibung
ViewManager Recipe<ViewManagerParam> Recipe, das Infofenster als Reaktion auf die Events selectEntity, selectViewKey und closeAllWindows öffnet und schließt. Selbst zeigt es nichts an. 2-mal im Basisspiel verwendet

Funktionen

getEntityDetailsDefaultTool(gameCtx : GameContext, isMapEditor : boolean, isSandboxMode : boolean, sharedStateRef : ReactRefT<ViewManager.ViewManagerParam.SharedState>) : ReactToolDefinition<any>, any base/tealdef/gui/entity_window/view_manager.d.tl:116

Aufruf: view_manager.getEntityDetailsDefaultTool(…)

get the EntityDetailsTool + parameters to be used for the special case of it being the default tool

Rückgabe ReactToolDefinition<any>, any

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/gui/gui/main/game.tl:398

local defaultTool, defaultToolParam = view_manager.getEntityDetailsDefaultTool(gameCtx, params.isMapEditor, params. isSandboxMode, sharedStateRef)

ViewManager.MakeEntityWindowResult

record base/tealdef/gui/entity_window/view_manager.d.tl:44

record MakeEntityWindowResult

Hinweise

Beschreibung des Inhalts eines Infofensters: welches Recipe mit welchem Parameter erscheint, dazu Titel, Verhalten beim Lokalisieren und beim automatischen Schließen. Das ist auch der Rückgabewert einer entityWindowScript-Funktion.

Im Basisspiel verwendet: 14-mal in 9 Dateien

base/content/game_mechanics/game_mechanics/company/explorations/exploration_plane_entity_window.script.tl:71

entityRevisionCloseConditionAndProxy : ({(function() : boolean), any})) : ViewManager.MakeEntityWindowResult
base/content/game_mechanics/game_mechanics/emission/pollution_cleanup_facility_hud.script.tl:33
entityRevisionCloseConditionAndProxy : ({(function() : boolean), any})) : ViewManager.MakeEntityWindowResult
base/content/game_mechanics/game_mechanics/subventions/subventions_gui.tl:513
extraParam : any) : ViewManager.MakeEntityWindowResult
base/content/gui/gui/entity_window/make_entity_window.tl:122
content : ViewManager.MakeEntityWindowResult
base/content/gui/gui/entity_window/make_non_entity_window.tl:16
extraParam : any) : ViewManager.MakeEntityWindowResult
base/content/gui/gui/entity_window/view_manager.tl:175
local recipeAndParamsState = engine_react_util.useStepState(function() : ViewManager.MakeEntityWindowResult
… und 3 weitere Dateien.

Felder

Name Typ Beschreibung
recipe Recipe<IEntityWindowParam> Inhalts-Recipe, aufgerufen mit param.
builtin Recipe<Builtin.ICompParam> Eingebautes Komponenten-Recipe, das verwendet wird, wenn recipe nil ist. Aufgerufen mit {entity = param.keyEntity}.
param IEntityWindowParam parameter used only as argument to the recipe (i.e. you can put a subclass here and downcast inside the recipe)
replacedEntity Engine.Entity Entität, die beim Bearbeiten des Fenstertitels umbenannt wird, statt der Schlüssel-Entität des Fensters (z. B. die Konstruktion bei einem Konstruktionsfenster).
autoCloseCondition_compareProxy any Wert, den React statt autoCloseCondition vergleicht, wenn es prüft, ob sich die Parameter geändert haben.
fallbackTitle string Fenstertitel, wenn die Entität keinen Namen hat, z. B. „Vehicle“ oder „Construction“ (dt. „Fahrzeug“, „Konstruktion“).
locate_compareProxy any Wert, den React statt locate vergleicht, wenn es prüft, ob sich die Parameter geändert haben.

Funktionen

autoCloseCondition() : boolean base/tealdef/gui/entity_window/view_manager.d.tl:52

Hinweise

Funktion, die true liefert, wenn sich das Fenster schließen soll (das Basisspiel schließt es, wenn die Entität nicht mehr existiert oder sich ihre Revision geändert hat).

Rückgabe boolean

locate() base/tealdef/gui/entity_window/view_manager.d.tl:55

Hinweise

Wird vom Lokalisieren-Knopf des Fensters aufgerufen. Standardmäßig folgt die Kamera der Schlüssel-Entität.

ViewManager.MakeEntityWindowContentFn

record base/tealdef/gui/entity_window/view_manager.d.tl:59

record MakeEntityWindowContentFn

Laden: local make_entity_window = ug_require "::/gui/entity_window/make_entity_window.tl" as MakeEntityWindowContentFn

Hinweise

Schnittstelle von /gui/entity_window/make_entity_window.tl, das das Inhalts-Recipe für eine Entität auswählt.

Im Basisspiel verwendet: 4-mal in 4 Dateien

base/content/game_mechanics/game_mechanics/emission/pollution_cleanup_facility_hud.script.tl:4

local make_entity_window = ug_require "/gui/entity_window/make_entity_window.tl" as ViewManager.MakeEntityWindowContentFn
base/content/gui/gui/entity_window/make_entity_window.tl:24
local make_entity_window : ViewManager.MakeEntityWindowContentFn = {}
base/content/gui/gui/entity_window/view_manager.tl:9
local make_entity_window = ug_require "/gui/entity_window/make_entity_window.tl" as ViewManager.MakeEntityWindowContentFn
base/content/landmarks/landmark_hud.script.tl:4
local make_entity_window = ug_require "/gui/entity_window/make_entity_window.tl" as ViewManager.MakeEntityWindowContentFn

Felder

Name Typ Beschreibung
ConstructionWindow Recipe<IEntityWindowParam> Fensterinhalt einer Konstruktion mit einem Tab je relevanter Unterkonstruktion (Station, Depot, Industrie, Lager) und optionalen eigenen Tabs. Der Parameter ist ein ConstructionWindowParam.Im Spiel Bahnhof · Depot · LagerIm Code: Train Station · Depot · Warehouse 4-mal im Basisspiel verwendet

Funktionen

makeEntityWindowContent(entity : Engine.Entity, gameCtx : GameContext, isMapEditor : boolean, isSandboxMode : boolean, skipConstruction : boolean, setActionFnAndProxy : {function(actionFn? : (function() : TreeNodeId), key2? : string), any}, entityRevisionCloseConditionAndProxy : ({(function() : boolean), any}), closeFnAndProxy : {function(), any}, filter? : (function(Engine.Entity) : boolean), replacedEntity? : Engine.Entity) : MakeEntityWindowResult base/tealdef/gui/entity_window/view_manager.d.tl:60

Aufruf: make_entity_window.makeEntityWindowContent(…)

Hinweise

Baut den Fensterinhalt für eine Entität und wählt das Recipe nach den Komponenten der Entität.

Im Spiel Konstruktion · Wohngebäude · BahnübergangIm Code: Construction · Residential Building · Rail Crossing

Parameter Typ Beschreibung
entity Engine.Entity Anzuzeigende Entität.
gameCtx GameContext Spielkontext.
isMapEditor boolean True im Karten-Editor.
isSandboxMode boolean True im Sandkastenmodus.
skipConstruction boolean Löst die Konstruktion der Entität nicht auf (verwendet für die Tabs eines Konstruktionsfensters).
setActionFnAndProxy {function(actionFn? : (function() : TreeNodeId), key2? : string), any} Setter für die Aktion und sein Vergleichs-Proxy.
entityRevisionCloseConditionAndProxy ({(function() : boolean), any}) Bedingung für das automatische Schließen und ihr Vergleichs-Proxy. Darf nil sein.
closeFnAndProxy {function(), any} Schließfunktion und ihr Vergleichs-Proxy.
filter? (function(Engine.Entity) : boolean) Nur Unterkonstruktionen, die diesen Filter passieren, werden angezeigt.
replacedEntity? Engine.Entity Unterkonstruktion, deren Tab anfangs ausgewählt ist.

Rückgabe MakeEntityWindowResult: Die Inhaltsbeschreibung, oder nil, wenn es für die Entität kein Fenster gibt.

Details

Gehört die Entität zu einer Konstruktion, deren Beschreibung ein entityWindowScript hat, wird stattdessen diese Skriptfunktion aufgerufen (mit den params des Skripts, der Konstruktions-Entität, einem Tag-Präfix, gameCtx, isMapEditor, isSandboxMode, setActionFnAndProxy und entityRevisionCloseConditionAndProxy). Sie muss ein MakeEntityWindowResult liefern. Die Wahrzeichen und die Anlage zur Beseitigung von Verschmutzung nutzen das. Modelle von Entitäten mit eigenem Zustand können ein solches Skript in metadata.metadata.entityWindowScript angeben. Konstruktionen mit mehr als einer relevanten Unterkonstruktion bekommen ein ConstructionWindow mit Tabs.

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/gui/gui/entity_window/view_manager.tl:181

return make_entity_window.makeEntityWindowContent(params.keyEntity, params.gameCtx, params.isMapEditor,

makeSetActionFnWithCombinedKey<T>(recipe : Recipe<T>, innerSetActionFnAndProxy : {function(actionFn? : (function() : TreeNodeId), key2? : string), any}) : SetActionFnAndProxy<T> base/tealdef/gui/entity_window/view_manager.d.tl:74

Aufruf: make_entity_window.makeSetActionFnWithCombinedKey(…)

Hinweise

Umhüllt einen Setter für die Aktion so, dass der Aktionsschlüssel den Namen des Recipes als Präfix bekommt.

Parameter Typ Beschreibung
recipe Recipe<T> Inhalts-Recipe, dessen Name als Schlüsselpräfix verwendet wird.
innerSetActionFnAndProxy {function(actionFn? : (function() : TreeNodeId), key2? : string), any} Äußerer Setter für die Aktion und sein Vergleichs-Proxy.

Rückgabe SetActionFnAndProxy<T>: Der umhüllte Setter und ein passender Vergleichs-Proxy, zu übergeben als setActionFn und setActionFn_compareProxy.

Im Basisspiel verwendet: 4-mal in 2 Dateien

base/content/game_mechanics/game_mechanics/emission/pollution_cleanup_facility_hud.script.tl:35

local actionFnAndProxy = make_entity_window.makeSetActionFnWithCombinedKey(make_entity_window.ConstructionWindow, setActionFnAndProxy)
base/content/landmarks/landmark_hud.script.tl:27
local actionFnAndProxy = make_entity_window.makeSetActionFnWithCombinedKey(make_entity_window.ConstructionWindow, setActionFnAndProxy)

ViewManager.MakeNonEntityWindowContentFn

record base/tealdef/gui/entity_window/view_manager.d.tl:78

record MakeNonEntityWindowContentFn

Laden: local make_non_entity_window = ug_require "::/gui/entity_window/make_non_entity_window.tl" as MakeNonEntityWindowContentFn

Hinweise

Schnittstelle von /gui/entity_window/make_non_entity_window.tl, das Fenster baut, die keine Entität zeigen.

Im Basisspiel verwendet: 2-mal in 2 Dateien

base/content/gui/gui/entity_window/make_non_entity_window.tl:5

local make_non_entity_window : ViewManager.MakeNonEntityWindowContentFn = {}
base/content/gui/gui/entity_window/view_manager.tl:10
local make_non_entity_window = ug_require "/gui/entity_window/make_non_entity_window.tl" as ViewManager.MakeNonEntityWindowContentFn

Funktionen

makeNonEntityWindowContent(nonEntity : string, gameCtx : GameContext, isMapEditor : boolean, isSandboxMode : boolean, setActionFnAndProxy : {function(actionFn? : (function() : TreeNodeId), key2? : string), any}, closeFnAndProxy : {function(), any}, extraParam : any) : MakeEntityWindowResult base/tealdef/gui/entity_window/view_manager.d.tl:79

Aufruf: make_non_entity_window.makeNonEntityWindowContent(…)

Hinweise

Baut den Fensterinhalt für einen Schlüssel ohne Entität.

Parameter Typ Beschreibung
nonEntity string Fensterschlüssel. Das Basisspiel behandelt "mission" und Schlüssel, die mit "subsidy_" beginnen.
gameCtx GameContext
isMapEditor boolean
isSandboxMode boolean
setActionFnAndProxy {function(actionFn? : (function() : TreeNodeId), key2? : string), any}
closeFnAndProxy {function(), any}
extraParam any Zusätzlicher Parameter aus dem Event selectViewKey.

Rückgabe MakeEntityWindowResult: Die Inhaltsbeschreibung, oder nil bei unbekannten Schlüsseln.

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/gui/gui/entity_window/view_manager.tl:184

return make_non_entity_window.makeNonEntityWindowContent(params.keyNonEntity, params.gameCtx, params.isMapEditor, params.isSandboxMode, {setActionFn, setActionF

ViewManager.EntityWindowState

record base/tealdef/gui/entity_window/view_manager.d.tl:89

record EntityWindowState

Hinweise

Verwaltungsdaten eines offenen Infofensters in ViewManagerParam.SharedState.openEntityWindows.

Im Basisspiel verwendet: 5-mal in 1 Datei

base/content/gui/gui/entity_window/view_manager.tl:352

local openEntities : {(Engine.Entity | string) : ViewManager.EntityWindowState} = param.sharedStateRef:get().openEntityWindows

Felder

Name Typ Beschreibung
revision Engine.Revision Revision der Entität beim Öffnen des Fensters.
pinned boolean True, wenn das Fenster angeheftet ist (es bleibt offen, wenn sich andere Fenster öffnen).
handoverToPinned boolean Wird gesetzt, wenn das Fenster angeheftet wurde. Das Fenster geht dann an das Standardwerkzeug der Infofenster über.
extraParam any Zusätzlicher Parameter, mit dem das Fenster geöffnet wurde (Event selectViewKey).
actionFnKey string Schlüssel von actionFn.

Funktionen

actionFn() : TreeNodeId base/tealdef/gui/entity_window/view_manager.d.tl:94

Hinweise

Aktionsfunktion, die der Fensterinhalt mit setActionFn gesetzt hat. Sie gilt, solange das Fenster aktiv ist.

Rückgabe TreeNodeId

ViewManager.ViewManagerParam

record base/tealdef/gui/entity_window/view_manager.d.tl:98

record ViewManagerParam

Hinweise

Parameter des Recipes ViewManager.

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/gui/gui/entity_window/view_manager.tl:524

view_manager.ViewManager = react.RegisterRecipe("ViewManager", function(params : ViewManager.ViewManagerParam) : TreeNodeId

Felder

Name Typ Beschreibung
refRc ReactNodeRefApiT<Builtin.RendererComponent>
gameCtx GameContext Spielkontext.
isMapEditor boolean True im Karten-Editor.
isSandboxMode boolean True im Sandkastenmodus.
sharedStateRef ReactRefT<SharedState> these need to be owned by the parent

ViewManager.ViewManagerParam.SharedState

record base/tealdef/gui/entity_window/view_manager.d.tl:104

record SharedState

Hinweise

Zustand der offenen Infofenster, den sich ViewManager und das Werkzeug der Infofenster teilen.

Im Basisspiel verwendet: 3-mal in 2 Dateien

base/content/gui/gui/entity_window/view_manager.tl:25

sharedStateRef : ReactRefT<ViewManager.ViewManagerParam.SharedState>
base/content/gui/gui/main/game.tl:394
local sharedStateRef : ReactRefT<ViewManager.ViewManagerParam.SharedState> = react.useRef({

Felder

Name Typ Beschreibung
openEntityWindows {(Engine.Entity | string) : EntityWindowState} Offene Fenster nach Schlüssel (Entitäts-ID oder der String-Schlüssel ohne Entität).
activeEntityWindow (Engine.Entity | string) Schlüssel des Fensters mit dem Fokus.
windowOrder {(Engine.Entity | string)} Schlüssel der offenen Fenster. Das vorderste Fenster steht am Ende.
forceBlink boolean