mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-25 00:26:17 +00:00
190 lines
6.8 KiB
Lua
190 lines
6.8 KiB
Lua
|
|
-- create the webig namespace without reseting if already created in an other file.
|
|
if (webig==nil) then
|
|
webig= {}
|
|
end
|
|
|
|
if (webig.sheetLists==nil) then
|
|
webig.sheetLists = {}
|
|
end
|
|
|
|
|
|
function webig:addSheet(dst, sheet, quality, quantity, worned, user_color, rm_class_type, rm_faber_stat_type)
|
|
if quality == nil then quality=0 end
|
|
if quantity == nil then quantity=0 end
|
|
if worned == nil then worned=0 end
|
|
if user_color == nil then user_color=0 end
|
|
if rm_class_type == nil then rm_class_type=0 end
|
|
if rm_faber_stat_type == nil then rm_faber_stat_type=0 end
|
|
addDbProp(dst..":SHEET", sheet)
|
|
addDbProp(dst..":WORNED", worned)
|
|
addDbProp(dst..":QUALITY", quality)
|
|
addDbProp(dst..":QUANTITY", quantity)
|
|
addDbProp(dst..":USER_COLOR", user_color)
|
|
addDbProp(dst..":RM_CLASS_TYPE", rm_class_type)
|
|
addDbProp(dst..":RM_FABER_STAT_TYPE", rm_faber_stat_type)
|
|
end
|
|
|
|
function webig:cleanSheets(db)
|
|
delDbProp(db)
|
|
end
|
|
|
|
function webig:addSheetList(name, ctrl, db, size)
|
|
webig.sheetLists[name] = {}
|
|
webig.sheetLists[name].ctrl = ctrl
|
|
webig.sheetLists[name].db = db
|
|
webig.sheetLists[name].selection = ""
|
|
webig.sheetLists[name].size = size
|
|
end
|
|
|
|
function webig:copyItems(src, dst)
|
|
addDbProp(dst..":SHEET", getDbProp(src..":SHEET"))
|
|
addDbProp(dst..":WORNED", getDbProp(src..":WORNED"))
|
|
addDbProp(dst..":QUALITY", getDbProp(src..":QUALITY"))
|
|
addDbProp(dst..":QUANTITY", getDbProp(src..":QUANTITY"))
|
|
addDbProp(dst..":USER_COLOR", getDbProp(src..":USER_COLOR"))
|
|
addDbProp(dst..":RM_CLASS_TYPE", getDbProp(src..":RM_CLASS_TYPE"))
|
|
addDbProp(dst..":RM_FABER_STAT_TYPE", getDbProp(src..":RM_FABER_STAT_TYPE"))
|
|
end
|
|
|
|
function webig:swapItems(src, dst)
|
|
local sheet = getDbProp(dst..":SHEET")
|
|
local worned = getDbProp(dst..":WORNED")
|
|
local quality = getDbProp(dst..":QUALITY")
|
|
local quantity = getDbProp(dst..":QUANTITY")
|
|
local user_color = getDbProp(dst..":USER_COLOR")
|
|
local rm_class_type = getDbProp(dst..":RM_CLASS_TYPE")
|
|
local rm_faber_stat_type = getDbProp(dst..":RM_FABER_STAT_TYPE")
|
|
|
|
addDbProp(dst..":SHEET", getDbProp(src..":SHEET"))
|
|
addDbProp(dst..":WORNED", getDbProp(src..":WORNED"))
|
|
addDbProp(dst..":QUALITY", getDbProp(src..":QUALITY"))
|
|
addDbProp(dst..":QUANTITY", getDbProp(src..":QUANTITY"))
|
|
addDbProp(dst..":USER_COLOR", getDbProp(src..":USER_COLOR"))
|
|
addDbProp(dst..":RM_CLASS_TYPE", getDbProp(src..":RM_CLASS_TYPE"))
|
|
addDbProp(dst..":RM_FABER_STAT_TYPE", getDbProp(src..":RM_FABER_STAT_TYPE"))
|
|
|
|
addDbProp(src..":SHEET", sheet)
|
|
addDbProp(src..":WORNED", worned)
|
|
addDbProp(src..":QUALITY", quality)
|
|
addDbProp(src..":QUANTITY", quantity)
|
|
addDbProp(src..":USER_COLOR", user_color)
|
|
addDbProp(src..":RM_CLASS_TYPE", rm_class_type)
|
|
addDbProp(src..":RM_FABER_STAT_TYPE", rm_faber_stat_type)
|
|
end
|
|
|
|
function webig:deleteItem(src)
|
|
addDbProp(src..":SHEET", 0)
|
|
addDbProp(src..":WORNED", 0)
|
|
addDbProp(src..":QUALITY", 0)
|
|
addDbProp(src..":QUANTITY", 0)
|
|
addDbProp(src..":USER_COLOR", 0)
|
|
addDbProp(src..":RM_CLASS_TYPE", 0)
|
|
addDbProp(src..":RM_FABER_STAT_TYPE", 0)
|
|
end
|
|
|
|
function webig:paramDbSheetSlot(sheet_list, ctrl)
|
|
local ctrlSheet = webig.sheetLists[sheet_list].ctrl:find("list:"..ctrl)
|
|
if ctrlSheet ~= nil then
|
|
ctrlSheet.left_click="lua"
|
|
ctrlSheet.left_click_params="webig:addOrRemoveDbSheet(\'"..sheet_list.."\', \'"..ctrl.."\')"
|
|
ctrlSheet.dragable=true
|
|
ctrlSheet.can_drop=true
|
|
ctrlSheet.on_drop="lua"
|
|
ctrlSheet.on_drop_params="webig:dropDbSheet(\'"..sheet_list.."\', \'"..ctrl.."\', \'%src\')"
|
|
ctrlSheet.on_can_drop="lua"
|
|
ctrlSheet.on_can_drop_params="webig:canDropDbSheet(\'"..sheet_list.."\', \'"..ctrl.."\', \'%src\')"
|
|
end
|
|
end
|
|
|
|
function webig:paramDbSheetSelect(sheet_list, ctrl, lua_function)
|
|
local ctrlSheet = webig.sheetLists[sheet_list].ctrl:find("list:"..ctrl)
|
|
if ctrlSheet ~= nil then
|
|
ctrlSheet.left_click="lua"
|
|
ctrlSheet.left_click_params=lua_function.."(\'"..sheet_list.."\', \'"..ctrl.."\')"
|
|
ctrlSheet.dragable=false
|
|
ctrlSheet.can_drop=false
|
|
end
|
|
end
|
|
|
|
function webig:canDropDbSheet(sheet_list, ctrl, src)
|
|
webig.sheetLists[sheet_list].ctrl:find("list:"..ctrl).can_drop=true
|
|
end
|
|
|
|
function webig:dropDbSheet(sheet_list, ctrl, src)
|
|
local db = webig.sheetLists[sheet_list].db
|
|
local sl_id = webig.sheetLists[sheet_list].ctrl.id
|
|
if (string.sub(src, 1, string.len(sl_id)) == sl_id) then -- copy from same list sheet
|
|
local pos=nil
|
|
for i=1, string.len(src) do
|
|
if string.sub(src, i, i) == ":" then
|
|
pos = i+1
|
|
end
|
|
end
|
|
id = string.sub(src, pos, string.len(src))
|
|
webig:swapItems(db..":"..id, db..":"..ctrl)
|
|
else
|
|
slot = getUI(src)
|
|
if slot ~= nil then
|
|
id = findReplaceAll(src, slot.parent.id..":", "")
|
|
webig:copyItems("LOCAL:INVENTORY:BAG:"..id, db..":"..ctrl)
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
function webig:addOrRemoveDbSheet(sheet_list, ctrl)
|
|
local db = webig.sheetLists[sheet_list].db
|
|
if getDbProp(db..":"..ctrl..":SHEET") == 0 then -- Add item
|
|
webig:AddDbSheet(sheet_list, ctrl)
|
|
else
|
|
webig:removeDbSheetQuantity(sheet_list, ctrl)
|
|
end
|
|
end
|
|
|
|
function webig:AddDbSheet(sheet_list, ctrl)
|
|
runAH(nil, "enter_modal", "group=ui:interface:webig_html_modal")
|
|
local whm = getUI("ui:interface:webig_html_modal")
|
|
whm.child_resize_h=false
|
|
whm.h = 44*webig.sheetLists[sheet_list].size
|
|
whm.w = 224
|
|
whm = getUI("ui:interface:webig_html_modal:html")
|
|
if whm ~= nil then
|
|
whm:refresh() -- url need be setted before
|
|
end
|
|
webig.sheetLists[sheet_list].selection = ctrl
|
|
end
|
|
|
|
function webig:removeDbSheetQuantity(sheet_list, ctrl)
|
|
local db = webig.sheetLists[sheet_list].db
|
|
webig:copyItems(db..":"..ctrl, "UI:DROP_DESTROY_ITEM:ITEM")
|
|
runAH(nil, "set_keyboard_focus", "select_all=true|target=ui:interface:webig_drop_destroy_item_quantity_modal:edit:eb")
|
|
getUI("ui:interface:webig_drop_destroy_item_quantity_modal:ok_cancel:ok").onclick_l="lua"
|
|
getUI("ui:interface:webig_drop_destroy_item_quantity_modal:ok_cancel:ok").params_l="webig:doRemoveDbSheetQuantity(\'"..sheet_list.."\', \'"..ctrl.."\')"
|
|
getUI("ui:interface:webig_drop_destroy_item_quantity_modal:edit:eb").on_enter="lua"
|
|
getUI("ui:interface:webig_drop_destroy_item_quantity_modal:edit:eb").on_enter_params="webig:doRemoveDbSheetQuantity(\'"..sheet_list.."\', \'"..ctrl.."\')"
|
|
runAH(nil, "enter_modal", "group=ui:interface:webig_drop_destroy_item_quantity_modal")
|
|
setDbProp("UI:DROP_DESTROY_ITEM:ITEM:QUANTITY", getDbProp(db..":"..ctrl..":QUANTITY"))
|
|
getUI("ui:interface:webig_drop_destroy_item_quantity_modal:edit:eb").input_string=tostring(getDbProp(db..":"..ctrl..":QUANTITY"))
|
|
end
|
|
|
|
function webig:doRemoveDbSheetQuantity(sheet_list, ctrl)
|
|
local db = webig.sheetLists[sheet_list].db
|
|
runAH(nil, "leave_modal", "group=ui:interface:webig_drop_destroy_item_quantity_modal")
|
|
local new_quantity = tonumber(getUI("ui:interface:webig_drop_destroy_item_quantity_modal:edit:eb").input_string)
|
|
local current_quantity = getDbProp(db..":"..ctrl..":QUANTITY")
|
|
if new_quantity >= current_quantity then
|
|
webig:deleteItem(db..":"..ctrl)
|
|
else
|
|
addDbProp(db..":"..ctrl..":QUANTITY", new_quantity)
|
|
end
|
|
end
|
|
|
|
--assert(nil, "RELOADABLE SCRIPT")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|