ui starting, menu screen, ingame help

This commit is contained in:
2019-11-08 03:36:26 +03:00
parent 4532320ce3
commit cb7718860a
11 changed files with 271 additions and 40 deletions

View File

@ -59,7 +59,6 @@ func main() {
// set up context
mainCtx := util.NewClientContext(config, &logger)
//set up main window
mw := mainwindow.Init(mainCtx)
defer mw.Close()
@ -69,7 +68,6 @@ func main() {
//set up input decoder
go decodeInput(mainCtx, mw.GetLayer("base"))
//fixme set up (load / generate) level
level, rooms := mapgens.DefaultGen(gamemap.NewLevel(mainCtx, "test", 1))
State.Level = level
@ -78,7 +76,6 @@ func main() {
vp := mainwindow.NewViewPort(30, 0, (mw.W - 30), (mw.H - 0), mw.GetLayer("base"))
go vp.Listen(State)
//set up controller
controller := ecs.NewController()
@ -90,16 +87,39 @@ func main() {
moveable := movement.Moveable{
Controller: controller,
Level: level,
Level: level,
}
//Set up Screen Manager
screenMgr := types.NewScreenManager(mainCtx)
screenMgr.AddScreen("title", &screens.TitleScreen{})
screenMgr.AddScreen("game", screens.NewGameScreen(mw, &State, vp, controller))
screenMgr.AddScreen("title", screens.NewTitleScreen(mw, screenMgr))
screenMgr.AddScreen("game", screens.NewGameScreen(mw, &State, vp, controller, screenMgr))
screenMgr.AddScreen("help", screens.NewMenuScreen(
mw,
screenMgr,
"Help",
"Keybindings:",
//"[color=yellow]Note[/color]: Many of these are not implemented yet",
"[color=yellow]Note[/color]: Many of these are not implemented yet",
types.NewCenteredRect(mw.Rect, 50, 15),
true, ).
SetBgColor("#ef1d494f").
SetFgColor("white").
SetItems([]interface{}{
"hjklyubn 12346789 or arrow keys - move",
"s or . - pass turn",
"g or , - pick up item",
"i - inventory",
"? - this screen",
"Ctrl+q - exit",
"f or F - fire or throw weapon",
"z or Z - cast a spell",
"p - pray",
"Ctrl+p - message log",
}),
)
screenMgr.SetScreenByName("game")
screenMgr.SetScreenByName("title")
//fixme
//player := &mob.Player{
@ -119,7 +139,6 @@ func main() {
//vp.PlayerCoords = player.Coords
//vp.Render(&State)
//fixme set up (load / generate) player
player := controller.CreateEntity([]ecs.Component{})
@ -153,9 +172,10 @@ func main() {
mainCtx.Logger().Warn().Msg("quitting NOW")
exit = true
break
// не оставляйте default в бесконесчном select {} - сожрет всё CPU
// не оставляйте default в бесконечном select {} - сожрет всё CPU
default:
screenMgr.CurrentScreen.Render()
blt.Layer(0) //return to base layer
blt.Refresh()
}
@ -166,7 +186,8 @@ func main() {
func setupLayers(mainwindow *mainwindow.MainWindow) {
mainwindow.AddLayer("base", 0, "white")
mainwindow.AddLayer("overlay", 1, "white")
mainwindow.AddLayer("menu", 2, "white")
mainwindow.AddLayer("menubg", 2, "white")
mainwindow.AddLayer("menu", 3, "white")
}
func decodeInput(ctx util.ClientCtx, baseLayer *mainwindow.Layer) {
@ -208,8 +229,8 @@ func decodeInput(ctx util.ClientCtx, baseLayer *mainwindow.Layer) {
blt.Set("window: size=100x47; font: ./resources/fonts-ttf/UbuntuMono-R.ttf, size=11;")
})
case "Ctrl+q":
fallthrough
case "Escape":
//fallthrough
//case "Escape":
ctx.Logger().Info().Msg("exiting on quit command...")
State.Exit <- struct{}{}
ctx.Logger().Info().Msg("...done")