Fixed inventory display bugs

- No tooltips for equipped items
- Item tooltips are rendered before UI Frames
This commit is contained in:
sz33psz 2021-01-23 13:50:04 +01:00
parent e982430c55
commit ac572e3bf5
1 changed files with 35 additions and 5 deletions

View File

@ -251,7 +251,7 @@ func (g *Inventory) Render(target d2interface.Surface) {
g.renderFrame(target)
g.grid.Render(target)
g.renderItemHover(target)
g.showItemDescriptionTooltip()
}
func (g *Inventory) renderFrame(target d2interface.Surface) {
@ -287,9 +287,27 @@ func (g *Inventory) renderFrame(target d2interface.Surface) {
}
}
func (g *Inventory) renderItemHover(target d2interface.Surface) {
func (g *Inventory) showItemDescriptionTooltip() {
hovering := false
for _, slot := range g.grid.equipmentSlots {
mx, my := g.lastMouseX, g.lastMouseY
hovering = hovering || ((mx > slot.x) && (mx < slot.x+slot.width) && (my < slot.y) && (my > slot.y-slot.height))
if hovering {
if !g.hovering {
g.hoverX, g.hoverY = mx, my
}
g.showEquippedItemDescriptionTooltip(&slot)
break
}
}
g.hovering = hovering
if hovering {
return
}
for idx := range g.grid.items {
item := g.grid.items[idx]
ix, iy := g.grid.SlotToScreen(item.InventoryGridSlot())
@ -304,22 +322,34 @@ func (g *Inventory) renderItemHover(target d2interface.Surface) {
g.hoverX, g.hoverY = mx, my
}
g.renderItemDescription(target, item)
g.showGridItemDescriptionTooltip(item)
break
}
}
g.hovering = hovering
if !g.hovering {
g.itemTooltip.SetVisible(false)
}
}
func (g *Inventory) renderItemDescription(target d2interface.Surface, i InventoryItem) {
func (g *Inventory) showGridItemDescriptionTooltip(i InventoryItem) {
if !g.moveGoldPanel.IsOpen() {
lines := i.GetItemDescription()
g.itemTooltip.SetTextLines(lines)
_, y := g.grid.SlotToScreen(i.InventoryGridSlot())
g.itemTooltip.SetPosition(g.hoverX, y)
g.itemTooltip.Render(target)
g.itemTooltip.SetVisible(true)
}
}
func (g *Inventory) showEquippedItemDescriptionTooltip(slot *EquipmentSlot) {
if !g.moveGoldPanel.IsOpen() {
lines := slot.item.GetItemDescription()
g.itemTooltip.SetTextLines(lines)
g.itemTooltip.SetPosition(g.hoverX, slot.y)
g.itemTooltip.SetVisible(true)
}
}