alchemyst/engine/items/backpack.go

41 lines
796 B
Go

package items
import (
"fmt"
"lab.zaar.be/thefish/alchemyst-go/engine/ecs"
)
var (
ErrorInvTooHeavy = fmt.Errorf("too heavy")
ErrorInvTooBulky = fmt.Errorf("too bulky")
)
type Backpack struct {
MaxNumber int
MaxBulk int
MaxMass int
items []ecs.Entity
}
func (b Backpack) Type() string {
return ecs.BackpackComponent
}
func (b *Backpack) HasFreeSpace(Bulk, Mass int) error {
totalBulk, totalMass := 0, 0
for i, _ := range b.items {
tmp := Controller.GetComponent(b.items[i], Carried{}.Type()).(Carried)
carried := tmp
totalBulk += carried.Bulk
totalMass += carried.Mass
}
if totalMass >= b.MaxMass {
return ErrorInvTooHeavy
}
if totalBulk >= b.MaxBulk {
return ErrorInvTooBulky
}
return nil
}
func (b *Backpack) GetItems() []ecs.Entity {
return b.items
}