fix wu line iface, pending opacity

This commit is contained in:
2026-01-21 11:39:44 +03:00
parent 2be7717477
commit 378729616f
10 changed files with 108 additions and 51 deletions

View File

@@ -5,6 +5,7 @@ import (
"lab.zaar.be/thefish/alchemyst-go/engine/ecs/systems"
"lab.zaar.be/thefish/alchemyst-go/engine/fov"
"lab.zaar.be/thefish/alchemyst-go/engine/fov/precomputed_shade"
"lab.zaar.be/thefish/alchemyst-go/engine/gamelog"
"lab.zaar.be/thefish/alchemyst-go/engine/gamestate"
"lab.zaar.be/thefish/alchemyst-go/engine/items"
"lab.zaar.be/thefish/alchemyst-go/engine/mob/movement"
@@ -24,11 +25,11 @@ type GameScreen struct {
func NewGameScreen(mw *mainwindow.MainWindow, state *gamestate.GameState, viewPort *mainwindow.ViewPort, controller *ecs.Controller, scm *types.ScreenManager) *GameScreen {
ts := &GameScreen{
mw: mw,
state: state,
vp: viewPort,
mw: mw,
state: state,
vp: viewPort,
controller: controller,
scm: scm,
scm: scm,
}
//fixme move this to fov system
@@ -38,6 +39,7 @@ func NewGameScreen(mw *mainwindow.MainWindow, state *gamestate.GameState, viewPo
renderLevel := systems.NewLevelRenderSystem(state, ts.controller, viewPort, ts.mw.GetLayer("base"), ts.fov)
go renderLevel.Listen()
ts.controller.AddSystem(renderLevel, 50)
return ts
}
@@ -46,7 +48,7 @@ func (ts *GameScreen) UseEcs() bool { return true }
func (ts *GameScreen) Enter() {
ts.mw.GetLayer("overlay").ClearArea(0, ts.mw.H-3, 30, 3)
ts.mw.GetLayer("overlay").WithColor("#77777777").
Print(ts.mw.W - 17 , 1, "Press [color=white]?[/color] for help")
Print(ts.mw.W-17, 1, "Press [color=white]?[/color] for help")
}
func (ts *GameScreen) Exit() {
//trs := ts.controller.GetSystem(ecs.LevelRenderSystem)
@@ -55,7 +57,7 @@ func (ts *GameScreen) Exit() {
//remove what we dont need
}
//fixme kry names to action constants!
// fixme kry names to action constants!
func (ts *GameScreen) HandleInput(input string) {
//ts.state.Do(func(){
switch input {
@@ -105,16 +107,16 @@ func (ts *GameScreen) HandleInput(input string) {
err := items.Carried.Pickup(cc, ts.state.Player, carrieds[0])
if err != nil {
// Message with error
//gameLog.Log.Error(err)
//gameLog.Msg.Error(err)
//@fixme!
appctx.Logger().Warn().Err(err)
break;
break
}
}
//log picked up
//gameLog.Log.Message(err)
break;
//gameLog.Msg.Message(err)
break
case "i":
ts.scm.SetScreenByName("inventory")
@@ -123,11 +125,21 @@ func (ts *GameScreen) HandleInput(input string) {
ts.mw.GetLayer("base").ClearArea(0, 3, 40, 1)
ts.mw.GetLayer("base").Print(1, 3, "Key: "+input)
ts.mw.GetLayer("base").Print(1, 6, "█")
}
if gamelog.Log.RedrawLogs {
logRect := types.NewRect(1, ts.mw.H-gamelog.Log.MaxHeight-1, ts.mw.W-1, gamelog.Log.MaxHeight)
ts.mw.GetLayer("overlay").ClearRect(logRect)
count := 0
for i := len(gamelog.Log.Messages) - 1; i >= len(gamelog.Log.Messages)-gamelog.Log.MaxHeight; i-- {
//fmt.Println(gamelog.Log.Messages[i].Message)
ts.mw.GetLayer("overlay").PutStringInto(logRect, count-2, gamelog.Log.Messages[i].Message, 0)
count++
}
gamelog.Log.RedrawLogs = false
}
//})
}
func (ts *GameScreen) Render() {
//ts.vp.Render(ts.state)
ts.controller.Process([]string{})
ts.controller.Process(nil)
}