
PANG XE/XL EDITOR V3.6 (11.04.2011)
-----------------------------------

.Wstp

Program do edycji poziomw w grze PANG (Atari XE/XL).

Pole gry skada si z 19 wierszy (152 linie) i 40 kolumn (160 pixli).

Moliwe jest podkolorowanie tylko pierwszych 14 wierszy pola gry przy pomocy 3 graczy i 3 pociskw.

Bohater ma moliwo poruszania si w prawo/lewo. W pionie porusza si tylko po drabinkach.

Dostpnych jest 5 kul rnych rozmiarw, trafienie kadej z kul powoduje pojawienie si dwch nowych kul
o rozmiarze mniejszym. Nie ma moliwoci zwikszenia liczby dostpnych kul ani zmiany ich wygldu.

S dwa typy murkw/podestw (pojcia "murek" i "podest" uywane s zamiennie, okrelaj ten sam typ
elementw pola gry): "twardy" i "mikki". Twardy murek/podest nie moe zosta
rozbity przez harpun, mikki murek/podest zostaje rozbity (znika) po trafieniu harpunem.

Murki/podesty ograniczaj moliwo przemieszczania si kul, kule odbijaj si od murkw/podestw.

Murki/podesty ograniczaj take moliwoci przemieszczania si bohatera. Bohater spada w d jeli zejdzie
z murku/podestu. Podczas spadania bohater ma moliwo manewrowania, nie ma moliwoci wystrzelenia
harpunu. Harpun wystrzeliwuje tylko jeli stoi na jakim murku/podecie, konkretnej pozycji na drabince albo gruncie.

Murki twarde mona uy na caej powierzchni pola gry, murki mikkie bez 3 ostatnich wierszy pola gry.

Elementy pola gry zapisane s pliku PANG.MIC i PANG.INI, ich zmiana nie jest wskazana, moe wiza si z potrzeb poprawienia kodu gry.

Kule maj stay wygld (nie s przechowywane jako bitmapy tylko jako rozptlony kod 6502), pozostae
elementy (murki/podesty, drabinki) mog przyjmowa rne ksztaty.


Aktualnie mamy:

OBJECT 0	kula o wysokoci 40 linii (GROUP ID = 0)
OBJECT 1	kula o wysokoci 32 linii (GROUP ID = 0)
OBJECT 2	kula o wysokoci 24 linii (GROUP ID = 0)
OBJECT 3	kula o wysokosci 16 linii (GROUP ID = 0)
OBJECT 4	kula o wysokoci 8 linii  (GROUP ID = 0)

OBJECT 5	murek0 (GROUP ID = 1 dla murka twardego, 128..254 dla murka mikkiego)
OBJECT 6	murek1 (GROUP ID = 1 dla murka twardego, 128..254 dla murka mikkiego)
OBJECT 7	murek2 (GROUP ID = 1 dla murka twardego, 128..254 dla murka mikkiego)

OBJECT 8	drabinka (GROUP ID = 2..119)

OBJECT 9..24	murki (GROUP ID = 1 dla murka twardego, 128..254 dla murka mikkiego)

OBJECT 25..31   czarna krawd murku (GROUP ID = 120..127), razem z PMG OVERLAY pozwala stworzy murek jednolitego koloru otoczony czarn krawdzi


Aby rozpocz edycje naley postpi w nastpujcej kolejnoci:

- LOAD *.TEX	wczytujemy tekstur pola gry (np. TEX1.TEX), dziki temu inicjujemy te kolory
- LOAD *.OBJ	wczytujemy obiekty (OBJECTS.OBJ), obiekty wycinane s z pliku ..OBJ\OBJECTS.MIC
- LOAD *.LEV	wczytujemy jaki level (*.LEV) lub zaczynamy edytowa nowy FILE -> NEW LEVEL



++++++++++++++++++++++++++++++++++++ !!!  U W A G A  !!! +++++++++++++++++++++++++++++++++++++++++


