Example #1
0
        /// <summary>
        /// Zwraca punkt, który jest w stosunku do obecnego punktu w
        /// określonym kierunku
        /// </summary>
        /// <param name="current">Obecna pozycja</param>
        /// <param name="course">Kurs</param>
        /// <returns>Obliczona pozycja na zadanym kursie</returns>
        public static Point3 ToRelativePoint3(Point3 current, Neswdu course)
        {
            if (course.HasFlag(Neswdu.North))
            {
                return(new Point3(current, 0, -1, 0));
            }

            if (course.HasFlag(Neswdu.East))
            {
                return(new Point3(current, 1, 0, 0));
            }

            if (course.HasFlag(Neswdu.South))
            {
                return(new Point3(current, 0, 1, 0));
            }

            if (course.HasFlag(Neswdu.West))
            {
                return(new Point3(current, -1, 0, 0));
            }

            if (course.HasFlag(Neswdu.Down))
            {
                return(new Point3(current, 0, 0, -1));
            }

            if (course.HasFlag(Neswdu.Up))
            {
                return(new Point3(current, 0, 0, 1));
            }

            return(current);
        }
Example #2
0
 /// <summary>
 /// Skrócony konstruktor ustawiający najważniejsze elementy lokacji
 /// </summary>
 /// <param name="x">Pozycja w osi X</param>
 /// <param name="y">Pozycja w osi Y</param>
 /// <param name="z">Pozycja w osi Z</param>
 /// <param name="name">Nazwa lokacji</param>
 /// <param name="desc">Opis lokacji</param>
 /// <param name="neswdu">Dozwolone kierunki poruszania się</param>
 public Location(int x, int y, int z, string name, string desc, Neswdu neswdu)
 {
     Coordinates = new Point3 {
         X = x, Y = y, Z = z
     };
     Name         = name;
     Description  = desc;
     Neswdu       = neswdu;
     HiddenNeswdu = neswdu;
     Enemies      = null;
 }
Example #3
0
        /// <summary>
        /// Przekształca zmienną typu Neswdu na łańcuch znaków w języku
        /// polskim. W przypadku jeżeli Neswdu określa więcej niż jeden
        /// dozwolony kierunek, zmienna wynikowa będzie zawierać
        /// wszystkie, oddzielone spacją.
        /// </summary>
        /// <param name="course">Zmienna z kierunkami</param>
        /// <returns>Łańcuch znaków w języku polskim</returns>
        public static string ToNaturalLanguage(Neswdu course)
        {
            StringBuilder sb = new StringBuilder();

            if (course.HasFlag(Neswdu.North))
            {
                sb.Append("północ");
                sb.Append(" ");
            }

            if (course.HasFlag(Neswdu.East))
            {
                sb.Append("wschód");
                sb.Append(" ");
            }

            if (course.HasFlag(Neswdu.South))
            {
                sb.Append("południe");
                sb.Append(" ");
            }

            if (course.HasFlag(Neswdu.West))
            {
                sb.Append("zachód");
                sb.Append(" ");
            }

            if (course.HasFlag(Neswdu.Down))
            {
                sb.Append("dół");
                sb.Append(" ");
            }

            if (course.HasFlag(Neswdu.Up))
            {
                sb.Append("góra");
                sb.Append(" ");
            }

            return(sb.ToString().Trim());
        }
Example #4
0
 /// <summary>
 /// Obsługuje możliwość "pójścia" w daną stronę lub pokazuje
 /// komunikat, że jest to niemożliwe
 /// </summary>
 /// <param name="course">
 /// Kierunek, w którym gracz chce się udać
 /// </param>
 private void Go(Neswdu course)
 {
     if (NeswduHelper.CanIGo(currentLocation.HiddenNeswdu, course))
     {
         try
         {
             currentLocation = currentArea.GetLocation(NeswduHelper.ToRelativePoint3(currentLocation.Coordinates, course));
             UpdateLocation();
             txtLog.AddToBeginning($"Poszedłeś na {NeswduHelper.ToNaturalLanguage(course)}");
         }
         catch
         {
             var m = new MessageDialog("Nie da się załadować tej lokacji");
             m.ShowAsync();
         }
     }
     else
     {
         txtLog.AddToBeginning("Nie możesz tam pójść!");
     }
 }
Example #5
0
 /// <summary>
 /// Sprawdza, czy możliwe jest przesunięcie się na kurs kiedy
 /// zmienna lokacji jest ustawiona w dany sposób
 /// </summary>
 /// <param name="neswdu">Zmienna określająca dozwolone kierunki</param>
 /// <param name="course">Zadany kurs</param>
 /// <returns>
 /// Zwraca true jeśli jest możliwe przesunięcie się w danym kierunku
 /// </returns>
 public static bool CanIGo(Neswdu neswdu, Neswdu course)
 {
     return(neswdu.HasFlag(course));
 }