From 656fd08ee828024f5a0e888f293ca95b7a83cd64 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Sat, 12 Aug 2023 11:44:35 -0400 Subject: Gamestate table (#1354) * gamestate_table.h * move macros * bss * format --- src/code/graph.c | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) (limited to 'src/code/graph.c') diff --git a/src/code/graph.c b/src/code/graph.c index 24a554dc2..fe1542f66 100644 --- a/src/code/graph.c +++ b/src/code/graph.c @@ -75,27 +75,17 @@ void Graph_SetNextGfxPool(GraphicsContext* gfxCtx) { GameStateOverlay* Graph_GetNextGameState(GameState* gameState) { GameStateFunc gameStateInit = GameState_GetInit(gameState); - if (gameStateInit == Setup_Init) { - return &gGameStateOverlayTable[0]; - } - if (gameStateInit == MapSelect_Init) { - return &gGameStateOverlayTable[1]; - } - if (gameStateInit == ConsoleLogo_Init) { - return &gGameStateOverlayTable[2]; - } - if (gameStateInit == Play_Init) { - return &gGameStateOverlayTable[3]; - } - if (gameStateInit == TitleSetup_Init) { - return &gGameStateOverlayTable[4]; - } - if (gameStateInit == FileSelect_Init) { - return &gGameStateOverlayTable[5]; - } - if (gameStateInit == DayTelop_Init) { - return &gGameStateOverlayTable[6]; + // Generates code to match gameStateInit to a gamestate entry and returns it if found +#define DEFINE_GAMESTATE_INTERNAL(typeName, enumName) \ + if (gameStateInit == typeName##_Init) { \ + return &gGameStateOverlayTable[enumName]; \ } +#define DEFINE_GAMESTATE(typeName, enumName, name) DEFINE_GAMESTATE_INTERNAL(typeName, enumName) + +#include "tables/gamestate_table.h" + +#undef DEFINE_GAMESTATE +#undef DEFINE_GAMESTATE_INTERNAL return NULL; } -- cgit v1.2.3