diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2023-02-07 00:32:39 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2023-02-07 00:32:39 +0100 |
| commit | 6bd6936e1aae2fb8d2f5fc95d3c8dcdbe799242d (patch) | |
| tree | 861f7a977c2cd3f015c65c14b5257013650ca71e /go/game/areaEffect_test.go | |
| parent | 7ebfd783e9b2fbc788dc54b57185f7f41b257f2a (diff) | |
| download | muhqs-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.go | 69 |
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) +} |
