# HG changeset patch # User peter1138 # Date 1175777997 0 # Node ID 3512a65a7cfeafe11db827f54505f0771e97f2bd # Parent cfa5f3428d978756d3208e225891fe8e1f58f226 (svn r9565) -Feature: Add list_patches console command. This shows all patches along with their current values. Based on patch by madman2003/GrimRC. diff -r cfa5f3428d97 -r 3512a65a7cfe src/console_cmds.cpp --- a/src/console_cmds.cpp Thu Apr 05 09:07:20 2007 +0000 +++ b/src/console_cmds.cpp Thu Apr 05 12:59:57 2007 +0000 @@ -1416,6 +1416,19 @@ return true; } +DEF_CONSOLE_CMD(ConListPatches) +{ + if (argc == 0) { + IConsoleHelp("List patch options. Usage: 'list_patches'"); + return true; + } + + if (argc != 1) return false; + + IConsoleListPatches(); + return true; +} + DEF_CONSOLE_CMD(ConListDumpVariables) { const IConsoleVar *var; @@ -1497,6 +1510,7 @@ IConsoleCmdRegister("pwd", ConPrintWorkingDirectory); IConsoleCmdRegister("clear", ConClearBuffer); IConsoleCmdRegister("patch", ConPatch); + IConsoleCmdRegister("list_patches", ConListPatches); IConsoleAliasRegister("dir", "ls"); IConsoleAliasRegister("del", "rm %+"); diff -r cfa5f3428d97 -r 3512a65a7cfe src/settings.cpp --- a/src/settings.cpp Thu Apr 05 09:07:20 2007 +0000 +++ b/src/settings.cpp Thu Apr 05 12:59:57 2007 +0000 @@ -1829,6 +1829,25 @@ name, value, (sd->desc.flags & SGF_0ISDISABLED) ? "(0) " : "", sd->desc.min, sd->desc.max); } +void IConsoleListPatches() +{ + IConsolePrintF(_icolour_warn, "All patches with their current value:"); + + for (const SettingDesc *sd = _patch_settings; sd->save.cmd != SL_END; sd++) { + char value[80]; + const void *ptr = GetVariableAddress((_game_mode == GM_MENU) ? &_patches_newgame : &_patches, &sd->save); + + if (sd->desc.cmd == SDT_BOOLX) { + snprintf(value, lengthof(value), (*(bool*)ptr == 1) ? "on" : "off"); + } else { + snprintf(value, lengthof(value), "%d", (uint32)ReadValue(ptr, sd->save.conv)); + } + IConsolePrintF(_icolour_def, "%s = %s", sd->desc.name, value); + } + + IConsolePrintF(_icolour_warn, "Use 'patch' command to change a value"); +} + /** Save and load handler for patches/settings * @param osd SettingDesc struct containing all information * @param object can be either NULL in which case we load global variables or diff -r cfa5f3428d97 -r 3512a65a7cfe src/settings.h --- a/src/settings.h Thu Apr 05 09:07:20 2007 +0000 +++ b/src/settings.h Thu Apr 05 12:59:57 2007 +0000 @@ -86,6 +86,7 @@ bool IConsoleSetPatchSetting(const char *name, int32 value); void IConsoleGetPatchSetting(const char *name); +void IConsoleListPatches(); const SettingDesc *GetPatchFromName(const char *name, uint *i); bool SetPatchValue(uint index, const Patches *object, int32 value);