last_light/game/state/dialog_state.go

50 lines
1.1 KiB
Go
Raw Normal View History

2024-05-12 23:22:39 +03:00
package state
import (
"mvvasilev/last_light/engine"
2024-06-06 23:17:22 +03:00
"mvvasilev/last_light/game/systems"
2024-05-12 23:22:39 +03:00
"mvvasilev/last_light/game/ui"
)
type DialogState struct {
2024-06-06 23:17:22 +03:00
inputSystem *systems.InputSystem
turnSystem *systems.TurnSystem
2024-05-30 23:39:54 +03:00
2024-05-12 23:22:39 +03:00
prevState GameState
dialog *ui.UIDialog
returnToPreviousState bool
}
2024-06-06 23:17:22 +03:00
func CreateDialogState(inputSystem *systems.InputSystem, turnSystem *systems.TurnSystem, dialog *ui.UIDialog, prevState GameState) *DialogState {
2024-05-12 23:22:39 +03:00
return &DialogState{
2024-05-30 23:39:54 +03:00
inputSystem: inputSystem,
turnSystem: turnSystem,
2024-05-12 23:22:39 +03:00
prevState: prevState,
dialog: dialog,
returnToPreviousState: false,
}
}
2024-06-06 23:17:22 +03:00
func (s *DialogState) InputContext() systems.InputContext {
return systems.InputContext_Menu
2024-05-12 23:22:39 +03:00
}
func (ds *DialogState) OnTick(dt int64) GameState {
2024-06-06 23:17:22 +03:00
if ds.inputSystem.NextAction() == systems.InputAction_Menu_Select {
2024-05-12 23:22:39 +03:00
ds.returnToPreviousState = true
ds.dialog.Select()
}
if ds.returnToPreviousState {
return ds.prevState
}
return ds
}
func (ds *DialogState) CollectDrawables() []engine.Drawable {
return append(ds.prevState.CollectDrawables(), ds.dialog)
}