|
@@ -18,7 +18,7 @@ function Containers.getFreeContainerId()
|
18
|
18
|
end
|
19
|
19
|
|
20
|
20
|
-- hooked events
|
21
|
|
-function Containers.onContainerOpen(containerId, itemId, name, capacity, hasParent)
|
|
21
|
+function Containers.onContainerOpen(containerId, itemId, name, capacity, hasParent, items)
|
22
|
22
|
local container = m_containers[containerId]
|
23
|
23
|
if container then
|
24
|
24
|
Game.gameRightPanel:removeChild(container)
|
|
@@ -35,22 +35,26 @@ function Containers.onContainerOpen(containerId, itemId, name, capacity, hasPare
|
35
|
35
|
-- parent button
|
36
|
36
|
end
|
37
|
37
|
|
38
|
|
- container.itemCount = 0
|
|
38
|
+ container.itemCount = #items
|
39
|
39
|
container.capacity = capacity
|
40
|
40
|
|
41
|
41
|
for i=1,capacity do
|
42
|
|
- local item = UIItem.create()
|
43
|
|
- item:setStyle('Item')
|
44
|
|
- container:addChild(item)
|
45
|
|
- item.position = {x=65535, y=containerId+64, z=i-1}
|
|
42
|
+ local itemWidget = UIItem.create()
|
|
43
|
+ itemWidget:setStyle('Item')
|
|
44
|
+ container:addChild(itemWidget)
|
|
45
|
+ itemWidget.position = {x=65535, y=containerId+64, z=i-1}
|
|
46
|
+
|
|
47
|
+ if i <= #items then
|
|
48
|
+ local item = items[i]
|
|
49
|
+ item:setPos(itemWidget.position)
|
|
50
|
+ itemWidget:setItem(item)
|
|
51
|
+ end
|
46
|
52
|
end
|
47
|
53
|
|
48
|
54
|
m_containers[containerId] = container
|
49
|
|
- print("opencid ".. containerId)
|
50
|
55
|
end
|
51
|
56
|
|
52
|
57
|
function Containers.onContainerClose(containerId)
|
53
|
|
- print("closecid ".. containerId)
|
54
|
58
|
local container = m_containers[containerId]
|
55
|
59
|
if container then
|
56
|
60
|
Game.gameRightPanel:removeChild(container)
|
|
@@ -59,23 +63,75 @@ function Containers.onContainerClose(containerId)
|
59
|
63
|
end
|
60
|
64
|
|
61
|
65
|
function Containers.onContainerAddItem(containerId, item)
|
62
|
|
- print("addcid ".. containerId)
|
63
|
66
|
local container = m_containers[containerId]
|
64
|
67
|
if not container or not item or container.itemCount >= container.capacity then return end
|
65
|
68
|
|
66
|
|
- -- maybe this has to be moved to client internal's files
|
67
|
|
- local pos = item:getPos()
|
68
|
|
- pos.z = container.itemCount
|
69
|
|
- item:setPos(pos)
|
|
69
|
+ local i = container.itemCount
|
|
70
|
+ while i >= 1 do
|
|
71
|
+ local itemWidget = container:getChildByIndex(i)
|
|
72
|
+ if not itemWidget then return end
|
|
73
|
+
|
|
74
|
+ local nextItemWidget = container:getChildByIndex(i+1)
|
|
75
|
+ if not nextItemWidget then return end
|
|
76
|
+
|
|
77
|
+ local swapItem = itemWidget:getItem()
|
|
78
|
+ if swapItem then
|
|
79
|
+ swapItem:setPos(nextItemWidget.position)
|
|
80
|
+ nextItemWidget:setItem(swapItem)
|
|
81
|
+ end
|
|
82
|
+
|
|
83
|
+ i = i - 1
|
|
84
|
+ end
|
70
|
85
|
|
71
|
|
- local itemWidget = container:getChildByIndex(container.itemCount + 1)
|
|
86
|
+ local itemWidget = container:getChildByIndex(1)
|
|
87
|
+ if not itemWidget then return end
|
|
88
|
+ item:setPos(itemWidget.position)
|
72
|
89
|
itemWidget:setItem(item)
|
|
90
|
+
|
73
|
91
|
container.itemCount = container.itemCount + 1
|
|
92
|
+end
|
74
|
93
|
|
|
94
|
+function Containers.onContainerUpdateItem(containerId, slot, item)
|
|
95
|
+ local container = m_containers[containerId]
|
|
96
|
+ if not container then return end
|
|
97
|
+
|
|
98
|
+ local itemWidget = container:getChildByIndex(slot + 1)
|
|
99
|
+ if not itemWidget then return end
|
|
100
|
+ itemWidget:setItem(item)
|
|
101
|
+end
|
|
102
|
+
|
|
103
|
+function Containers.onContainerRemoveItem(containerId, slot)
|
|
104
|
+ local container = m_containers[containerId]
|
|
105
|
+ if not container then return end
|
|
106
|
+
|
|
107
|
+ local itemWidget = container:getChildByIndex(slot+1)
|
|
108
|
+ if not itemWidget then return end
|
|
109
|
+ itemWidget:setItem(nil)
|
|
110
|
+
|
|
111
|
+ for i=slot,container.itemCount-2 do
|
|
112
|
+ local itemWidget = container:getChildByIndex(i+1)
|
|
113
|
+ if not itemWidget then return end
|
|
114
|
+
|
|
115
|
+ local nextItemWidget = container:getChildByIndex(i+2)
|
|
116
|
+ if not nextItemWidget then return end
|
|
117
|
+
|
|
118
|
+ local item = nextItemWidget:getItem()
|
|
119
|
+ local pos = item:getPos()
|
|
120
|
+ pos.z = pos.z - 1
|
|
121
|
+ item:setPos(pos)
|
|
122
|
+
|
|
123
|
+ itemWidget:setItem(item)
|
|
124
|
+ nextItemWidget:setItem(nil)
|
|
125
|
+ end
|
|
126
|
+
|
|
127
|
+ container.itemCount = container.itemCount - 1
|
75
|
128
|
end
|
76
|
129
|
|
77
|
130
|
connect(Game, { onLogin = Containers.clean,
|
78
|
131
|
onLogout = Containers.clean,
|
79
|
132
|
onContainerOpen = Containers.onContainerOpen,
|
80
|
133
|
onContainerClose = Containers.onContainerClose,
|
81
|
|
- onContainerAddItem = Containers.onContainerAddItem })
|
|
134
|
+ onContainerAddItem = Containers.onContainerAddItem,
|
|
135
|
+ onContainerUpdateItem = Containers.onContainerUpdateItem,
|
|
136
|
+ onContainerRemoveItem = Containers.onContainerRemoveItem })
|
|
137
|
+
|