diff options
Diffstat (limited to '3dc/avp/gamecmds.cpp')
| -rw-r--r-- | 3dc/avp/gamecmds.cpp | 818 |
1 files changed, 818 insertions, 0 deletions
diff --git a/3dc/avp/gamecmds.cpp b/3dc/avp/gamecmds.cpp new file mode 100644 index 0000000..21f0b96 --- /dev/null +++ b/3dc/avp/gamecmds.cpp @@ -0,0 +1,818 @@ +#include "3dc.h" +#include "conscmnd.hpp" +#include "strutil.h" + +// Includes for the actual commands: +//#include "consvar.hpp" +//#include "modcmds.hpp" +//#include "textexp.hpp" +//#include "trepgadg.hpp" + +#define UseLocalAssert Yes +#include "ourasert.h" + +extern "C" +{ +#include "3dc.h" +#include "module.h" +#include "inline.h" + +#include "stratdef.h" +#include "gamedef.h" +#include "gameplat.h" + +#include "bh_types.h" + +#include "showcmds.h" +#include "version.h" +#include "equipmnt.h" +#include "cheat.h" +#include "cd_player.h" +#include "dynblock.h" +#include "bh_RubberDuck.h" +#include "pvisible.h" +#include "pldnet.h" + +#include "lighting.h" +#include "paintball.h" +#include "decal.h" +#include "ConsoleLog.hpp" +#include "psndplat.h" +#include "avp_menus.h" +#include "smacker.h" +#include "detaillevels.h" +#include "savegame.h" + + +int DebuggingCommandsActive=0; +extern void GimmeCharge(void); + +// just change these to prototypes etc. +extern void QuickLoad() +{ + //set the load request + LoadGameRequest = 0; //(that's slot 0 - not false) +} +extern void QuickSave() +{ + //set the save request + SaveGameRequest = 0; //(that's slot 0 - not false) +} + +void ConsoleCommandLoad(int slot) +{ + if(slot>=1 && slot<=NUMBER_OF_SAVE_SLOTS) + { + LoadGameRequest = slot-1; + } +} + +void ConsoleCommandSave(int slot) +{ + if(slot>=1 && slot<=NUMBER_OF_SAVE_SLOTS) + { + SaveGameRequest = slot-1; + } +} +extern void DisplaySavesLeft(); + + + +struct DEBUGGINGTEXTOPTIONS ShowDebuggingText; + +extern void ChangeNetGameType_Individual(); +extern void ChangeNetGameType_Coop(); +extern void ChangeNetGameType_LastManStanding(); +extern void ChangeNetGameType_PredatorTag(); +extern void ShowNearestPlayersName(); +extern void ScreenShot(void); +extern void CastAlienBot(void); +extern void CastMarineBot(int weapon); +extern void CastPredoBot(int weapon); +extern void CastPredAlienBot(void); +extern void CastPraetorianBot(void); +extern void CastXenoborg(void); + +extern int ShowMultiplayerScoreTimer; + +static void ShowFPS(void) +{ + ShowDebuggingText.FPS = ~ShowDebuggingText.FPS; +} +static void ShowEnvironment(void) +{ + ShowDebuggingText.Environment = ~ShowDebuggingText.Environment; +} +static void ShowCoords(void) +{ + ShowDebuggingText.Coords = ~ShowDebuggingText.Coords; +} +static void ShowModule(void) +{ + ShowDebuggingText.Module = ~ShowDebuggingText.Module; +} +static void ShowTarget(void) +{ + ShowDebuggingText.Target = ~ShowDebuggingText.Target; +} +static void ShowNetworking(void) +{ + ShowDebuggingText.Networking = ~ShowDebuggingText.Networking; +} +static void ShowDynamics(void) +{ + ShowDebuggingText.Dynamics = ~ShowDebuggingText.Dynamics; +} +static void ShowGunPos(void) +{ + ShowDebuggingText.GunPos = ~ShowDebuggingText.GunPos; +} +static void ShowTears(void) +{ + ShowDebuggingText.Tears = ~ShowDebuggingText.Tears; +} +static void ShowPolyCount(void) +{ + ShowDebuggingText.PolyCount = ~ShowDebuggingText.PolyCount; +} +static void ShowSounds(void) +{ + ShowDebuggingText.Sounds = ~ShowDebuggingText.Sounds; +} + + +extern void ChangeToMarine(); +static void ChangeToSpecialist_General() +{ + netGameData.myCharacterSubType=NGSCT_General; + ChangeToMarine(); +} +static void ChangeToSpecialist_PulseRifle() +{ + netGameData.myCharacterSubType=NGSCT_PulseRifle; + ChangeToMarine(); +} +static void ChangeToSpecialist_Smartgun() +{ + if(netGameData.allowSmartgun) + { + netGameData.myCharacterSubType=NGSCT_Smartgun; + } + ChangeToMarine(); +} +static void ChangeToSpecialist_Flamer() +{ + if(netGameData.allowFlamer) + { + netGameData.myCharacterSubType=NGSCT_Flamer; + } + ChangeToMarine(); +} +static void ChangeToSpecialist_Sadar() +{ + if(netGameData.allowSadar) + { + netGameData.myCharacterSubType=NGSCT_Sadar; + } + ChangeToMarine(); +} +static void ChangeToSpecialist_GrenadeLauncher() +{ + if(netGameData.allowGrenadeLauncher) + { + netGameData.myCharacterSubType=NGSCT_GrenadeLauncher; + } + ChangeToMarine(); +} +static void ChangeToSpecialist_Minigun() +{ + if(netGameData.allowMinigun) + { + netGameData.myCharacterSubType=NGSCT_Minigun; + } + ChangeToMarine(); +} +static void ChangeToSpecialist_Frisbee() +{ + if(netGameData.allowSmartDisc) + { + netGameData.myCharacterSubType=NGSCT_Frisbee; + } + ChangeToMarine(); +} + +static void ChangeToSpecialist_Pistols() +{ + if(netGameData.allowPistols) + { + netGameData.myCharacterSubType=NGSCT_Pistols; + } + ChangeToMarine(); +} + +extern void ShowMultiplayerScores() +{ + ShowMultiplayerScoreTimer=5*ONE_FIXED; +} + +extern void AddNetMsg_ChatBroadcast(char *string,BOOL same_species_only); + +static void DoMultiplayerSay(char* string) +{ + AddNetMsg_ChatBroadcast(string,FALSE); +} + +static void DoMultiplayerSaySpecies(char* string) +{ + AddNetMsg_ChatBroadcast(string,TRUE); +} + +static void ForceAssertionFailure(void) +{ + LOCALASSERT("This assertion has been forced to stop the game"==0); +} + + + +static void CDCommand_Play(int track) +{ + if(!CDDA_IsOn()) CDDA_SwitchOn(); + + CDDA_Stop(); + CDDA_Play(track); +} +void CDCommand_PlayLoop(int track) +{ + if(!CDDA_IsOn()) CDDA_SwitchOn(); + + CDDA_Stop(); + CDDA_PlayLoop(track); +} + +static void CDCommand_Stop(void) +{ + CDDA_Stop(); +} + +static void CDCommand_Volume(int volume) +{ + if (volume>=0 && volume<=127) + { + CDDA_ChangeVolume(volume); + } + else + { + // say the volume setting is incorrect + } +} + + +static void GunX(int x) +{ + PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr); + PLAYER_WEAPON_DATA *weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]); + TEMPLATE_WEAPON_DATA *twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber]; + + twPtr->RestPosition.vx = x; +} +static void GunY(int y) +{ + PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr); + PLAYER_WEAPON_DATA *weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]); + TEMPLATE_WEAPON_DATA *twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber]; + + twPtr->RestPosition.vy = y; +} +static void GunZ(int z) +{ + PLAYER_STATUS *playerStatusPtr= (PLAYER_STATUS *) (Player->ObStrategyBlock->SBdataptr); + PLAYER_WEAPON_DATA *weaponPtr = &(playerStatusPtr->WeaponSlot[playerStatusPtr->SelectedWeaponSlot]); + TEMPLATE_WEAPON_DATA *twPtr = &TemplateWeapon[weaponPtr->WeaponIDNumber]; + + twPtr->RestPosition.vz = z; +} + +static void MakeRotatingLight(void) +{ + MakeLightElement(&Player->ObWorld,LIGHTELEMENT_ROTATING); +} +VECTORCH boing = {12345,12345,12345}; +VECTORCH boing2 = {23451,34512,45123}; + +static void Trash_Frame_Rate(void) +{ + int i=0; + + for (i=0; i<10000000; i++) + { + // Normalise(&boing); + boing.vx += boing2.vx+FastRandom(); + boing.vy += boing2.vy; + boing.vz += boing2.vz; + } +} + + +static void RestartMultiplayer(void) +{ + /* obviously have to be in a network game... */ + if (AvP.Network==I_No_Network) return; + + int seed=FastRandom(); + AddNetMsg_RestartNetworkGame(seed); + RestartNetworkGame(seed); +} + +static void CompleteLevel(void) +{ + AvP.LevelCompleted = 1; +} + + +void CreateGameSpecificConsoleCommands(void) +{ + ShowDebuggingText.FPS = 0; + ShowDebuggingText.Environment = 0; + ShowDebuggingText.Coords = 0; + ShowDebuggingText.Module = 0; + ShowDebuggingText.Target = 0; + ShowDebuggingText.Networking = 0; + ShowDebuggingText.Dynamics = 0; + ShowDebuggingText.GunPos = 0; + ShowDebuggingText.Tears = 0; + ShowDebuggingText.PolyCount = 0; + + #ifndef AVP_DEBUG_VERSION + BOOL IsACheat = TRUE; + #else + BOOL IsACheat = FALSE; + #endif + + #ifndef AVP_DEBUG_VERSION // allow debug commands without -debug + #ifndef AVP_DEBUG_FOR_FOX // allow debug commands without -debug + if (DebuggingCommandsActive) + #endif + #endif + { + ConsoleCommand::Make + ( + "GIVEALLWEAPONS", + "BE CAREFUL WHAT YOU WISH FOR", + GiveAllWeaponsCheat, + IsACheat + ); + + + /* KJL 14:51:09 29/03/98 - show commands */ + ConsoleCommand::Make + ( + "SHOWFPS", + "DISPLAY THE FRAMERATE", + ShowFPS, + IsACheat + ); + + ConsoleCommand::Make + ( + "SHOWPOLYCOUNT", + "DISPLAY NUMBER OF LANDSCAPE POLYS, AND NUMBER OF POLYS ACTUALLY RENDERED", + ShowPolyCount, + IsACheat + ); + ConsoleCommand::Make + ( + "LIGHT", + "CREATE A LIGHT", + MakeRotatingLight, + IsACheat + ); + ConsoleCommand :: Make + ( + "GIMME_CHARGE", + "GRANTS FULL FIELD CHARGE", + GimmeCharge, + IsACheat + ); + ConsoleCommand :: Make + ( + "ALIENBOT", + "CREATES ALIEN BOT. SAME AS ANY OTHER ALIEN.", + CastAlienBot, + IsACheat + ); + + ConsoleCommand :: Make + ( + "MARINEBOT", + "CREATES MARINE BOT. SAME AS A GENERATED MARINE.", + CastMarineBot, + IsACheat + ); + + ConsoleCommand :: Make + ( + "PREDOBOT", + "CREATES PREDATOR BOT.", + CastPredoBot, + IsACheat + ); + + ConsoleCommand :: Make + ( + "PREDALIENBOT", + "CREATES PREDATOR ALIEN BOT.", + CastPredAlienBot, + IsACheat + ); + + ConsoleCommand :: Make + ( + "PRAETORIANBOT", + "CREATES PRAETORIAN GUARD BOT.", + CastPraetorianBot, + IsACheat + ); + + ConsoleCommand :: Make + ( + "XENOBORG", + "THEY'RE ALL BOTS ANYWAY...", + CastXenoborg, + IsACheat + ); + + + } + + #if CONSOLE_DEBUGGING_COMMANDS_ACTIVATED + ConsoleCommand::Make + ( + "SHOWENV", + "DISPLAY THE ENVIRONMENT NAME", + ShowEnvironment + ); + + ConsoleCommand::Make + ( + "SHOWCOORDS", + "DISPLAY THE PLAYERS CURRENT POSITION", + ShowCoords + ); + + ConsoleCommand::Make + ( + "SHOWMODULE", + "DISPLAY THE PLAYERS CURRENT MODULE", + ShowModule + ); + + ConsoleCommand::Make + ( + "SHOWTARGET", + "DISPLAY THE CURRENT TARGET POSITION", + ShowTarget + ); + + ConsoleCommand::Make + ( + "SHOWNETWORKING", + "DISPLAY NETWORKING DEBUG TEXT", + ShowNetworking + ); + + ConsoleCommand::Make + ( + "SHOWDYNAMICS", + "DISPLAY DYNAMICS DEBUG TEXT", + ShowDynamics + ); + + ConsoleCommand::Make + ( + "SHOWGUNPOS", + "DISPLAY GUN OFFSET COORDS", + ShowGunPos + ); + + ConsoleCommand::Make + ( + "SHOWTEARS", + "MAKE TEARS AND LINKING ERRORS APPEAR BRIGHT GREEN", + ShowTears + ); + + ConsoleCommand::Make + ( + "SHOWSOUNDS", + "DISPLAY NUMBER OF ACTIVE SOUNDS", + ShowSounds + ); + + + #if 1 + ConsoleCommand::Make + ( + "GUNX", + "CHANGE POSITION", + GunX + ); + ConsoleCommand::Make + ( + "GUNY", + "CHANGE POSITION", + GunY + ); + ConsoleCommand::Make + ( + "GUNZ", + "CHANGE POSITION", + GunZ + ); + ConsoleCommand::Make + ( + "DUCKBOT", + "MAKE A RUBBER DUCK", + CreateRubberDuckBot + ); + + ConsoleCommand::Make + ( + "FORCEASSERTIONFAILURE", + "MAKE AN ASSERTION FIRE, EXITING THE GAME", + ForceAssertionFailure + ); + #endif + + ConsoleCommand::Make + ( + "RESTARTMULTIPLAYER", + "RESTARTS A NETWORK GAME FROM SCRATCH", + RestartMultiplayer + ); + #if 0 + ConsoleCommand::Make + ( + "NEWPLANET", + "", + NewPlanet + ); + #endif + ConsoleCommand::Make + ( + "PAINTBALL", + "TOGGLES PAINTBALLMODE ON/OFF", + TogglePaintBallMode + ); + + ConsoleCommand::Make + ( + "BUG", + "ADD A BUG REPORT TO CONSOLELOG.TXT", + OutputBugReportToConsoleLogfile + ); + ConsoleCommand::Make + ( + "REMOVEDECALS", + "DELETES ALL PRE-DECALS", + RemoveAllFixedDecals + ); + + ConsoleCommand::Make + ( + "TURN3DSOUNDHARDWAREOFF", + "DEACTIVATES 3D SOUND IN HARDWARE", + PlatDontUse3DSoundHW + ); + ConsoleCommand::Make + ( + "TURN3DSOUNDHARDWAREON", + "ACTIVATES 3D SOUND IN HARDWARE", + PlatUse3DSoundHW + ); + + ConsoleCommand::Make + ( + "NETGAME_INDIVIDUAL", + "CHANGE NETWORK GAME TYPE", + ChangeNetGameType_Individual + ); + ConsoleCommand::Make + ( + "NETGAME_COOP", + "CHANGE NETWORK GAME TYPE", + ChangeNetGameType_Coop + ); + ConsoleCommand::Make + ( + "NETGAME_LASTMANSTANDING", + "CHANGE NETWORK GAME TYPE", + ChangeNetGameType_LastManStanding + ); + ConsoleCommand::Make + ( + "NETGAME_PREDATORTAG", + "CHANGE NETWORK GAME TYPE", + ChangeNetGameType_PredatorTag + ); + + + ConsoleCommand::Make + ( + "TRIGGER_PLOT_FMV", + "", + StartTriggerPlotFMV + ); + + + ConsoleCommand::Make + ( + "SPECIALISTMARINE_GENERAL", + "Become a general marine (can use all weapons)", + ChangeToSpecialist_General + ); + ConsoleCommand::Make + ( + "SPECIALISTMARINE_PULSERIFLE", + "Become a pulserifle marine", + ChangeToSpecialist_PulseRifle + ); + ConsoleCommand::Make + ( + "SPECIALISTMARINE_SMARTGUN", + "Become a smartgun marine", + ChangeToSpecialist_Smartgun + ); + ConsoleCommand::Make + ( + "SPECIALISTMARINE_FLAMER", + "Become a flamethrower marine", + ChangeToSpecialist_Flamer + ); + ConsoleCommand::Make + ( + "SPECIALISTMARINE_SADAR", + "Become a sadar marine", + ChangeToSpecialist_Sadar + ); + ConsoleCommand::Make + ( + "SPECIALISTMARINE_GRENADELAUNCHER", + "Become a grenade launcher marine", + ChangeToSpecialist_GrenadeLauncher + ); + ConsoleCommand::Make + ( + "SPECIALISTMARINE_MINIGUN", + "Become a minigun marine", + ChangeToSpecialist_Minigun + ); + ConsoleCommand::Make + ( + "SPECIALISTMARINE_SD", + "Become an SD marine", + ChangeToSpecialist_Frisbee + ); + ConsoleCommand::Make + ( + "SPECIALISTMARINE_PISTOLS", + "Become a pistol marine", + ChangeToSpecialist_Pistols + ); + + + #if 1 + ConsoleCommand::Make + ( + "TRASH_FRAME_RATE", + "", + Trash_Frame_Rate + ); + + ConsoleCommand::Make + ( + "COMPLETE_LEVEL", + "", + CompleteLevel + ); + #endif + #endif + /* KJL 15:52:41 29/03/98 - version info */ + ConsoleCommand::Make + ( + "VERSION", + "", + GiveVersionDetails + ); + + ConsoleCommand::Make + ( + "SAY", + "BROADCAST MESSAGE", + DoMultiplayerSay + ); + + ConsoleCommand::Make + ( + "SAY_SPECIES", + "BROADCAST MESSAGE", + DoMultiplayerSaySpecies + ); + + ConsoleCommand::Make + ( + "CDSTOP", + "STOP THE CD PLAYING", + CDCommand_Stop + ); + + ConsoleCommand::Make + ( + "CDPLAY", + "SELECT A TRACK TO PLAY", + CDCommand_Play + ); + ConsoleCommand::Make + ( + "CDPLAYLOOP", + "SELECT A TRACK TO PLAY LOOPED", + CDCommand_PlayLoop + ); + + ConsoleCommand::Make + ( + "CDVOLUME", + "SELECT SOUND LEVEL 0 TO 127", + CDCommand_Volume + ); + ConsoleCommand::Make + ( + "ID_PLAYER", + "Get name of player nearest centre of screen", + ShowNearestPlayersName + ); + ConsoleCommand::Make + ( + "SHOW_SCORE", + "Show frag table", + ShowMultiplayerScores + ); + + ConsoleCommand::Make + ( + "DETAIL_LEVEL_MAX", + "", + SetToDefaultDetailLevels + ); + + ConsoleCommand::Make + ( + "DETAIL_LEVEL_MIN", + "", + SetToMinimalDetailLevels + ); + + ConsoleCommand::Make + ( + "SCREENSHOT", + "", + ScreenShot + ); + + ConsoleCommand::Make + ( + "QUICKSAVE", + "", + QuickSave + ); + ConsoleCommand::Make + ( + "QUICKLOAD", + "", + QuickLoad + ); + ConsoleCommand::Make + ( + "SAVE", + "Save game to slot 1-8", + ConsoleCommandSave + ); + ConsoleCommand::Make + ( + "LOAD", + "Load game from slot 1-8", + ConsoleCommandLoad + ); + ConsoleCommand::Make + ( + "SAVESLEFT", + "", + DisplaySavesLeft + ); + +} + + + + + +} // extern "C"
\ No newline at end of file |
