4 -- Manage display of current selected tool into the ui
5 ------------------------------------------------------------------------------------------------------------
8 -- base Name for the tool bar in the ui
9 local toolBarPath
= "ui:interface:r2ed_toolbar:"
10 local geoToolPath
= "ui:interface:r2ed_palette:content:sbtree_geo:geo_features:enclosing:geo_feature_list:"
11 local featuresToolPath
= "ui:interface:r2ed_palette:content:sbtree_features:features:enclosing:feature_list:"
16 -- ref to current hightlighted tool in the ui
19 -- For named tools, map the name to the ui path
22 selectMove
= toolBarPath
.. "r2ed_tool_select",
23 selectRotate
= toolBarPath
.. "r2ed_tool_rotate",
24 teleport
= toolBarPath
.. "r2ed_tool_teleport",
25 drawRoad
= geoToolPath
.. "r2ed_tool_draw_road:tool",
26 drawRegion
= geoToolPath
.. "r2ed_tool_draw_region:tool",
27 createFeatureBanditCamp
= featuresToolPath
.. "r2ed_create_feature_bandit_camp:tool",
28 createFeatureTimer
= featuresToolPath
.. "r2ed_create_feature_timer:tool",
29 createFeatureTimeTrigger
= featuresToolPath
.. "r2ed_create_feature_time_trigger:tool",
30 createFeatureFauna
= featuresToolPath
.. "r2ed_create_feature_fauna:tool",
31 createFeatureBossSpawner
= featuresToolPath
.. "r2ed_create_feature_boss_spawner:tool",
32 createFeatureZoneTrigger
= featuresToolPath
.. "r2ed_create_feature_zone_trigger:tool",
33 createFeatureUserTrigger
= featuresToolPath
.. "r2ed_create_user_trigger:tool",
34 createFeatureEasterEgg
= featuresToolPath
.."r2ed_create_easter:tool",
35 createFeatureLootSpawner
= featuresToolPath
.."r2ed_create_feature_loot_spawner:tool",
36 createDialog
= featuresToolPath
.."r2ed_create_dialog:tool",
37 createFeatureGiveItem
= featuresToolPath
.."r2ed_create_feature_give_item:tool",
38 createFeatureRequestItem
= featuresToolPath
.."r2ed_create_feature_request_item:tool",
39 createFeatureTalkTo
= featuresToolPath
.."r2ed_create_feature_talk_to:tool",
40 createFeatureAmbush
= featuresToolPath
.."r2ed_create_feature_ambush:tool",
41 createFeatureTimedSpawner
= featuresToolPath
.."r2ed_create_feature_timed_spawner:tool",
42 createFeatureManHunt
= featuresToolPath
.."r2ed_create_feature_man_hunt:tool",
48 ------------------------------------------------------------------------------------------------------------
49 -- PRIVATE : hightlight a tool button by a ref on the tool ui
50 function r2
.ToolUI
:highlightToolUI(tool
, hightlighted
)
51 if not tool
then return end
52 tool
:find("selected").active
= hightlighted
53 tool
:find("unselected").active
= not hightlighted
56 ------------------------------------------------------------------------------------------------------------
57 -- Get reference to a tool in the ui by its name (for named tools)
58 function r2
.ToolUI
:getToolUIByName(toolName
)
59 if toolName
== "" then return nil end
60 -- get Name of the ui button from the tool Name
61 local uiPath
= self
.ToolNameToUIPath
[toolName
]
63 debugWarning("Can't find ui for tool : " .. tostring(toolName
))
69 ------------------------------------------------------------------------------------------------------------
70 -- Get the current highlighted tool
71 function r2
.ToolUI
:getActiveToolUI()
72 if self
.CurrentToolUI
and not self
.CurrentToolUI
.isNil
then
73 return self
.CurrentToolUI
80 ------------------------------------------------------------------------------------------------------------
81 -- Set the current highlighted tool
82 function r2
.ToolUI
:setActiveToolUI(tool
)
83 if self
:getActiveToolUI() then
84 self
:highlightToolUI(self
:getActiveToolUI(), false)
86 self
.CurrentToolUI
= tool
87 self
:highlightToolUI(tool
, true)
91 ------------------------------------------------------------------------------------------------------------
92 -- This function will be called by the framework when it wants to highlight a tool in the
93 -- ui. It doesn't change the actual tool in the editor, just the ui
94 function r2
.ToolUI
:setActiveToolUIByName(toolName
)
95 self
:setActiveToolUI(self
:getToolUIByName(toolName
))
98 ------------------------------------------------------------------------------------------------------------
99 function r2
.ToolUI
:updateTooltip(onClickL
, paramsL
)
100 onClickL
= defaulting(onClickL
, getUICaller().onclick_l
)
101 paramsL
= defaulting(paramsL
, getUICaller().params_l
)
102 local expr
= string.format("getKey('%s', '%s')", onClickL
, paramsL
)
103 local keyName
= ucstring(runExpr(expr
))
104 if keyName
== i18n
.get("uiNotAssigned") then
106 setContextHelpText(getUICaller().tooltip
)
108 setContextHelpText(concatUCString(getUICaller().tooltip
, "@{6F6F} (", keyName
, ")"))
112 ----------------------------------------------------------------------------
113 -- Update the undo / redo buttons grayed states
114 function r2
.ToolUI
:updateUndoRedo()
115 local toolbar
= getUI("ui:interface:r2ed_toolbar")
116 toolbar
:find("r2ed_tool_undo").unselected
.active
= r2
:canUndo()
117 toolbar
:find("r2ed_tool_undo").disabled
.active
= not r2
:canUndo()
118 toolbar
:find("r2ed_tool_redo").unselected
.active
= r2
:canRedo()
119 toolbar
:find("r2ed_tool_redo").disabled
.active
= not r2
:canRedo()
123 ----------------------------------------------------------------------------
124 -- Update the toggle windows buttons
125 function r2
.ToolUI
:updateToggleWindowButtons()
126 local windowsBar
= getUI("ui:interface:r2ed_windows_bar")
127 local active
= (r2
.Mode
== "Edit")
128 windowsBar
.active
= active
130 windowsBar
:find("r2ed_tool_map_window").selected
.active
= getUI("ui:interface:map").active
131 windowsBar
:find("r2ed_tool_map_window").unselected
.active
= not getUI("ui:interface:map").active
132 windowsBar
:find("r2ed_tool_scenario_window").selected
.active
= getUI("ui:interface:r2ed_scenario").active
133 windowsBar
:find("r2ed_tool_scenario_window").unselected
.active
= not getUI("ui:interface:r2ed_scenario").active
134 windowsBar
:find("r2ed_tool_palette_window").selected
.active
= getUI("ui:interface:r2ed_palette").active
135 windowsBar
:find("r2ed_tool_palette_window").unselected
.active
= not getUI("ui:interface:r2ed_palette").active
139 ----------------------------------------------------------------------------
140 -- Update the toggle windows buttons
141 function r2
.ToolUI
:updateToggleWindowDMButtons()
142 local windowsDMBar
= getUI("ui:interface:r2ed_windows_dm_bar")
143 windowsDMBar
:find("r2ed_live").selected
.active
= getUI("ui:interface:r2ed_scenario_control").active
144 windowsDMBar
:find("r2ed_live").unselected
.active
= not getUI("ui:interface:r2ed_scenario_control").active
145 windowsDMBar
:find("player_control").selected
.active
= getUI("ui:interface:ring_chars_tracking").active
146 windowsDMBar
:find("player_control").unselected
.active
= not getUI("ui:interface:ring_chars_tracking").active