예제 #1
0
        /// <summary>Canonical coordinates for a selected hex for a given AutoScroll position.</summary>
        /// <param name="point">Screen point specifying hex to be identified.</param>
        /// <param name="autoScroll">AutoScrollPosition for game-display Panel.</param>
        /// <returns>Canonical coordinates for a hex specified by a screen point.</returns>
        /// <remarks>See "file://Documentation/HexGridAlgorithm.mht"</remarks>
        protected ICoordsCanon GetHexCoords(Point point, Size autoScroll)
        {
            if (Host == null)
            {
                return(HexCoords.EmptyCanon);
            }

            autoScroll = TransposeSize(autoScroll);

            // Adjust for origin not as assumed by GetCoordinate().
            var grid   = new Size((int)(GridSize.Width * 2F / 3F), (int)GridSize.Height);
            var margin = new Size((int)(MapMargin.Width * MapScale),
                                  (int)(MapMargin.Height * MapScale));

            point -= autoScroll + margin + grid;

            return(HexCoords.NewCanonCoords(GetCoordinate(matrixX, point),
                                            GetCoordinate(matrixY, point)));
        }
 public static ICoordsUser operator +(ICoordsUser coords, IntVector2D vector)
 {
     return(HexCoords.NewCanonCoords(coords.Vector.X + vector.X, coords.Vector.Y + vector.Y).User);
 }