animation handling, screens, vp changes
This commit is contained in:
@ -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()
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user