1. !!! Musi zosta ustawiona przynajmniej 1 kula aby level mg zadziaa !!!
------------------------------------------------------------------------------

2. !!! GROUP ID dla murkw twardych koniecznie = 1 !!!
-------------------------------------------------------

3. !!! Level moe zawiera maksymalnie 2 najwiksze kule (maksymalna liczba ruchomych obiektw = 32) !!!
---------------------------------------------------------------------------------------------------------


!!! Jeli punkt 1 lub punkt 2 nie zostanie speniony wwczas na pewno gra si zawiesi. !!!



.INSERT MODE

Edytor umoliwia ustawienie rnych obiektw na planszy pola gry. Obiekty wybieramy z dolnego menu,
nastpnie klikamy dwukrotnie lewym klawiszem myszki na obszarze pola gry aby ustawi wybrany obiekt
lub klikamy prawym klawiszem myszki i wybieramy opcje PASTE z okienka "popup menu" ktre si pojawio po
klikniciu prawym klawiszem myszki.

Nie ma moliwoci ustawiania obiektu na obiekcie, np. kilka murkw na tej samej pozycji X:Y. Edytor zignoruje
prb naoenia murku na murek.

Istnieje moliwo ustawienia kuli na kuli pod warunkiem e ich lewe grne naroniki si nie pokrywaj, tzn.
e kula nie moe przykry idealnie kuli pod spodem, musi by przesunita conajmniej o 1 znak.


.EDIT MODE

Po ustawieniu obiektw na planszy pola gry mamy moliwo okrelenia dodatkowych informacji dla obiektw.

Na podstawie grupy (GROUP ID) rozrniane s obiekty wystpujce w grze, wykrywana jest kolizja z kulami, kolizja
harpunu z murkiem/podestem "mikkim" lub "twardym". GROUP ID przypisany moe zosta pojedyczemu lub wielu obiektom.

Obiekt, ktry chcemy edytowa wskazujemy poprzez kliknicie na nim lewym klawiszem myszki. Taki obiekt lub
obiekty zostan wwczas oznaczone t przerywan lini. Mamy moliwo wskazania pojedyczego obiektu lub
wikszej ich iloci.

Wiksz ilo obiektw zaznaczamy przytrzymujc lewy klawisz myszki i przecigajc kursor myszki nad interesujcymi
nas obiektami.

Moemy okreli ktry obiekt ma by na wierzchu a ktry pod spodem, oczywicie dotyczy to obiektw ktre
nachodz na siebie, np. kule.

Po zaznaczeniu obiektu klikamy prawym klawiszem myszki w zaznaczony obszar, pojawia si menu (popup menu),
dostajemy moliwo zmiany (kiedy klikniemy prawym klawiszem myszki gdy nie ma zaznaczonego adnego
obiektu wwczas pojawi si inne popup menu z jedn moliw opcj "PASTE"):


BRING TO FRONT		wskazany obiekt bdzie na wierzchu (przykryje inny obiekt jeli takowy jest)

SEND TO BACK		wskazany obiekt bdzie pod spodem (inny obiekt go przykryje jeli takowy jest)


ADD PMG OVLERLAY	ustawia znaczniki podbarwiania przed duchy/pociski dla zaznaczonych elementw pola gry

CLR PMG OVERLAY		usuwa znaczniki podbarwiania przez duchy/pociski dla zaznaczonych elementw pola gry


PARAMETER		parametr obiektu, parametry interpretowane s tylko dla KUL (GROUP ID=0),
			dla pozostaych obiektw s ignorowane, parametr okrela wartoc pocztkow
			kierunku poruszania si kuli

PARAMETER = 0		pozycja X kuli bdzie zwikszana o 0, kula bdzie porusza si tylko w pionie

PARAMETER = 1		pozycja X kuli bdzie zwikszana o 1, kula zacznie porusza si w prawo

PARAMETER = 255		pozycja X kuli bdzie zwikszana o 255 (-1), kula zacznie porusza si w lewo


