dev menu
This commit is contained in:
95
engine/screens/devmenu.go
Normal file
95
engine/screens/devmenu.go
Normal file
@ -0,0 +1,95 @@
|
||||
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,
|
||||
)
|
||||
|
||||
}
|
@ -65,6 +65,10 @@ func (ts *GameScreen) HandleInput(input string) {
|
||||
case "Shift+/":
|
||||
ts.scm.SetScreenByName("help")
|
||||
break
|
||||
case "Shift+z":
|
||||
ts.scm.SetScreenByName("devmenu")
|
||||
break
|
||||
|
||||
case "i":
|
||||
ts.scm.SetScreenByName("inventory")
|
||||
break
|
||||
|
Reference in New Issue
Block a user