package screens import ( "fmt" "lab.zaar.be/thefish/alchemyst-go/engine/gamestate" "lab.zaar.be/thefish/alchemyst-go/engine/types" "lab.zaar.be/thefish/alchemyst-go/ui/mainwindow" ) type DevmenuScreen struct { mw *mainwindow.MainWindow scm *types.ScreenManager state *gamestate.GameState *types.Rect renderParent bool bgColor string fgColor string } func NewDevmenuScreen(mw *mainwindow.MainWindow, scm *types.ScreenManager, state *gamestate.GameState, rect *types.Rect, renderParent bool) *DevmenuScreen { return &DevmenuScreen{ mw: mw, scm: scm, state: state, Rect: rect, renderParent: renderParent, } } func (devm *DevmenuScreen) SetBgColor(color string) *DevmenuScreen { devm.bgColor = color return devm } func (devm *DevmenuScreen) SetFgColor(color string) *DevmenuScreen { devm.fgColor = color return devm } func (devm *DevmenuScreen) UseEcs() bool { return false } func (devm *DevmenuScreen) Enter() { } func (devm *DevmenuScreen) HandleInput(input string) { switch input { case "i": level := devm.state.Level for idx, _ := range level.Tiles { level.Tiles[idx].Visible = false level.Tiles[idx].Explored = false } break case "v": level := devm.state.Level for idx, _ := range level.Tiles { level.Tiles[idx].Visible = true level.Tiles[idx].Explored = true } fmt.Printf("making everything visible!") break case "Escape": fallthrough case "Space": devm.scm.SetScreen(devm.scm.PreviousScreen) break } } func (devm *DevmenuScreen) Exit() { if devm.renderParent { devm.scm.PreviousScreen.Render() } menuLayer := devm.mw.GetLayer("menu") menuLayer.ClearRect(devm.Rect) bgLayer := devm.mw.GetLayer("menubg") bgLayer.ClearRect(devm.Rect) } func (devm *DevmenuScreen) Render() { menuLayer := devm.mw.GetLayer("menu") menuLayer.ClearRect(devm.Rect) bgLayer := devm.mw.GetLayer("menubg") bgLayer.ClearRect(devm.Rect) bgLayer.WithColor(devm.bgColor).NewWindow(devm.Rect).NoBorder() menuLayer.WithColor(devm.fgColor).PrintInside( devm.Rect, "v - all visible\ni - all invisible", 1, ) }