-
Notifications
You must be signed in to change notification settings - Fork 0
/
sys_draw_bees.go
80 lines (70 loc) · 2.4 KB
/
sys_draw_bees.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package bees
import (
"github.com/mlange-42/arche-demo/common"
"github.com/mlange-42/arche/ecs"
"github.com/mlange-42/arche/generic"
)
// UISysDrawBees is a system for drawing bees as colored pixels.
type UISysDrawBees struct {
canvas generic.Resource[common.Image]
colors generic.Resource[Colors]
followFilter generic.Filter1[Position]
scoutFilter generic.Filter1[Position]
forageFilter generic.Filter1[Position]
returnFilter generic.Filter1[Position]
inHiveFilter generic.Filter1[Position]
waggleFilter generic.Filter1[Position]
}
// InitializeUI the system
func (s *UISysDrawBees) InitializeUI(world *ecs.World) {
s.canvas = generic.NewResource[common.Image](world)
s.colors = generic.NewResource[Colors](world)
s.followFilter = *generic.NewFilter1[Position]().With(generic.T[ActFollow]())
s.scoutFilter = *generic.NewFilter1[Position]().With(generic.T[ActScout]())
s.forageFilter = *generic.NewFilter1[Position]().With(generic.T[ActForage]())
s.returnFilter = *generic.NewFilter1[Position]().With(generic.T[ActReturn]())
s.inHiveFilter = *generic.NewFilter1[Position]().With(generic.T[ActInHive]())
s.waggleFilter = *generic.NewFilter1[Position]().With(generic.T[ActWaggleDance]())
}
// UpdateUI the system
func (s *UISysDrawBees) UpdateUI(world *ecs.World) {
cols := s.colors.Get()
canvas := s.canvas.Get()
img := canvas.Image
queryFollow := s.followFilter.Query(world)
for queryFollow.Next() {
pos := queryFollow.Get()
img.SetRGBA(int(pos.X), int(pos.Y), cols.Follow)
}
queryScouts := s.scoutFilter.Query(world)
for queryScouts.Next() {
pos := queryScouts.Get()
img.SetRGBA(int(pos.X), int(pos.Y), cols.Scout)
}
queryForage := s.forageFilter.Query(world)
for queryForage.Next() {
pos := queryForage.Get()
img.SetRGBA(int(pos.X), int(pos.Y), cols.Forage)
}
queryReturn := s.returnFilter.Query(world)
for queryReturn.Next() {
pos := queryReturn.Get()
img.SetRGBA(int(pos.X), int(pos.Y), cols.Return)
}
/*
queryInHive := s.inHiveFilter.Query(world)
for queryInHive.Next() {
pos := queryInHive.Get()
img.SetRGBA(int(pos.X), int(pos.Y), cols.InHive)
}
queryWaggle := s.waggleFilter.Query(world)
for queryWaggle.Next() {
pos := queryWaggle.Get()
img.SetRGBA(int(pos.X), int(pos.Y), cols.Waggle)
}
*/
}
// PostUpdateUI the system
func (s *UISysDrawBees) PostUpdateUI(world *ecs.World) {}
// FinalizeUI the system
func (s *UISysDrawBees) FinalizeUI(world *ecs.World) {}