pick up in adjacent tiles, fix bulk check

This commit is contained in:
2020-09-24 23:47:36 +03:00
parent bf13c9c7a2
commit d2b22f4760
10 changed files with 53 additions and 31 deletions

View File

@ -1,7 +1,13 @@
package items
import "lab.zaar.be/thefish/alchemyst-go/engine/ecs"
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
@ -13,7 +19,7 @@ func (b Backpack) Type() string {
return ecs.BackpackComponent
}
func (b *Backpack) HasFreeSpace(Bulk, Mass int) bool {
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)
@ -22,14 +28,12 @@ func (b *Backpack) HasFreeSpace(Bulk, Mass int) bool {
totalMass += carried.Mass
}
if totalMass >= b.MaxMass {
//fixme return message along - 'too heavy'
return false
return ErrorInvTooHeavy
}
if totalBulk >= b.MaxMass {
//fixme return message along - 'doesnt fit to your backpack'
return false
if totalBulk >= b.MaxBulk {
return ErrorInvTooBulky
}
return true
return nil
}
func (b *Backpack) GetItems() []ecs.Entity {