1
-----------------------------------------
3
--A widget for giving something from the inventory to someone. Right now just shows a list of stuff that can be given. This will need to be extended to something much nicer. Perhaps even something which interacts with other inventory widgets.
5
-----------------------------------------
8
Give.targetEntity = nil
10
Give.widget = guiManager:createWidget()
12
function Give.buildWidget()
14
Give.widget:loadMainSheet("Give.layout", "Give/")
18
connect(Give.connectors, emberOgre.EventCreatedAvatarEntity, "Give.createdAvatarEmberEntity")
20
giveButton = Give.widget:getWindow("Give")
21
giveButton:subscribeEvent("Clicked", "Give.Give_Click")
23
cancelButton = Give.widget:getWindow("Cancel")
24
cancelButton:subscribeEvent("Clicked", "Give.Cancel_Click")
26
connect(Give.connectors, guiManager.EventEntityAction, "Give.handleAction")
28
local widget = Give.widget:getWindow("ListBox")
29
Give.listbox = CEGUI.toListbox(widget)
32
function Give.createdAvatarEmberEntity(avatarEntity)
33
connect(Give.connectors, avatarEntity:getAvatar().EventAddedEntityToInventory, "Give.addedEntity")
34
connect(Give.connectors, avatarEntity:getAvatar().EventRemovedEntityFromInventory, "Give.removedEntity")
37
function Give.addedEntity(entity)
38
local name = entity:getType():getName() .. " (" .. entity:getId() .. " : " .. entity:getName() .. ")"
39
local item = EmberOgre.Gui.ColouredListItem:new(name, entity:getId(), entity)
40
Give.listboxMap[entity] = item
41
--we need to cast it down
42
Give.listbox:addItem(item)
45
function Give.removedEntity(entity)
46
local item = Give.listboxMap[entity];
48
Give.listbox:removeItem(tolua.cast(item, "CEGUI::ListboxItem"))
49
Give.listboxMap[entity] = nil
53
function Give.Give_Click(args)
54
local item = Give.listbox:getFirstSelectedItem()
55
while (item ~= nil) do
56
local entityId = item:getID()
57
local entity = emberOgre:getEmberEntity(entityId);
58
if (entity ~= nil) then
59
emberServices:getServerService():place(entity, Give.targetEntity)
61
item = Give.listbox:getNextSelected(item)
65
function Give.Cancel_Click(args)
69
function Give.handleAction(action, entity)
71
if action == "give" then
76
function Give.show(entity)
77
Give.targetEntity = entity
79
local textWidget = Give.widget:getWindow("Text")
80
local text = "Give to " .. entity:getName() .. " ( a " .. entity:getType():getName() .. ")"
81
textWidget:setText(text)
b'\\ No newline at end of file'