#ifndef OBRAZ_TERENU #define OBRAZ_TERENU /* plik zawiera deklaracje klas wedlug hierarchi: |-ObrazTerenu -- abstrakcyjna klasa |-ObrazTerenuDomyslny |-ObrazTerenuDomyslnyAnimowany |-ObrazTerenuZPixmapy |-ObrazTerenuZPixmapyAnimowany. Sa to klasy obiektow bedacych wizualizacja poszczegolnych rodzajow terenow. ObrazTerenuDomyslny w konstruktorze dostaje sekwecje klatek z rysunkami. Wybiera losowo jedna i ja wyswietla ze stopniem glebokosci (os z) zdefiniowanym w stale_ObrazPlanszy, a charakterystycznym dla danego terenu. ObrazTerenuDomyslnyAnimowany dziedziczy z ObrazuTerenuDomyslnego. Z sekwencji klatek z rysunkami, ktora dostaje w konstruktorze wybiera klatke o nr 0 jako stala (tlo - stopien glebokosci (os z) charakterystyczny dla danego terenu) reszta klatek jest uzywana do animacji. Stopien glebokosci animacji (os z) jest w stosunku do tla zwiekszony o os z Leminga (tzn. Z_LEM). ObrazTerenuZPixmapy dostaje qpixmape calej planszy i z niej wycina rysunek przynalezny sobie. Na rysunek moze byc nalozona dodatkowo maska (np.strzepiaca, schody). Domyslnie jest tylko pobierana maska odpowiadajaca fragmentowi wycietej pixmapy. ObrazTerenuZPixmapyAnimowany dostaje dodatkowo sekwencje klatek animacji. Dziala podobnie jak ObrazPlanszyDomyslnyAnimowany z ta roznica ze jako tlo jest wczytywany odpowiedajacy fragment z zadanej pixmapy. Animacja o nr 0 jest pomijana. */ class ObrazTerenu; #ifndef OBRAZ_PLANSZY_ABS #include "naglowki/ObrazPlanszyAbs.h" #endif #ifdef ANIMACJA_WYBIURCZA #define SITO 2 /* okresla z jaka czestotliwascia ma sie animowac teren co ile wywolan*/ #else #define SITO 1 #endif class ObrazTerenu : public QObject { Q_OBJECT public: ObrazTerenu(){}; ~ObrazTerenu(){}; public slots: virtual void rysujSie(){}; }; class ObrazTerenuDomyslny : public ObrazTerenu { Q_OBJECT public: ObrazTerenuDomyslny (){}; ObrazTerenuDomyslny (Para,QwSpritePixmapSequence*,typ_teren); virtual ~ObrazTerenuDomyslny (){ delete obraz;}; protected: QwSprite *obraz; /* sprite terenu */ Para wspPlanszy; /* wspolrzedne terenu na planszy */ QPoint wspObrazu; /* - || - ekranu graficznego */ int liczba_klatek; }; class ObrazTerenuDomyslnyAnimowany : public ObrazTerenuDomyslny { Q_OBJECT public: ObrazTerenuDomyslnyAnimowany (){}; ObrazTerenuDomyslnyAnimowany (Para,QwSpritePixmapSequence*,typ_teren); virtual ~ObrazTerenuDomyslnyAnimowany (){ delete animacja; disconnect(this);}; public slots: virtual void rysujSie(); protected: QwSprite *animacja; }; class ObrazTerenuZPixmapy : public ObrazTerenu { Q_OBJECT public: ObrazTerenuZPixmapy (){}; ObrazTerenuZPixmapy (Para,QPixmap*,typ_teren,QPixmap* maska=0); virtual ~ObrazTerenuZPixmapy (){ delete obraz;}; protected: void stworzSwojObrazZ(QPixmap* rysunek,typ_teren teren,QPixmap* maska=0); QwSprite *obraz; Para wspPlanszy; /* wspolrzedne terenu na planszy */ QPoint wspObrazu; /* - || - ekranu graficznego */ }; class ObrazTerenuZPixmapyAnimowany : public ObrazTerenuZPixmapy { Q_OBJECT public: ObrazTerenuZPixmapyAnimowany (Para,QPixmap*,QwSpritePixmapSequence* anim,typ_teren,QPixmap* maska=0,int sit=SITO); virtual ~ObrazTerenuZPixmapyAnimowany (){ delete animacja;disconnect(this);}; public slots: virtual void rysujSie(); protected: QwSprite *animacja; int liczba_klatek; int sito; /* do ignorowania zmian klatek */ }; #endif