home *** CD-ROM | disk | FTP | other *** search
/ Enter 2005 March / ENTER.ISO / files / fwp-0.0.6-win32-installer.exe / Game.h < prev    next >
Encoding:
C/C++ Source or Header  |  2005-01-17  |  5.3 KB  |  231 lines

  1. #ifndef __Game_h__
  2. #define __Game_h__
  3.  
  4. #define _WINSOCKAPI_    // wegen doppelten defines
  5.  
  6. #include "Arena.h"
  7. #include "Camera.h"
  8. #include "GameInfo.h"
  9. #include "Client.h"
  10. #include "Vehicle.h"
  11. #include "Shot.h"
  12. #include "Animator.h"
  13. #include "Sound.h"
  14.  
  15. #define GAME_MAX_SHOTS        1024
  16. #define GAME_MAX_VEHICLES    16
  17.  
  18. enum gameModes_e{
  19. //    GAME_MODE_TEST = 0,
  20.     GAME_MODE_DEATHMATCH = 0,
  21.     GAME_MODE_TEAM_DEATHMATCH,
  22. //    GAME_MODE_SOLE_SURVIVOR,
  23. //    GAME_MODE_TEAM_SURVIVOR,
  24.  
  25.     GAME_NUM_MODES
  26. };
  27.  
  28. enum gameTeams_e{
  29.     GAME_TEAM_SPECTATORS = 0,
  30.     GAME_TEAM_PLAYERS,
  31.     GAME_TEAM_RED,
  32.     GAME_TEAM_BLUE,
  33.  
  34.     GAME_NUM_TEAMS
  35. };
  36.  
  37. enum gameVehicles_e{
  38.     GAME_VEHICLE_DRAGONFLY = 0,
  39.     GAME_VEHICLE_ALLEYCAT,
  40. //    GAME_VEHICLE_SLEDGEHAMMER,
  41.  
  42.     GAME_NUM_VEHICLES
  43. };
  44.  
  45. enum gameWeapons_e{
  46.     GAME_WEAPON_NO_WEAPON = 0,
  47.  
  48.     GAME_WEAPON_LASER,
  49.     GAME_WEAPON_CHAINGUN,
  50.     GAME_WEAPON_RAILGUN,
  51.  
  52.     GAME_WEAPON_ROCKETLAUNCHER,
  53.     GAME_WEAPON_PLASMAGUN,
  54. //    GAME_WEAPON_GRENADELAUNCHER,
  55. //    GAME_WEAPON_MINETHROWER,
  56.  
  57.     GAME_NUM_WEAPONS
  58. };
  59.  
  60. enum gameChatModes_e{
  61.     GAME_CHAT_MODE_ALL = 0,
  62.     GAME_CHAT_MODE_TEAM,
  63.  
  64.     GAME_CHAT_MODE_SERVER,
  65.  
  66.     GAME_NUM_CHAT_MODES
  67. };
  68.  
  69. enum gameVoiceMessages{
  70.     GAME_VOICE_MESSAGE_ATTACK = 0,
  71.     GAME_VOICE_MESSAGE_DEFEND,
  72.     GAME_VOICE_MESSAGE_GO,
  73.     GAME_VOICE_MESSAGE_FALL_BACK,
  74.     GAME_VOICE_MESSAGE_RETREAT,
  75.  
  76.     GAME_VOICE_MESSAGE_REPORT_IN,
  77.     GAME_VOICE_MESSAGE_CONTACT,
  78.     GAME_VOICE_MESSAGE_UNDER_FIRE,
  79.     GAME_VOICE_MESSAGE_NEED_BACKUP,
  80.     GAME_VOICE_MESSAGE_FINE,
  81.  
  82.     GAME_VOICE_MESSAGE_TAUNT,
  83.     GAME_VOICE_MESSAGE_CHEER,
  84.     GAME_VOICE_MESSAGE_SORRY,
  85.  
  86.     GAME_VOICE_MESSAGE_FUN1,
  87.     GAME_VOICE_MESSAGE_FUN2,
  88.     GAME_VOICE_MESSAGE_FUN3,
  89.     GAME_VOICE_MESSAGE_FUN4,
  90.     GAME_VOICE_MESSAGE_FUN5,
  91.     GAME_VOICE_MESSAGE_FUN6,
  92.     GAME_VOICE_MESSAGE_FUN7,
  93.     GAME_VOICE_MESSAGE_FUN8,
  94.     GAME_VOICE_MESSAGE_FUN9,
  95.     GAME_VOICE_MESSAGE_FUN10,
  96.  
  97.     GAME_NUM_VOICE_MESSAGES
  98. };
  99.  
  100. typedef struct preloadedGameMedia_s{
  101.     Model* supplyPadCylindersModel;
  102.     Mix_Chunk* supplyPadActiveSound;
  103.     Mix_Chunk* supplyPadImpulseSound;
  104.  
  105.     Model* spawnEffectSpheresModel;
  106.     Mix_Chunk* spawnEffectSound;
  107.     Shader* shockwaveShader;
  108.  
  109.     Model* alleycatTorsoModel;
  110.     Model* alleycatLegsModel;
  111.     Animator* alleycatLegsAnimator;
  112.  
  113.     Model* dragonflyBodyModel;
  114.     Model* dragonflyJetsModel;
  115.     Animator* dragonflyJetsAnimator;
  116.  
  117.     Shader* tinyExplosionShader;
  118.     Shader* smallExplosionShader;
  119.     Shader* mediumExplosionShader;
  120.     Shader* bigExplosionShader;
  121.     Shader* smallSmokePuffShader;
  122. //    Shader* bigSmokePuffShader;
  123.     Mix_Chunk* tinyExplosionSound;
  124.     Mix_Chunk* smallExplosionSound;
  125.     Mix_Chunk* mediumExplosionSound;
  126.     Mix_Chunk* bigExplosionSound;
  127.  
  128.     Model* laserModel;
  129.     Model* laserShotModel;
  130.     Shader* laserMarkShader;
  131.     Mix_Chunk* laserFireSound;
  132.     Mix_Chunk* laserImpactSound;
  133.     Animator* laserAnimator;
  134.  
  135.     Model* chaingunModel;
  136.     Model* chaingunMuzzleFlashModel;
  137.     Shader* chaingunImpactShader;
  138.     Shader* chaingunRicochetShader;
  139.     Mix_Chunk* chaingunFireSound;
  140.     Shader* chaingunMarkShaders[MATERIAL_NUM_SURFACE_TYPES];
  141.     Mix_Chunk* chaingunImpactSounds[MATERIAL_NUM_SURFACE_TYPES][3];
  142.     Animator* chaingunAnimator;
  143.  
  144.     Model* railgunModel;
  145.     Shader* railgunTrailShader;
  146.     Shader* railgunImpactShader;
  147.     Shader* railgunMarkShader;
  148.     Mix_Chunk* railgunFireSound;
  149.     Mix_Chunk* railgunImpactSound;
  150.     Animator* railgunAnimator;
  151.  
  152.     Model* rocketlauncherModel;
  153.     Model* rocketlauncherShotModel;
  154.     Mix_Chunk* rocketlauncherFireSound;
  155.     Mix_Chunk* rocketlauncherImpactSound;
  156.     Animator* rocketlauncherAnimator;
  157.  
  158.     Model* plasmagunModel;
  159.     Shader* plasmagunShotShader;
  160.     Shader* plasmagunImpactShader;
  161.     Shader* plasmagunMarkShader;
  162.     Mix_Chunk* plasmagunFireSound;
  163.     Mix_Chunk* plasmagunImpactSound;
  164.     Animator* plasmagunAnimator;
  165.  
  166.     Mix_Chunk* voiceMessages[GAME_NUM_VOICE_MESSAGES];
  167. }preloadedGameMedia_t;
  168.  
  169.  
  170. class Game{
  171.     // subsystem interface
  172. public:
  173.     static GameInfo info;
  174.     static bool init();
  175.     static bool shutdown();
  176.     static bool wasInit();
  177.  
  178.     static bool registerCVarsAndCCmds();
  179.     static bool unregisterCVarsAndCCmds();
  180.  
  181.     static bool initGameMedia();
  182.     static bool shutdownGameMedia();
  183.     static bool initArenaCycle();
  184.     static bool shutdownArenaCycle();
  185.  
  186. protected:
  187.     static bool initialized;
  188.  
  189.  
  190.  
  191. public:
  192.     static preloadedGameMedia_t preloadedGameMedia;
  193.     static Camera cam;
  194.     static Arena* arena;
  195.     static arenaCycle_t arenaCycle;
  196.     static Shot* shots[GAME_MAX_SHOTS];
  197.     static Vehicle* vehicles[GAME_MAX_VEHICLES];
  198.  
  199.     static void mainLoop();
  200.  
  201.     static void doArenaCycle();
  202.     static bool changeArena();
  203.  
  204.     static void moveVehicles();
  205.     static void moveShots();
  206.     static void moveCamera();
  207.  
  208.     static void findSpawnpointForClient(Client* client);
  209.     static void spawnVehicle(Client* client);
  210.     static void unspawnVehicle(Vehicle* vehicle);
  211.     static void killClient(Client* killed, Client* killer, char weapon);
  212.     
  213.     static void spawnShot(shotSpawnPacket_t* ss);
  214.     static void unspawnShot(Shot* shot);
  215.  
  216.     static void renderVehicles();
  217.     static void renderShots();
  218.  
  219.     static void chatMessageAll(const char* message);
  220.     static void chatMessageTeam(const char* message);
  221.  
  222.     static const char* getModeName(int mode);
  223.     static const char* getTeamName(int team);
  224.     static const char* getVehicleName(int vehicle);
  225.     static const char* getWeaponName(int weapon);
  226.     static int getVoiceMessageId(const char* string);
  227.     static const char* getVoiceMessageName(int id);
  228. };
  229.  
  230. #endif    /* __Game_h__ */
  231.