From 0667db9e5a765cbd1eec90b63fb8cd0a6e0a2dc7 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Fri, 22 Aug 2025 11:56:46 +0200 Subject: implement banner --- go/game/areaEffect.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'go/game/areaEffect.go') 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) +} -- cgit v1.2.3