Skip to content

Commit

Permalink
console: use simpler parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
rr- committed Aug 29, 2024
1 parent 44de55b commit bfd59c1
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 122 deletions.
160 changes: 39 additions & 121 deletions src/game/console_cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,7 @@ static COMMAND_RESULT Console_Cmd_Heal(const char *const args);
static COMMAND_RESULT Console_Cmd_Fly(const char *const args);
static COMMAND_RESULT Console_Cmd_Speed(const char *const args);
static COMMAND_RESULT Console_Cmd_VSync(const char *const args);

static void Console_Cmd_Braid_DecorateParser(ARG_PARSER *parser);
static COMMAND_RESULT Console_Cmd_Braid_Execute(const ARG_PARSER *parser);

static COMMAND_RESULT Console_Cmd_Braid(const char *const args);
static COMMAND_RESULT Console_Cmd_Wireframe(const char *const args);
static COMMAND_RESULT Console_Cmd_Cheats(const char *const args);
static COMMAND_RESULT Console_Cmd_GiveItem(const char *args);
Expand All @@ -56,12 +53,8 @@ static COMMAND_RESULT Console_Cmd_LoadGame(const char *args);
static COMMAND_RESULT Console_Cmd_SaveGame(const char *args);
static COMMAND_RESULT Console_Cmd_StartDemo(const char *args);
static COMMAND_RESULT Console_Cmd_ExitToTitle(const char *args);

static void Console_Cmd_EndLevel_DecorateParser(ARG_PARSER *parser);
static COMMAND_RESULT Console_Cmd_EndLevel_Execute(const ARG_PARSER *parser);
static void Console_Cmd_StartLevel_DecorateParser(ARG_PARSER *parser);
static COMMAND_RESULT Console_Cmd_StartLevel_Execute(const ARG_PARSER *parser);

static COMMAND_RESULT Console_Cmd_EndLevel(const char *const args);
static COMMAND_RESULT Console_Cmd_StartLevel(const char *const args);
static COMMAND_RESULT Console_Cmd_Abortion(const char *args);
static COMMAND_RESULT Console_Cmd_Set(const char *const args);

Expand Down Expand Up @@ -462,68 +455,43 @@ static COMMAND_RESULT Console_Cmd_Set(const char *const args)
return result;
}

static void Console_Cmd_Braid_DecorateParser(ARG_PARSER *const parser)
{
ArgParser_AddArgument(
parser,
&(ARG_PARSER_ARGUMENT) {
.id = "enabled",
.is_named = false,
.short_name = NULL,
.long_name = NULL,
.type = ARG_PARSER_TYPE_BOOL,
.mandatory = true,
});
}

static COMMAND_RESULT Console_Cmd_Braid_Execute(const ARG_PARSER *const parser)
static COMMAND_RESULT Console_Cmd_Braid(const char *const args)
{
const ARG_PARSER_ARGUMENT *const arg =
ArgParser_GetArgument(parser, "enabled");
assert(arg != NULL);
bool enable;
if (!ArgParser_ParseBool(args, &enable)) {
return CR_BAD_INVOCATION;
}

g_Config.enable_braid = arg->value.bool_val;
g_Config.enable_braid = enable;
Config_Write();
Console_Log(g_Config.enable_braid ? GS(OSD_BRAID_ON) : GS(OSD_BRAID_OFF));
Console_Log(enable ? GS(OSD_BRAID_ON) : GS(OSD_BRAID_OFF));
return CR_SUCCESS;
}

