last_light/game/state/inventory_screen_state.go

51 lines
1 KiB
Go

package state
import (
"mvvasilev/last_light/game/model"
"mvvasilev/last_light/render"
"mvvasilev/last_light/ui"
"github.com/gdamore/tcell/v2"
)
type InventoryScreenState struct {
prevState GameState
exitMenu bool
inventoryMenu *ui.UIWindow
player *model.Player
}
func CreateInventoryScreenState(player *model.Player, prevState GameState) *InventoryScreenState {
iss := new(InventoryScreenState)
iss.prevState = prevState
iss.player = player
iss.exitMenu = false
iss.inventoryMenu = ui.CreateWindow(40, 0, 40, 24, "INVENTORY", tcell.StyleDefault)
return iss
}
func (iss *InventoryScreenState) OnInput(e *tcell.EventKey) {
if e.Key() == tcell.KeyEsc || (e.Key() == tcell.KeyRune && e.Rune() == 'i') {
iss.exitMenu = true
}
}
func (iss *InventoryScreenState) OnTick(dt int64) GameState {
if iss.exitMenu {
return iss.prevState
}
return iss
}
func (iss *InventoryScreenState) CollectDrawables() []render.Drawable {
return append(
iss.prevState.CollectDrawables(),
iss.inventoryMenu,
)
}