Mamy końcówkę roku 2025 i nawet teraz nie daję sobie chwili wytchnienia 😊. 26 listopada poszła w świat aktualizacja "A* Visualiser" do wersji 1.1! Jest obiecana przeze mnie lista wszystkich zmian jakie ze sobą nosi ta aktualizacja, a najważniejszą z nich jest wstawienie aplikacji na Google Play jako w pełni wspierająca Androida 🤩! Zapraszam do środka artykułu!

AKTUALIZACJA "A* VISUALISER" DO WERSJI 1.1, NIE KOŃCZY SIĘ NA DODAWANIU FUNKCJONALNOŚCI 🙂!

Nad aktualizacją programu zacząłem intensywnie pracować od 1 września, w dzień rocznicy wybuchu II wojny światowej (pamiętamy 🫡). Zakładałem, że uda się wszystko domknąć w październiku, natomiast przez konieczność pogodzenia prac nad programem z resztą świata i przeciążenie organizmu, które od wielu dni mi mówi "dosyć tyrania" (a nie mogę odpuścić, bo mam miesiące do tyłu) 😫, dopiero kilka dni temu z radością ogłosiłem koniec prac 🏁.

Szczegóły najważniejszych wprowadzonych zmian

Ujmę krótko: cieszę się, że udało się to dopiąć i że mogę Ci teraz przedstawić pełną listę zmian jakie przynosi ta OGROMNA wbrew pozorom, aktualizacja "A* Visualiser" do wersji 1.1 🏆! Zacznijmy od wypunktowania najważniejszych, a potem na samym końcu wypiszę wszystko, co miałem zanotowane 😄!

Wsparcie mobilne

Projekt, który został stworzony na prelekcję, przyniósł wyśmienitą okazję do poeksperymentowania nad wsparciem mobilnym w "Unity" 💝! Po wielu mozolnych "próbach i błędach", udaje mi się wstawić implementację umożliwiającą swobodną obsługę programu na smartfonie 💪!!! Smartfon nie posiada kursora do klikania 🤭 i trzeba było pomyśleć jak obejść to ograniczenie 🧠.

To mi dało do wiwatu i zaskoczyło, że samo portowanie na Androida może tak dać "pojarać" 🔥. A jednak 🙃! Aby można było zapewnić użytkownikowi wygodną obsługę, trzeba było wziąć pod uwagę 👇:

  1. skalowanie UI,
  2. zwiększenie rozmiaru czcionki elementów listy rozwijanej,
  3. zmianę niektórych tekstów lokalizacyjnych dostosowanych specjalnie pod inne sterowanie na smartfonie,
  4. nową osobną implementację zaznaczania kafelków do edycji poprzez naciskanie palcem na ekranie,
  5. nową osobną implementację zmiany wagi kafelków poprzez dodanie panelu pojawiającego się u góry,
  6. "margines" dla przesuwania palcem podczas próby zaznaczenia kafelka, które wymaga trzymania "w miejscu",
  7. zwiększenie wysokości suwaków do manipulacji wartością, aby było więcej miejsca dla palca chcąc je zaznaczyć,
  8. przesuwanie elementami UI z polami do wprowadzania wartości w momencie pojawienia się na ekranie klawiatury, aby nie zasłaniała podglądu na obecnie wpisaną wartość,
  9. obsługę wstawiania wygenerowanego zrzutu ekranu mapy przez API (aplikacje Androidowe z rozszerzeniem AAB nie zezwalają na bezpośredni dostęp do katalogu "DCIM" na smartfonie - można wyłącznie przez API o nazwie "MediaStore"),
  10. "odznaczanie" zaznaczonego kafelka po rozpoczęciu wyznaczania ścieżki (tam, gdzie najechanie kursorem tego nie wymagało, bo chcąc zaznaczyć przycisk trzeba "odjechać" od kafelka, tak tutaj na smartfonie, to zaznaczanie jest "kotwiczone" i trzeba było zadbać o ręczne "odpinanie" referencji 😅),
  11. aktualizowanie licznika wagi obecnie zaznaczonego kafelka po zresetowaniu wszystkich kafelków (znowu – tam, gdzie na PC nie trzeba było tego robić, bo kursor musiał przestać najeżdżać na kafelek celem kliknięcia przycisku do resetowania kafelków, tak tutaj trzeba było to uwzględnić!).

