/// <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); }
/// <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()); }
/// <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)); }