// Level.hpp : Level class // // 08.09.1998 / DH - First release // 16.11.1998 / DH - Layer vertical scrolling // 17.11.1998 / DH - Redesign // 23.11.1998 / DH - Lights redone // 24.11.1998 / DH - Enemies extended // 26.11.1998 / DH - Weather included // 02.12.1998 / DH - Level dynamically from memory // // Copyright (c) 1998 Daniel Hartmeier. All rights reserved. #ifndef __Level__ #define __Level__ class Level; #include "Sprite.hpp" #include "Enemy.hpp" #include "Layer.hpp" #include "Hero.hpp" #include "Light.hpp" #include "Weather.hpp" #include "List.hpp" // ------------------------------------------------------------------- class Level { public: Level(Handler &handler, Hero &hero, Image *image, const unsigned char *data); virtual ~Level(); virtual void reset(); virtual void act(unsigned long pad); virtual void draw(GsOT *ot); virtual void scroll(); virtual int moveHorz(int x); virtual int moveVert(int y); virtual void checkCollision(int x, int y, int &cx, int &cy, unsigned char &attr) const; virtual Tile *createTile(unsigned char type); virtual const Weather &getWeather() const { return *weather; } virtual void addBullet(Bullet *bullet) { bullets.Append(bullet); return; } protected: Handler &handler; Hero &hero; Image *image; Layer *center, *back; List enemies; List bullets; List lights; ExitSprite *exitsprite; Weather *weather; private: virtual void collisionTiles(PersonSprite &sprite); virtual void lightSprite(List &lights, Sprite &sprite, int baseIntensity, bool background); virtual void lightTiles(List &lights, Tile **tiles, int baseIntensity, bool background); bool loadingGun; const unsigned char *objects; }; // ------------------------------------------------------------------- class Level1 : public Level { public: Level1(Handler &handler, Hero &hero, Image *image, const unsigned char *data); virtual void reset(); protected: private: }; // ------------------------------------------------------------------- class Level2 : public Level { public: Level2(Handler &handler, Hero &hero, Image *image, const unsigned char *data); virtual void reset(); protected: private: }; // ------------------------------------------------------------------- #endif