diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2025-08-22 11:56:46 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-08-22 11:56:46 +0200 |
| commit | 0667db9e5a765cbd1eec90b63fb8cd0a6e0a2dc7 (patch) | |
| tree | 155a8e692b6eed924e4b735bd8e1444cd08ba83d /go/game/areaEffect.go | |
| parent | 157a8601c10b06ab14a216372b0c06fc47f4de31 (diff) | |
| download | muhqs-game-0667db9e5a765cbd1eec90b63fb8cd0a6e0a2dc7.tar.gz muhqs-game-0667db9e5a765cbd1eec90b63fb8cd0a6e0a2dc7.zip | |
implement banner
Diffstat (limited to 'go/game/areaEffect.go')
| -rw-r--r-- | go/game/areaEffect.go | 31 |
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) +} |
