Zum Inhalt

tool_react_util

Quelle: base/tealdef/gui/main/tool_react_util.d.tl

Hinweise

Hilfsfunktionen für Werkzeuge des Werkzeug-Stacks (gameCtx.toolStack): ein Werkzeug registrieren, das ein Fenster öffnet, solange es aktiv ist, und delegierende Werkzeuge, die über React-Events auf den Stack kommen.

ToolReactUtil

record global base/tealdef/gui/main/tool_react_util.d.tl:3

global record ToolReactUtil

Laden: local tool_react_util = ug_require "::/gui/main/tool_react_util.tl" as ToolReactUtil

Hinweise

Hilfsfunktionen zum Registrieren von Werkzeugen.

Funktionen

registerToolWithWindow<TP is IToolParam, WP is IToolWindowParam<TP>>(toolName : string, windowId : string, windowRecipe : Recipe<WP>, getDebugString? : (function(toolParam : TP) : string)) : ReactToolDefinition<TP> base/tealdef/gui/main/tool_react_util.d.tl:24

Aufruf: tool_react_util.registerToolWithWindow(…)

Hinweise

Registriert ein Werkzeug, das ein einzelnes Fenster zeigt, solange es auf dem Werkzeug-Stack liegt.

Parameter Typ Beschreibung
toolName string Name des Werkzeugs.
windowId string GUI-ID des Fensters; es ist ausgeblendet, solange das Werkzeug zurückgestellt ist.
windowRecipe Recipe<WP> Recipe des Fensters; es bekommt einen IToolWindowParam.
getDebugString? (function(toolParam : TP) : string) Optional; gibt eine Debug-Beschreibung des Werkzeug-Parameters zurück.

Rückgabe ReactToolDefinition<TP>: Die Werkzeugdefinition, die du mit gameCtx.toolStack:get():getApi().push(tool, key, param) auf den Stack legst.

Beispiel

-- aus music_player.tl
local musicPlayerWindowId = "musicPlayerWindow"
local MusicPlayerWindow = react.RegisterWrapperRecipe("MusicPlayerWindow", builtin.Window, function(params)
    return builtin.Window{
        title = _("Music Player"),
        closable = true,
        onClose = params.onClose,
        content = MusicPlayer(params.payload),
        id = musicPlayerWindowId,
    }
end)
local MusicPlayerTool = tool_react_util.registerToolWithWindow("MusicPlayer", musicPlayerWindowId, MusicPlayerWindow)
-- game_bar.tl:
getToolStackApi(gameCtx).push(MusicPlayerTool, nil, {gameCtx = gameCtx})
Im Basisspiel verwendet: 5-mal in 5 Dateien

base/content/game_mechanics/game_mechanics/company/company.tl:965

local CompanyTool = tool_react_util.registerToolWithWindow("Company", companyWindowId, CompanyWindow, getDebugString)
base/content/game_mechanics/game_mechanics/finance/account.tl:162
local FinanceTool = tool_react_util.registerToolWithWindow("Finances", financeWindowId, FinancesWindow, getDebugString)
base/content/game_mechanics/game_mechanics/notifications/gui/notification_log.tl:652
local NotificationLogTool = tool_react_util.registerToolWithWindow("NotificationLog", notificationLogWindowId, NotificationLogWindow)
base/content/gui/gui/game_bar/game_bar_widgets.tl:835
game_bar_widgets.CalendarEditorTool = tool_react_util.registerToolWithWindow("CalendarEditor", calendarEditorWindowId, CalendarEditorWindow)
base/content/gui/gui/music_player/music_player.tl:285
local MusicPlayerTool = tool_react_util.registerToolWithWindow("MusicPlayer", musicPlayerWindowId, MusicPlayerWindow)

registerVariantToolWithWindow<TP is IToolParam, WP is IToolWindowParam<TP>>(toolName : string, windowId : string, windowRecipe : Recipe<WP>, getActiveVariant : (function(toolParam : TP) : string), getDebugString? : (function(toolParam : TP) : string)) : ReactToolDefinition<TP> base/tealdef/gui/main/tool_react_util.d.tl:25

Aufruf: tool_react_util.registerVariantToolWithWindow(…)

Hinweise

