////////////////////////////////////////////////////////////////////////////// // Model: game.qm // File: ././game.h // // This file has been generated automatically by QP Modeler (QM). // DO NOT EDIT THIS FILE MANUALLY. // // Please visit www.state-machine.com/qm for more information. ////////////////////////////////////////////////////////////////////////////// #ifndef game_h #define game_h namespace GAME { enum GameSignals { // signals used in the game TIME_TICK_SIG = QP::Q_USER_SIG, // published from tick ISR PLAYER_TRIGGER_SIG, // published by Player (ISR) to trigger the Missile PLAYER_QUIT_SIG, // published by Player (ISR) to quit the game GAME_OVER_SIG, // published by Ship when it finishes exploding // insert other published signals here ... MAX_PUB_SIG, // the last published signal PLAYER_SHIP_MOVE_SIG, // posted by Player (ISR) to the Ship to move it BLINK_TIMEOUT_SIG, // signal for Tunnel's blink timeout event SCREEN_TIMEOUT_SIG, // signal for Tunnel's screen timeout event TAKE_OFF_SIG, // from Tunnel to Ship to grant permission to take off HIT_WALL_SIG, // from Tunnel to Ship when Ship hits the wall HIT_MINE_SIG, // from Mine to Ship or Missile when it hits the mine SHIP_IMG_SIG, // from Ship to the Tunnel to draw and check for hits MISSILE_IMG_SIG, // from Missile the Tunnel to draw and check for hits MINE_IMG_SIG, // sent by Mine to the Tunnel to draw the mine MISSILE_FIRE_SIG, // sent by Ship to the Missile to fire DESTROYED_MINE_SIG, // from Missile to Ship when Missile destroyed Mine EXPLOSION_SIG, // from any exploding object to render the explosion MINE_PLANT_SIG, // from Tunnel to the Mine to plant it MINE_DISABLED_SIG, // from Mine to Tunnel when it becomes disabled MINE_RECYCLE_SIG, // sent by Tunnel to Mine to recycle the mine SCORE_SIG, // from Ship to Tunnel to adjust game level based on score MAX_SIG // the last signal (keep always last) }; // @(/1/0) ................................................................... class ObjectPosEvt : public QP::QEvt { public: uint8_t x; uint8_t y; }; // @(/1/1) ................................................................... class ObjectImageEvt : public QP::QEvt { public: uint8_t x; int8_t y; uint8_t bmp; }; // @(/1/2) ................................................................... class MineEvt : public QP::QEvt { public: uint8_t id; public: /// This constructor is called only for statically allocated MineEvt /// NOTE: QP can call event constructors in Q_NEW, when the port is configured with the Q_EVT_CTOR macro MineEvt(QP::QSignal sig_p, uint8_t id_p) { sig = sig_p; poolId_ = 0U; id = id_p; } }; // @(/1/3) ................................................................... class ScoreEvt : public QP::QEvt { public: uint16_t score; public: /// This constructor is called only for statically allocated MineEvt /// NOTE: QP can call event constructors in Q_NEW, when the port is configured with the Q_EVT_CTOR macro ScoreEvt(QP::QSignal sig_p, uint16_t score_p) { sig = sig_p; poolId_ = 0U; score = score_p; } }; #define GAME_SCREEN_WIDTH BSP_SCREEN_WIDTH #define GAME_SCREEN_HEIGHT BSP_SCREEN_HEIGHT #define GAME_MINES_MAX 5U #define GAME_MINES_DIST_MIN 10U #define GAME_SPEED_X 1U #define GAME_MISSILE_SPEED_X 2U #define GAME_SHIP_X 10U #define GAME_SHIP_Y (GAME_SCREEN_HEIGHT / 2U) enum GameBitmapIds { PRESS_BUTTON_BMP, SHIP_BMP, MISSILE_BMP, MINE1_BMP, MINE2_BMP, MINE2_MISSILE_BMP, EXPLOSION0_BMP, EXPLOSION1_BMP, EXPLOSION2_BMP, EXPLOSION3_BMP, MAX_BMP }; // opaque pointers to active objects in the application extern QP::QActive * const AO_Tunnel; extern QP::QActive * const AO_Ship; extern QP::QActive * const AO_Missile; // helper function for all AOs bool do_bitmaps_overlap( uint8_t bmp_id1, uint8_t x1, uint8_t y1, uint8_t bmp_id2, uint8_t x2, uint8_t y2); // obtain instances of the Mines orthogonal components QP::QHsm *Mine1_getInst(uint8_t id); QP::QHsm *Mine2_getInst(uint8_t id); } // namespace GAME #endif // game_h