示例#1
0
        /// <summary>
        /// Set random direction item
        /// </summary>
        public void SetRandomDirection()
        {
            int randomIndex = Random.Range(0, System.Enum.GetValues(typeof(CoordinateDirection)).Length);

            //		int randomIndex=1; //test
            chooseDirection = (CoordinateDirection)randomIndex;
            BuildDirection();
            GetComponent <DrawLines>().SetDirectionForHeadLines(chooseDirection);
        }
示例#2
0
        public Destroyer(Vector2 position, DirectionType direction, CoordinateDirection coordinate)
        {
            Position    = position;
            _direction  = direction;
            _coordinate = coordinate;

            Texture = direction == DirectionType.Horizontal ? TextureController.GetTexture(GemType.HorizontalLine.SelectedSpritePath())
                                                            : TextureController.GetTexture(GemType.VerticalLine.SelectedSpritePath());
        }
示例#3
0
        /// <summary>
        /// Set direction init for two lines
        /// </summary>
        /// <param name="directionWasChoose">Direction was choose.</param>
        public void SetDirectionForHeadLines(CoordinateDirection directionWasChoose)
        {
            directionChosen = directionWasChoose;
            switch (directionWasChoose)
            {
            case CoordinateDirection.North_South:
                headLineOneDir = Vector2.up;
                headLineTwoDir = Vector2.down;
                break;

            case CoordinateDirection.East_West:
                headLineOneDir = Vector2.right;
                headLineTwoDir = Vector2.left;
                break;

            case CoordinateDirection.North_East:
                headLineOneDir = Vector2.up;
                headLineTwoDir = Vector2.right;
                break;

            case CoordinateDirection.East_South:
                headLineOneDir = Vector2.right;
                headLineTwoDir = Vector2.down;
                break;

            case CoordinateDirection.South_West:
                headLineOneDir = Vector2.down;
                headLineTwoDir = Vector2.left;
                break;

            case CoordinateDirection.West_North:
                headLineOneDir = Vector2.left;
                headLineTwoDir = Vector2.up;
                break;
            }
        }
示例#4
0
        /// <summary>
        ///  Checks the range of the coordinate and returns the error message if not OK.
        /// </summary>
        /// <param name = "pCoordinateType">Type of the coordinate.</param>
        /// <param name = "pCoordinateDirection">The coordinate direction.</param>
        /// <param name = "pValue">The value.</param>
        /// <returns>Empty string if witin range and a message otherwise</returns>
        public static string CheckCoordinate(CoordinateType pCoordinateType, CoordinateDirection pCoordinateDirection, string pValue)
        {
            double value;
            switch (pCoordinateType)
            {
                // Latitude-longitude.
                case CoordinateType.Degrees:
                    if (double.TryParse(pValue, out value))
                        switch (pCoordinateDirection)
                        {
                            case CoordinateDirection.NorthSouth:
                                if (value >= -90.0 && value <= 90.0) return string.Empty;
                                return CoordinateTypeUtils.GetCoodinateOutOfRangeMessage(pCoordinateType,
                                                             pCoordinateDirection, "-90.0",
                                                             "90.0");
                            case CoordinateDirection.WestEast:
                                if (value >= -180.0 && value <= 180.0) return string.Empty;
                                return CoordinateTypeUtils.GetCoodinateOutOfRangeMessage(pCoordinateType,
                                                             pCoordinateDirection, "-180.0",
                                                             "180.0");
                            default:
                                return string.Empty;
                        }
                    return CoordinateTypeUtils.GetCoodinateUnknownFormatMessage(pCoordinateType, pCoordinateDirection);
                case CoordinateType.Degreeminutesecond:
                    try
                    {
                        value = GetCoordinateDegreesFromDegreeMinuteSecond(pValue);
                        switch (pCoordinateDirection)
                        {
                            case CoordinateDirection.NorthSouth:
                                if (value >= -90.0 && value <= 90.0) return string.Empty;
                                return CoordinateTypeUtils.GetCoodinateOutOfRangeMessage(pCoordinateType,
                                                             pCoordinateDirection,
                                                             DecimalDegreestoDegreeMinuteSecond(
                                                               -90.0, pCoordinateDirection),
                                                             DecimalDegreestoDegreeMinuteSecond(
                                                               90.0, pCoordinateDirection));
                            case CoordinateDirection.WestEast:
                                if (value >= -180.0 && value <= 180.0) return string.Empty;
                                return CoordinateTypeUtils.GetCoodinateOutOfRangeMessage(pCoordinateType,
                                                             pCoordinateDirection,
                                                             DecimalDegreestoDegreeMinuteSecond(
                                                               -180.0, pCoordinateDirection),
                                                             DecimalDegreestoDegreeMinuteSecond(
                                                               180.0, pCoordinateDirection));
                            default:
                                return string.Empty;
                        }
                    }
                    catch (ArgumentException)
                    {
                        return CoordinateTypeUtils.GetCoodinateUnknownFormatMessage(pCoordinateType, pCoordinateDirection);
                    }
                // Rijksdriehoek.
                case CoordinateType.Rd:
                    if (double.TryParse(pValue, out value))
                        switch (pCoordinateDirection)
                        {
                            case CoordinateDirection.NorthSouth:
                                if (value >= 289000.0 && value <= 629000.0) return string.Empty;
                                return CoordinateTypeUtils.GetCoodinateOutOfRangeMessage(pCoordinateType,
                                                             pCoordinateDirection, "289000.0",
                                                             "629000.0");

                            case CoordinateDirection.WestEast:
                                if (value >= -7000.0 && value <= 300000.0) return string.Empty;
                                return CoordinateTypeUtils.GetCoodinateOutOfRangeMessage(pCoordinateType,
                                                             pCoordinateDirection, "-7000.0",
                                                             "300000.0");
                            default:
                                return string.Empty;
                        }
                    return CoordinateTypeUtils.GetCoodinateUnknownFormatMessage(pCoordinateType, pCoordinateDirection);
                default:
                    return string.Empty;
            }
        }