Przyznaję - zapierdol po całości 😆! Po pełnym przetestowaniu wszystkich przypadków, mogłem odetchnąć ze świadomością, że tym sposobem udało mi się zaimplementować pełne wsparcie na Androida i od tej pory, "A* Visualiser" jest dostępne do pobrania w sklepie Google Play - całkowicie za darmo 🌟!!!

"A* Visualiser" w serwisie Google Play

Widok aplikacji "A* Visualiser" w Google Play.

Polska wersja językowa

To druga najważniejsza funkcjonalność 🪄. "A* Visualiser" wspiera język biało-czerwonych 😁! Od tej pory, aplikacja wita użytkowników sceną wyboru jednego z dwóch dostępnych języków 👇:

Scena wyboru języka w "A* Visualiser"

Scena wyboru języka w "A* Visualiser".

Oczywiście można potem go zmienić będąc już w scenie samego edytora ✅.

O ile samo wstawienie kluczy lokalizacyjnych i tłumaczeń wraz ze skonfigurowaniem poszczególnych statycznych elementów UI nie było problemem, tak dostosowanie zmiany języka dla elementów dynamicznych (listy rozwijane i legenda rodzajów kafelków) już wymagało niekonwencjonalnej modyfikacji 🔧. Nie wchodząc w techniczne buty po same kolana, trzeba było skorzystać z obiektu lokalizacyjnego i wykonać odpowiednią czynność.

Dla listy rozwijanej, konieczne było skorzystanie ze zdarzenia "zmieniono łańcuch znaków" (który odpala się po ustawieniu innego języka), przeiterowanie po zdefiniowanych kluczach i ustawienie tekstu każdemu z elementów po kolei 💡. Dla legendy rodzajów kafelków wystarczyło postąpić podobnie. Każdemu z rodzajów podstawiamy nowy łańcuch lokalizacyjny ze wskazaniem na zdefiniowaną tabelę z kluczami lokalizacyjnymi i jeden po drugim otrzymuje właściwy klucz lokalizacyjny 👍.

Nowe ustawienia

Aktualizacja "A* Visualiser" do wersji 1.1, to również parę nowych opcji w samym programie 😇!

Rysowanie obszaru mapy

Jedną z nowości jest dodanie rysowania obszaru mapy (razem z marginesem wokół niej) w postaci siatki 😎. Teraz będziesz wiedzieć gdzie są granice mapy i jak daleko możesz przemieszczać kafelki od środka mapy 😉.

Rysowanie można w każdej chwili wyłączyć zaznaczając odpowiedni ptaszek w panelu ustawień 😄.

Przełączanie rysowania obszaru mapy w "A* Visualiser"

Przełączanie rysowania obszaru mapy w "A* Visualiser".

Konfiguracja prędkości ruchu kamery

Mała rzecz, która w jakiś sposób nie znalazła się na samym początku 😅. Od teraz możesz regulować sobie prędkością ruchu kamery 🎥.

Regulacja prędkości ruchu kamery w "A* Visualiser"

Regulacja prędkości ruchu kamery w "A* Visualiser".

I tyle! Co tu dużo pisać 😆?

Przełączanie się na tryb pełnoekranowy/okienkowy

Dodatkowa opcja w menu z przyciskami to możliwość swobodnego przełączania się na tryb pełnoekranowy i okienkowy. Opcja stworzona głównie dla wersji na "WebGL", aby można było korzystać z programu na pełnym ekranie na HTML5, tylko bez programowania jakichś przycisków poza samą aplikacją i pisania kodu w JS 🙂.

Przycisk do przełączania trybu pełnoekranowego/okienkowego w "A* Visualiser"

Przycisk do przełączania trybu pełnoekranowego/okienkowego w "A* Visualiser".

Przełączanie języka

Rzecz rozumiana samo przez się 😄. Kolejny nowo dodany przycisk przestawiający język w programie 👅.

Różnice w wersjach językowych w "A* Visualiser"

Różnice w wersjach językowych w "A* Visualiser".

To też nie wymaga dodatkowych akapitów 😉.

Suwak do przewijania okna głównego ustawień

