public static Zone ZoneA() { const string want = @" ------------------- | | | | ------------------- | | | C | ------------------- | | B | | ------------------- "; var zone = new Zone("tests"); zone.Map = ZoneMap.TinyMap(); zone.Name = "A"; zone.Boundaries = new List <ZoneBoundary> { new ZoneBoundary { FromZone = "A", FromPosition = new Vector3(0, 0, -1), ToZone = "B", ToPosition = new Vector3(0, 0, 1) }, new ZoneBoundary { FromZone = "A", FromPosition = new Vector3(1, 0, 0), ToZone = "C", ToPosition = new Vector3(-1, 0, 0) } }; return(zone); }
public void TravelerMarksNodesAsUnWalkableWhenStuck() { const string unused = @" ------------------- | e | | ? | ------------------- | x | x | | ------------------- | s | | ? | ------------------- "; // setup the world var zoneMap = ZoneMap.TinyMap(); var zone = new Zone("test") { Map = zoneMap }; var world = new World(); world.Zones.Add(zone); var walker = new Walker(new Vector3(-1, 0, -1)); // Create the map the blind traveler will move against var knownGrid = ZoneMap.TinyMap(); knownGrid.AddUnWalkableNode(Vector3.Zero); knownGrid.AddUnWalkableNode(new Vector3(-1, 0, 0)); var revealedZone = new Zone("test"); revealedZone.Map = knownGrid; walker.RevealedZone = revealedZone; var traveler = new Traveler("test", world, walker); var stubPersister = new StubPersister(); var actor = new KnownNodeActor(stubPersister, traveler.CurrentZone.Map); var watcher = new Watcher(traveler, actor); // For this to work in the FFXI Finite State Machine this currently needs to exit // Frequently to allow for mobs and other stuff to get targeted. Should customize this behavior // To either break on events in the FSM or allow for extension to choose whether to exit under // certain conditions or not. for (int i = 0; i < 10; i++) { traveler.PathfindAndWalkToFarAwayWorldMapPosition(new Vector3(-1, 0, 1)); } var want = new Vector3(-1, 0, 1); var got = traveler.Position; Assert.Equal(want, got); Assert.Equal(2, traveler.CurrentZone.Map.UnknownNodes.Count); // Assert.Equal(traveler.PositionHistory); // Assert.Equal(want, got); }
public static Zone ZoneD() { const string want = @" ------------------- | | | | ------------------- | C | sig | | ------------------- | | | E | ------------------- "; var zone = new Zone("tests"); zone.Map = ZoneMap.TinyMap(); zone.Name = "D"; zone.Npcs = new ObservableCollection <Person> { BastokSignetPerson() }; zone.Boundaries = new List <ZoneBoundary> { new ZoneBoundary { FromZone = "D", FromPosition = new Vector3(1, 0, -1), ToZone = "E", ToPosition = new Vector3(-1, 0, 1) }, new ZoneBoundary { FromZone = "D", FromPosition = new Vector3(-1, 0, 0), ToZone = "C", ToPosition = new Vector3(1, 0, 0) } }; return(zone); }