示例#5
0
        /// <summary>
        ///  Convert decimal degrees (DD) to degree, minute, second (DMS) notation.
        /// </summary>
        /// <param name = "pCoordinate">The Coordinate.</param>
        /// <param name = "pCoordinateDirection">The direction.</param>
        /// <returns></returns>
        public static string DecimalDegreestoDegreeMinuteSecond(double pCoordinate, CoordinateDirection pCoordinateDirection)
        {
            // Set flag if number is negative
            var neg = pCoordinate < 0d;

            // Work with a positive number
            pCoordinate = Math.Abs(pCoordinate);

            // Get d/m/s components
            var d = Math.Floor(pCoordinate);
            pCoordinate -= d;
            pCoordinate *= 60;
            var m = Math.Floor(pCoordinate);
            pCoordinate -= m;
            pCoordinate *= 60;
            var s = Math.Round(pCoordinate);

            // Create padding character
            char pad;
            char.TryParse("0", out pad);

            // Create d/m/s strings
            var dd = d.ToString();
            var mm = m.ToString().PadLeft(2, pad);
            var ss = s.ToString().PadLeft(2, pad);

            // Append d/m/s
            var dms = string.Format("{0}°{1}'{2}\"", dd, mm, ss);

            // Append compass heading
            switch (pCoordinateDirection)
            {
                case CoordinateDirection.WestEast:
                    dms += neg ? "W" : "E";
                    break;
                case CoordinateDirection.NorthSouth:
                    dms += neg ? "S" : "N";
                    break;
            }

            // Return formated string
            return dms;
        }
示例#6
0
 public Coordinate(float v, CoordinateDirection d)
 {
     this.value     = v;
     this.direction = d;
 }
示例#7
0
 /// <summary>
 /// Set new direction for item whenever player clicked on it
 /// </summary>
 /// <param name="coordinateDir">Coordinate dir.</param>
 public void SetDirectionByInputValue(CoordinateDirection coordinateDir)
 {
     chooseDirection = coordinateDir;
     BuildDirection();
     GetComponent <DrawLines>().SetDirectionForHeadLines(chooseDirection);
 }