public MapRegionView(MapRegion MapRegion, TileRenderer Renderer) { this.MapRegion = MapRegion; _Text = new Text(MapRegion.Name, Renderer.FontFace, 32); _Text.Color = Renderer.FontColor; _Text.Scale = new Vector2f(1f / 128, 1f / 128); MapRegion.OnChange += (sender, e) => Update(); Update(); }
void HandleAddMapRegion(object Sender, ValuedEventArgs <string> E) { var m = new MapRegion { Name = E.Value }; m.OnChange += HandleRegionChanged; _EditScreen.MapView.Map.Regions.Add(m); _EditScreen.MapView.MapRegions.Add(new MapRegionView(m, _EditScreen.MapView.TileRenderer)); _EditPane.UpdateFromMap(_EditScreen.MapView.Map); UnHighlight(); _EditScreen.PaneLayer.Remove(_NewRegionPane); _NewRegionPane = null; }
internal void CopyTo(Map From, int X, int Y, bool Invert) { var max = new Coordinate(From.Tiles.GetLength(0), From.Tiles.GetLength(1)); foreach (MapRegion m in From.Regions) { var copy = Regions.FirstOrDefault(i => i.Name == m.Name); if (copy == null) { copy = new MapRegion { Name = m.Name } } ; foreach (Tile t in m.Tiles) { var c = TransformCoordinate(t.Coordinate, new Coordinate(X, Y), max, Invert); copy.Add(Tiles[c.X + X, c.Y + Y]); } Regions.Add(copy); } for (int i = 0; i < From.Tiles.GetLength(0); ++i) { for (int j = 0; j < From.Tiles.GetLength(1); ++j) { var c = TransformCoordinate(new Coordinate(i, j), new Coordinate(X, Y), max, Invert); if (c.X < From.Tiles.GetLength(0) && c.X >= 0) { Tile t = From.Tiles[c.X, c.Y]; Tiles[X + i, Y + j].Configuration.Merge(new TileConfiguration( t.Configuration, Invert)); } } } } Coordinate TransformCoordinate(Coordinate Coordinate, Coordinate Offset, Coordinate Max, bool Invert) { return(Invert ? new Coordinate( Max.X - Coordinate.X - 1 - ((Offset.X + Coordinate.Y) % 2 == 0 ? 1 : 0), Max.Y - Coordinate.Y - 1) : Coordinate); }
public static string Describe(MapRegion Region) { return(Region.Name); }