Wie registerToolWithWindow, für ein Werkzeug mit Varianten; getActiveVariant liefert die aktive Variante zu einem Werkzeug-Parameter.

Rückgabe ReactToolDefinition<TP>

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/gui/gui/statistics/statistics.tl:668

local StatisticsTool = tool_react_util.registerVariantToolWithWindow("Statistics", statisticsWindowId, StatisticsWindow, getActiveVariant, getDebugString)

registerVariantToolWithPersistentWindows<TP is IToolParam, WP is IToolWindowParam<TP>>(toolName : string, getWindowId : (function(TP) : string), windowRecipe : Recipe<WP>, getActiveVariant : (function(toolParam : TP) : string), getDebugString? : (function(toolParam : TP) : string)) : ReactToolDefinition<TP> base/tealdef/gui/main/tool_react_util.d.tl:26

Aufruf: tool_react_util.registerVariantToolWithPersistentWindows(…)

Hinweise

Wie registerVariantToolWithWindow, aber mit einem Fenster je Fenster-ID (aus getWindowId). Nimmt man das Werkzeug vom Stack, wird das Fenster nur ausgeblendet und bleibt bestehen.

Rückgabe ReactToolDefinition<TP>

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/gui/gui/map_editor/map_editor.tl:2912

map_editor.MapEditorTool = tool_react_util.registerVariantToolWithPersistentWindows("MapEditor", getWindowId, MapEditorWindow, getActiveVariant, getDebugString)

same as registerToolWithWindow, but without the call to react.RegisterTool()

prepareDefaultToolWithWindowDefinition<TP is ToolReactUtil.IToolParam, WP is ToolReactUtil.IToolWindowParam<TP>>(toolName : string, windowId : string, windowRecipe : Recipe<WP>, getActiveVariant? : (function(toolParam : TP) : string), getDebugString? : (function(toolParam : TP) : string), getWindowIdIfPersistent? : (function(TP) : string)) : ReactToolDefinition<TP> base/tealdef/gui/main/tool_react_util.d.tl:29

Aufruf: tool_react_util.prepareDefaultToolWithWindowDefinition(…)

Die Spieldateien enthalten hierzu noch keine Beschreibung.

Rückgabe ReactToolDefinition<TP>

Im Basisspiel verwendet: 1-mal in 1 Datei

base/content/gui/gui/main/pause_menu.tl:428

local pauseMenuToolImpl = tool_react_util.prepareDefaultToolWithWindowDefinition("PauseMenu", pauseMenuWindowId, PauseMenu)

registerDelegatingTool<PublicParam, InternalParam>(def : ReactToolDefinition<InternalParam>) : DelegatingToolDefinition<PublicParam, InternalParam> base/tealdef/gui/main/tool_react_util.d.tl:48

Aufruf: tool_react_util.registerDelegatingTool(…)

Hinweise

Registriert def als Werkzeug und verpackt es als DelegatingToolDefinition.

Rückgabe DelegatingToolDefinition<PublicParam, InternalParam>

Im Basisspiel verwendet: 2-mal in 2 Dateien

base/content/gui/gui/layers/layers_button_ridge.tl:120

