Example #1
0
        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();
                    }
                }
            }
        }
Example #2
0
 private void NewWorldClick(object sender, RoutedEventArgs e)
 {
     MapHexagons.Clear();
     MapRivers.Clear();
     GenerateNewWorld(MaxX, MaxY);
     DrawHexMap(_world.Map, _world.Map.BaseColorAt);
 }