Tym razem będzie to najłatwiejszy i najkrótszy materiał dotyczący OMEGI i prawdopodobnie dość cenny. Co prawda doceni to ta osoba co głowiła się nad sposobem łączenia kilku plików zasobów graficznych w jeden podczas ładowania gry. Przypominam sobie, że jeszcze na starej lokalizacji forum (to jest na bajo)problem był poruszany. Nie przyznałem się w tedy, że znam rozwiązanie. Dlaczego ? Nie potrafię podać powodów. Może dlatego, że hołduję zasadzie: SZEWC BEZ BUTÓW CHODZI BO POWIEDZIAŁ JAK SIĘ BUTY ROBI.
Ale mnie zniosło z tematu:)

Czym są zasoby grafiki zapisane w pliku *.oil?
To zbiór plików graficznych tworzących kafle świata, postacie czy też gadżety. Oprócz samej grafiki niosą w sobie informację o:

• nazwie pojedynczego pliku OmegaImageList1.ImageList.Items[i ].Name
• rozmiarze klatki OmegaImageList1.ImageList.Items[i ].TileWidth (TileHeight)
• przezroczystości OmegaImageList1.ImageList.Items[i ].Transparent
• kolorze przezroczystym OmegaImageList1.ImageList.Items[i ].TransparentColor

Ogólnie można w nich zapisać wszystkie właściwości, które da się ustawić po znaku kropki OmegaImageList1.ImageList.Items[i ]..Oczywiście musimy sobie odpowiedni edytor zasobów graficznych stworzyć. Standardowo do komponentu OMEGI dołączony jest prosty edytor takich zasobów graficznych. Znajduje się on w …\Utilities\OmegaImageList_Editor.

Co nam daje odczyt danych z kilku plików *.oil?

Wyobraźmy sobie taka sytuację mamy w naszym świecie gry różne poziomy, w których znajdują się różne gadżety, stwory, panuje inna pora roku itp. to może dojść do takiej sytuacji, że mając jeden plik *.oil nie cała grafika będzie wykorzystana. A to oznacza, że nie potrzebnie zawalam sobie pamięć. Można oczywiście tak opracować zasoby, z na dany poziom gry będziemy mieć inne pliki *.oil. Ale to może spowodować, że pewne części obrazów graficznych czy też całe pliki graficzne będą się powtarzać w tych zasobach.
Jak sobie z tym poradzić? Nasuwa się prosty pomysł otwierać zasoby *.oil i z nich wybierać co nas w danym poziomie gry interesuje

Jak załadować kilka plików *.oil do jednego TomegaImageList? – sedno artykułu

Rozwiązanie jest bardzo proste ale trudno jest na nie wpaść (tak jak napisałem na wstępie doceni to ten, kto nad tym się głowił, pozostali pewnie potraktują to rozwiązanie jak kolejny skrypt – określenie do którego nie jestem przyzwyczajony )

Podaję kod rozwiązania:

Jak widać do tymczasowego 

ładujemy pliki odczytane z dysku a potem do tego właściwego TOmegaImageList w pętli „przelewamy” wszystkie właściwości. Oczywiście w takiej pętli można wybiórczo ładować grafikę na przykład rozróżniając ją po nazwie. I to cała tajemnic. Proste ale sporo czasu mi to zajęło zanim mnie oświeciło:)

Uwaga:

Linia kodu 

musi być użyta w rzeczywistej grze (patrz komentarz w kodzie programu). Tu na potrzeby artykułu została pominięta. Wręcz w tej konstrukcji programu poglądowego powoduje błąd.

I to by było na tyle w tym temacie

Pozdrawiam oksal Zbylitowska Góra 22 września 2006

PS
W załączniku do artykułu oprócz kodu znajdują się dwa pliki zasobów: TILES.OIL i stwory001.oil , które można złączyć w jeden i zapisać pod dowolna nazwą. Tak powstaną nam trzy pliki i znów możemy dodać je do siebie….

Autor: Oksal

Załączniki

  • zip odczyt
    Rozmiar pliku: 167 KB