public void ReplaceTilesTest() { BasicMap newMap = new BasicMap(8, 8, 1, Distance.MANHATTAN); for (int i = 0; i < 8; i++) { newMap.SetTerrain(_factory.Generic(new Coord(i, i), i)); } newMap.ReplaceTiles(_map, new Coord(0, 0)); for (int i = 0; i < _map.Width; i++) { for (int j = 0; j < _map.Height; j++) { BasicTerrain t1 = _map.GetTerrain <BasicTerrain>(new Coord(i, j)); BasicTerrain t2 = newMap.GetTerrain <BasicTerrain>(new Coord(i, j)); Assert.AreEqual(t1.Glyph, t2.Glyph); } } }
public void ForXForYTest() { BasicMap map = new BasicMap(25, 25, 1, Distance.EUCLIDEAN); int counter = 0; map.ForXForY((point) => { map.SetTerrain(_factory.Generic(point, counter)); counter++; }); counter = 0; for (int i = 0; i < map.Width; i++) { for (int j = 0; j < map.Height; j++) { BasicTerrain t = map.GetTerrain <BasicTerrain>(new Coord(i, j)); Assert.AreEqual(counter, t.Glyph); counter++; } } }
public static BasicMap SwapXy(this BasicMap m) { BasicMap map = new BasicMap(m.Width, m.Height, 1, Distance.MANHATTAN); for (int i = 0; i < m.Width; i++) { for (int j = 0; j < m.Height; j++) { Coord original = new Coord(j, i); Coord target = new Coord(i, j); BasicTerrain t = m.GetTerrain <BasicTerrain>(original); if (t != null) { t = _factory.Copy(t, target); map.SetTerrain(t); } } } return(map); }
public static BasicMap ReverseVertical(this BasicMap m) { BasicMap map = new BasicMap(m.Width, m.Height, 1, Distance.MANHATTAN); for (int i = 0; i < m.Width; i++) { for (int j = 0; j < m.Height; j++) { Coord source = new Coord(i, j); Coord target = new Coord(i, m.Height - 1 - j); BasicTerrain t = m.GetTerrain <BasicTerrain>(source); if (t != null) { t = _factory.Copy(t, target); map.SetTerrain(t); } } } return(map); }
public static void Add(this BasicMap m, BasicMap map, Coord origin) { if (m.Width < map.Width + origin.X && m.Height < map.Height + origin.X) { throw new ArgumentOutOfRangeException(nameof(origin)); } for (int i = 0; i < map.Width; i++) { for (int j = 0; j < map.Height; j++) { Coord target = new Coord(i + origin.X, j + origin.Y); BasicTerrain t1 = (BasicTerrain)map.GetTerrain(new Coord(i, j)); BasicTerrain t2 = (BasicTerrain)m.GetTerrain(new Coord(i, j)); if (t1 != null && t2 == null && m.Contains(target)) { t1 = _factory.Copy(t1, target); m.SetTerrain(t1); } } } }
public void AddTest() { BasicMap largeMap = new BasicMap(18, 18, 1, Distance.MANHATTAN); largeMap.Add(_map); for (int i = 0; i < _map.Width; i++) { for (int j = 0; j < _map.Height; j++) { BasicTerrain t1 = _map.GetTerrain <BasicTerrain>(new Coord(i, j)); BasicTerrain t2 = largeMap.GetTerrain <BasicTerrain>(new Coord(i, j)); Assert.AreEqual(t1.Glyph, t2.Glyph); } } BasicMap map = new BasicMap(8, 8, 2, Distance.MANHATTAN); map.Add(_map); for (int i = 0; i < _map.Width; i++) { for (int j = 0; j < _map.Height; j++) { BasicTerrain t1 = _map.GetTerrain <BasicTerrain>(new Coord(i, j)); BasicTerrain t2 = map.GetTerrain <BasicTerrain>(new Coord(i, j)); Assert.AreEqual(t1.Glyph, t2.Glyph); } } for (int i = 0; i < map.Width; i++) { for (int j = 0; j < map.Height; j++) { BasicTerrain t1 = _map.GetTerrain <BasicTerrain>(new Coord(i, j)); BasicTerrain t2 = map.GetTerrain <BasicTerrain>(new Coord(i, j)); Assert.AreEqual(t1.Glyph, t2.Glyph); } } }
public static BasicMap Subsection(this BasicMap m, Coord start, Coord stop) { int xDiff = stop.X - start.X; int yDiff = stop.Y - start.Y; BasicMap map = new BasicMap(xDiff, yDiff, Enum.GetNames(typeof(MapLayer)).Length, Distance.MANHATTAN); for (int i = start.X; i < stop.X + 1; i++) { for (int j = start.Y; j < stop.Y + 1; j++) { BasicTerrain t = m.GetTerrain <BasicTerrain>(new Coord(i, j)); if (t != null) { Coord c = new Coord(i - start.X, j - start.Y); t = _factory.Copy(t, c); if (map.Contains(c)) { map.SetTerrain(t); } } } } return(map); }
public void SubsectionTest() { Coord start = new Coord(4, 3); Coord stop = new Coord(6, 7); BasicMap miniMap = _map.Subsection(start, stop); for (int i = 0; i < miniMap.Width; i++) { for (int j = 0; j < miniMap.Height; j++) { Assert.AreEqual(miniMap.GetTerrain <BasicTerrain>(i, j).Glyph, _map.GetTerrain <BasicTerrain>(start.X + i, start.Y + j).Glyph); } } }