aboutsummaryrefslogtreecommitdiff
path: root/go/game/areaEffect.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2025-08-22 11:56:46 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2025-08-22 11:56:46 +0200
commit0667db9e5a765cbd1eec90b63fb8cd0a6e0a2dc7 (patch)
tree155a8e692b6eed924e4b735bd8e1444cd08ba83d /go/game/areaEffect.go
parent157a8601c10b06ab14a216372b0c06fc47f4de31 (diff)
downloadmuhqs-game-0667db9e5a765cbd1eec90b63fb8cd0a6e0a2dc7.tar.gz
muhqs-game-0667db9e5a765cbd1eec90b63fb8cd0a6e0a2dc7.zip
implement banner
Diffstat (limited to 'go/game/areaEffect.go')
-rw-r--r--go/game/areaEffect.go31
1 files changed, 31 insertions, 0 deletions
diff --git a/go/game/areaEffect.go b/go/game/areaEffect.go
index ea97b31c..9260f8a7 100644
--- a/go/game/areaEffect.go
+++ b/go/game/areaEffect.go
@@ -26,6 +26,21 @@ func (e *dynamicAreaEffect) onLeaving(p Permanent) {
}
}
+func newCombinedAreaEffect(aoes []areaEffect) *dynamicAreaEffect {
+ return &dynamicAreaEffect{
+ _onEntering: func(p Permanent) {
+ for _, aoe := range aoes {
+ aoe.onEntering(p)
+ }
+ },
+ _onLeaving: func(p Permanent) {
+ for _, aoe := range aoes {
+ aoe.onLeaving(p)
+ }
+ },
+ }
+}
+
func newGrantFullActionEffect(cardPath string, f ActionFuncPrototype, desc, tag string,
) *dynamicAreaEffect {
onEntering := func(p Permanent) {
@@ -49,3 +64,19 @@ func newGrantFullActionEffect(cardPath string, f ActionFuncPrototype, desc, tag
return newDynamicAreaEffect(onEntering, onLeaving)
}
+
+func newAdjustmentAreaEffect(adjust func(Permanent, int), delta int) *dynamicAreaEffect {
+ onEntering := func(p Permanent) {
+ u := p.(*Unit)
+ e := newAdjustmentEffect(adjust, u, delta)
+ e.apply(u.controller.gameState)
+ }
+
+ onLeaving := func(p Permanent) {
+ u := p.(*Unit)
+ e := newAdjustmentEffect(adjust, u, delta)
+ e.end(u.controller.gameState)
+ }
+
+ return newDynamicAreaEffect(onEntering, onLeaving)
+}