alchemyst/engine/ecs/systems/mob_render_system.go
2019-11-16 04:43:56 +03:00

37 lines
1.0 KiB
Go

package systems
import (
"fmt"
"lab.zaar.be/thefish/alchemyst-go/engine/ecs"
"lab.zaar.be/thefish/alchemyst-go/engine/gamemap"
"lab.zaar.be/thefish/alchemyst-go/engine/types"
"lab.zaar.be/thefish/alchemyst-go/ui/mainwindow"
)
type MobRenderSystem struct {
Controller *ecs.Controller
Layer *mainwindow.Layer
Viewport *mainwindow.ViewPort
*gamemap.Level
}
func (mrs MobRenderSystem) Process(){
for e := range mrs.Controller.GetEntities() {
if mrs.Controller.HasComponent(e, ecs.CoordsComponent) &&
mrs.Controller.HasComponent(e, ecs.AppearanceComponent) {
pos := mrs.Controller.GetComponent(e, ecs.CoordsComponent).(types.Coords)
appearance := mrs.Controller.GetComponent(e, ecs.AppearanceComponent).(types.Appearance)
vpc, err := mrs.Viewport.ToVPCoords(pos)
if err != nil {
fmt.Printf("Err: " , err)
}
mrs.Layer.WithRawColor(appearance.ColorSet.Fg.GetColor()).Put(vpc.X, vpc.Y, appearance.Glyph.GetGlyph())
}
}
}
func (mrs MobRenderSystem) SystemType() string {
return ecs.MobRenderSystem
}