logo2
Fizyka Chemia Matematyka strona główna   FIZYKA ZADANIA WZORY TEORIA ROZWIĽZANIA ZADAŃ   FIZYKA GIMNZAJUM ZADANIA WZORY TEORIA   CHEMIA ZADANIA WZORY TEORIA ROZWIĽZANIA ZADAŃ   MATEMATYKA WZORY ZADANIA ROZWIĽZANIA ZADAŃ   HISTORIA HISTORIA W PIGUŁCE NA TELEFON   JĘZEYK POLSKI EPOKI LITERACKIE   MODELARSTWO SZKUTNICZE SZKUTNICTWO ŻAGLOWCE HISTORYCZNE   TWORZENIE GIER 2D W DELPHI  
omega

Pobierz kod OIL_E

ODCZYT DANYCH Z KILKU PLIKÓW *.OIL


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.

 
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:



procedure TForm1.ToolButton1Click(Sender: TObject);
var
tempOmegaImageList:TOmegaImageList;
picture:TPicture;
i:integer;
begin
OpenDialog1.InitialDir:=ExtractFilePath(ParamStr(0));
if OpenDialog1.Execute then begin
tempOmegaImageList:=TOmegaImageList.Create(nil);
tempOmegaImageList.ImageList.LoadFromFile(OpenDialog1.FileName);
ProgressBAr1.Visible:=true;
ProgressBar1.Position:=0;
picture:=tpicture.Create;
for i:=0 to tempOmegaImageList.ImageList.Count-1 do begin
picture.Assign(tempOmegaImageList.ImageList.Items[i].Picture);

OmegaImageList1.ImageList.Add;
OmegaImageList1.ImageList.Items[OmegaImageList1.ImageList.Count-1].SetPicture(picture);
OmegaImageList1.ImageList.Items[OmegaImageList1.ImageList.Count-1].Name:=
tempOmegaImageList.ImageList.Items[i].Name;
OmegaImageList1.ImageList.items[OmegaImageList1.Imagelist.count-1].DisplayName :=
tempOmegaImageList.ImageList.Items[i].DisplayNAme;
OmegaImageList1.ImageList.Items[OmegaImageList1.ImageList.Count-1].Picture.Assign(picture);
OmegaImageList1.ImageList.Items[OmegaImageList1.ImageList.Count-1].TileWidth:=
tempOmegaImageList.ImageList.Items[i].TileWidth;
OmegaImageList1.ImageList.Items[OmegaImageList1.ImageList.Count-1].TileHeight:=
tempOmegaImageList.ImageList.Items[i].TileHeight;
OmegaImageList1.ImageList.Items[OmegaImageList1.ImageList.Count-1].Transparent:=
tempOmegaImageList.ImageList.Items[i].Transparent;
OmegaImageList1.ImageList.Items[OmegaImageList1.ImageList.Count-1].TransparentColor:=
tempOmegaImageList.ImageList.Items[i].TransparentColor;
//TA LINIA JEST BARDZO WAŻNA GDY CHCEMY WYŚWIETLIĆ DANY ZASÓB W RZECZYWISTEJ GRZE
//TU JEJ NIE UŻYWAM BO NIE MA UŻYTEGO OMEGATIMER
//OmegaImageList1.ImageList.Items[OmegaImageList1.ImageList.Count-1].Init;
//
ComboBox1.Items.Add(tempOmegaImageList.ImageList.Items[i].Name);
ProgressBar1.StepIt;
end;//koniec for
ProgressBar1.Visible:=false;
picture.free;
tempOmegaImageList.Free;
StatusBar1.Panels[3].Text :='Ilość plików: '+inttostr(ComboBox1.Items.Count);
end;
end;
code>




Jak widać do tymczasowego

tempOmegaImageList:TOmegaImageList;

ł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

OmegaImageList1.ImageList.Items[OmegaImageList1.ImageList.Count-1].Init;

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.

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...
I to by było na tyle w tym temacie

KONIEC

Nowosć

Układ okresowy pierwistków chemicznych
Układ okresowy  na telefon, tablet, smartfon
Darmowa aplikacja
Okręty- bitwa morska
okręty gra sieciowa
Darmowa aplikacja na Androida
Kalkulator jednostek fizycznych
przelicznik jednostek fizycznych  na telefon, tablet, smartfon
Darmowa aplikacja
Znaki drogowe.
znaki drogowe na telefon, tablet, smartfon
Darmowa aplikacja na Androida
Saper (512x512 pól)
Saper (512x512 pól)
Darmowa gra logiczna
The Friends of Mine
The Friends of Mine
Darmowa gra logiczna

MACHO. KAMIENNA LEGENDA
MACHO. KAMIENNA LEGENDA game for android
MACHO. STONE LEGEND
Game 2d for Android

Geometria. Wzory
geometri kalkulator wzory figur bryl

Alkomat
Alkomat na androida
Zobacz obliczenia zadań:
Zbiór zadań z fizyki K Chyla Zbiór zadań z fizyki 1 W Mroszczyk, J. Salach
Zbiór zadań z chemii zakres podstawowy K Pazdro Zbiór zadań z chemii zakres rozszerzony K Pazdro
 

epomoce.pl
Fizyka
Fizyka- zadania 1
Fizyka- zadania 2
Zadania dostęp www
Fizyka- wzory
Fizyka- teoria
Chemia
Zadania zak. roz.
Zadania zak. podst.
Zadania dostęp www
Chemia-teoria

Matematyka
Język polski
Historia (pigułka)
Historia (rozszerzona)
Fizyka- gimnazjum
Fizyka zadania- gimnazjum
Fizyka- gimnazjum teoria
Znaki drogowe
 
Matematyka wzory zadania gimnazjum
programowanie
koga
grafika2D


 


2008-2012 ©www.ePomoce.pl

FIZYKA, CHEMIA, MATEMATYKA, HISTORIA, JĘZYK POLSKI. Rozwiazania zadań z fizyki, rozwiazania zadań z chemii, zadania z fizyki, zadania z chemii