From 6bd6936e1aae2fb8d2f5fc95d3c8dcdbe799242d Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Tue, 7 Feb 2023 00:32:39 +0100 Subject: intermediate commit adding area effects and hooks for permanents entering and leaving tiles --- go/game/areaEffect_test.go | 69 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 go/game/areaEffect_test.go (limited to 'go/game/areaEffect_test.go') 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) +} -- cgit v1.2.3