Files
The-Only-Cure/media/lua/client/UI/TOC_HealthPanel.lua
2023-11-06 15:48:06 +01:00

66 lines
2.1 KiB
Lua

local CutLimbHandler = require("UI/TOC_CutLimbHandler")
-- TODO Use this to replace the sprites once a limb is cut
ISHealthBodyPartPanel = ISBodyPartPanel:derive("ISHealthBodyPartPanel")
function ISHealthBodyPartPanel:onMouseUp(x, y)
if self.selectedBp then
local dragging = ISInventoryPane.getActualItems(ISMouseDrag.dragging)
self.parent:dropItemsOnBodyPart(self.selectedBp.bodyPart, dragging)
end
end
function ISHealthBodyPartPanel:prerender()
self.nodeAlpha = 0.0
self.selectedAlpha = 0.1
if self.selectedBp then
for index,item in ipairs(self.parent.listbox.items) do
if item.item.bodyPart == self.selectedBp.bodyPart then
self.nodeAlpha = 1.0
self.selectedAlpha = 0.5
break
end
end
end
ISBodyPartPanel.prerender(self)
end
function ISHealthBodyPartPanel:cbSetSelected(bp)
if bp == nil then
self.parent.listbox.selected = 0
return
end
for index,item in ipairs(self.parent.listbox.items) do
if item.item.bodyPart == bp.bodyPart then
self.parent.listbox.selected = index
break
end
end
end
local og_ISHealthPanel_dropItemsOnBodyPart = ISHealthPanel.dropItemsOnBodyPart
function ISHealthPanel:dropItemsOnBodyPart(bodyPart, items)
og_ISHealthPanel_dropItemsOnBodyPart(self, bodyPart, items)
local cutLimbHandler = CutLimbHandler:new(self, bodyPart)
for _,item in ipairs(items) do
cutLimbHandler:checkItem(item)
end
if cutLimbHandler:dropItems(items) then
return
end
end
local og_ISHealthPanel_doBodyPartContextMenu = ISHealthPanel.doBodyPartContextMenu
function ISHealthPanel:doBodyPartContextMenu(bodyPart, x, y)
og_ISHealthPanel_doBodyPartContextMenu(self, bodyPart, x, y)
local playerNum = self.otherPlayer and self.otherPlayer:getPlayerNum() or self.character:getPlayerNum()
local context = getPlayerContextMenu(playerNum) -- To not recreate it but reuse the one that has been created in the original method
local cutLimbHandler = CutLimbHandler:new(self, bodyPart)
cutLimbHandler:addToMenu(context)
end