home *** CD-ROM | disk | FTP | other *** search
- #ifndef __Game_h__
- #define __Game_h__
-
- #define _WINSOCKAPI_ // wegen doppelten defines
-
- #include "Arena.h"
- #include "Camera.h"
- #include "GameInfo.h"
- #include "Client.h"
- #include "Vehicle.h"
- #include "Shot.h"
- #include "Animator.h"
- #include "Sound.h"
-
- #define GAME_MAX_SHOTS 1024
- #define GAME_MAX_VEHICLES 16
-
- enum gameModes_e{
- // GAME_MODE_TEST = 0,
- GAME_MODE_DEATHMATCH = 0,
- GAME_MODE_TEAM_DEATHMATCH,
- // GAME_MODE_SOLE_SURVIVOR,
- // GAME_MODE_TEAM_SURVIVOR,
-
- GAME_NUM_MODES
- };
-
- enum gameTeams_e{
- GAME_TEAM_SPECTATORS = 0,
- GAME_TEAM_PLAYERS,
- GAME_TEAM_RED,
- GAME_TEAM_BLUE,
-
- GAME_NUM_TEAMS
- };
-
- enum gameVehicles_e{
- GAME_VEHICLE_DRAGONFLY = 0,
- GAME_VEHICLE_ALLEYCAT,
- // GAME_VEHICLE_SLEDGEHAMMER,
-
- GAME_NUM_VEHICLES
- };
-
- enum gameWeapons_e{
- GAME_WEAPON_NO_WEAPON = 0,
-
- GAME_WEAPON_LASER,
- GAME_WEAPON_CHAINGUN,
- GAME_WEAPON_RAILGUN,
-
- GAME_WEAPON_ROCKETLAUNCHER,
- GAME_WEAPON_PLASMAGUN,
- // GAME_WEAPON_GRENADELAUNCHER,
- // GAME_WEAPON_MINETHROWER,
-
- GAME_NUM_WEAPONS
- };
-
- enum gameChatModes_e{
- GAME_CHAT_MODE_ALL = 0,
- GAME_CHAT_MODE_TEAM,
-
- GAME_CHAT_MODE_SERVER,
-
- GAME_NUM_CHAT_MODES
- };
-
- enum gameVoiceMessages{
- GAME_VOICE_MESSAGE_ATTACK = 0,
- GAME_VOICE_MESSAGE_DEFEND,
- GAME_VOICE_MESSAGE_GO,
- GAME_VOICE_MESSAGE_FALL_BACK,
- GAME_VOICE_MESSAGE_RETREAT,
-
- GAME_VOICE_MESSAGE_REPORT_IN,
- GAME_VOICE_MESSAGE_CONTACT,
- GAME_VOICE_MESSAGE_UNDER_FIRE,
- GAME_VOICE_MESSAGE_NEED_BACKUP,
- GAME_VOICE_MESSAGE_FINE,
-
- GAME_VOICE_MESSAGE_TAUNT,
- GAME_VOICE_MESSAGE_CHEER,
- GAME_VOICE_MESSAGE_SORRY,
-
- GAME_VOICE_MESSAGE_FUN1,
- GAME_VOICE_MESSAGE_FUN2,
- GAME_VOICE_MESSAGE_FUN3,
- GAME_VOICE_MESSAGE_FUN4,
- GAME_VOICE_MESSAGE_FUN5,
- GAME_VOICE_MESSAGE_FUN6,
- GAME_VOICE_MESSAGE_FUN7,
- GAME_VOICE_MESSAGE_FUN8,
- GAME_VOICE_MESSAGE_FUN9,
- GAME_VOICE_MESSAGE_FUN10,
-
- GAME_NUM_VOICE_MESSAGES
- };
-
- typedef struct preloadedGameMedia_s{
- Model* supplyPadCylindersModel;
- Mix_Chunk* supplyPadActiveSound;
- Mix_Chunk* supplyPadImpulseSound;
-
- Model* spawnEffectSpheresModel;
- Mix_Chunk* spawnEffectSound;
- Shader* shockwaveShader;
-
- Model* alleycatTorsoModel;
- Model* alleycatLegsModel;
- Animator* alleycatLegsAnimator;
-
- Model* dragonflyBodyModel;
- Model* dragonflyJetsModel;
- Animator* dragonflyJetsAnimator;
-
- Shader* tinyExplosionShader;
- Shader* smallExplosionShader;
- Shader* mediumExplosionShader;
- Shader* bigExplosionShader;
- Shader* smallSmokePuffShader;
- // Shader* bigSmokePuffShader;
- Mix_Chunk* tinyExplosionSound;
- Mix_Chunk* smallExplosionSound;
- Mix_Chunk* mediumExplosionSound;
- Mix_Chunk* bigExplosionSound;
-
- Model* laserModel;
- Model* laserShotModel;
- Shader* laserMarkShader;
- Mix_Chunk* laserFireSound;
- Mix_Chunk* laserImpactSound;
- Animator* laserAnimator;
-
- Model* chaingunModel;
- Model* chaingunMuzzleFlashModel;
- Shader* chaingunImpactShader;
- Shader* chaingunRicochetShader;
- Mix_Chunk* chaingunFireSound;
- Shader* chaingunMarkShaders[MATERIAL_NUM_SURFACE_TYPES];
- Mix_Chunk* chaingunImpactSounds[MATERIAL_NUM_SURFACE_TYPES][3];
- Animator* chaingunAnimator;
-
- Model* railgunModel;
- Shader* railgunTrailShader;
- Shader* railgunImpactShader;
- Shader* railgunMarkShader;
- Mix_Chunk* railgunFireSound;
- Mix_Chunk* railgunImpactSound;
- Animator* railgunAnimator;
-
- Model* rocketlauncherModel;
- Model* rocketlauncherShotModel;
- Mix_Chunk* rocketlauncherFireSound;
- Mix_Chunk* rocketlauncherImpactSound;
- Animator* rocketlauncherAnimator;
-
- Model* plasmagunModel;
- Shader* plasmagunShotShader;
- Shader* plasmagunImpactShader;
- Shader* plasmagunMarkShader;
- Mix_Chunk* plasmagunFireSound;
- Mix_Chunk* plasmagunImpactSound;
- Animator* plasmagunAnimator;
-
- Mix_Chunk* voiceMessages[GAME_NUM_VOICE_MESSAGES];
- }preloadedGameMedia_t;
-
-
- class Game{
- // subsystem interface
- public:
- static GameInfo info;
- static bool init();
- static bool shutdown();
- static bool wasInit();
-
- static bool registerCVarsAndCCmds();
- static bool unregisterCVarsAndCCmds();
-
- static bool initGameMedia();
- static bool shutdownGameMedia();
- static bool initArenaCycle();
- static bool shutdownArenaCycle();
-
- protected:
- static bool initialized;
-
-
-
- public:
- static preloadedGameMedia_t preloadedGameMedia;
- static Camera cam;
- static Arena* arena;
- static arenaCycle_t arenaCycle;
- static Shot* shots[GAME_MAX_SHOTS];
- static Vehicle* vehicles[GAME_MAX_VEHICLES];
-
- static void mainLoop();
-
- static void doArenaCycle();
- static bool changeArena();
-
- static void moveVehicles();
- static void moveShots();
- static void moveCamera();
-
- static void findSpawnpointForClient(Client* client);
- static void spawnVehicle(Client* client);
- static void unspawnVehicle(Vehicle* vehicle);
- static void killClient(Client* killed, Client* killer, char weapon);
-
- static void spawnShot(shotSpawnPacket_t* ss);
- static void unspawnShot(Shot* shot);
-
- static void renderVehicles();
- static void renderShots();
-
- static void chatMessageAll(const char* message);
- static void chatMessageTeam(const char* message);
-
- static const char* getModeName(int mode);
- static const char* getTeamName(int team);
- static const char* getVehicleName(int vehicle);
- static const char* getWeaponName(int weapon);
- static int getVoiceMessageId(const char* string);
- static const char* getVoiceMessageName(int id);
- };
-
- #endif /* __Game_h__ */
-