static COMMAND_RESULT Console_Cmd_Wireframe(const char *const args)
{
if (String_Equivalent(args, "off")) {
g_Config.rendering.enable_wireframe = false;
Config_Write();
Console_Log(GS(OSD_WIREFRAME_OFF));
return CR_SUCCESS;
}

if (String_Equivalent(args, "on")) {
g_Config.rendering.enable_wireframe = true;
Config_Write();
Console_Log(GS(OSD_WIREFRAME_ON));
return CR_SUCCESS;
bool enable;
if (!ArgParser_ParseBool(args, &enable)) {
return CR_BAD_INVOCATION;
}

return CR_BAD_INVOCATION;
g_Config.rendering.enable_wireframe = enable;
Config_Write();
Console_Log(enable ? GS(OSD_WIREFRAME_ON) : GS(OSD_WIREFRAME_OFF));
return CR_SUCCESS;
}

static COMMAND_RESULT Console_Cmd_Cheats(const char *const args)
{
if (String_Equivalent(args, "off")) {
g_Config.enable_cheats = false;
Config_Write();
Console_Log(GS(OSD_CHEATS_OFF));
return CR_SUCCESS;
}

if (String_Equivalent(args, "on")) {
g_Config.enable_cheats = true;
Config_Write();
Console_Log(GS(OSD_CHEATS_ON));
return CR_SUCCESS;
bool enable;
if (!ArgParser_ParseBool(args, &enable)) {
return CR_BAD_INVOCATION;
}

return CR_BAD_INVOCATION;
g_Config.enable_cheats = enable;
Config_Write();
Console_Log(enable ? GS(OSD_CHEATS_ON) : GS(OSD_CHEATS_OFF));
return CR_SUCCESS;
}

static COMMAND_RESULT Console_Cmd_GiveItem(const char *args)
Expand Down Expand Up @@ -775,61 +743,32 @@ static COMMAND_RESULT Console_Cmd_SaveGame(const char *args)
return CR_SUCCESS;
}

static void Console_Cmd_EndLevel_DecorateParser(ARG_PARSER *const parser)
static COMMAND_RESULT Console_Cmd_EndLevel(const char *const args)
{
}
if (!String_Equivalent(args, "")) {
return CR_BAD_INVOCATION;
}

static COMMAND_RESULT Console_Cmd_EndLevel_Execute(
const ARG_PARSER *const parser)
{
Lara_Cheat_EndLevel();
return CR_SUCCESS;
}

static void Console_Cmd_StartLevel_DecorateParser(ARG_PARSER *const parser)
static COMMAND_RESULT Console_Cmd_StartLevel(const char *const args)
{
ArgParser_AddArgument(
parser,
&(ARG_PARSER_ARGUMENT) {
.id = "level_id",
.is_named = false,
.short_name = NULL,
.long_name = NULL,
.type = ARG_PARSER_TYPE_INT,
.mandatory = false,
});

ArgParser_AddArgument(
parser,
&(ARG_PARSER_ARGUMENT) {
.id = "level_name",
.is_named = false,
.short_name = NULL,
.long_name = NULL,
.type = ARG_PARSER_TYPE_STRING,
.mandatory = false,
});
}
if (String_Equivalent(args, "")) {
return CR_BAD_INVOCATION;
}

static COMMAND_RESULT Console_Cmd_StartLevel_Execute(
const ARG_PARSER *const parser)
{
int32_t level_to_load = -1;

const ARG_PARSER_ARGUMENT *arg;
if ((arg = ArgParser_GetArgument(parser, "level_id"))) {
level_to_load = arg->value.int_val;
} else if ((arg = ArgParser_GetArgument(parser, "level_name"))) {
if (!ArgParser_ParseInteger(args, &level_to_load)) {
for (int i = 0; i < g_GameFlow.level_count; i++) {
if (String_CaseSubstring(
g_GameFlow.levels[i].level_title, arg->value.string_val)
if (String_CaseSubstring(g_GameFlow.levels[i].level_title, args)
!= NULL) {
level_to_load = i;
break;
}
}
if (level_to_load == -1
&& String_Equivalent(arg->value.string_val, "gym")) {
if (level_to_load == -1 && String_Equivalent(args, "gym")) {
level_to_load = g_GameFlow.gym_level_num;
}
if (level_to_load == -1) {
Expand Down Expand Up @@ -883,13 +822,7 @@ CONSOLE_COMMAND g_ConsoleCommands[] = {
{ .prefix = "fly", .proc = Console_Cmd_Fly },
{ .prefix = "speed", .proc = Console_Cmd_Speed },
{ .prefix = "vsync", .proc = Console_Cmd_VSync },

{
.prefix = "braid",
.decorate_parser = Console_Cmd_Braid_DecorateParser,
.execute = Console_Cmd_Braid_Execute,
},

{ .prefix = "braid", .proc = Console_Cmd_Braid },
{ .prefix = "wireframe", .proc = Console_Cmd_Wireframe },
{ .prefix = "cheats", .proc = Console_Cmd_Cheats },
{ .prefix = "give", .proc = Console_Cmd_GiveItem },
Expand All @@ -898,24 +831,9 @@ CONSOLE_COMMAND g_ConsoleCommands[] = {
{ .prefix = "flip", .proc = Console_Cmd_FlipMap },
{ .prefix = "flipmap", .proc = Console_Cmd_FlipMap },
{ .prefix = "kill", .proc = Console_Cmd_Kill },

{
.prefix = "endlevel",
.decorate_parser = Console_Cmd_EndLevel_DecorateParser,
.execute = Console_Cmd_EndLevel_Execute,
},

{
.prefix = "play",
.decorate_parser = Console_Cmd_StartLevel_DecorateParser,
.execute = Console_Cmd_StartLevel_Execute,
},
{
.prefix = "level",
.decorate_parser = Console_Cmd_StartLevel_DecorateParser,
.execute = Console_Cmd_StartLevel_Execute,
},

{ .prefix = "endlevel", .proc = Console_Cmd_EndLevel },
{ .prefix = "play", .proc = Console_Cmd_StartLevel },
{ .prefix = "level", .proc = Console_Cmd_StartLevel },
{ .prefix = "load", .proc = Console_Cmd_LoadGame },
{ .prefix = "save", .proc = Console_Cmd_SaveGame },
{ .prefix = "demo", .proc = Console_Cmd_StartDemo },
Expand Down
2 changes: 1 addition & 1 deletion subprojects/libtrx

0 comments on commit bfd59c1

Please sign in to comment.