OpenDiablo2/d2core/d2map/d2mapentity/item.go

66 lines
1.4 KiB
Go

package d2mapentity
import (
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface"
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2math/d2vector"
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2item/diablo2item"
)
// static check that item implements map entity interface
var _ d2interface.MapEntity = &Item{}
const (
errInvalidItemCodes = "invalid item codes supplied"
)
// Item is a map entity for an item
type Item struct {
*AnimatedEntity
Item *diablo2item.Item
}
// ID returns the item uuid
func (i *Item) ID() string {
return i.AnimatedEntity.uuid
}
// GetPosition returns the item position vector
func (i *Item) GetPosition() d2vector.Position {
return i.AnimatedEntity.Position
}
// GetVelocity returns the item velocity vector
func (i *Item) GetVelocity() d2vector.Vector {
return i.AnimatedEntity.velocity
}
// Selectable always returns true for items
func (i *Item) Selectable() bool {
return true
}
// Highlight sets the highlight flag for a single render tick
func (i *Item) Highlight() {
i.AnimatedEntity.highlight = true
}
// Name returns the item name
func (i *Item) Label() string {
return i.Item.Label()
}
// GetSize returns the current frame size
func (i *Item) GetSize() (width, height int) {
w, h := i.animation.GetCurrentFrameSize()
if w < minHitboxSize {
w = minHitboxSize
}
if h < minHitboxSize {
h = minHitboxSize
}
return w, h
}