home *** CD-ROM | disk | FTP | other *** search
/ PC Format (South-Africa) 2001 June / PCFJune.iso / Xenon / XenonSource.exe / demo2 / actorinfo.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-08-02  |  4.4 KB  |  208 lines

  1. //-------------------------------------------------------------
  2. //
  3. // Class:    CActorInfo
  4. //
  5. // Author:    John M Phillips
  6. //
  7. // Started:    06/05/00
  8. //
  9. // Base:    None
  10. //
  11. // Derived:    None
  12. //
  13. //-------------------------------------------------------------
  14.  
  15. #ifndef _INCLUDE_ACTORINFO_H
  16. #define _INCLUDE_ACTORINFO_H
  17.  
  18. //-------------------------------------------------------------
  19. // Actor Types
  20. //
  21. // These types are also used to determine collision order
  22. // If two actors collide then the actor with the lowest
  23. // type value receives the onCollision call
  24. // e.g. a bullet hits an alien, not the other way round !
  25.  
  26. typedef enum {
  27.     ACTOR_TYPE_SHIP,        // player's ship
  28.     ACTOR_TYPE_BULLET,        // ship and alien bullets
  29.     ACTOR_TYPE_UPGRADE,        // ship upgrades
  30.     ACTOR_TYPE_ENGINE,        // engine glows
  31.     ACTOR_TYPE_WEAPON,        // ship weapons
  32.     ACTOR_TYPE_PICKUP,        // bonus pickups
  33.     ACTOR_TYPE_ALIEN,        // aliens
  34.     ACTOR_TYPE_ALIENBULLET,    // alien bullet
  35.     ACTOR_TYPE_LABEL,        // floating text labels
  36.     ACTOR_TYPE_EFFECT,        // special effects
  37.     ACTOR_TYPE_BOSS,        // boss
  38.  
  39.     ACTOR_TYPE_TOTAL
  40. } ActorType;
  41.  
  42. //-------------------------------------------------------------
  43.  
  44. typedef enum
  45. {
  46.     // pickups
  47.  
  48.     INFO_SHIELD_PICKUP,
  49.     INFO_SPEED_PICKUP,
  50.     INFO_WEAPON_PICKUP,
  51.     INFO_CLOAK_PICKUP,
  52.     INFO_DIVE_PICKUP,
  53.     INFO_SCORE_PICKUP,
  54.     INFO_CLONE_PICKUP,
  55.     INFO_WINGTIP_PICKUP,
  56.     INFO_HOMING_MISSILE_PICKUP,
  57.     INFO_LASER_PICKUP,
  58.     INFO_LIFE_PICKUP,
  59.  
  60.     // aliens
  61.  
  62.     INFO_WALL_HUGGER,
  63.     INFO_SMALL_STANDARD_ASTEROID,
  64.     INFO_MEDIUM_STANDARD_ASTEROID,
  65.     INFO_BIG_STANDARD_ASTEROID,
  66.     INFO_SMALL_HIGHDENSITY_ASTEROID,
  67.     INFO_MEDIUM_HIGHDENSITY_ASTEROID,
  68.     INFO_BIG_HIGHDENSITY_ASTEROID,
  69.     INFO_SMALL_INDESTRUCTIBLE_ASTEROID,
  70.     INFO_MEDIUM_INDESTRUCTIBLE_ASTEROID,
  71.     INFO_BIG_INDESTRUCTIBLE_ASTEROID,
  72.     INFO_RUSHER,
  73.     INFO_POD,
  74.     INFO_HOMER,
  75.     INFO_DRONE,
  76.     INFO_STANDARD_LONER,
  77.     INFO_MEDIUM_LONER,
  78.     INFO_ARMOURED_LONER,
  79.     INFO_ORGANIC_GUN,
  80.  
  81.     // bullets
  82.  
  83.     INFO_MISSILE,
  84.     INFO_HOMING_MISSILE,
  85.     INFO_LASER,
  86.     INFO_HOMER_PROJECTILE,
  87.     INFO_SPINNER,
  88.     INFO_SPORE,
  89.  
  90.     // weapons
  91.  
  92.     INFO_MISSILE_WEAPON,
  93.     INFO_HOMING_MISSILE_WEAPON,
  94.     INFO_LASER_WEAPON,
  95.     INFO_HOMER_PROJECTILE_WEAPON,
  96.     INFO_SPINNER_WEAPON,
  97.  
  98.     // ship
  99.  
  100.     INFO_SHIP,
  101.  
  102.     // upgrades
  103.  
  104.     INFO_CLONE,
  105.     INFO_WINGTIP,
  106.  
  107.     // engines
  108.  
  109.     INFO_SHIP_ENGINE,
  110.     INFO_CLONE_ENGINE,
  111.     INFO_RETRO_ENGINE,
  112.  
  113.     // effects
  114.  
  115.     INFO_SMALL_EXPLOSION,
  116.     INFO_MEDIUM_EXPLOSION,
  117.     INFO_BIG_EXPLOSION,
  118.     INFO_STANDARD_DUST_EFFECT,
  119.     INFO_HIGHDENSITY_DUST_EFFECT,
  120.     INFO_SMOKE_EFFECT,
  121.     INFO_LABEL,
  122.  
  123.     // generators
  124.  
  125.     INFO_DRONE_GENERATOR,
  126.     INFO_RUSHER_GENERATOR,
  127.     INFO_SPORE_GENERATOR,
  128.  
  129.     // boss
  130.  
  131.     INFO_BOSSMOUTH,
  132.     INFO_BOSSEYE,
  133.     INFO_BOSSCONTROL,
  134.  
  135.     // Note: add new actors before this line
  136.  
  137.     INFO_TOTAL
  138.  
  139. } ActorInfoType;
  140.  
  141. //-------------------------------------------------------------
  142.  
  143. typedef enum {
  144.     BULLET_STANDARD,
  145.     BULLET_MEDIUM,
  146.     BULLET_BEST,
  147.  
  148.     BULLET_GRADES
  149. } BulletGrade;
  150.  
  151. //-------------------------------------------------------------
  152. // Actor Info for creating actors
  153.  
  154. struct ActorInfo
  155. {
  156.     // for all actors
  157.  
  158.     const char *m_name;            // name (used for load/save to config file)
  159.     ActorType m_type;            // type of actor
  160.     char *m_filename;            // file containing sprite frames
  161.     int m_tile_width;            // width of 1 frame
  162.     int m_tile_height;            // height of 1 frame
  163.     int m_hotspot_x;            // hotspot position (i.e. offset to centre)
  164.     int m_hotspot_y;
  165.     float m_anim_rate;            // animation rate (in frames per second)
  166.     int m_initial_shield;        // initial shield value
  167.     int m_kill_bonus;            // score bonus for killing actor
  168.  
  169.     // for weapons only
  170.  
  171.     float m_fire_delay;            // minimum delay between shots
  172.     float m_autofire_delay;        // delay between shots when using autofire
  173.  
  174.     // for bullets only
  175.  
  176.     int m_energy[BULLET_GRADES];    // energy for each grade of bullet
  177.     float m_speed[BULLET_GRADES];    // movement speed
  178. };
  179.  
  180. //-------------------------------------------------------------
  181.  
  182. class CActorInfoList
  183. {
  184.     private:
  185.         static ActorInfo m_info_list[INFO_TOTAL];
  186.  
  187.     public:
  188.         const ActorInfo& operator[] (const int index);
  189.  
  190.         bool load(const char *filename);
  191.         bool save(const char *filename);
  192. };
  193.  
  194. //-------------------------------------------------------------
  195.  
  196. inline const ActorInfo& CActorInfoList::operator[] (const int index)
  197. {
  198.     return m_info_list[index];
  199. };
  200.  
  201. //-------------------------------------------------------------
  202.  
  203. extern CActorInfoList ActorInfoList;
  204.  
  205. //-------------------------------------------------------------
  206.  
  207. #endif
  208.