Merge pull request #4672 from wolfreak99/cheats_in_console

disable_clearance_checks and disable_support_limits in console
This commit is contained in:
Michael Steenbeek 2016-11-06 17:40:14 +01:00 committed by GitHub
commit 71dc1314c2
4 changed files with 59 additions and 7 deletions

View File

@ -392,9 +392,9 @@ void game_command_cheat(int* eax, int* ebx, int* ecx, int* edx, int* esi, int* e
int cheat = *ecx;
if (*ebx & GAME_COMMAND_FLAG_APPLY) {
switch (cheat) {
case CHEAT_SANDBOXMODE: gCheatsSandboxMode = !gCheatsSandboxMode; window_invalidate_by_class(WC_MAP); window_invalidate_by_class(WC_FOOTPATH); break;
case CHEAT_DISABLECLEARANCECHECKS: gCheatsDisableClearanceChecks = !gCheatsDisableClearanceChecks; break;
case CHEAT_DISABLESUPPORTLIMITS: gCheatsDisableSupportLimits = !gCheatsDisableSupportLimits; break;
case CHEAT_SANDBOXMODE: gCheatsSandboxMode = *edx != 0; window_invalidate_by_class(WC_MAP); window_invalidate_by_class(WC_FOOTPATH); break;
case CHEAT_DISABLECLEARANCECHECKS: gCheatsDisableClearanceChecks = *edx != 0; break;
case CHEAT_DISABLESUPPORTLIMITS: gCheatsDisableSupportLimits = *edx != 0; break;
case CHEAT_SHOWALLOPERATINGMODES: gCheatsShowAllOperatingModes = !gCheatsShowAllOperatingModes; break;
case CHEAT_SHOWVEHICLESFROMOTHERTRACKTYPES: gCheatsShowVehiclesFromOtherTrackTypes = !gCheatsShowVehiclesFromOtherTrackTypes; break;
case CHEAT_FASTLIFTHILL: gCheatsFastLiftHill = !gCheatsFastLiftHill; break;

View File

@ -27,6 +27,7 @@
#include "../game.h"
#include "../input.h"
#include "../network/twitch.h"
#include "../network/network.h"
#include "../object.h"
#include "../object/ObjectManager.h"
#include "../object/ObjectRepository.h"
@ -665,6 +666,15 @@ static int cc_get(const utf8 **argv, int argc)
else if (strcmp(argv[0], "render_weather_gloom") == 0) {
console_printf("render_weather_gloom %d", gConfigGeneral.render_weather_gloom);
}
else if (strcmp(argv[0], "cheat_sandbox_mode") == 0) {
console_printf("cheat_sandbox_mode %d", gCheatsSandboxMode);
}
else if (strcmp(argv[0], "cheat_disable_clearance_checks") == 0) {
console_printf("cheat_disable_clearance_checks %d", gCheatsDisableClearanceChecks);
}
else if (strcmp(argv[0], "cheat_disable_support_limits") == 0) {
console_printf("cheat_disable_support_limits %d", gCheatsDisableSupportLimits);
}
else {
console_writeline_warning("Invalid variable.");
}
@ -847,6 +857,45 @@ static int cc_set(const utf8 **argv, int argc)
config_save_default();
console_execute_silent("get render_weather_gloom");
}
else if (strcmp(argv[0], "cheat_sandbox_mode") == 0 && invalidArguments(&invalidArgs, int_valid[0])) {
if (gCheatsSandboxMode != (int_val[0] != 0)) {
if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, (int_val[0] != 0), GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) {
//Change it locally so it shows the accurate value in the
//"console_execute_silent("get cheat_sandbox_mode")" line when in network client mode
gCheatsSandboxMode = (int_val[0] != 0);
}
else {
console_writeline_error("Network error: Permission denied!");
}
}
console_execute_silent("get cheat_sandbox_mode");
}
else if (strcmp(argv[0], "cheat_disable_clearance_checks") == 0 && invalidArguments(&invalidArgs, int_valid[0])) {
if (gCheatsDisableClearanceChecks != (int_val[0] != 0)) {
if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, (int_val[0] != 0), GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) {
//Change it locally so it shows the accurate value in the
//"console_execute_silent("get cheat_disable_clearance_checks")" line when in network client mode
gCheatsDisableClearanceChecks = (int_val[0] != 0);
}
else {
console_writeline_error("Network error: Permission denied!");
}
}
console_execute_silent("get cheat_disable_clearance_checks");
}
else if (strcmp(argv[0], "cheat_disable_support_limits") == 0 && invalidArguments(&invalidArgs, int_valid[0])) {
if (gCheatsDisableSupportLimits != (int_val[0] != 0)) {
if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, (int_val[0] != 0), GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) {
//Change it locally so it shows the accurate value in the
//"console_execute_silent("get cheat_disable_support_limits")" line when in network client mode
gCheatsDisableSupportLimits = (int_val[0] != 0);
}
else {
console_writeline_error("Network error: Permission denied!");
}
}
console_execute_silent("get cheat_disable_support_limits");
}
else if (invalidArgs) {
console_writeline_error("Invalid arguments.");
}
@ -1033,6 +1082,9 @@ utf8* console_variable_table[] = {
"window_limit",
"render_weather_effects",
"render_weather_gloom",
"cheat_sandbox_mode",
"cheat_disable_clearance_checks",
"cheat_disable_support_limits",
};
utf8* console_window_table[] = {
"object_selection",

View File

@ -662,7 +662,7 @@ static void window_cheats_misc_mouseup(rct_window *w, int widgetIndex)
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_UNLOCKALLPRICES, 0, GAME_COMMAND_CHEAT, 0, 0);
break;
case WIDX_SANDBOX_MODE:
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, 0, GAME_COMMAND_CHEAT, 0, 0);
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, !gCheatsSandboxMode, GAME_COMMAND_CHEAT, 0, 0);
// To prevent tools from staying active after disabling cheat
//tool_cancel();
break;

View File

@ -583,13 +583,13 @@ static void window_top_toolbar_dropdown(rct_window *w, int widgetIndex, int drop
window_cheats_open();
break;
case DDIDX_ENABLE_SANDBOX_MODE:
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, 0, GAME_COMMAND_CHEAT, 0, 0);
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, !gCheatsSandboxMode, GAME_COMMAND_CHEAT, 0, 0);
break;
case DDIDX_DISABLE_CLEARANCE_CHECKS:
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, 0, GAME_COMMAND_CHEAT, 0, 0);
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, !gCheatsDisableClearanceChecks, GAME_COMMAND_CHEAT, 0, 0);
break;
case DDIDX_DISABLE_SUPPORT_LIMITS:
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, 0, GAME_COMMAND_CHEAT, 0, 0);
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, !gCheatsDisableSupportLimits, GAME_COMMAND_CHEAT, 0, 0);
break;
}
break;