Files
realworld/inc/world.manager.go
T
2026-08-29 23:33:29 +02:00

71 lines
1.3 KiB
Go

package inc
import (
inkwell "git.teletypegames.org/engines/inkwell"
)
type Mode string
const (
ModePlay Mode = "play"
ModeCutscene Mode = "cutscene"
ModeMenu Mode = "menu"
)
type World struct {
G *inkwell.Game
mode Mode
scene string
prev string
paused bool
pending string
queue []inkwell.Action
running inkwell.Runner
top *inkwell.TopBar
tapeWaiting bool
tapeLine inkwell.Action
}
func newWorld(g *inkwell.Game) *World {
return &World{
G: g,
mode: ModePlay,
}
}
func (w *World) Mode() Mode { return w.mode }
func (w *World) SetMode(m Mode) { w.mode = m }
func (w *World) HUDVisible() bool { return w.mode == ModePlay }
func (w *World) Scene() string { return w.scene }
func (w *World) Previous() string { return w.prev }
func (w *World) Paused() bool { return w.paused }
func (w *World) SetTopBar(t *inkwell.TopBar) { w.top = t }
func (w *World) Slot2() string {
if v, ok := w.G.State.Var(VarSlot2).(string); ok {
return v
}
return ""
}
func (w *World) SetSlot2(item string) { w.G.State.SetVar(VarSlot2, item) }
func (w *World) SetPending(item string) { w.pending = item }
func (w *World) TakePending() string {
item := w.pending
w.pending = ""
return item
}
func (w *World) TapeWaiting() bool { return w.tapeWaiting }