GROUP ID		grupa, okrela rodzaj obiektu, bedne przypisanie GROUP ID=0 do jakiego murku
			skoczy si zawieszeniem gry

GROUP ID = 0		grupa zerowa (=0) zarezerwowana jest tylko dla ruchomych obiektw czyli dla KUL

GROUP ID = 1		grupa = 1 zarezerwowana jest tylko dla murkw "twardych"

GROUP ID = 2..119	grupa z przedziau 2..119 zarezerwowana jest dla drabinek

GROUP ID = 120..127	grupa z przedziau 120..127 zarezerwowana jest dla murkw "twardych" bitmapowych

GROUP ID = 128..254	grupa z przedziau 128..254 zarezerwowana jest dla murkw "mikkich"

GROUP ID = 255		warto zarezerwowana do okrelenia koca pliku z danymi levelu


COPY			kopiuje zaznaczone obiekty, mamy pniej moliwo ich wklejenia przez PASTE
			(PASTE wybieramy z popup menu kiedy aden obiekt nie jest zaznaczony)

DELETE			usunicie zaznaczonych obiektw (moemy je przywrci poprzez UNDO)


.PMG MODE

W tym trybie edycji mamy moliwo ustawienia pozycji poziomej trzech duchw i trzech pociskw.

W zalenoci od tego jak ustawimy duchy i pociski uzyskamy efekt pobarwienia wybranych elementw pola gry,
cakowity lub czciowy.

Ustawienie znacznikw OVERLAY (EDIT MODE) sygnalizuje potrzeb zapalenia piksli ducha/pocisku jednak
moliwe jest to tylko gdy taki duch/pocisk znajduje si nad obiektem.

Duchy i pociski nie pokrywaj caej wysokoci ekranu, ich maksymalna wysoko musi zosta
ustalona tak aby nie nachodzia na maksymaln pozycj pionow gracza -1 wiersz.

Maksymalnie mona podkolorowa 14 wierszy, ustawienie mniejszej iloci wierszy spowoduje
skrcenie pliku *.lev



.KULE

GROUP ID = 0 jest przypisany tylko kulom.

Kulom musimy dodatkowo przypisa jeszcze PARAMETER (0,1,255) okrelajcy pocztkowy kierunek poruszania
si kuli. 

PARAMETER = 0   kula odbija si tylko w pionie, nie porusza si ani w prawo ani w lewo
PARAMETER = 1   kula zaczyna przemieszcza si w prawo
PARAMETER = 255 kula zaczyna przemieszcza si w lewo


.MUREK "MIKKI"

GROUP ID = 128..254 jest przypisany tylko murkowi "mikkiemu"

Murki mikkie mog wystpowa tylko na wysokoci pierwszych 16 wierszy liczc od gry ekranu, z ostatnich 3 wierszy pola gry murki mikkie
nie zostan usunite.

Murki mikkie przykrywaj drabinki, odsaniaj drabink dopiero po trafieniu w taki murek harpunem.

Bohater nie moe przechodzi przez murki, ani przez mikkie ani przez twarde.

Po trafieniu harpunem w taki murek zostaje on usunity zaczynajc od znaku w ktry trafi harpun.
Nastpnie naprzemiennie (co klatke) murek taki zostaje usunity na prawo/na lewo od miejsca w ktre trafi harpun.

Procedura usuwania murku przeglda kolumn (16 znakw) w poszukiwaniu obiektw z GROUP ID, takim samym 
jak to w ktre trafi harpun, przeglda tak dugo dopki nie napotka kolumny w ktrej nie wystpuje ju obiekt
z poszukiwanym GROUP ID.

Jeli mikki murek by ksztatu pionowego wwczas zostanie usunity najszybciej (tak dziaa procedura
usuwajca murek), jeli ksztatu poziomego to gracz zdy zaobserwowa jak murek kasowany jest znak po znaku.

Dlatego dobrze jest jeli mikkie murki nie s zbyt szerokie, np. na ca szeroko ekranu, poniewa wtedy
ich usunicie bdzie trwao najduej. Najlepiej gdyby miay max szeroko 8 znakw w wierszu (mona dobra
t warto dowiadczalnie). 

