."; }
virtual void Activate( const char * input ) {
if ( COMBAT_CAMERA ) {
COMBAT_CAMERA->Use_Profile( input );
Print( "Profile Changed\n" );
}
}
};
class VisConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "vis_toggle"; }
virtual const char * Get_Help( void ) { return "VIS_TOGGLE - toggles vis culling."; }
virtual void Activate( const char * input ) {
COMBAT_SCENE->Enable_Vis(!COMBAT_SCENE->Is_Vis_Enabled());
if (COMBAT_SCENE->Is_Vis_Enabled()) {
Print("vis enabled\n");
} else {
Print("vis disabled\n");
}
}
};
class VisInvertConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "vis_invert"; }
virtual const char * Get_Help( void ) { return "VIS_INVERT - toggles vis invert setting."; }
virtual void Activate( const char * input ) {
COMBAT_SCENE->Invert_Vis(!COMBAT_SCENE->Is_Vis_Inverted());
if (COMBAT_SCENE->Is_Vis_Inverted()) {
Print("vis_invert enabled\n");
} else {
Print("vis_invert disabled\n");
}
}
};
class VisGridDisplayConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "vis_grid_display"; }
virtual const char * Get_Help( void ) { return "VIS_GRID_DISPLAY <0,1,2,3> - 0=off, 1=boxes, 2=centers, 3=occupied."; }
virtual void Activate( const char * input ) {
int mode = 0;
if (sscanf(input, "%d", &mode) == 1) {
COMBAT_SCENE->Set_Vis_Grid_Display_Mode(mode);
if (mode == 0) {
Print("vis_grid_display off\n");
} else if (mode == 1) {
Print("vis_grid_display boxes\n");
} else if (mode == 2) {
Print("vis_grid_display centers\n");
} else if (mode == 3) {
Print("vis_grid_display occupied\n");
}
}
}
};
class VisGridDebugConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "vis_grid_debug"; }
virtual const char * Get_Help( void ) { return "VIS_GRID_DEBUG - p=parent,s=sibling,f=front,b=back,r=reset"; }
virtual void Activate( const char * input ) {
char mode = 0;
if (sscanf(input, "%c", &mode) == 1) {
mode = toupper(mode);
if (mode == 'P') {
if (COMBAT_SCENE->Vis_Grid_Debug_Enter_Parent()) {
Print("Entered parent node\n");
} else {
Print("No parent node\n");
}
} else if (mode == 'S') {
if (COMBAT_SCENE->Vis_Grid_Debug_Enter_Sibling()) {
Print("Entered sibling\n");
} else {
Print("No sibling\n");
}
} else if (mode == 'F') {
if (COMBAT_SCENE->Vis_Grid_Debug_Enter_Front_Child()) {
Print("Entered front child\n");
} else {
Print("No front child\n");
}
} else if (mode == 'B') {
if (COMBAT_SCENE->Vis_Grid_Debug_Enter_Back_Child()) {
Print("Entered back child\n");
} else {
Print("No back child\n");
}
} else if (mode == 'R') {
COMBAT_SCENE->Vis_Grid_Debug_Reset_Node();
Print("Reset to root\n");
}
}
}
};
class VisHierarchicalConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "vis_hierarchical"; }
virtual const char * Get_Help( void ) { return "VIS_HIERARCHICAL - toggles hierarchical vis culling."; }
virtual void Activate( const char * input ) {
PhysAABTreeCullClass::Enable_Hierarchical_Vis_Culling(!PhysAABTreeCullClass::Is_Hierarchical_Vis_Culling_Enabled());
if (PhysAABTreeCullClass::Is_Hierarchical_Vis_Culling_Enabled()) {
Print("hierarchical vis culling enabled\n");
} else {
Print("hierarchical vis culling disabled\n");
}
}
};
class VisLockConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "vis_lock_sample_point"; }
virtual const char * Get_Help( void ) { return "VIS_LOCK_SAMPLE_POINT - locks/unlocks the current pvs."; }
virtual void Activate( const char * input ) {
COMBAT_SCENE->Lock_Vis_Sample_Point(!COMBAT_SCENE->Is_Vis_Sample_Point_Locked());
if (COMBAT_SCENE->Is_Vis_Sample_Point_Locked()) {
Print("Vis sample point locked.\n");
} else {
Print("Vis sample point unlocked.\n");
}
}
};
class VisSectorDisplayConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "vis_sector_display"; }
virtual const char * Get_Help( void ) { return "VIS_SECTOR_DISPLAY - toggles diplay of the current vis sector."; }
virtual void Activate( const char * input ) {
COMBAT_SCENE->Enable_Vis_Sector_Display(!COMBAT_SCENE->Is_Vis_Sector_Display_Enabled());
if (COMBAT_SCENE->Is_Vis_Sector_Display_Enabled()) {
Print("vis_sector_display enabled\n");
} else {
Print("vis_sector_display disabled\n");
}
}
};
class VisSectorHistoryConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "vis_sector_history"; }
virtual const char * Get_Help( void ) { return "VIS_SECTOR_HISTORY - toggles diplay of the previous 3 vis sectors."; }
virtual void Activate( const char * input ) {
COMBAT_SCENE->Enable_Vis_Sector_History_Display(!COMBAT_SCENE->Is_Vis_Sector_History_Display_Enabled());
if (COMBAT_SCENE->Is_Vis_Sector_History_Display_Enabled()) {
Print("vis_sector_history enabled\n");
} else {
Print("vis_sector_history disabled\n");
}
}
};
class SuicideConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "suicide"; }
virtual const char * Get_Help( void ) { return "SUICIDE - kill your commando."; }
virtual void Activate( const char * input ) {
if (cNetwork::I_Am_Client()) {
Print("Committing suicide.\n");
cSuicideEvent * p_suicide = new cSuicideEvent;
p_suicide->Init();
} else {
Print("Only clients can commit suicide.\n");
}
}
};
class ShadowAttenuationConsoleFunctionClass : public ConsoleFunctionClass
{
virtual const char * Get_Name( void ) { return "shadow_attenuation"; }
virtual const char * Get_Help( void ) { return "SHADOW_ATTENUATION - set the attenuation ranges for shadows."; }
virtual void Activate( const char * input ) {
PhysicsSceneClass * scene = PhysicsSceneClass::Get_Instance();
float znear,zfar;
if (sscanf(input, "%f %f",&znear,&zfar) == 2) {
scene->Set_Shadow_Attenuation(znear,zfar);
scene->Get_Shadow_Attenuation(&znear,&zfar);
Print("shadow attenuation set to %f %f\n",znear,zfar);
}
}
};
class ShadowBlobTextureConsoleFunctionClass : public ConsoleFunctionClass
{
virtual const char * Get_Name( void ) { return "shadow_blob_texture"; }
virtual const char * Get_Help( void ) { return "SHADOW_BLOB_TEXTURE - sets the texture to use for blob shadows."; }
virtual void Activate( const char * input ) {
if (strlen(input) > 0) {
if (PhysResourceMgrClass::Set_Shadow_Blob_Texture(input)) {
Print("shadow blob texture set to: %s\n",input);
}
}
}
};
class ShadowElevationConsoleFunctionClass : public ConsoleFunctionClass
{
virtual const char * Get_Name( void ) { return "shadow_elevation"; }
virtual const char * Get_Help( void ) { return "SHADOW_ELEVATION - sets the angle of the shadow projection."; }
virtual void Activate( const char * input )
{
/*
** NOTE: THIS IS JUST TEST CODE TO SEE HOW VARIOUS SHADOW ALGORITHMS
** WORK WITH VARIOUS SUN-LIGHT ANGLES. THE SUN IS NOT TO BE MOVED IN-GAME!!!
*/
PhysicsSceneClass * scene = PhysicsSceneClass::Get_Instance();
float elevation,rotation;
scene->Get_Sun_Light_Orientation(&rotation,&elevation);
if (sscanf(input, "%f",&elevation) == 1) {
scene->Set_Sun_Light_Orientation(rotation,DEG_TO_RADF(elevation));
}
}
};
class ShadowIntensityConsoleFunctionClass : public ConsoleFunctionClass
{
virtual const char * Get_Name( void ) { return "shadow_intensity"; }
virtual const char * Get_Help( void ) { return "SHADOW_INTENSITY - sets the darkness of dynamic shadows (0 - 1)."; }
virtual void Activate( const char * input )
{
PhysicsSceneClass * scene = PhysicsSceneClass::Get_Instance();
scene->Set_Shadow_Normal_Intensity(atof(input));
Print("shadow intensity set to: %f\n",scene->Get_Shadow_Normal_Intensity());
}
};
class ShadowPerPolyCullingConsoleFunctionClass : public ConsoleFunctionClass
{
virtual const char * Get_Name( void ) { return "shadow_per_poly_culling"; }
virtual const char * Get_Help( void ) { return "SHADOW_PER_POLY_CULLING - toggles per poly shadow culling."; }
virtual void Activate( const char * input )
{
MaterialPassClass::Enable_Per_Polygon_Culling(!MaterialPassClass::Is_Per_Polygon_Culling_Enabled());
if (MaterialPassClass::Is_Per_Polygon_Culling_Enabled()) {
Print("per-polygon shadow culling enabled!\n");
} else {
Print("per-polygon shadow culling disabled\n");
}
}
};
class ShadowResolutionConsoleFunctionClass : public ConsoleFunctionClass
{
virtual const char * Get_Name( void ) { return "shadow_resolution"; }
virtual const char * Get_Help( void ) { return "SHADOW_RESOLUTION - sets the resolution of dynamic shadows (use a power of 2!)"; }
virtual void Activate( const char * input )
{
PhysicsSceneClass * scene = PhysicsSceneClass::Get_Instance();
scene->Set_Shadow_Resolution(atof(input));
Print("shadow resolution set to: %f\n",scene->Get_Shadow_Resolution());
}
};
class ShadowCountConsoleFunctionClass : public ConsoleFunctionClass
{
virtual const char * Get_Name( void ) { return "shadow_count"; }
virtual const char * Get_Help( void ) { return "SHADOW_COUNT - sets the maximum simultaneous shadows"; }
virtual void Activate( const char * input )
{
PhysicsSceneClass * scene = PhysicsSceneClass::Get_Instance();
scene->Set_Max_Simultaneous_Shadows(atof(input));
Print("simultaneous shadow count set to: %f\n",scene->Get_Max_Simultaneous_Shadows());
}
};
class PhysicsDebugConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "physics_debug"; }
virtual const char * Get_Help( void ) { return "PHYSICS_DEBUG - toggles physics debugging display."; }
virtual void Activate( const char * input ) {
COMBAT_SCENE->Enable_Debug_Display(!COMBAT_SCENE->Is_Debug_Display_Enabled());
if (COMBAT_SCENE->Is_Debug_Display_Enabled()) {
Print("physics debug display enabled!\n");
} else {
Print("physics debug display disabled :-(\n");
}
}
};
class Phys3NetConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "phys3_net"; }
virtual const char * Get_Help( void ) { return "PHYS3_NET - sets the phys3 networking constants."; }
virtual void Activate( const char * input ) {
float corr_time,allow_error,pop_error;
int params = sscanf(input, "%f %f %f",&allow_error,&pop_error,&corr_time);
if (params == 3) {
Phys3Class::Set_Allowable_Error(allow_error);
Phys3Class::Set_Pop_Error(pop_error);
Phys3Class::Set_Correction_Time(corr_time);
}
Print("Phys3 Network Params: allowable_error = %f\r\n",Phys3Class::Get_Allowable_Error());
Print("Phys3 Network Params: pop_error = %f\r\n",Phys3Class::Get_Pop_Error());
Print("Phys3 Network Params: correction_time = %f\r\n",Phys3Class::Get_Correction_Time());
}
};
class RBodyNetConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "rbody_net"; }
virtual const char * Get_Help( void ) { return "rbody_net - sets the rigid body correction time."; }
virtual void Activate( const char * input ) {
float corr_time;
int params = sscanf(input, "%f",&corr_time );
if (params == 3) {
RigidBodyClass::Set_Correction_Time(corr_time);
}
Print("Rigid Body Network Params: correction_time = %f\r\n",RigidBodyClass::Get_Correction_Time());
}
};
class ProjectorDebugConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "projector_debug"; }
virtual const char * Get_Help( void ) { return "PROJECTOR_DEBUG - toggles projector debugging display."; }
virtual void Activate( const char * input ) {
COMBAT_SCENE->Enable_Projector_Debug_Display(!COMBAT_SCENE->Is_Projector_Debug_Display_Enabled());
if (COMBAT_SCENE->Is_Projector_Debug_Display_Enabled()) {
Print("projector debug display enabled!\n");
} else {
Print("projector debug display disabled :-(\n");
}
}
};
class DirtyCullDebugConsoleFunctionClass : public ConsoleFunctionClass
{
public:
virtual const char * Get_Name( void ) { return "dirty_cull_debug"; }
virtual const char * Get_Help( void ) { return "DIRTY_CULL_DEBUG - toggles debugging of the dirty-cull-list."; }
virtual void Activate( const char * input ) {
COMBAT_SCENE->Enable_Dirty_Cull_Debug_Display(!COMBAT_SCENE->Is_Dirty_Cull_Debug_Display_Enabled());
if (COMBAT_SCENE->Is_Dirty_Cull_Debug_Display_Enabled()) {
Print("dirty cull debug display enabled!\n");
} else {
Print("dirty cull debug display disabled.\n");
}
}
};
class NextRenderConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "next_render"; }
virtual const char * Get_Help( void ) { return "NEXT_RENDER - switches to the next render device."; }
virtual void Activate( const char * input ) {
WW3D::Set_Next_Render_Device();
}
};
class OneShotKillsConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "one_shot_kills"; }
virtual const char * Get_Alias( void ) { return "osk"; }
virtual const char * Get_Help( void ) { return "ONE_SHOT_KILLS - kill or destroy with one shot. Server only."; }
virtual void Activate( const char * input ) {
if (cNetwork::I_Am_Server()) {
bool osk = false;
#ifdef WWDEBUG
osk = DefenseObjectClass::Toggle_One_Shot_Kills();
#endif // WWDEBUG
Print( "One Shot Kills: %s\n", osk ? "ON" : "OFF");
} else {
Print(Get_Help());
}
}
};
class OpenConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "open"; }
virtual const char * Get_Help( void ) { return "OPEN [regedit|logfile|ini ininame] - open specified object."; }
virtual void Activate( const char * input ) {
if (!stricmp(input, "regedit")) {
cNetwork::Shell_Command("regedit");
} else if (!stricmp(input, "logfile")) {
cNetwork::Shell_Command(DebugManager::Logfile_Name());
} else if (strstr(input, "ini")) {
char filename[200];
sscanf(input, "ini %s", filename);
char open_command[200];
sprintf(open_command, "data\\%s.ini", filename);
cNetwork::Shell_Command(open_command);
} else {
Print(Get_Help());
}
}
};
class InvalidateMeshCacheConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "invalidate_mesh_cache"; }
virtual const char * Get_Help( void ) { return "INVALIDATE_MESH_CACHE - invalidates all cached mesh data."; }
virtual void Activate( const char * input ) {
WW3D::_Invalidate_Mesh_Cache();
Print( "Mesh cache invalidated." );
}
};
class InvalidateTexturesConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "invalidate_textures"; }
virtual const char * Get_Help( void ) { return "INVALIDATE_TEXTURES - invalidates all textures."; }
virtual void Activate( const char * input ) {
WW3D::_Invalidate_Textures();
Print( "Textures invalidated." );
}
};
class TexturingEnableConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "texturing_enable"; }
virtual const char * Get_Help( void ) { return "TEXTURING_ENABLE toggle texturing."; }
virtual void Activate( const char * input ) {
WW3D::Enable_Texturing(!WW3D::Is_Texturing_Enabled());
Print( "Textures switched." );
}
};
class ExposePrelitConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "expose_prelit"; }
virtual const char * Get_Help( void ) { return "EXPOSE_PRELIT - expose precalculated lighting on meshes."; }
virtual void Activate( const char * input ) {
static char *_comment [2] = {
"Unexposed prelit meshes\n",
"Exposed prelit meshes\n"
};
WW3D::Expose_Prelit (!WW3D::Expose_Prelit());
Print (_comment [WW3D::Expose_Prelit() ? 1 : 0]);
}
};
class PlayerPositionConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "player_position"; }
//virtual const char * Get_Alias( void ) { return "pp"; }
virtual const char * Get_Help( void ) { return "PLAYER_POSITION - toggles the players world position display."; }
virtual void Activate( const char * input ) {
Get_Console()->Toggle_Player_Position();
}
};
class ToggleAssetPreloadingConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "toggle_preloading"; }
virtual const char * Get_Help( void ) { return "TOGGLE_PRELOADING - toggles asset preloading."; }
virtual void Activate( const char * input ) {
bool is_preloading = cDevOptions::PreloadAssets.Toggle();
Print(is_preloading ? "Assets WILL preload.\n" : "Assets will NOT preload.\n" );
}
};
class ToggleRenderingConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "toggle_rendering"; }
virtual const char * Get_Help( void ) { return "TOGGLE_RENDERING - toggles rendering of various types."; }
virtual void Activate( const char * input ) {
/*
** Note: I'm only comparing the first two characters so the user doesn't have to type the whole thing
*/
if (_strnicmp(input,"st",2) == 0) {
StaticPhysClass::Disable_All_Rendering(!StaticPhysClass::Is_All_Rendering_Disabled());
Print(StaticPhysClass::Is_All_Rendering_Disabled() ? "Static object rendering DISABLED" : "Static object rendering ENABLED");
} else if (_strnicmp(input,"dy",2) == 0) {
DynamicPhysClass::Disable_All_Rendering(!DynamicPhysClass::Is_All_Rendering_Disabled());
Print(DynamicPhysClass::Is_All_Rendering_Disabled() ? "Dynamic object rendering DISABLED" : "Dynamic object rendering ENABLED");
} else if (_strnicmp(input,"hu",2) == 0) {
HumanPhysClass::Disable_All_Rendering(!HumanPhysClass::Is_All_Rendering_Disabled());
Print(HumanPhysClass::Is_All_Rendering_Disabled() ? "Human object rendering DISABLED" : "Human object rendering ENABLED");
} else if (_strnicmp(input,"ve",2) == 0) {
VehiclePhysClass::Disable_All_Rendering(!VehiclePhysClass::Is_All_Rendering_Disabled());
Print(VehiclePhysClass::Is_All_Rendering_Disabled() ? "Vehicle object rendering DISABLED" : "Vehicle object rendering ENABLED");
}
}
};
class ToggleSimulationConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "toggle_simulation"; }
virtual const char * Get_Help( void ) { return "TOGGLE_SIMULATION - toggles rendering of various types."; }
virtual void Activate( const char * input ) {
/*
** Note: I'm only comparing the first two characters so the user doesn't have to type the whole thing
*/
if (_strnicmp(input,"st",2) == 0) {
StaticPhysClass::Disable_All_Simulation(!StaticPhysClass::Is_All_Simulation_Disabled());
Print(StaticPhysClass::Is_All_Simulation_Disabled() ? "Static object Simulation DISABLED" : "Static object Simulation ENABLED");
} else if (_strnicmp(input,"dy",2) == 0) {
DynamicPhysClass::Disable_All_Simulation(!DynamicPhysClass::Is_All_Simulation_Disabled());
Print(DynamicPhysClass::Is_All_Simulation_Disabled() ? "Dynamic object Simulation DISABLED" : "Dynamic object Simulation ENABLED");
} else if (_strnicmp(input,"hu",2) == 0) {
HumanPhysClass::Disable_All_Simulation(!HumanPhysClass::Is_All_Simulation_Disabled());
Print(HumanPhysClass::Is_All_Simulation_Disabled() ? "Human object Simulation DISABLED" : "Human object Simulation ENABLED");
} else if (_strnicmp(input,"ve",2) == 0) {
VehiclePhysClass::Disable_All_Simulation(!VehiclePhysClass::Is_All_Simulation_Disabled());
Print(VehiclePhysClass::Is_All_Simulation_Disabled() ? "Vehicle object Simulation DISABLED" : "Vehicle object Simulation ENABLED");
}
}
};
class TomConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "tom"; }
virtual const char * Get_Help( void ) { return "TOM - Annoyance-reduction registry tweaks customized by Tom."; }
virtual void Activate( const char * input ) {
//
// Enable a good level of diagnostics - all devices and types except
// screen and netprolific
//
ConsoleFunctionManager::Parse_Input("debug_device on");
ConsoleFunctionManager::Parse_Input("debug_device screen");
ConsoleFunctionManager::Parse_Input("debug_type on");
ConsoleFunctionManager::Parse_Input("debug_type netprolific");
//
// Set max scroll lines
//
if (Get_Text_Display()) {
WWASSERT(Get_Text_Display() != NULL);
Get_Text_Display()->Set_Max_Scroll_Lines(10);
}
//
// Debug flags
//
//cDevOptions::ShowDiagnostics.Set(true);
cDevOptions::PreloadAssets.Set(false);
cDevOptions::ShowFps.Set(true);
cDevOptions::ShowGodStatus.Set(true);
cDevOptions::CompareExeVersionOnNetwork.Set(false);
cDevOptions::CrtDbgEnabled.Set(false);
cDevOptions::LogDataSafe.Set(false);
cDevOptions::FilterLevelFiles.Set(false);
cDevOptions::ShowThumbnailPreInitDialog.Set(false);
//
// Release flags
//
cUserOptions::ShowNamesOnSoldier.Set(true);
cUserOptions::CameraLockedToTurret.Set(true);
cUserOptions::SkipQuitConfirmDialog.Set(true);
cUserOptions::SkipIngameQuitConfirmDialog.Set(true);
cUserOptions::PermitDiagLogging.Set(false);
//
// Set 800 x 600, windowed mode
//
{
RegistryClass registry(APPLICATION_SUB_KEY_NAME_RENDER);
WWASSERT(registry.Is_Valid());
registry.Set_Int(VALUE_NAME_RENDER_DEVICE_WIDTH, 800);
registry.Set_Int(VALUE_NAME_RENDER_DEVICE_HEIGHT, 600);
registry.Set_Int(VALUE_NAME_RENDER_DEVICE_WINDOWED, TRUE);
}
/*
//
// Stop Jani from spying on us (avoid delay on exit)
//
{
RegistryClass registry(APPLICATION_SUB_KEY_NAME_DEBUG);
WWASSERT(registry.Is_Valid());
registry.Set_Int("SystemInfoLogDisable", TRUE);
registry.Set_Int("DisableLogCopying", TRUE);
}
*/
//
// Default to third person
//
{
RegistryClass registry(APPLICATION_SUB_KEY_NAME_OPTIONS);
WWASSERT(registry.Is_Valid());
registry.Set_Int("DefaultToFirstPerson", FALSE);
}
//
// Skip intro movies
//
{
RegistryClass registry(APPLICATION_SUB_KEY_NAME_OPTIONS);
WWASSERT(registry.Is_Valid());
registry.Set_Int("SkipAllIntroMovies", TRUE);
}
//
// Do not require CD for movies
//
{
RegistryClass registry(APPLICATION_SUB_KEY_NAME_DEBUG);
WWASSERT(registry.Is_Valid());
registry.Set_Int("DisableCDCheck", TRUE);
}
//
// Set gamma etc so that they don't screw up debugging
//
{
RegistryClass registry(APPLICATION_SUB_KEY_NAME_SYSTEM_SETTINGS);
WWASSERT(registry.Is_Valid());
registry.Set_Int("Gamma", 1);
registry.Set_Int("Brightness", 0);
registry.Set_Int("Contrast", 1);
}
}
};
class RenderBoxesConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "render_boxes"; }
virtual const char * Get_Help( void ) { return "RENDER_BOXES - enables rendering of boxes. 0=none 1=all 2=physical 4=projectile."; }
virtual void Activate( const char * input ) {
int mask = atoi(input);
WW3D::Set_Collision_Box_Display_Mask(mask);
}
};
class AmbientLightConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "ambient_light"; }
virtual const char * Get_Help( void ) { return "AMBIENT_LIGHT - sets the ambeint light color to ."; }
virtual void Activate( const char * input ) {
if ( COMBAT_SCENE ) {
float r, g, b;
if (sscanf(input, "%f %f %f", &r, &g, &b) == 3) {
COMBAT_SCENE->Set_Ambient_Light(Vector3(r, g, b));
Print( "Ambient Light changed\n" );
}
} else {
Print( "Error : no COMBAT_SCENE\n" );
}
}
};
class VblankSyncConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "vblank_sync"; }
virtual const char * Get_Help( void ) { return "VBLANK_SYNC - toggles vblank syncing"; }
virtual void Activate( const char * input ) {
if (WW3D::Get_Ext_Swap_Interval() == 0) {
WW3D::Set_Ext_Swap_Interval(1);
Print("Vblank syncing ENABLED!\n");
} else {
WW3D::Set_Ext_Swap_Interval(0);
Print("Vblank syncing DISABLED!\n");
}
}
};
class FrameTexturesConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "frame_textures"; }
virtual const char * Get_Help( void ) { return "FRAME_TEXTURES - measures the amoutn of textures needed for the next frame."; }
virtual void Activate( const char * input ) {
DebugManager::Measure_Frame_Textures();
}
};
class DebugObjectivesConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "objectives_debug"; }
virtual const char * Get_Help( void ) { return "OBJECTIVES_DEBUG - toggles Mission Objectives debug mode."; }
virtual void Activate( const char * input ) {
bool enable_mode = !ObjectiveManager::Is_Objective_Debug_Mode_Enabled();
ObjectiveManager::Enable_Objective_Debug_Mode( enable_mode );
if (enable_mode) {
Print( "Activating Mission Objectives Debug Mode.\n" );
} else {
Print( "Deactivating Mission Objectives Debug Mode.\n" );
}
}
};
class FreeWeaponsConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "free_weapons"; }
virtual const char * Get_Help( void ) { return "FREE_WEAPONS - toggle free_weapons flag (server only)."; }
virtual void Activate( const char * input ) {
if (!cNetwork::I_Am_Server()) {
Print("Only the server can toggle free-weapons.\n");
} else {
WWASSERT(PTheGameData != NULL);
bool on = The_Game()->IsFreeWeapons.Toggle();
Print("Free weapons is %s.\n", on ? "ON" : "OFF");
if (on) {
//
// Give everyone free weapons right away
//
SLNode * objnode;
for (objnode = GameObjManager::Get_Smart_Game_Obj_List()->Head(); objnode; objnode = objnode->Next()) {
SmartGameObj * p_smart_obj = objnode->Data();
WWASSERT(p_smart_obj != NULL);
if (p_smart_obj->As_SoldierGameObj() != NULL &&
p_smart_obj->Get_Player_Type() != PLAYERTYPE_NEUTRAL) {
p_smart_obj->As_SoldierGameObj()->Give_All_Weapons();
}
}
}
}
}
};
class ToggleEmotIconsConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "toggle_emoticons"; }
virtual const char * Get_Help( void ) { return "TOGGLE_EMOTICONS - Toggle the display of emot icons during conversations."; }
virtual void Activate( const char * /*input*/ ) {
bool display = !ConversationMgrClass::Are_Emot_Icons_Displayed ();
ConversationMgrClass::Display_Emot_Icons (display);
if (display) {
Print( "EmotIcons are now enabled.\n" );
} else {
Print( "EmotIcons are now disabled.\n" );
}
}
};
class SoldierGhostDebugDisplayConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "toggle_ghost_debug_display"; }
virtual const char * Get_Help( void ) { return "toggle_ghost_debug_display - Displays a box around soldiers that are in 'ghost' collision mode."; }
virtual void Activate( const char * input ) {
bool enable = !SoldierGameObj::Is_Ghost_Collision_Debug_Display_Enabled ();
SoldierGameObj::Enable_Ghost_Collision_Debug_Display (enable);
if (enable) {
Print( "Ghost collision debug display enabled.\n" );
} else {
Print( "Ghost collision debug display disabled.\n" );
}
return ;
}
};
class HUDHelpTextTestConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "hud_help_text"; }
//virtual const char * Get_Help( void ) { return "CnC [vehicle | powerup |char[minigunner|rocket_soldier|grenadier|engineer|flame_thrower|mutant] [enlisted|officer|special_forces|boss] ] - Purchases a team vehicle, a player powerup or upgrades the player."; }
virtual const char * Get_Help( void ) { return "hud_help_text - Sets the current HUD help text."; }
virtual void Activate( const char * input ) {
WideStringClass wide_string;
wide_string.Convert_From (input);
HUDInfo::Set_HUD_Help_Text (wide_string);
return ;
}
};
class CnCModeConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "cnc"; }
//virtual const char * Get_Help( void ) { return "CnC [vehicle | powerup |char[minigunner|rocket_soldier|grenadier|engineer|flame_thrower|mutant] [enlisted|officer|special_forces|boss] ] - Purchases a team vehicle, a player powerup or upgrades the player."; }
virtual const char * Get_Help( void ) { return "CnC - Displays CnC player console (for gods only)."; }
virtual void Activate( const char * input ) {
if (cNetwork::I_Am_God()) {
PlayerTerminalClass::Get_Instance ()->Display_Default_Terminal_For_Player (COMBAT_STAR);
} else {
Print(Get_Help());
}
}
};
class DebugEncyRevealConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "reveal_encyclopedia"; }
virtual const char * Get_Help( void ) { return "reveal_encyclopedia - Shows all entries in the encyclopedia."; }
virtual void Activate( const char * input ) {
EncyclopediaMgrClass::Reveal_All_Objects ();
return ;
}
};
class DebugShowMoveVectorConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "move_vectors"; }
virtual const char * Get_Help( void ) { return "move_vectors - Toggles the debug move vectors."; }
virtual void Activate( const char * input ) {
bool displayed = PathClass::Are_Move_Vectors_Displayed ();
displayed = !displayed;
PathClass::Display_Move_Vectors (displayed);
if ( displayed ) {
Print( "Move vectors ON.\n" );
} else {
Print( "Move vectors OFF.\n" );
}
return ;
}
};
class MapRevealConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "map_reveal"; }
virtual const char * Get_Help( void ) { return "map_reveal - Removes the cloud from the map."; }
virtual void Activate( const char * input ) {
MapMgrClass::Clear_All_Cloud_Cells ();
Print( "Map is now visible.\n" );
return ;
}
};
class ChangeCharacterClassConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "change_character_class"; }
virtual const char * Get_Help( void ) { return "CHANGE_CHARACTER_CLASS - changes your character to the specified class."; }
virtual void Activate( const char * input ) {
bool success = false;
DefinitionClass *definition = DefinitionMgrClass::Find_Typed_Definition( input, CLASSID_GAME_OBJECT_DEF_SOLDIER );
if (definition != NULL) {
SoldierGameObjDef *soldier_def = reinterpret_cast (definition);
COMBAT_STAR->Re_Init( *soldier_def );
COMBAT_STAR->Post_Re_Init();
success = true;
}
if (success) {
Print( "Successfully changed character class.\n" );
} else {
Print( "Unable to change character class.\n" );
}
}
};
class RenderModeConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "render_mode"; }
virtual const char * Get_Alias( void ) { return "rm"; }
virtual const char * Get_Help( void ) { return "RENDER_MODE [0 fill | 1 lines | 2 points] - set the current render mode."; }
virtual void Activate( const char * input ) {
if (COMBAT_SCENE != NULL) {
if ((stricmp(input,"points") == 0) || (stricmp(input,"2") == 0)) {
COMBAT_SCENE->Set_Polygon_Mode(SceneClass::POINT);
Print("Polygon mode set to POINT\n");
} else if ((stricmp(input,"lines") == 0) || (stricmp(input,"1") == 0)) {
COMBAT_SCENE->Set_Polygon_Mode(SceneClass::LINE);
Print("Polygon mode set to LINE\n");
} else if ((stricmp(input,"fill") == 0) || (stricmp(input,"0") == 0)) {
COMBAT_SCENE->Set_Polygon_Mode(SceneClass::FILL);
Print("Polygon mode set to FILL\n");
}
}
}
};
class RenderModeExtraPassConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "render_mode_extra_pass"; }
virtual const char * Get_Alias( void ) { return "rm"; }
virtual const char * Get_Help( void ) { return "RENDER_MODE_EXTRA_PASS [0 disable | 1 lines | 2 zbuffered]"; }
virtual void Activate( const char * input ) {
if (COMBAT_SCENE != NULL) {
if ((stricmp(input,"disable") == 0) || (stricmp(input,"0") == 0)) {
COMBAT_SCENE->Set_Extra_Pass_Polygon_Mode(SceneClass::EXTRA_PASS_DISABLE);
Print("Extra pass polygon mode set to DISABLE\n");
} else if ((stricmp(input,"lines") == 0) || (stricmp(input,"1") == 0)) {
COMBAT_SCENE->Set_Extra_Pass_Polygon_Mode(SceneClass::EXTRA_PASS_LINE);
Print("Extra pass polygon mode set to LINE\n");
} else if ((stricmp(input,"zbuffered") == 0) || (stricmp(input,"2") == 0)) {
COMBAT_SCENE->Set_Extra_Pass_Polygon_Mode(SceneClass::EXTRA_PASS_CLEAR_LINE);
Print("Extra pass polygon mode set to ZBUFFERED\n");
}
}
}
};
class TextureFilterModeConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "texture_filter_mode"; }
virtual const char * Get_Help( void ) { return "TEXTURE_FILTER_MODE [none|fast|best] - set texture filter and mipmap modes."; }
virtual void Activate( const char * input ) {
if (stricmp(input,"none") == 0) {
TextureClass::_Set_Default_Min_Filter(TextureClass::FILTER_TYPE_FAST);
TextureClass::_Set_Default_Mag_Filter(TextureClass::FILTER_TYPE_FAST);
TextureClass::_Set_Default_Mip_Filter(TextureClass::FILTER_TYPE_NONE);
Print("Texture filter mode changed to: none\n");
}
else if (stricmp(input,"fast") == 0) {
TextureClass::_Set_Default_Min_Filter(TextureClass::FILTER_TYPE_FAST);
TextureClass::_Set_Default_Mag_Filter(TextureClass::FILTER_TYPE_FAST);
TextureClass::_Set_Default_Mip_Filter(TextureClass::FILTER_TYPE_FAST);
Print("Texture filter mode changed to: fast\n");
}
if (stricmp(input,"best") == 0) {
TextureClass::_Set_Default_Min_Filter(TextureClass::FILTER_TYPE_BEST);
TextureClass::_Set_Default_Mag_Filter(TextureClass::FILTER_TYPE_BEST);
TextureClass::_Set_Default_Mip_Filter(TextureClass::FILTER_TYPE_BEST);
Print("Texture filter mode changed to: best\n");
}
else {
Print("Valid filter modes are: none|fast|best\n");
}
}
};
class EnableTriangleRenderConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "enable_triangle_render"; }
virtual const char * Get_Help( void ) { return "ENABLE_TRIANGLE_RENDER [none|opaque|sorting|all] - enable/disable triangle rendering."; }
virtual void Activate( const char * input ) {
if (stricmp(input,"none") == 0) {
DX8Wrapper::_Enable_Triangle_Draw(false);
SortingRendererClass::_Enable_Triangle_Draw(false);
Print("All polygon rendering disabled\n");
}
else if (stricmp(input,"opaque") == 0) {
DX8Wrapper::_Enable_Triangle_Draw(true);
SortingRendererClass::_Enable_Triangle_Draw(false);
Print("Only opaque polygons enabled\n");
}
else if (stricmp(input,"sorting") == 0) {
DX8Wrapper::_Enable_Triangle_Draw(false);
SortingRendererClass::_Enable_Triangle_Draw(true);
Print("Only sorting polygons enabled\n");
}
else {
DX8Wrapper::_Enable_Triangle_Draw(true);
SortingRendererClass::_Enable_Triangle_Draw(true);
Print("All polygons enabled\n");
}
}
};
class RunFastConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "run_fast"; }
virtual const char * Get_Help( void ) { return "RUN_FAST - set options for fast framerate."; }
virtual void Activate( const char * input ) {
DebugManager::Option_Enable(DebugManager::DEBUG_DISABLE_LIGHTS, true);
WWASSERT(DebugManager::Option_Is_Enabled(DebugManager::DEBUG_DISABLE_LIGHTS));
Print("Lights disabled.\n");
ConsoleFunctionManager::Parse_Input("Dynamic_LOD_Budget 100");
ConsoleFunctionManager::Parse_Input("Static_LOD_Budget 100");
ConsoleFunctionManager::Parse_Input("Shadow_Mode 0");
ConsoleFunctionManager::Parse_Input("Prelit_Mode 0");
//ConsoleFunctionManager::Parse_Input("Mesh_Draw_Mode 0");
if (COMBAT_SCENE != NULL) {
COMBAT_SCENE->Enable_Dynamic_Projectors(false);
Print("Dynamic Projectors disabled.\n");
COMBAT_SCENE->Enable_Static_Projectors(false);
Print("Static Projectors disabled.\n");
}
WW3D::Set_Texture_Reduction(1);
Print("Texture Resolution set to 1.\n");
ConsoleGameModeClass::Save_Registry_Keys();
if (Get_Text_Display()) {
WWASSERT(Get_Text_Display() != NULL);
Get_Text_Display()->Set_Max_Scroll_Lines(3);
Print("Set_Max_Scroll_Lines(3)\n");
}
}
};
class RenderBackfacesConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "render_backfaces"; }
virtual const char * Get_Help( void ) { return "RENDER_BACKFACES - toggles debug rendering of backfaced polys."; }
virtual void Activate( const char * input ) {
/*
** This turns on WW3D backface rendering and also causes the Physics-Scene to
** stop rendering non-occluders so that we can get a better idea of what VIS
** is seeing when it renders the occluders and checks for backfaces
*/
PhysicsSceneClass * scene = PhysicsSceneClass::Get_Instance();
if (scene) {
scene->Enable_Backface_Occluder_Debug(!scene->Is_Backface_Occluder_Debug_Enabled());
if (scene->Is_Backface_Occluder_Debug_Enabled()) {
Print("Backface Debug Display ENABLED\n");
} else {
Print("Backface Debug Display DISABLED\n");
}
}
}
};
class AmmoConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "ammo"; }
virtual const char * Get_Help( void ) { return "AMMO - sets the players weapon's ammo count."; }
virtual void Activate( const char * input ) {
if ( COMBAT_STAR != NULL ) {
WeaponClass * weapon = COMBAT_STAR->Get_Weapon();
if ( weapon ) {
int amount = atoi( input );
weapon->Set_Total_Rounds( amount );
Print( "Ammo set to %d rounds\n", amount );
}
}
}
};
extern bool ScriptTrace;
class ScriptTraceConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "script_trace"; }
virtual const char * Get_Help( void ) { return "SCRIPT_TRACE - toggles debug trace of all scipt events and commands."; }
virtual void Activate( const char * input ) {
ScriptTrace = !ScriptTrace;
Print( "ScriptTrace is %s\n", ScriptTrace ? "ON" : "OFF" );
}
};
class DebugTypeConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "debug_type"; }
const char * Get_Alias( void ) { return "dt"; }
virtual const char * Get_Help( void ) { return
"DEBUG_TYPE [type|on|off] - toggles the debug display of type (info, warning, error, script)"; }
virtual void Activate( const char * input ) {
char str[128];
sprintf(str,"ERROR (%s)\n", input );
if (stricmp(input,"info") == 0) {
DebugManager::Toggle_Type_Enabled( DebugManager::DEBUG_TYPE_INFORMATION );
sprintf(str, "Information Debug %s\n", DebugManager::Is_Type_Enabled( DebugManager::DEBUG_TYPE_INFORMATION ) ? "Enabled" : "Disabled" );
} else if (stricmp(input,"warning") == 0) {
DebugManager::Toggle_Type_Enabled( DebugManager::DEBUG_TYPE_WARNING );
sprintf(str, "Warning Debug %s\n", DebugManager::Is_Type_Enabled( DebugManager::DEBUG_TYPE_WARNING ) ? "Enabled" : "Disabled" );
} else if (stricmp(input,"error") == 0) {
DebugManager::Toggle_Type_Enabled( DebugManager::DEBUG_TYPE_ERROR );
sprintf(str, "Error Debug %s\n", DebugManager::Is_Type_Enabled( DebugManager::DEBUG_TYPE_ERROR ) ? "Enabled" : "Disabled" );
} else if (stricmp(input,"script") == 0) {
DebugManager::Toggle_Type_Enabled( DebugManager::DEBUG_TYPE_SCRIPT );
sprintf(str, "Script Debug %s\n", DebugManager::Is_Type_Enabled( DebugManager::DEBUG_TYPE_SCRIPT ) ? "Enabled" : "Disabled" );
} else if (stricmp(input,"netadmin") == 0) {
DebugManager::Toggle_Type_Enabled( DebugManager::DEBUG_TYPE_NETWORK_ADMIN );
sprintf(str, "Network Admin Debug %s\n", DebugManager::Is_Type_Enabled( DebugManager::DEBUG_TYPE_NETWORK_ADMIN ) ? "Enabled" : "Disabled" );
} else if (stricmp(input,"netbasic") == 0) {
DebugManager::Toggle_Type_Enabled( DebugManager::DEBUG_TYPE_NETWORK_BASIC );
sprintf(str, "Network Basic Debug %s\n", DebugManager::Is_Type_Enabled( DebugManager::DEBUG_TYPE_NETWORK_BASIC ) ? "Enabled" : "Disabled" );
} else if (stricmp(input,"netprolific") == 0) {
DebugManager::Toggle_Type_Enabled( DebugManager::DEBUG_TYPE_NETWORK_PROLIFIC );
sprintf(str, "Network Prolific Debug %s\n", DebugManager::Is_Type_Enabled( DebugManager::DEBUG_TYPE_NETWORK_PROLIFIC ) ? "Enabled" : "Disabled" );
} else if (stricmp(input,"net") == 0) {
DebugManager::Disable_Type( DebugManager::DEBUG_TYPE_NETWORK_ADMIN );
DebugManager::Disable_Type( DebugManager::DEBUG_TYPE_NETWORK_BASIC );
DebugManager::Disable_Type( DebugManager::DEBUG_TYPE_NETWORK_PROLIFIC );
sprintf(str, "All network debug types DISABLED\n");
} else if (stricmp(input,"on") == 0) {
DebugManager::Enable_Type( (DebugManager::DebugType)-1 );
sprintf(str, "All Debug Types Enabled\n" );
} else if (stricmp(input,"off") == 0) {
DebugManager::Disable_Type( (DebugManager::DebugType)-1 );
sprintf(str, "All Debug Types Disabled\n" );
}
Print(str);
Debug_Say((str));
}
};
/*
class RadarZoomConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "radar_zoom"; }
virtual const char * Get_Help( void ) { return "RADAR_ZOOM - Set radar zoom factor."; }
virtual void Activate( const char * input ) {
float zoom_factor = atof(input);
if (zoom_factor > WWMATH_EPSILON) {
// RadarManager::Set_Zoom_Factor(zoom_factor);
Print( "Radar zoomed\n" );
} else {
Print( "Error - zoom_factor must be small and positive.\n" );
}
}
};
class RadarMaxConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "radar_max"; }
virtual const char * Get_Help( void ) { return "RADAR_MAX - zoom out the radar to world extents."; }
virtual void Activate( const char * input ) {
float world_size = The_Game()->Get_Maximum_World_Distance();
if (world_size > WWMATH_EPSILON) {
// RadarManager::Set_Zoom_Factor(1 / world_size);
Print( "Radar zoomed\n" );
} else {
Print( "Error - world size not set.\n" );
}
}
};
*/
class DefectConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "defect"; }
virtual const char * Get_Help( void ) { return "DEFECT - switch to the opposite team (gods only)."; }
virtual void Activate( const char * input ) {
cPlayer * p_player = cNetwork::Get_My_Player_Object();
if (p_player != NULL && p_player->Invulnerable.Is_True()) {
cChangeTeamEvent * p_event = new cChangeTeamEvent;
p_event->Init();
} else {
Print(Get_Help());
}
}
};
class RadarToggleConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "radar_toggle"; }
virtual const char * Get_Help( void ) { return "RADAR_TOGGLE - toggles the Radar."; }
virtual void Activate( const char * input ) {
RadarManager::Set_Hidden( !RadarManager::Is_Hidden() );
Print( "Radar toggled\n" );
}
};
class ShellCommandConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "shell"; }
virtual const char * Get_Help( void ) { return "SHELL - SHell command (server only)."; }
virtual void Activate( const char * input ) {
if (IS_SOLOPLAY || !cNetwork::I_Am_Server()) {
Print("SH is for server only.\n");
} else {
cNetwork::Shell_Command(input);
}
}
};
/*
class RshCommandConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "rsh"; }
virtual const char * Get_Help( void ) { return "RSH - Remote SHell command (server only)."; }
virtual void Activate( const char * input ) {
if (IS_SOLOPLAY || !cNetwork::I_Am_Server()) {
Print("rsh is for server only.\n");
} else {
Print("Sending command to clients...\n");
cNetwork::Send_Server_Rsh_Command(input);
}
}
};
*/
class LrshCommandConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "lrsh"; }
virtual const char * Get_Help( void ) { return "LRSH - Local and Remote SHell command (server only)."; }
virtual void Activate( const char * input ) {
/*
ConsoleFunctionManager::Parse_Input(input);
char rsh_command[500];
WWASSERT(strlen(input) < sizeof(rsh_command) - 10);
sprintf(rsh_command, "rsh %s", input);
ConsoleFunctionManager::Parse_Input(rsh_command);
*/
if (IS_SOLOPLAY || !cNetwork::I_Am_Server() || ::strlen(input) == 0) {
Print(Get_Help());
} else {
cConsoleCommandEvent * p_event = new cConsoleCommandEvent;
p_event->Init(input);
}
}
};
class SrshCommandConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "srsh"; }
virtual const char * Get_Help( void ) { return "SRSH - C->S Remote SHell command (client only)."; }
virtual void Activate( const char * input ) {
if (cNetwork::I_Am_Only_Client() && ::strlen(input) > 0) {
cCsConsoleCommandEvent * p_event = new cCsConsoleCommandEvent;
p_event->Init(input);
} else {
Print(Get_Help());
}
}
};
class MainMenuConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "main_menu"; }
virtual const char * Get_Alias( void ) { return "mm"; }
virtual const char * Get_Help( void ) { return "MAIN_MENU - go back to the main menu."; }
virtual void Activate( const char * input ) {
cDevOptions::GoToMainMenu.Set(true);
cDevOptions::QuickFullExit.Set(true);
}
};
class MaxFacingPenaltyConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "max_facing_penalty"; }
virtual const char * Get_Alias( void ){ return "mfp"; }
virtual const char * Get_Help( void ) { return "MAX_FACING_PENALTY - set the max facing penalty. Server only. Float. Use zero to disable."; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
if (cNetwork::I_Am_Server()) {
float f = ::atof(input);
cUserOptions::MaxFacingPenalty.Set(f);
Print( "MaxFacingPenalty set to %5.2f.", f);
} else {
Print(Get_Help());
}
}
};
class IrrelevancePenaltyConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "irrelevance_penalty"; }
//virtual const char * Get_Alias( void ){ return ""; }
virtual const char * Get_Help( void ) { return "IRRELEVANCE_PENALTY - set the irrelevance penalty. Server only. Float. Use zero to disable."; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
if (cNetwork::I_Am_Server()) {
float f = ::atof(input);
cUserOptions::IrrelevancePenalty.Set(f);
Print( "IrrelevancePenalty set to %5.2f.", f);
} else {
Print(Get_Help());
}
}
};
class MissionConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name(void) {return "mission";}
virtual const char * Get_Help(void) {return "MISSION end mission with given status.";}
virtual void Activate(const char * input) {
if (!stricmp(input, "success")) {
CombatManager::Mission_Complete(true);
} else if (!stricmp(input, "failure")) {
CombatManager::Mission_Complete(false);
} else {
Print(Get_Help());
}
}
};
class MoneyConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name(void) {return "money";}
virtual const char * Get_Help(void) {return "MONEY - money cheat, for gods only.";}
virtual void Activate(const char * input) {
int amount = ::atoi(input);
if (cNetwork::I_Am_God()) {
cMoneyEvent * p_money = new cMoneyEvent;
p_money->Init(amount);
} else {
Print(Get_Help());
}
}
};
class ScoreConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name(void) {return "score";}
virtual const char * Get_Help(void) {return "SCORE - score cheat, for gods only.";}
virtual void Activate(const char * input) {
int amount = ::atoi(input);
if (cNetwork::I_Am_God()) {
cScoreEvent * p_score = new cScoreEvent;
p_score->Init(amount);
} else {
Print(Get_Help());
}
}
};
class MultiHudConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "multihud"; }
virtual const char * Get_Help( void ) { return "MULTIHUD - toggle the multiplayer HUD."; }
virtual void Activate( const char * input ) {
CombatGameModeClass::Toggle_Multi_Hud();
Print("MultiHud toggled\n");
}
};
class SetPacketLossConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "set_packet_loss"; }
virtual const char * Get_Alias( void ) { return "spl"; }
virtual const char * Get_Help( void ) { return "SET_PACKET_LOSS - simulate packetloss at given percentage"; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
double percentage;
percentage = atof(input);
if (percentage > -WWMATH_EPSILON && percentage < 100 + WWMATH_EPSILON) {
cNetwork::Set_Simulated_Packet_Loss_Pc((int)percentage);
ConsoleFunctionManager::Parse_Input("clear ns"); // reset stats
} else {
Print(Get_Help());
}
}
};
class SetBandwidthBudgetOutToggleConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "toggle_sbbo"; }
virtual const char * Get_Help( void ) { return "TOGGLE_SBBO - toggle cSbboManager (server only)."; }
virtual void Activate( const char * input ) {
if (cNetwork::I_Am_Server()) {
bool is_enabled = cSbboManager::Toggle_Is_Enabled();
Print("cSbboManager %s enabled.\n", is_enabled ? "IS" : "is NOT");
} else {
Print(Get_Help());
}
}
};
class SetSendFrequencyConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "send_frequency"; }
virtual const char * Get_Help( void ) { return "send_freqency - set delay between packet sends."; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
int delay = atoi(input);
PacketManager.Set_Flush_Frequency((unsigned long) delay);
if (delay) {
Print("Packets will be sent no more than %d times per second.\n", 1000 / delay);
} else {
Print("Packets will be sent immediately.\n");
}
}
};
class TogglePacketDeltasConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "packet_delta"; }
virtual const char * Get_Help( void ) { return "packet_delta - toggle packet delta enable flag."; }
virtual void Activate( const char * ) {
bool delta = PacketManager.Toggle_Allow_Deltas();
if (delta) {
Print("Packets can be sent as deltas.\n");
} else {
Print("Packets are not allowed to be sent as deltas.\n");
}
}
};
class TogglePacketComboConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "packet_combo"; }
virtual const char * Get_Help( void ) { return "packet_combo - toggle packet packing."; }
virtual void Activate( const char * ) {
bool combos = PacketManager.Toggle_Allow_Combos();
if (combos) {
Print("Packets of different sizes can be combined into one packet.\n");
} else {
Print("Packets of different sizes cannot be combined into one packet.\n");
}
}
};
class TogglePacketOptConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "packet_opt"; }
virtual const char * Get_Help( void ) { return "packet_opt - enable low level packet optimizations."; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
int on = atoi(input);
if (on) {
PacketManager.Set_Flush_Frequency(1000 / 15);
bool ok = PacketManager.Toggle_Allow_Deltas();
if (!ok) {
PacketManager.Toggle_Allow_Deltas();
}
ok = PacketManager.Toggle_Allow_Combos();
if (!ok) {
PacketManager.Toggle_Allow_Combos();
}
Print("Low level packet optioizations enabled.\n");
} else {
PacketManager.Set_Flush_Frequency(0);
bool ok = PacketManager.Toggle_Allow_Deltas();
if (ok) {
PacketManager.Toggle_Allow_Deltas();
}
ok = PacketManager.Toggle_Allow_Combos();
if (ok) {
PacketManager.Toggle_Allow_Combos();
}
Print("Low level packet optioizations disabled.\n");
}
}
};
class SetLatencyConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "latency"; }
virtual const char * Get_Help( void ) { return "latency - set simulated latency on packets."; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
int low,high,current;
int fields = sscanf(input, "%d,%d", &low, &high);
if (fields == 1) {
high = low;
fields = 2;
}
if (fields == 2) {
cConnection::Set_Latency(low, high);
Print("Latency set\n");
}
cConnection::Get_Latency(low, high, current);
Print("Latency set to %d,%d (current latency is %d ms)\n", low, high, current);
}
};
class ToggleBandwidthBalancerConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "bw_balance"; }
virtual const char * Get_Help( void ) { return "bw_balance - toggle bandwidth balancer code enable."; }
virtual void Activate( const char * ) {
if (BandwidthBalancer.IsEnabled == false) {
BandwidthBalancer.IsEnabled = true;
Print("Using bandwidth balancer.\n");
} else {
BandwidthBalancer.IsEnabled = false;
Print("Not using bandwidth balancer.\n");
}
}
};
class ToggleNewClientUpdateMethodConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "new_update"; }
virtual const char * Get_Help( void ) { return "new_update - toggle new client update method."; }
virtual void Activate( const char * ) {
if (cNetwork::SensibleUpdates == false) {
cNetwork::SensibleUpdates = true;
Print("Using new per object per client update scheme.\n");
} else {
cNetwork::SensibleUpdates = false;
Print("Using old funky distance based update scheme.\n");
}
}
};
class SetDesiredSleepConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "set_desired_sleep"; }
virtual const char * Get_Alias( void ) { return "sds"; }
virtual const char * Get_Help( void ) { return "SET_DESIRED_SLEEP - sleep this many ms per frame."; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
int desired_sleep = atoi(input);
if (desired_sleep >= 0) {
cNetwork::Set_Desired_Frame_Sleep_Ms(desired_sleep);
Print( "Frame sleep set to %d ms.", desired_sleep );
} else {
Print(Get_Help());
}
}
};
class SetPacketDuplicationConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "set_packet_duplication"; }
//virtual const char * Get_Alias( void ) { return "spd"; }
virtual const char * Get_Help( void ) { return "SET_PACKET_DUPLICATION - simulate packet duplication at given percentage"; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
double percentage = atof(input);
if (percentage > -WWMATH_EPSILON && percentage < 100 + WWMATH_EPSILON) {
cNetwork::Set_Simulated_Packet_Duplication_Pc((int)percentage);
ConsoleFunctionManager::Parse_Input("clear ns"); // reset stats
} else {
Print(Get_Help());
}
}
};
class SetPacketLatencyRangeConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "set_packet_latency_range"; }
virtual const char * Get_Alias( void ) { return "latency"; }
virtual const char * Get_Help( void ) { return "SET_PACKET_LATENCY_RANGE - sets a range for simulated latency (in ms)"; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
int min_latency_ms;
int max_latency_ms;
int num_args = sscanf(input, "%d %d", &min_latency_ms, &max_latency_ms);
if (num_args == 2 && min_latency_ms >= 0 && max_latency_ms >= 0 &&
min_latency_ms <= max_latency_ms) {
cNetwork::Set_Simulated_Latency_Range_Ms(min_latency_ms, max_latency_ms);
} else {
Print(Get_Help());
}
}
};
class SetSpamCountConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "set_spam_count"; }
virtual const char * Get_Alias( void ) { return "ssc"; }
virtual const char * Get_Help( void ) { return "SET_SPAM_COUNT - S->C state packet is sent this many extra times."; }
virtual void Activate( const char * input ) {
WWASSERT(input != NULL);
int spam_count = atoi(input);
if (spam_count >= 0) {
cNetwork::Set_Spam_Count(spam_count);
//Print( "Spam Count set to %d ms.", desired_sleep );
} else {
Print(Get_Help());
}
}
};
class ClearConsoleFunctionClass : public ConsoleFunctionClass {
public:
virtual const char * Get_Name( void ) { return "clear"; }
virtual const char * Get_Help( void ) { return "CLEAR