diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.lua b/code/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.lua new file mode 100644 index 000000000..cf36aa3f6 --- /dev/null +++ b/code/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.lua @@ -0,0 +1,251 @@ + +if getUI("ui:interface:webig_ryzhome_toolbar") == nil then + local f = io.open("user/ryzhome_toolbar.xml", "r") + local xml = f:read("*a") + parseInterfaceFromString(xml) +end + +if RyzhomeBar == nil then + RyzhomeBar = { + id = "ui:interface:webig_ryzhome_toolbar", + saveuri = "http://app.ryzom.com/app_ryzhome/index.php?action=toolbar_save", + selectedPage = 1 + } +end + +function RyzhomeBar:close() + getUI("ui:interface:webig_ryzhome_toolbar").active=false + self:saveConfig() + +end + +function RyzhomeBar:addItems() + local url = "http://app.ryzom.com/app_arcc/index.php?action=player_ryzhome_LuaListItems&command=add" + getUI("ui:interface:web_transactions:content:html"):browse(url) +end + +function RyzhomeBar:moveItems() + local url = "http://app.ryzom.com/app_arcc/index.php?action=player_ryzhome_LuaListItems&command=move" + getUI("ui:interface:web_transactions:content:html"):browse(url) +end + +function RyzhomeBar:removeItems() + local url = "http://app.ryzom.com/app_arcc/index.php?action=player_ryzhome_LuaListItems&command=remove" + getUI("ui:interface:web_transactions:content:html"):browse(url) +end + +function RyzhomeBar:inviteFriend() + local url = "http://app.ryzom.com/app_arcc/index.php?action=player_ryzhome_InviteFriend" + getUI("ui:interface:web_transactions:content:html"):browse(url) +end + +function RyzhomeBar:listFriends() + getUI("ui:interface:web_transactions:content:html"):browse(RyzhomeBar.listFriendsUrl) + getUI("ui:interface:web_transactions:header_opened:browse_undo").active=false + getUI("ui:interface:web_transactions:header_opened:browse_redo").active=false + getUI("ui:interface:web_transactions:header_opened:browse_refresh").active=false + getUI("ui:interface:web_transactions:header_opened:browse_home").active=false + local wt = getUI("ui:interface:web_transactions") + wt.w=316 + wt.h=420 + wt.pop_min_w=316 + wt.pop_max_w=316 + wt.pop_min_h=420 + wt.pop_max_h=420 + + local framewin = getUI("ui:interface:webig_ryzhome_list_item") + if framewin ~= nil then + framewin.active=false + wt.x = framewin.x + wt.y = framewin.y + end + + getUI("ui:interface:web_transactions").active=true + + setOnDraw(getUI("ui:interface:web_transactions"), "RyzhomeBar:autocloseWebTransactions()") +end + +function RyzhomeBar:autocloseWebTransactions() + local current_url = getUI("ui:interface:web_transactions:content:html").url + if (current_url ~= RyzhomeBar.listFriendsUrl and current_url ~= inviteFriendsUrl) then + local framewin = getUI("ui:interface:webig_ryzhome_list_item") + framewin.x = getUI("ui:interface:web_transactions").x + framewin.y = getUI("ui:interface:web_transactions").y + getUI("ui:interface:web_transactions").active=false + setOnDraw(getUI("ui:interface:web_transactions"), "") + end +end + + +function RyzhomeBar:serialize() + local ui = getUI(self.id) + local url = "&posx=" .. tostring(ui.x) .. "&posy=" .. tostring(ui.y) + return url +end + +function RyzhomeBar:updateNbrItems(offset) + RyzhomeBar.nbrItems = RyzhomeBar.nbrItems + offset + if RyzhomeBar.nbrItems == 0 then + getUI("ui:interface:webig_ryzhome_toolbar:content:new_items_quantity").hardtext="" + else + getUI("ui:interface:webig_ryzhome_toolbar:content:new_items_quantity").hardtext=tostring(RyzhomeBar.nbrItems) + end +end + +function RyzhomeBar:saveConfig() + local url = self.saveuri .. self:serialize() + getUI("ui:interface:web_transactions:content:html"):browse(url) +end + +function RyzhomeBar:movePage(offset) + RyzhomeBar.selectedPage = RyzhomeBar.selectedPage + offset + if RyzhomeBar.selectedPage <= 0 then + RyzhomeBar.selectedPage = 1 + elseif RyzhomeBar.selectedPage > RyzhomeBar.nbrPages then + RyzhomeBar.selectedPage = RyzhomeBar.nbrPages + end + getUI("ui:interface:webig_ryzhome_list_item:header_opened:page").hardtext=tostring(RyzhomeBar.selectedPage).." / "..tostring(RyzhomeBar.nbrPages) + RyzhomeBar:setupItems() +end + +function RyzhomeBar:listItems() + RyzhomeBar.recently_removed_item = false + + local framewin = getUI("ui:interface:webig_ryzhome_list_item") + framewin.opened=true + framewin.active=true + if framewin.x == 0 and framewin.y == 0 then + local ui = getUI("ui:interface") + framewin.x = (ui.w - framewin.w) / 2 + framewin.y = (ui.h + framewin.h) / 2 + end + + if RyzhomeBar.Items == nil then + RyzhomeBar.Items = {} + end +end + +function RyzhomeBar:useItem(id) + id = tostring(RyzhomeBar.Items[RyzhomeBar.selectedPage][id][1]) + if RyzhomeBar.itemCommand == "add" then + RyzhomeBar:addItem(id) + elseif RyzhomeBar.itemCommand == "remove" then + RyzhomeBar:removeItem(id) + elseif RyzhomeBar.itemCommand == "move" then + RyzhomeBar:moveItem(id) + end +end + +function RyzhomeBar:addItem(id) + local url = "http://app.ryzom.com/app_arcc/index.php?action=player_ryzhome_Place&command=add&id="..id + getUI("ui:interface:web_transactions:content:html"):browse(url) +end + +function RyzhomeBar:removeItem(id) + RyzhomeBar.recently_removed_item = true + RyzhomeBar:spawnItems() + local v = RyzhomeBar.spawnedItems[id] + runAH(nil,"add_shape", "shape=sp_mort.ps|x="..v[2].."|y="..v[3].."|z="..v[4].."|angle="..v[5].."|scale="..tostring(tonumber(v[6])*4)..v[7]..v[8]..v[9]) + local url = "http://app.ryzom.com/app_arcc/index.php?action=player_ryzhome_Remove&id="..id + getUI("ui:interface:web_transactions:content:html"):browse(url) +end + +function RyzhomeBar:moveItem(id) + local url = "http://app.ryzom.com/app_arcc/index.php?action=player_ryzhome_Place&command=move&id="..id + getUI("ui:interface:web_transactions:content:html"):browse(url) +end + +function RyzhomeBar:highlightItem(id) + if RyzhomeBar.itemCommand == "add" then + return + end + if RyzhomeBar.recently_removed_item then + RyzhomeBar.recently_removed_item = false + else + RyzhomeBar:spawnItems() + local v = RyzhomeBar.spawnedItems[tostring(RyzhomeBar.Items[RyzhomeBar.selectedPage][id][1])] + if v then + runAH(nil, "add_shape", "shape=ma_acc_ascenseur.ps|x="..v[2].."|y="..v[3].."|z="..v[4].."|angle="..v[5].."|scale="..tostring(tonumber(v[6])*2)..v[7]..v[8]..v[9]) + end + end +end + +function RyzhomeBar:callFriendUrl(action, target) + local url = "http://app.ryzom.com/app_arcc/index.php?action=player_ryzhome_"..action.."&target="..target + getUI("ui:interface:web_transactions:content:html"):browse(url) +end + +function RyzhomeBar:spawnItems() + runAH(nil, "remove_shapes", "") + for k,v in pairs(RyzhomeBar.spawnedItems) do + runAH(nil, "add_shape", "shape="..v[1].."|x="..v[2].."|y="..v[3].."|z="..v[4].."|angle="..v[5].."|scale="..v[6]..v[7]..v[8]..v[9]) + end + +end + +function RyzhomeBar:setupItems() + for k = 1, 8 do + getUI("ui:interface:webig_ryzhome_list_item:header_opened"):find(":but"..tostring(k)).active=false + getUI("ui:interface:webig_ryzhome_list_item:header_opened"):find(":icon"..tostring(k)).active=false + getUI("ui:interface:webig_ryzhome_list_item:header_opened"):find(":text"..tostring(k)).uc_hardtext="" + getUI("ui:interface:webig_ryzhome_list_item:header_opened"):find(":info"..tostring(k)).uc_hardtext="" + end + for k,v in pairs(RyzhomeBar.Items[RyzhomeBar.selectedPage]) do + if k ~= nil then + getUI("ui:interface:webig_ryzhome_list_item:header_opened"):find(":icon"..tostring(k)).active=true + getUI("ui:interface:webig_ryzhome_list_item:header_opened"):find(":but"..tostring(k)).active=true + local text = ucstring() + text:fromUtf8(v[3]) + getUI("ui:interface:webig_ryzhome_list_item:header_opened"):find(":text"..tostring(k)).uc_hardtext=text + text:fromUtf8(v[4]) + getUI("ui:interface:webig_ryzhome_list_item:header_opened"):find(":info"..tostring(k)).uc_hardtext=text + end + end +end + +if RyzhomePlace == nil then + RyzhomePlace = { + saveuri = "", + } +end + +function RyzhomePlace:move(x, y, z) + pos_x=pos_x+x + pos_y=pos_y+y + pos_z=pos_z+z + RyzhomePlace:update() +end + +function RyzhomePlace:rot(a) + pos_a=pos_a+a + RyzhomePlace:update() +end + +function RyzhomePlace:reset() + --Ryzhome:addShapes() + pos_x, pos_y, pos_z = getPlayerPos() + pos_a = (3.14*getUI("ui:interface:compass:arrow3d:arrow").rotz)/18 + RyzhomePlace:addShape() + RyzhomeBar:spawnItems() +end + +function RyzhomePlace:update() + RyzhomePlace:addShapes() + RyzhomePlace:addShape() + RyzhomeBar:spawnItems() +end + +function RyzhomePlace:apply() + getUI("ui:interface:web_transactions:content:html"):browse(RyzhomePlace.saveuri.."&pos_x="..pos_x.."&pos_y="..pos_y.."&pos_z="..pos_z.."&pos_a="..pos_a) +end + +function RyzhomePlace:close() + --runAH(nil, "remove_shapes", "") + getUI("ui:interface:webig_ryzhome_place_item").active=false +end + +function debug(text) + local uc = ucstring() + uc:fromUtf8(tostring(text)) + displaySystemInfo(ucstring(uc), "sys") +end \ No newline at end of file diff --git a/code/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.xml b/code/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.xml new file mode 100644 index 000000000..b6a8dc09c --- /dev/null +++ b/code/ryzom/client/data/gamedev/interfaces_v3/ryzhome_toolbar.xml @@ -0,0 +1,443 @@ + +webig_ryzhome_list_item + +