Moemy ustawi jeden murek, przypisa mu wsplny GROUP ID, a potem poprzecina go pustymi miejscami, w ten
sposb stworzymy wiele mikkich murkw mniejszym nakadem pracy. Trafienie takiego murku nie spowoduje 
usunicia wszystkich murkw, tylko tego ktry jest ograniczony pustymi miejscami.

Jeli chcemy aby byo kilka murkw mikkich w kilku wierszach jeden pod drugim, wwczas bdziemy musieli
kademu murkowi z danego wiersza przypisa osobny GROUP ID.

Jeli wszystkim murkom z kadego wiersza (jeden nad drugim) przypiszemy ten sam GROUP ID wwczas
po trafieniu w najbliszy murek znikn wszystkie murki znajdujce si w tej samej kolumnie.


.MUREK "TWARDY"

GROUP ID = 1 jest przypisany tylko murkowi "twardemu".

GROUP ID = 120..127 jest przypisany murkom twardym dla OBJECT 25..31, takie murki s rysowane bez udziay znakw bezporednio na bitampie tekstury.

Przez murek "twardy" nie przebije si harpun.

Bohater nie moe przechodzi przez murki.

Murki twarde nie przesaniaj drabinek, drabinki rysowane s na takich murkach.


!!! UWAGA: Murki twarde otaczane s dodatkowo czarn ramk w celu zwikszenia ich widocznoci !!!


.DRABINKA

GROUP ID = 2..119 jest przypisany tylko drabinkom.

Drabinki dla kul s niewidzialne.

Drabinki mog zosta przesonite przez murek mikki ale nie przez twardy.

Kada drabinka musi posiada oddzielny GROUP ID, dziki temu unikniemy takiej sytuacji gdy bohater czciowo
znajduje si na dwch drabinkach ustawionych obok siebie i moe chodzi po nich gra/d.

Jeli drabinki oddalone s od siebie o conajmniej 2 znaki wwczas moemy uy tej samej wartoci GROUP ID,
ktra zostaa przypisana jakiej innej wczeniejszej drabince. Odstp 2 znakw pomidzy drabinkami
gwarantuje nam e nie wystpi efekt jednoczesnego chodzenia po dwch drabinkach opisany wyej.

Po drabince bohater chodzi gra/d, albo lewo/prawo. Bohater ma moliwo wczeniejszego zejcia z drabinki,
moe take spa na inn drabink i kontynuowa wchodzenie/schodzenie po niej lub spa z drabinki.


.PLIK konfiguracyjny *.INI

[objects]		; globalne wartoci dla wszystkich obiektw
w=5			; maksymalna dopuszczalna szeroko obiektw, w=5 oznacza 5 znakw
h=5			; maksymalna dopuszczalna wysoko obiektw, h=5 oznacza 5 znakw
b=5			; numer obiektu reprezentujcego murek, b=5 oznacza 5 obiekt

[object20]		; kolejny obiekt, konkretnie numer #20, najlepiej numerowa kolejno
o=1			; overlay dla obiektu, taki obiekt mona nakada na inne obiekty (dotyczy drabinek)
g=1			; domylna grupa do ktrej bdzie nalea klocek, wicej o grupach w instrukcji
i=1			; czy klocek bdzie w inwersie (i=1 tak, i=0 nie)
w=1			; szeroko w-idth, w=1 oznacza szeroko 1 znaku
h=1			; wysoko h-eight, h=1 oznacza wysoko 1 znaku
v=1			; dodatkowa informacja przydatna tylko dla KUL
tc=$ff			; TRANSPARENT COLOR, tc=$ff oznacza przeroczysty kolor $ff (%11) obiektu
cut=13 15		; wsprzdne wycinania bitmapy z pliku MIC, cut = KOLUMNA WIERSZ
f=main_objects.mic	; plik MIC z klockami

