ui starting, menu screen, ingame help
This commit is contained in:
@ -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")
|
||||
|
Reference in New Issue
Block a user