Platform game written for the GHI/OutrageousCircuits RETRO game device. Navigate the caves collecting all the pickups and avoiding the creatures and haunted mine carts that patrol the caves. Oh and remember to watch out for the poisonous plants... This game demonstrates the ability to have multiple animated sprites where the sprites can overlap the background environment. See how the player moves past the fence and climbs the wall in the 3rd screen.

Dependencies:   mbed

Committer:
taylorza
Date:
Mon Feb 16 03:46:57 2015 +0000
Revision:
16:f9227904afc4
Parent:
14:b4884a31069e
Added a 4th game screen

Who changed what in which revision?

UserRevisionLine numberNew contents of line
taylorza 9:34008d8b1cdf 1 #ifndef __SCENE_H__
taylorza 9:34008d8b1cdf 2 #define __SCENE_H__
taylorza 9:34008d8b1cdf 3
taylorza 14:b4884a31069e 4 #define MAX_GAMEOBJECTS 3
taylorza 9:34008d8b1cdf 5 #define MAX_PICKUPS 5
taylorza 9:34008d8b1cdf 6
taylorza 9:34008d8b1cdf 7 class Scene
taylorza 9:34008d8b1cdf 8 {
taylorza 9:34008d8b1cdf 9 public:
taylorza 9:34008d8b1cdf 10 Scene();
taylorza 9:34008d8b1cdf 11 virtual ~Scene();
taylorza 9:34008d8b1cdf 12
taylorza 9:34008d8b1cdf 13 inline Point getPointFromScene(Point &pt) { return Point(_x + pt.X, _y + pt.Y); }
taylorza 9:34008d8b1cdf 14
taylorza 9:34008d8b1cdf 15 protected:
taylorza 9:34008d8b1cdf 16 virtual void restartScreen();
taylorza 9:34008d8b1cdf 17 virtual void update();
taylorza 9:34008d8b1cdf 18 virtual void draw();
taylorza 9:34008d8b1cdf 19
taylorza 9:34008d8b1cdf 20 protected:
taylorza 9:34008d8b1cdf 21 void setMap(const uint8_t *map, uint8_t xCells, uint8_t yCells, const Block *blocks, Sprite *sprites);
taylorza 9:34008d8b1cdf 22 void addGameObject(GameObject *gameObject);
taylorza 9:34008d8b1cdf 23 void removeGameObject(GameObject *gameObject);
taylorza 9:34008d8b1cdf 24
taylorza 9:34008d8b1cdf 25 const GameObject* detectCollision(GameObject *primary);
taylorza 9:34008d8b1cdf 26 const Block* detectBlock(GameObject *primary);
taylorza 9:34008d8b1cdf 27
taylorza 9:34008d8b1cdf 28 void setPosition(uint8_t x, uint8_t y);
taylorza 9:34008d8b1cdf 29 void drawMap();
taylorza 9:34008d8b1cdf 30
taylorza 9:34008d8b1cdf 31 void drawBlock(uint8_t blockId, int16_t x, int16_t y);
taylorza 9:34008d8b1cdf 32 void drawSprite(uint8_t spriteId, int16_t x, int16_t y, int16_t dx, int16_t dy, bool flip);
taylorza 9:34008d8b1cdf 33
taylorza 9:34008d8b1cdf 34 inline uint8_t getMapXCells() {return _xCells;}
taylorza 9:34008d8b1cdf 35 inline uint8_t getMapYCells() {return _xCells;}
taylorza 9:34008d8b1cdf 36
taylorza 9:34008d8b1cdf 37 inline uint8_t getX() {return _x;}
taylorza 9:34008d8b1cdf 38 inline uint8_t getY() {return _y;}
taylorza 9:34008d8b1cdf 39
taylorza 9:34008d8b1cdf 40 protected:
taylorza 9:34008d8b1cdf 41 bool canEnter(uint16_t x, uint16_t y);
taylorza 9:34008d8b1cdf 42 bool canEnterFromTop(uint16_t x, uint16_t y);
taylorza 9:34008d8b1cdf 43 const Block& getBlock(uint16_t x, uint16_t y);
taylorza 9:34008d8b1cdf 44
taylorza 9:34008d8b1cdf 45 void animate(uint8_t spriteId);
taylorza 9:34008d8b1cdf 46
taylorza 9:34008d8b1cdf 47 private:
taylorza 9:34008d8b1cdf 48 bool pickupObject(uint8_t cellX, uint8_t cellY);
taylorza 9:34008d8b1cdf 49 bool isHeld(uint8_t cellX, uint8_t cellY);
taylorza 9:34008d8b1cdf 50 void compose(const Block& block, uint8_t x, uint8_t y);
taylorza 9:34008d8b1cdf 51 void compose(const Sprite& sprite, uint8_t x, uint8_t y, bool flip);
taylorza 9:34008d8b1cdf 52 bool detectCollision(GameObject *o1, GameObject *o2);
taylorza 9:34008d8b1cdf 53
taylorza 9:34008d8b1cdf 54 private:
taylorza 9:34008d8b1cdf 55 static Bitmap4bpp BitmapBuffer;
taylorza 9:34008d8b1cdf 56
taylorza 14:b4884a31069e 57 GameObject *_gameObjects[MAX_GAMEOBJECTS];
taylorza 9:34008d8b1cdf 58 const uint8_t *_map;
taylorza 9:34008d8b1cdf 59 uint8_t _x;
taylorza 9:34008d8b1cdf 60 uint8_t _y;
taylorza 9:34008d8b1cdf 61 uint8_t _objectsHeld;
taylorza 9:34008d8b1cdf 62 uint8_t _xCells;
taylorza 9:34008d8b1cdf 63 uint8_t _yCells;
taylorza 9:34008d8b1cdf 64 const Block *_blocks;
taylorza 9:34008d8b1cdf 65 Sprite *_sprites;
taylorza 9:34008d8b1cdf 66 Point _pickups[MAX_PICKUPS];
taylorza 9:34008d8b1cdf 67
taylorza 9:34008d8b1cdf 68 friend class Game;
taylorza 9:34008d8b1cdf 69 friend class GameObject;
taylorza 9:34008d8b1cdf 70 };
taylorza 9:34008d8b1cdf 71 #endif //__SCENE_H__