128 lines
4.1 KiB
Lua
128 lines
4.1 KiB
Lua
-- Handlers for dm gift interface
|
|
|
|
|
|
r2.DMGift =
|
|
{
|
|
ChosenSlotIndex = 0, -- index of the slot on which the user clicked to choose a plot item
|
|
}
|
|
|
|
|
|
|
|
local noItemModalUIPath = "ui:interface:r2ed_dm_gift_no_plot_items" -- item browser with msg 'no available items'
|
|
local chooseItemModalUIPath = "ui:interface:r2ed_dm_gift_choose_plot_item" -- item browser
|
|
local chooseItemQuantityModalUIPath = "ui:interface:r2ed_choose_plot_item_quantity" -- quantity modal
|
|
local dmGiftUIPath = "ui:interface:r2ed_dm_gift" -- dm gift window
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- The DM has clicked on a slot, prompt the interface to choose a plot item (is some are availables)
|
|
function r2.DMGift:onSlotClicked(index)
|
|
-- if not plot item are avilable, prompt a special interface to tell how to add them
|
|
if getDbProp("LOCAL:R2:PLOT_ITEMS:0:SHEET") == 0 then
|
|
enableModalWindow(getUICaller(), noItemModalUIPath)
|
|
return
|
|
end
|
|
enableModalWindow(getUICaller(), chooseItemModalUIPath)
|
|
self.ChosenSlotIndex = index
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- an item has been chosen in the plot item list
|
|
function r2.DMGift:setDMGiftItem(slot, sheetId, quantity)
|
|
setDbProp("LOCAL:R2:DM_GIFT:" .. tostring(slot) .. ":SHEET", sheetId)
|
|
setDbProp("LOCAL:R2:DM_GIFT:" .. tostring(slot) .. ":QUANTITY", quantity)
|
|
end
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- an item has been chosen in the plot item list
|
|
function r2.DMGift:onItemChosen(sheetName)
|
|
if sheetName ~= "UI:EMPTY" then
|
|
local sheetId = getDbProp(sheetName..":SHEET")
|
|
-- prompt the quantity dialog unless 'ctrl' is down, in which case
|
|
-- a single item is added
|
|
if not isCtrlKeyDown() then
|
|
setDbProp("LOCAL:R2:CURR_PLOT_ITEM:SHEET", sheetId)
|
|
enableModalWindow(getUICaller(), chooseItemQuantityModalUIPath)
|
|
local editBox = getUI(chooseItemQuantityModalUIPath):find("eb")
|
|
editBox.input_string = "1"
|
|
setCaptureKeyboard(editBox)
|
|
editBox:setSelectionAll()
|
|
else
|
|
self:setDMGiftItem(self.ChosenSlotIndex, sheetId, 1)
|
|
end
|
|
else
|
|
-- directly send message to clear the slot
|
|
self:setDMGiftItem(self.ChosenSlotIndex, 0, 0)
|
|
end
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- an item has been chosen in the plot item list
|
|
function r2.DMGift:onValidateQuantity()
|
|
disableModalWindow()
|
|
local sheetId = getDbProp("LOCAL:R2:CURR_PLOT_ITEM:SHEET")
|
|
local editBox = getUI(chooseItemQuantityModalUIPath):find("eb")
|
|
local quantity = tonumber(editBox.input_string)
|
|
if quantity == 0 then sheetId = 0 end
|
|
if quantity > 99 then quantity = 99 end
|
|
self:setDMGiftItem(self.ChosenSlotIndex, sheetId, quantity)
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- the server has required that the dm gift window be shown
|
|
function r2.DMGift:cancelModals()
|
|
if getUI(noItemModalUIPath).active or
|
|
getUI(chooseItemModalUIPath).active or
|
|
getUI(chooseItemQuantityModalUIPath).active
|
|
then
|
|
disableModalWindow()
|
|
end
|
|
end
|
|
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- the server has required that the dm gift window be shown
|
|
function r2.DMGift:begin()
|
|
local wnd = getUI(dmGiftUIPath)
|
|
if wnd.active then
|
|
-- just hide the window
|
|
self:cancel()
|
|
return
|
|
end
|
|
-- show the window
|
|
self:cancelModals()
|
|
wnd.active = true
|
|
wnd:center()
|
|
wnd:blink(1)
|
|
-- clear all slots
|
|
for k = 0, 7 do
|
|
self:setDMGiftItem(k, 0, 0)
|
|
end
|
|
runAH(nil, "r2ed_dm_gift_begin", "")
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- the server has required that the dm gift window be stopped
|
|
function r2.DMGift:validate()
|
|
-- hide the windows
|
|
self:cancelModals()
|
|
getUI(dmGiftUIPath).active = false
|
|
-- send server msg
|
|
runAH(nil, "r2ed_dm_gift_validate", "")
|
|
end
|
|
|
|
--------------------------------------------------------------------------------
|
|
-- force to cancel the current dm gift
|
|
function r2.DMGift:cancel()
|
|
-- hide the window
|
|
self:cancelModals()
|
|
getUI(dmGiftUIPath).active = false
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|