local LayerTool : ToolReactUtil.DelegatingToolDefinition<LayersButtonRidge.LayerToolParam, LayerToolParamInternal> = tool_react_util.registerDelegatingTool{
base/content/gui/gui/main/selector_react_util.tl:373
selector_react_util.InspectorTool = tool_react_util.registerDelegatingTool{

firePushToolEvent<TP, DP>(evtParam : PushToolEventParam<TP, DP>) base/tealdef/gui/main/tool_react_util.d.tl:50

Aufruf: tool_react_util.firePushToolEvent(…)

Hinweise

Löst das React-Event PushTool für ein delegierendes Werkzeug aus.

Im Basisspiel verwendet: 1-mal in 1 Datei

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

tool_react_util.firePushToolEvent{tool = selector_react_util.InspectorTool}

firePopToolEvent<TP, DP>(evtParam : PopToolEventParam<TP, DP>) base/tealdef/gui/main/tool_react_util.d.tl:51

Aufruf: tool_react_util.firePopToolEvent(…)

Hinweise

Löst das React-Event PopTool für ein delegierendes Werkzeug aus.

Im Basisspiel verwendet: 5-mal in 2 Dateien

base/content/gui/gui/layers/layers_button_ridge.tl:181

tool_react_util.firePopToolEvent{tool = LayerTool}
base/content/gui/gui/main/game.tl:374
tool_react_util.firePopToolEvent{tool = selector_react_util.InspectorTool}

onPushToolEvent<TP, DP>(tool : DelegatingToolDefinition<TP, DP>, onPush : function(evtParam : ToolReactUtil.PushToolEventParam<TP, DP>)) base/tealdef/gui/main/tool_react_util.d.tl:52

Aufruf: tool_react_util.onPushToolEvent(…)

Hinweise

Hook, der onPush aufruft, wenn PushTool für das angegebene delegierende Werkzeug ausgelöst wird.

Im Basisspiel verwendet: 2-mal in 2 Dateien

base/content/gui/gui/layers/layers_button_ridge.tl:538

tool_react_util.onPushToolEvent(LayerTool, function(pushEvt : ToolReactUtil.PushToolEventParam<LayersButtonRidge.LayerToolParam, LayerToolParamInternal>)
base/content/gui/gui/main/selector_react_util.tl:284
tool_react_util.onPushToolEvent(selector_react_util.InspectorTool, function(evtParam : ToolReactUtil.PushToolEventParam<SelectorReactUtil.InspectorToolParam, Se

onPopToolEvent<TP, DP>(tool : DelegatingToolDefinition<TP, DP>, onPop : function(evtParam : ToolReactUtil.PopToolEventParam<TP, DP>)) base/tealdef/gui/main/tool_react_util.d.tl:53

Aufruf: tool_react_util.onPopToolEvent(…)

Hinweise

Hook, der onPop aufruft, wenn PopTool für das angegebene delegierende Werkzeug ausgelöst wird.

Im Basisspiel verwendet: 2-mal in 2 Dateien

base/content/gui/gui/layers/layers_button_ridge.tl:542

tool_react_util.onPopToolEvent(LayerTool, function(popEvt : ToolReactUtil.PopToolEventParam<LayersButtonRidge.LayerToolParam, LayerToolParamInternal>)
base/content/gui/gui/main/selector_react_util.tl:291
tool_react_util.onPopToolEvent(selector_react_util.InspectorTool, function(evtParam : ToolReactUtil.PopToolEventParam<SelectorReactUtil.InspectorToolParam, Sele

ToolReactUtil.IToolParam

interface base/tealdef/gui/main/tool_react_util.d.tl:6

interface IToolParam

input parameters required for most tools

Im Basisspiel verwendet: 16-mal in 8 Dateien

base/content/gui/gui/game_bar/game_bar.tl:13

local MusicPlayerTool = ug_require "/gui/music_player/music_player.tl" as ReactToolDefinition<ToolReactUtil.IToolParam>
base/content/gui/gui/game_bar/game_bar_widgets.tl:6
local MusicPlayerTool = ug_require "/gui/music_player/music_player.tl" as ReactToolDefinition<ToolReactUtil.IToolParam>
base/content/gui/gui/main/game.tl:18
local PauseMenuTool = ug_require "/gui/main/pause_menu.tl" as ReactToolDefinition<ToolReactUtil.IToolParam>
base/content/gui/gui/main/pause_menu.tl:236
local WallClock = react.RegisterRecipe("WallClock", function(_params : ToolReactUtil.IToolParam) : TreeNodeId
base/content/gui/gui/main/tool_react_util.tl:12
function tool_react_util.prepareDefaultToolWithWindowDefinition<TP is ToolReactUtil.IToolParam, WP is ToolReactUtil.IToolWindowParam<TP>>(toolName : string, win
base/content/gui/gui/map_editor/map_editor.tl:25
local record FileListParam is ToolReactUtil.IToolParam
… und 2 weitere Dateien.

Felder

Name Typ Beschreibung
gameCtx GameContext Spielkontext; sein Fenster-Container nimmt das Werkzeugfenster auf.

ToolReactUtil.ToolWindowParamPayload

interface base/tealdef/gui/main/tool_react_util.d.tl:11

interface ToolWindowParamPayload<TP is IToolParam>

'output' that can be passed from the windowWrapper recipe to the windowContent recipe

Im Basisspiel verwendet: 9-mal in 8 Dateien

base/content/game_mechanics/game_mechanics/company/company.tl:850

local CompanyWindowContent = react.RegisterRecipe("CompanyWindowContent", function(param : ToolReactUtil.ToolWindowParamPayload<CompanyToolParam>) : TreeNodeId
base/content/game_mechanics/game_mechanics/finance/account.tl:13
local FinanceAccount = react.RegisterRecipe("FinanceAccount", function(param : ToolReactUtil.ToolWindowParamPayload<FinanceToolParam>) : TreeNodeId
base/content/game_mechanics/game_mechanics/notifications/gui/notification_log.tl:205
local NotificationLog = react.RegisterRecipe("NotificationLog", function(param : ToolReactUtil.ToolWindowParamPayload<NotificationLogToolParam>) : TreeNodeId
base/content/gui/gui/game_bar/game_bar_widgets.tl:768
local CalendarEditor = react.RegisterRecipe("CalendarEditor", function(params : ToolReactUtil.ToolWindowParamPayload<GameBarWidgets.CalendarEditorToolParams>) :
base/content/gui/gui/line_vehicle_mgmt/manager_window.tl:5897
function(params : ToolReactUtil.ToolWindowParamPayload<ManagerWindow.ManagerToolParam>) : TreeNodeId
base/content/gui/gui/map_editor/map_editor.tl:31
local FileListContainer = react.RegisterRecipe("FileListContainer", function(param : ToolReactUtil.ToolWindowParamPayload<FileListParam>) : TreeNodeId
… und 2 weitere Dateien.

Felder

Name Typ Beschreibung
toolParam TP Der Parameter, mit dem das Werkzeug auf den Stack gelegt wurde.

Funktionen

setActionFn(actionFn : (function() : TreeNodeId), key2? : string) base/tealdef/gui/main/tool_react_util.d.tl:13

Hinweise

Setzt die Action-Funktion des Werkzeugs (den Action-Deskriptor, der gilt, solange das Werkzeug aktiv ist), zum Beispiel aus SelectorReactUtil.makeDefaultSelectorAction.

setVariantOverride(variant : string) base/tealdef/gui/main/tool_react_util.d.tl:15

Hinweise

Überschreibt die aktive Variante des Werkzeugs.

ToolReactUtil.IToolWindowParam

interface base/tealdef/gui/main/tool_react_util.d.tl:19

interface IToolWindowParam<TP>

parameters requires to be passed into the window

Im Basisspiel verwendet: 19-mal in 11 Dateien

base/content/game_mechanics/game_mechanics/company/company.tl:932

local CompanyWindow = react.RegisterWrapperRecipe("CompanyWindow", builtin.Window, function(param : ToolReactUtil.IToolWindowParam<CompanyToolParam>) : TreeNode
base/content/game_mechanics/game_mechanics/finance/account.tl:131
local FinancesWindow = react.RegisterWrapperRecipe("FinancesWindow", builtin.Window, function(params : ToolReactUtil.IToolWindowParam<FinanceToolParam>) : TreeN
base/content/game_mechanics/game_mechanics/notifications/gui/notification_log.tl:581
local NotificationLogWindow = react.RegisterWrapperRecipe("NotificationLogWindow", builtin.Window, function(params : ToolReactUtil.IToolWindowParam<Notification
base/content/gui/gui/game_bar/game_bar_widgets.tl:825
local CalendarEditorWindow = react.RegisterWrapperRecipe("CalendarEditorWindow", builtin.Window, function(params : ToolReactUtil.IToolWindowParam<GameBarWidgets
base/content/gui/gui/layers/layers_button_ridge.tl:22
local record LayerToolWindowParam is ToolReactUtil.IToolWindowParam<LayersButtonRidge.LayerToolParam>
base/content/gui/gui/line_vehicle_mgmt/manager_window.tl:8214
manager_window.ManagerToolWindow = react.RegisterWrapperRecipe("ManagerWindow", builtin.Window, function(param : ToolReactUtil.IToolWindowParam<ManagerWindow.Ma
… und 5 weitere Dateien.

Felder

Name Typ Beschreibung
payload ToolWindowParamPayload<TP> Werkzeug-Parameter und Callbacks des Werkzeugs, zur Weitergabe an den Fensterinhalt.

Funktionen

onClose() base/tealdef/gui/main/tool_react_util.d.tl:20

Hinweise

Schließt das Fenster, indem es das Werkzeug vom Stack nimmt.

ToolReactUtil.DelegatingToolDefinition

interface base/tealdef/gui/main/tool_react_util.d.tl:32

interface DelegatingToolDefinition<PublicParam, InternalParam>

Hinweise

Ein Werkzeug, das über React-Events auf den Stack kommt und wieder herunter, nicht direkt. Das Recipe, das die Events behandelt, legt das eigentliche Werkzeug delegate auf den Stack.

Im Basisspiel verwendet: 4-mal in 2 Dateien

base/content/gui/gui/layers/layers_button_ridge.tl:120

local LayerTool : ToolReactUtil.DelegatingToolDefinition<LayersButtonRidge.LayerToolParam, LayerToolParamInternal> = tool_react_util.registerDelegatingTool{
base/content/gui/gui/main/tool_react_util.tl:119
function tool_react_util.onPushToolEvent<TP, DP>(tool : ToolReactUtil.DelegatingToolDefinition<TP, DP>, onPush : function(evtParam : ToolReactUtil.PushToolEvent

Felder

Name Typ Beschreibung
delegate ReactToolDefinition<InternalParam> Das registrierte Werkzeug, das tatsächlich auf den Werkzeug-Stack kommt.

ToolReactUtil.PushToolEventParam

record base/tealdef/gui/main/tool_react_util.d.tl:36

record PushToolEventParam<TP, DP>

Hinweise

Parameter von firePushToolEvent und von Handlern für onPushToolEvent.

Im Basisspiel verwendet: 5-mal in 3 Dateien

base/content/gui/gui/layers/layers_button_ridge.tl:538

tool_react_util.onPushToolEvent(LayerTool, function(pushEvt : ToolReactUtil.PushToolEventParam<LayersButtonRidge.LayerToolParam, LayerToolParamInternal>)
base/content/gui/gui/main/selector_react_util.tl:284
tool_react_util.onPushToolEvent(selector_react_util.InspectorTool, function(evtParam : ToolReactUtil.PushToolEventParam<SelectorReactUtil.InspectorToolParam, Se
base/content/gui/gui/main/tool_react_util.tl:101
function tool_react_util.firePushToolEvent<TP, DP>(evtParam : ToolReactUtil.PushToolEventParam<TP, DP>)

Felder

Name Typ Beschreibung
tool DelegatingToolDefinition<TP, DP> Das delegierende Werkzeug, das auf den Stack soll.
key string Schlüssel der Werkzeug-Instanz.
param TP Öffentlicher Werkzeug-Parameter.
allowStacking boolean Ob das Werkzeug über das aktuelle gestapelt werden darf.

ToolReactUtil.PopToolEventParam

record base/tealdef/gui/main/tool_react_util.d.tl:42

record PopToolEventParam<TP, DP>

Hinweise

Parameter von firePopToolEvent und von Handlern für onPopToolEvent.

Im Basisspiel verwendet: 5-mal in 3 Dateien

base/content/gui/gui/layers/layers_button_ridge.tl:542

tool_react_util.onPopToolEvent(LayerTool, function(popEvt : ToolReactUtil.PopToolEventParam<LayersButtonRidge.LayerToolParam, LayerToolParamInternal>)
base/content/gui/gui/main/selector_react_util.tl:291
tool_react_util.onPopToolEvent(selector_react_util.InspectorTool, function(evtParam : ToolReactUtil.PopToolEventParam<SelectorReactUtil.InspectorToolParam, Sele
base/content/gui/gui/main/tool_react_util.tl:111
function tool_react_util.firePopToolEvent<TP, DP>(evtParam : ToolReactUtil.PopToolEventParam<TP, DP>)

Felder

Name Typ Beschreibung
tool DelegatingToolDefinition<TP, DP> Das delegierende Werkzeug, das vom Stack soll.
key string Schlüssel der Werkzeug-Instanz.