84 lines
2.7 KiB
Lua
84 lines
2.7 KiB
Lua
--------------------------------------------------------------------------------------
|
|
-- Managment of the user trigger menu in anim mode
|
|
|
|
|
|
-- the anim triggers class
|
|
r2.ui.AnimUserTriggers =
|
|
{
|
|
}
|
|
|
|
------------
|
|
-- PUBLIC --
|
|
------------
|
|
|
|
--------------------------------------------------------------------------------------
|
|
-- Called when the user click on the triggers icon -> pop the menu with the trigger list
|
|
function r2.ui.AnimUserTriggers:popMenu()
|
|
local menuName = "ui:interface:r2ed_anim_triggers_menu"
|
|
local menu = getUI(menuName)
|
|
local rootMenu = menu:getRootMenu()
|
|
rootMenu:reset()
|
|
local triggers = self:getTriggerTable()
|
|
if not triggers then return end
|
|
for k = 1, table.getn(triggers) do
|
|
if triggers[k].Act == 0 or triggers[k].Act == r2.getCurrentActIndex() then
|
|
r2.ScratchUCStr:fromUtf8(triggers[k].Name)
|
|
rootMenu:addLine(r2.ScratchUCStr, "lua",
|
|
string.format("r2.ui.AnimUserTriggers:fireTrigger(%d, %d)", triggers[k].Act, triggers[k].Id), "")
|
|
end
|
|
end
|
|
if rootMenu:getNumLine() == 0 then
|
|
rootMenu:addLine(i18n.get("uiR2EDNoTriggersDefined"), "", "", "")
|
|
end
|
|
launchContextMenuInGame(menuName)
|
|
local but = getUI("ui:interface:r2ed_testbar"):find("r2ed_anim_triggers")
|
|
but:updateCoords()
|
|
menu.x = but.x_real
|
|
menu.y = but.y_real + but.w_real
|
|
rootMenu.x = 0
|
|
rootMenu.y = 0
|
|
menu:updateCoords()
|
|
end
|
|
|
|
--------------------------------------------------------------------------------------
|
|
-- Called by the ui when the user has chosen a trigger in the menu
|
|
function r2.ui.AnimUserTriggers:fireTrigger(triggerAct, triggerId)
|
|
r2.triggerUserTrigger(triggerAct, triggerId)
|
|
local trig = self:findTrigger(triggerAct, triggerId)
|
|
if trig then
|
|
r2.ScratchUCStr:fromUtf8(trig.Name)
|
|
displaySystemInfo(concatUCString(i18n.get("uiR2EDTriggering"), r2.ScratchUCStr), "BC")
|
|
end
|
|
end
|
|
|
|
-------------
|
|
-- PRIVATE --
|
|
-------------
|
|
|
|
-- private : dummy list of triggers -> for local client mode
|
|
local dummyUserTriggerList =
|
|
{
|
|
{ Name="Trigger1", Act=1, Id=1 },
|
|
{ Name="Trigger2", Act=1, Id=2 },
|
|
{ Name="Trigger3", Act=1, Id=3 }
|
|
}
|
|
|
|
|
|
--------------------------------------------------------------------------------------
|
|
-- Get the table describing all the user triggers
|
|
function r2.ui.AnimUserTriggers:getTriggerTable()
|
|
if config.Local == 1 then
|
|
return dummyUserTriggerList
|
|
else
|
|
return r2.AnimGlobals.UserTriggers
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------------
|
|
-- Find a trigger from an act / id pair, returns it definition as a table
|
|
function r2.ui.AnimUserTriggers:findTrigger(act, id)
|
|
local triggerTable = self:getTriggerTable()
|
|
for k, v in pairs(triggerTable) do
|
|
if v.Act == act and v.Id == id then return v end
|
|
end
|
|
end
|