Skip to content

Commit

Permalink
Checkpint #2 - COonvert MapDisplayPainter to a non-static class.
Browse files Browse the repository at this point in the history
  • Loading branch information
pgeerkens committed Apr 6, 2019
1 parent d697727 commit 2008507
Show file tree
Hide file tree
Showing 9 changed files with 79 additions and 238 deletions.
4 changes: 1 addition & 3 deletions HexGridExampleCommon/EmptyGridHex.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,7 @@ namespace PGNapoleonics.HexgridExampleCommon {
/// <summary>TODO</summary>
public sealed class EmptyGridHex : Hex {
/// <summary>TODO</summary>
public EmptyGridHex(HexCoords coords) : base(coords,0) {
TerrainType = 'Z'; // Expression body causes a Doxygen warning
}
public EmptyGridHex(HexCoords coords) : base(coords,0) => TerrainType = default(char);

/// <inheritdoc/>
public override char TerrainType { get; }
Expand Down
1 change: 0 additions & 1 deletion HexGridExampleCommon/HexgridExampleCommon.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,6 @@
</ItemGroup>
<ItemGroup>
<Compile Include="EmptyBoard.cs" />
<Compile Include="Common\MapDisplay.cs" />
<Compile Include="DocMainPage.cs" />
<Compile Include="EmptyGridHex.cs" />
<Compile Include="GlobalSuppressions.cs" />
Expand Down
42 changes: 2 additions & 40 deletions HexGridExampleCommon/MapList.cs
Original file line number Diff line number Diff line change
Expand Up @@ -29,53 +29,15 @@
using System.Collections.Generic;
using System.Collections.ObjectModel;

using PGNapoleonics.HexUtilities;
using PGNapoleonics.HexUtilities.Common;

namespace PGNapoleonics.HexgridExampleCommon {
using MapGridHex = IHex;

/// <summary>TODO</summary>
public delegate MapDisplay<MapGridHex> MapExtractor();

/// <summary>TODO</summary>
public struct Map {
/// <summary>TODO</summary>
public Map(string mapName, MapExtractor mapSource) : this() {
MapName = mapName;
MapSource = mapSource;
}

/// <summary>TODO</summary>
public string MapName { get; }
/// <summary>TODO</summary>
public MapDisplay<MapGridHex> MapBoard => MapSource();

private MapExtractor MapSource { get; }

/// <summary>TODO</summary>
public static IReadOnlyList<Map> MapList { get; } = new ReadOnlyCollection<Map>(
public static class MapList {
public static IReadOnlyList<Map> Maps { get; } = new ReadOnlyCollection<Map>(
new Map[] {
new Map("Terrain Map", () => new TerrainMap()),
new Map("Maze Map", () => new MazeMap()),
new Map("A* Bug Map", () => new AStarBugMap())
} );

#region Value Equality with IEquatable<T>
/// <inheritdoc/>
public override bool Equals(object obj) => (obj is Map other) && this.Equals(other);

/// <inheritdoc/>
public bool Equals(Map other) => MapName == other.MapName;

/// <inheritdoc/>
public override int GetHashCode() => MapName.GetHashCode();

/// <summary>Tests value-inequality.</summary>
public static bool operator !=(Map lhs, Map rhs) => ! lhs.Equals(rhs);

/// <summary>Tests value-equality.</summary>
public static bool operator ==(Map lhs, Map rhs) => lhs.Equals(rhs);
#endregion
}
}
68 changes: 68 additions & 0 deletions HexUtilities/Common/Map.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#region The MIT License - Copyright (C) 2012-2019 Pieter Geerkens
/////////////////////////////////////////////////////////////////////////////////////////
// PG Software Solutions - Hex-Grid Utilities
/////////////////////////////////////////////////////////////////////////////////////////
// The MIT License:
// ----------------
//
// Copyright (c) 2012-2019 Pieter Geerkens (email: pgeerkens@users.noreply.github.com)
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify,
// merge, publish, distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to the following
// conditions:
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
/////////////////////////////////////////////////////////////////////////////////////////
#endregion

namespace PGNapoleonics.HexUtilities.Common {
using MapGridHex = IHex;

/// <summary>TODO</summary>
public delegate MapDisplay<MapGridHex> MapExtractor();

/// <summary>TODO</summary>
public class Map {
/// <summary>TODO</summary>
public Map(string mapName, MapExtractor mapSource) {
MapName = mapName;
MapSource = mapSource;
}

/// <summary>TODO</summary>
public string MapName { get; }
/// <summary>TODO</summary>
public MapDisplay<MapGridHex> MapBoard => MapSource();

private MapExtractor MapSource { get; }

#region Value Equality with IEquatable<T>
/// <inheritdoc/>
public override bool Equals(object obj) => (obj is Map other) && this.Equals(other);

/// <inheritdoc/>
public bool Equals(Map other) => MapName == other.MapName;

/// <inheritdoc/>
public override int GetHashCode() => MapName.GetHashCode();

/// <summary>Tests value-inequality.</summary>
public static bool operator !=(Map lhs, Map rhs) => ! lhs.Equals(rhs);

/// <summary>Tests value-equality.</summary>
public static bool operator ==(Map lhs, Map rhs) => lhs.Equals(rhs);
#endregion
}
}
2 changes: 2 additions & 0 deletions HexUtilities/HexUtilities.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -215,6 +215,8 @@
<Compile Include="Common\HexPickingExtensions.cs" />
<Compile Include="Common\IHexgridExtensions.cs" />
<Compile Include="Common\IMapDisplayWinForms.cs" />
<Compile Include="Common\Map.cs" />
<Compile Include="Common\MapDisplay.cs" />
<Compile Include="Common\MapDisplayExtensions.cs" />
<Compile Include="Common\Maybe.cs" />
<Compile Include="Common\MaybeExtensions.cs" />
Expand Down
9 changes: 2 additions & 7 deletions HexgridPanel/AbstractModelDisplayPainter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,7 @@ public virtual void PaintLabels(Graphics graphics, Func<HexCoords,string> hexTex
} );
} );

/// <summary>Paint the top layer of the display, graphics that changes frequently between refreshes.</summary>
/// <param name="this">The map to be painted, as a <see cref="MapDisplay{THex}"/>.</param>
/// <param name="graphics">The <see cref="Graphics"/> object for the canvas being painted.</param>
/// <inheritdoc/>
public virtual void PaintHighlight(Graphics graphics) {
graphics?.Contain(g => {
g.Transform = Model.TranslateToHex(Model.StartHex);
Expand Down Expand Up @@ -104,10 +102,7 @@ public virtual void PaintShading(Graphics graphics, IShadingMask isNotShaded)
}
} );

/// <summary>.</summary>
/// <typeparam name="THex"></typeparam>
/// <param name="this">The map to be painted, as a <see cref="MapDisplay{THex}"/>.</param>
/// <param name="graphics">The <see cref="Graphics"/> object for the canvas being painted.</param>
/// <inheritdoc/>
public virtual void PaintUnits(Graphics graphics) {
if (graphics == null) throw new ArgumentNullException("graphics");

Expand Down
4 changes: 2 additions & 2 deletions HexgridPanel/Example/HexGridPanelExample.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ public HexgridPanelExample() {
InitializeComponent();

MenuBarToolStrip.LoadTraceMenu();
MenuBarToolStrip.LoadMapList(Map.MapList.Select(item => item.MapName).ToArray());
MenuBarToolStrip.LoadMapList(MapList.Maps.Select(item => item.MapName).ToArray());
}

protected override CreateParams CreateParams => this.SetCompositedStyle(base.CreateParams);
Expand Down Expand Up @@ -119,7 +119,7 @@ private void MenuItemHelpContents_Click(object sender, EventArgs e) {
}

private static MapGridDisplay ParseMapName(string mapName)
=> Map.MapList.First(item => item.MapName == mapName).MapBoard;
=> MapList.Maps.First(item => item.MapName == mapName).MapBoard;

private void SetMapBoard(MapGridDisplay mapBoard) {
HexgridPanel.SetModel( MapBoard = mapBoard);
Expand Down
4 changes: 2 additions & 2 deletions HexgridPanel/Example/HexgridBufferedPanelExample.cs
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ public HexgridBufferedPanelExample() {
InitializeComponent();

MenuBarToolStrip.LoadTraceMenu();
MenuBarToolStrip.LoadMapList(Map.MapList.Select(item => item.MapName).ToArray());
MenuBarToolStrip.LoadMapList(MapList.Maps.Select(item => item.MapName).ToArray());
}
protected override CreateParams CreateParams => this.SetCompositedStyle(base.CreateParams);

Expand Down Expand Up @@ -117,7 +117,7 @@ private void MenuItemHelpContents_Click(object sender, EventArgs e) {
}

private static MapGridDisplay ParseMapName(string mapName)
=> Map.MapList.First(item => item.MapName == mapName).MapBoard;
=> MapList.Maps.First(item => item.MapName == mapName).MapBoard;

private void SetMapBoard(MapGridDisplay mapBoard) {
HexgridPanel.SetModel( MapBoard = mapBoard);
Expand Down
Loading

0 comments on commit 2008507

Please sign in to comment.