package monster

import "fmt"

// State is an in-world monster entity.
type State struct {
	ID       string
	DefID    string
	Name     string
	X        int
	Y        int
	HP       int
	MaxHP    int
	Damage   int
	Armor    int
	XP       int
	GoldMin  int
	GoldMax  int
	SpawnX   int
	SpawnY   int
	RespawnS int
	Dead     bool
	RespawnAt int64 // unix seconds
}

func New(defID, name string, x, y, hp, damage, armor, xp, goldMin, goldMax, respawnS int) *State {
	return &State{
		ID:       "monster:" + defID,
		DefID:    defID,
		Name:     name,
		X:        x,
		Y:        y,
		HP:       hp,
		MaxHP:    hp,
		Damage:   damage,
		Armor:    armor,
		XP:       xp,
		GoldMin:  goldMin,
		GoldMax:  goldMax,
		SpawnX:   x,
		SpawnY:   y,
		RespawnS: respawnS,
	}
}

func (m *State) TileKey() string {
	return fmt.Sprintf("%d,%d", m.X, m.Y)
}
