animation handling, screens, vp changes

This commit is contained in:
2019-11-01 17:51:55 +03:00
parent c6c6b6254d
commit 1ac6ae4665
16 changed files with 297 additions and 110 deletions

View File

@ -5,6 +5,7 @@ import (
"github.com/rs/zerolog/log"
"lab.zaar.be/thefish/alchemyst-go/engine/gamemap"
"lab.zaar.be/thefish/alchemyst-go/engine/gamemap/mapgens"
"lab.zaar.be/thefish/alchemyst-go/engine/screens"
"lab.zaar.be/thefish/alchemyst-go/engine/types"
"lab.zaar.be/thefish/alchemyst-go/ui"
"lab.zaar.be/thefish/alchemyst-go/ui/mainwindow"
@ -58,11 +59,35 @@ func main() {
setupLayers(mw)
//fixme
level, rooms := mapgens.DefaultGen(gamemap.NewLevel(mainCtx, "test", 1))
vp := mainwindow.NewViewPort(40, 0, 60, 47, level, mw.GetLayer("base"))
vp.PlayerCoords = rooms[0].Center
vp.Render(State)
screenMgr := types.NewScreenManager(mainCtx)
screenMgr.AddScreen("title", &screens.TitleScreen{})
screenMgr.AddScreen("game", screens.NewGameScreen(mw, &State, vp))
screenMgr.SetScreenByName("game")
//fixme
player := &types.Player{
Mob: types.Mob{
Appearance: &types.Appearance{
Glyph: &types.PlainGlyphHolder{"@"},
ColorSet: &types.TileColorSet{
Fg: &types.PlainColorHolder{255, 255, 255, 255},
},
},
Coords: rooms[0].Center,
BlocksPass: true,
},
}
State.Player = player
vp.PlayerCoords = player.Coords
vp.Render(&State)
go decodeInput(mainCtx, mw.GetLayer("base"))
go vp.Listen(State)
@ -75,9 +100,7 @@ func main() {
case State.RawInput <- ui.ReadKeyCode():
break
case pressed := <-State.Input:
mw.GetLayer("base").ClearArea(0, 3, 40, 1)
mw.GetLayer("base").Print(1, 3, "Key: "+pressed)
mw.GetLayer("base").Print(1, 6, "█")
screenMgr.CurrentScreen.HandleInput(pressed)
break
//case f := <-State.mainfunc:
// f()
@ -86,9 +109,9 @@ func main() {
mainCtx.Logger().Warn().Msg("quitting NOW")
exit = true
break
// не оставляйте default в бесконесчном select {} - сожрет всё CPU
// не оставляйте default в бесконесчном select {} - сожрет всё CPU
default:
vp.Render(State)
screenMgr.CurrentScreen.Render()
blt.Refresh()
}