private void DrawHexMap(HexMap map, Func <Coords, Color> colorMethod, Double scale = DEFAULT_SCALE) { Point offset = GetHexagonOffsets(); double x = 0.0; double y = 0.0; for (int i = 0; i < map.Width; i++) { x += scale + offset.X; y = (i % 2 != 0) ? offset.Y : 0.0; for (int j = 0; j < map.Height; j++) { y += (offset.Y * 2); Coords currCoords = new Coords(i, j); MapHexagon newMapHex = CreateHexagon(x, y, colorMethod(currCoords), currCoords); newMapHex.ChangeColor(map.BaseColorAt(currCoords)); MapHexagons.Add(newMapHex); if (map.IsRiverAt(currCoords)) { RiverSegment seg = map.GetMainRiverSegmentAt(currCoords); Hex.Side? entry = seg.EntrySide; Hex.Side? exit = seg.ExitSide; //DrawRiver(x, y, entry, exit, scale); DrawRivers(); } } } }
private void NewWorldClick(object sender, RoutedEventArgs e) { MapHexagons.Clear(); MapRivers.Clear(); GenerateNewWorld(MaxX, MaxY); DrawHexMap(_world.Map, _world.Map.BaseColorAt); }