khanat-client-data-NeL/data/ryz/ryz_ring/r2_ui_anim_user_triggers.lua

85 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