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
base/content/gui/gui/entity_window/make_entity_window.tl:121
base/content/landmarks/landmark_hud.script.tl:29
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
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
base/content/gui/gui/entity_window/make_entity_window.tl:122
base/content/gui/gui/entity_window/make_non_entity_window.tl:16
base/content/gui/gui/entity_window/view_manager.tl:175
… 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
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
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übergang
Im 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.
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
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
base/content/gui/gui/entity_window/view_manager.tl:10
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.
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
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
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
base/content/gui/gui/main/game.tl:394
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 |