Ta niezbędna modyfikacja (którą spowodowało dodanie jeszcze większej gamy opcji w panelu 😊) wymagało większej przeróbki całego okna poprzez wstawienie suwaka do przewijania zawartości w pionie ✅. Teraz, będzie można w przyszłości dodawać tyle opcji ile się chce, bez narażania się na "przebicie" wysokości ekranu 😇!

Przewijanie panelu głównego w "A* Visualiser"

Przewijanie panelu głównego w "A* Visualiser".

Wskaźnik zaznaczonego kafelka

Kolejnym dodatkowym elementem wizualnym, jest prościutki efekt "trzymania" kafelka, który jest teraz przemieszczany. Lekkie zwiększenie skali kafelka, nic więcej 😁!

Stworzone głównie z myślą o Androidzie, bo z uwagi na zaimplementowane sterowanie, naciskając palcem ten sam kafelek drugi raz, użytkownik nie wiedziałby czy kafelek został "naciśnięty", czy nie. To teraz już wie 😆!

Wskaźnik zaznaczonego kafelka w "A* Visualiser"

Wskaźnik zaznaczonego kafelka w "A* Visualiser".

Pełna lista zmian

A teraz konkret! Oto wszystkie zmiany jakie wprowadza aktualizacja "A* Visualiser" do wersji 1.1 👇:

  1. dodano pełne wsparcie na system Android,
  2. dodano polską wersję językową,
  3. dodano scenę wyboru języka na samym początku uruchamiania aplikacji,
  4. dodano rysowanie obszaru mapy (razem z marginesem),
  5. dodano suwak do regulowania prędkości ruchu kamery,
  6. dodano opcję wł. i wył. wyświetlania obszaru mapy,
  7. dodano opcję przełączania na tryb pełnoekranowy/okienkowy,
  8. dodano opcję przełączania języka,
  9. dodano suwak do przewijania zawartości panelu głównego z opcjami,
  10. dodano wskaźnik zaznaczonego kafelka podczas "przemieszczania",
  11. dostosowano odstępy elementów interfejsu użytkownika od krawędzi paneli,
  12. zmieniono grafikę ikonek w listach rozwijanych (ptaszek i strzałka w dół),
  13. zmieniono grafikę "rączki" w suwaku,
  14. zmniejszono maksymalne wymiary mapy z 50x50 do 30x30,
  15. poprawiono system tworzenia zrzutów ekranu (teraz strzałki śladu ścieżki są zawsze wyśrodkowane w danym kafelku na wygenerowanym obrazie, niezależnie od aktualnej pozycji),
  16. poprawiono kod źródłowy,
  17. usunięto błąd związany z wykrywaniem zaznaczania kafelka w momencie, gdy kursor najeżdżał na dowolny panel interfejsu użytkownika,
  18. usunięto błąd z przybliżaniem i oddalaniem kamery w momencie, gdy kursor znajdował się na dowolnym panelu interfejsu użytkownika,
  19. usunięto błąd z brakiem wykrywania czy kursor myszy wciąż najeżdża na kafelek w momencie, gdy użytkownik go wybrał i trzymając go, kursor wychodzi poza obręb kafelka,
  20. usunięto błąd związany z brakiem blokowania ustawień heurystyki w trakcie procesu wyszukiwania ścieżki,
  21. usunięto błąd związany z koniecznością ponownego wciśnięcia klawisza do poruszania kamerą w momencie, gdy zatrzymała się w wyniku pojawienia się panelu wyskakującego, a następnie zamknięcia go,
  22. usunięto błąd związany z błędnym blokowaniem dostępu do ustawień dotyczących symulacji w momencie, gdy zamknięto wyskakujący panel w trakcie procesu wyszukiwania ścieżki.

Na sam koniec informuję, że program jest otwartoźródłowy i można bez problemu sobie ściągnąć repozytorium z mojego GitHub'a ✅. Projekt powstał na potrzeby prelekcji, którą miałem przyjemność poprowadzić i ma na celu udowodnienie swoich kompetencji jako deweloper 💪.

Jason z "A* Visualiser"

Ja z "A* Visualiser".

A na koniec, zapraszam do obejrzenia rolki na moim profilu na IG 🚀!


I na tym kończę cały temat 💚! Cieszę się, że udało się to rozbudować i zrobić coś jeszcze w tym roku, zanim on się skończy 👍. To już ostatnia rzecz, którą mogłem zrobić przed 2026 rokiem.

PODOBNE ARTYKUŁY