aboutsummaryrefslogtreecommitdiff
path: root/go/game/areaEffect_test.go
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2023-02-07 00:32:39 +0100
committerFlorian Fischer <florian.fischer@muhq.space>2023-02-07 00:32:39 +0100
commit6bd6936e1aae2fb8d2f5fc95d3c8dcdbe799242d (patch)
tree861f7a977c2cd3f015c65c14b5257013650ca71e /go/game/areaEffect_test.go
parent7ebfd783e9b2fbc788dc54b57185f7f41b257f2a (diff)
downloadmuhqs-game-6bd6936e1aae2fb8d2f5fc95d3c8dcdbe799242d.tar.gz
muhqs-game-6bd6936e1aae2fb8d2f5fc95d3c8dcdbe799242d.zip
intermediate commit
adding area effects and hooks for permanents entering and leaving tiles
Diffstat (limited to 'go/game/areaEffect_test.go')
-rw-r--r--go/game/areaEffect_test.go69
1 files changed, 69 insertions, 0 deletions
diff --git a/go/game/areaEffect_test.go b/go/game/areaEffect_test.go
new file mode 100644
index 00000000..4f55bffd
--- /dev/null
+++ b/go/game/areaEffect_test.go
@@ -0,0 +1,69 @@
+package game
+
+import (
+ "strings"
+ "testing"
+)
+
+func TestEnteringLeaving(t *testing.T) {
+ mapDef := `map: |1-
+ HH
+symbols:
+ H: house
+`
+ s := NewState()
+ r := strings.NewReader(mapDef)
+ s.Map, _ = readMap(r)
+
+ s.AddNewPlayer("player", NewDeck())
+ p := s.Players[0]
+
+ t0_0 := s.Map.TileAt(Position{0, 0})
+ entered0_0, left0_0 := false, false
+ t0_0.effects = append(t0_0.effects, newDynamicAreaEffect(
+ func(Permanent) { entered0_0 = true },
+ func(Permanent) { left0_0 = true },
+ ))
+
+ t0_1 := s.Map.TileAt(Position{1, 0})
+ entered0_1, left0_1 := false, false
+ t0_1.effects = append(t0_1.effects, newDynamicAreaEffect(
+ func(Permanent) { entered0_1 = true },
+ func(Permanent) { left0_1 = true },
+ ))
+
+ palisade := NewUnit(NewCard("base/archer"), t0_0, p)
+ s.AddPermanent(palisade)
+ if !entered0_0 || palisade.Tile() != t0_0 || t0_0.Permanent != palisade {
+ t.Fatalf("palisade did not enter tile %v", t0_0)
+ }
+
+ s.DestroyPermanent(palisade)
+ if !left0_0 || palisade.Tile() != nil || t0_0.Permanent != nil {
+ t.Fatalf("destroyed palisade did not leave tile %v", t0_0)
+ }
+
+ entered0_0, left0_0 = false, false
+ archer := NewUnit(NewCard("base/archer"), t0_0, p)
+ s.AddPermanent(archer)
+ if !entered0_0 || archer.Tile() != t0_0 || t0_0.Permanent != archer {
+ t.Fatalf("archer did not enter tile %v", t0_0)
+ }
+
+ archer.move(s, t0_1)
+ if !left0_0 || t0_0.Permanent != nil {
+ t.Fatalf("moved archer did not leave tile %v", t0_0)
+ }
+
+ if !entered0_1 || archer.Tile() != t0_1 || t0_1.Permanent != archer {
+ t.Fatalf("moved archer did not leave tile %v", t0_1)
+ }
+
+ s.DestroyPermanent(archer)
+ if !left0_1 || archer.Tile() != nil || t0_1.Permanent != nil {
+ t.Fatalf("destroyed archer did not leave tile %v", t0_1)
+ }
+
+ sword := newEquipmentFromPath("base/sword", t, p)
+ s.AddPermanent(sword)
+}