Example #1
0
        private CompassDirection2 GetDirection(Vector2 v)
        {
            double angle  = Math.Atan2(v.X, v.Y);
            int    octant = (int)Math.Round(8 * angle / (2 * Math.PI) + 8) % 8;

            CompassDirection2 dir = (CompassDirection2)octant;

            return(dir);
        }
Example #2
0
        private void MoveMapOneTile(Vector2 direction)
        {
            CompassDirection2 dir = GetDirection(direction);

            switch (dir)
            {
            case CompassDirection2.North:
                CenterOnViewPosition(new Point((int)ViewCenter.X, (int)ViewCenter.Y - CellHeight));
                break;

            case CompassDirection2.NorthEast:
                CenterOnViewPosition(new Point((int)ViewCenter.X + CellWidth, (int)ViewCenter.Y - CellHeight));
                break;

            case CompassDirection2.East:
                CenterOnViewPosition(new Point((int)ViewCenter.X + CellWidth, (int)ViewCenter.Y));
                break;

            case CompassDirection2.SouthEast:
                CenterOnViewPosition(new Point((int)ViewCenter.X + CellWidth, (int)ViewCenter.Y + CellHeight));
                break;

            case CompassDirection2.South:
                CenterOnViewPosition(new Point((int)ViewCenter.X, (int)ViewCenter.Y + CellHeight));
                break;

            case CompassDirection2.SouthWest:
                CenterOnViewPosition(new Point((int)ViewCenter.X - CellWidth, (int)ViewCenter.Y + CellHeight));
                break;

            case CompassDirection2.West:
                CenterOnViewPosition(new Point((int)ViewCenter.X - CellWidth, (int)ViewCenter.Y));
                break;

            case CompassDirection2.NorthWest:
                CenterOnViewPosition(new Point((int)ViewCenter.X - CellWidth, (int)ViewCenter.Y - CellHeight));
                break;
            }
        }