alchemyst/engine/ecs/systems/mob_render_system.go

37 lines
1.1 KiB
Go

package systems
import (
"lab.zaar.be/thefish/alchemyst-go/engine/ecs"
"lab.zaar.be/thefish/alchemyst-go/engine/types"
"lab.zaar.be/thefish/alchemyst-go/ui/mainwindow"
)
type MobRenderSystem struct {
EntityController *ecs.Controller
Layer *mainwindow.Layer
}
func (mrs MobRenderSystem) Process(){
for e := range mrs.EntityController.GetEntities() {
if mrs.EntityController.HasComponent(e, ecs.CoordsComponent) &&
mrs.EntityController.HasComponent(e, ecs.AppearanceComponent) {
pos := mrs.EntityController.GetComponent(e, ecs.CoordsComponent).(types.Coords)
appearance := mrs.EntityController.GetComponent(e, ecs.AppearanceComponent).(types.Appearance)
//fixme
// Clear the cell this entity occupies, so it is the only glyph drawn there
for i := 0; i <= 2; i++ {
mrs.Layer.ClearArea(pos.X, pos.Y,1,1)
//gogue.ClearArea(pos.X, pos.Y, 1, 1, i)
}
//fixme
mrs.Layer.WithRawColor(appearance.ColorSet.Fg.GetColor()).Put(pos.X, pos.Y, appearance.Glyph)
//gogue.PrintGlyph(pos.X, pos.Y, appearance.Glyph, "", appearance.Layer)
}
}
}
func (mrs MobRenderSystem) SystemType() string {
return ecs.MobRenderSystem
}