From 780da3fde93c628f415a25806ba1b2d03718dc90 Mon Sep 17 00:00:00 2001 From: torcs-ng Date: Thu, 24 Sep 2015 15:16:10 +0000 Subject: [PATCH] - added graphic engine choice in simu config page git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@6142 30fe4595-0a0c-4342-8851-515496e4dcbd Former-commit-id: 6efae976e2b7e286a1bdadff815e71ddd20921b2 Former-commit-id: 9b39074af19d68d74985bc468f9160ca12d8b517 --- src/interfaces/raceman.h | 1 + .../legacymenu/confscreens/simuconfig.cpp | 94 ++++++++++++++++--- 2 files changed, 83 insertions(+), 12 deletions(-) diff --git a/src/interfaces/raceman.h b/src/interfaces/raceman.h index 099b6760a..be8b075d3 100644 --- a/src/interfaces/raceman.h +++ b/src/interfaces/raceman.h @@ -425,6 +425,7 @@ typedef struct RmInfo #define RM_VAL_MOD_SIMU_REPLAY "simureplay" #define RM_VAL_MOD_TRACK "track" #define RM_VAL_MOD_SSGRAPH "ssggraph" +#define RM_VAL_MOD_OSGGRAPH "osggraph" /* Replay Settings */ diff --git a/src/modules/userinterface/legacymenu/confscreens/simuconfig.cpp b/src/modules/userinterface/legacymenu/confscreens/simuconfig.cpp index 94e097ae8..5642bb789 100644 --- a/src/modules/userinterface/legacymenu/confscreens/simuconfig.cpp +++ b/src/modules/userinterface/legacymenu/confscreens/simuconfig.cpp @@ -34,6 +34,10 @@ #include "gui.h" +/*#ifndef OFFICIAL_ONLY +#define OFFICIAL_ONLY 1 +#endif*/ + /* list of available simulation engine */ static const int DefaultSimuVersion = 1; @@ -70,6 +74,13 @@ static const char *CooldownSchemeList[] = {RM_VAL_ON, RM_VAL_OFF}; static const int NbCooldownSchemes = sizeof(CooldownSchemeList) / sizeof(CooldownSchemeList[0]); static int CurCooldownScheme = 0; // On +/* list of available graphic engine */ +static const int DefaultGraphicVersion = 1; +static const char *GraphicSchemeList[] = {RM_VAL_MOD_SSGRAPH, RM_VAL_MOD_OSGGRAPH}; +static const char *GraphicDispNameList[] = {"ssggraph", "OsgGraph"}; +static const int NbGraphicScheme = sizeof(GraphicSchemeList) / sizeof(GraphicSchemeList[0]); +static int CurGraphicScheme = DefaultGraphicVersion; + /* gui label ids */ static int SimuVersionId; static int MultiThreadSchemeId; @@ -80,6 +91,8 @@ static int StartPausedSchemeId; static int CooldownSchemeId; +static int GraphicSchemeId; + /* gui screen handles */ static void *ScrHandle = NULL; static void *PrevScrHandle = NULL; @@ -93,6 +106,7 @@ static void loadSimuCfg(void) const char *replayRateSchemeName; const char *startPausedSchemeName; const char *cooldownSchemeName; + const char *graphicSchemeName; int i; @@ -103,8 +117,10 @@ static void loadSimuCfg(void) // Simulation engine name. simuVersionName = GfParmGetStr(paramHandle, RM_SECT_MODULES, RM_ATTR_MOD_SIMU, SimuVersionList[DefaultSimuVersion]); - for (i = 0; i < NbSimuVersions; i++) { - if (strcmp(simuVersionName, SimuVersionList[i]) == 0) { + for (i = 0; i < NbSimuVersions; i++) + { + if (strcmp(simuVersionName, SimuVersionList[i]) == 0) + { CurSimuVersion = i; break; } @@ -121,8 +137,10 @@ static void loadSimuCfg(void) // Multi-threading. multiThreadSchemeName = GfParmGetStr(paramHandle, RM_SECT_RACE_ENGINE, RM_ATTR_MULTI_THREADING, MultiThreadSchemeList[0]); - for (i = 0; i < NbMultiThreadSchemes; i++) { - if (strcmp(multiThreadSchemeName, MultiThreadSchemeList[i]) == 0) { + for (i = 0; i < NbMultiThreadSchemes; i++) + { + if (strcmp(multiThreadSchemeName, MultiThreadSchemeList[i]) == 0) + { CurMultiThreadScheme = i; break; } @@ -130,8 +148,10 @@ static void loadSimuCfg(void) // Thread affinity. threadAffinitySchemeName = GfParmGetStr(paramHandle, RM_SECT_RACE_ENGINE, RM_ATTR_THREAD_AFFINITY, ThreadAffinitySchemeList[0]); - for (i = 0; i < NbThreadAffinitySchemes; i++) { - if (strcmp(threadAffinitySchemeName, ThreadAffinitySchemeList[i]) == 0) { + for (i = 0; i < NbThreadAffinitySchemes; i++) + { + if (strcmp(threadAffinitySchemeName, ThreadAffinitySchemeList[i]) == 0) + { CurThreadAffinityScheme = i; break; } @@ -140,8 +160,10 @@ static void loadSimuCfg(void) // Replay Rate #ifdef THIRD_PARTY_SQLITE3 replayRateSchemeName = GfParmGetStr(paramHandle, RM_SECT_RACE_ENGINE, RM_ATTR_REPLAY_RATE, ReplaySchemeList[0]); - for (i = 0; i < NbReplaySchemes; i++) { - if (strcmp(replayRateSchemeName, ReplaySchemeList[i]) == 0) { + for (i = 0; i < NbReplaySchemes; i++) + { + if (strcmp(replayRateSchemeName, ReplaySchemeList[i]) == 0) + { CurReplayScheme = i; break; } @@ -152,8 +174,10 @@ static void loadSimuCfg(void) // startpaused startPausedSchemeName = GfParmGetStr(paramHandle,RM_SECT_RACE_ENGINE, RM_ATTR_STARTPAUSED, StartPausedSchemeList[1]); - for (i = 0; i < NbStartPausedSchemes; i++) { - if (strcmp(startPausedSchemeName, StartPausedSchemeList[i]) == 0) { + for (i = 0; i < NbStartPausedSchemes; i++) + { + if (strcmp(startPausedSchemeName, StartPausedSchemeList[i]) == 0) + { CurStartPausedScheme = i; break; } @@ -161,24 +185,43 @@ static void loadSimuCfg(void) // cooldown cooldownSchemeName = GfParmGetStr(paramHandle,RM_SECT_RACE_ENGINE, RM_ATTR_COOLDOWN, CooldownSchemeList[1]); - for (i = 0; i < NbCooldownSchemes; i++) { - if (strcmp(cooldownSchemeName, CooldownSchemeList[i]) == 0) { + for (i = 0; i < NbCooldownSchemes; i++) + { + if (strcmp(cooldownSchemeName, CooldownSchemeList[i]) == 0) + { CurCooldownScheme = i; break; } } + // graphic engine + graphicSchemeName = GfParmGetStr(paramHandle, RM_SECT_MODULES, RM_ATTR_MOD_GRAPHIC, GraphicSchemeList[1]); + for (i = 0; i < NbGraphicScheme; i++) + { + if (strcmp(graphicSchemeName, GraphicSchemeList[i]) == 0) + { + CurGraphicScheme = i; + break; + } + } + GfParmReleaseHandle(paramHandle); GfuiLabelSetText(ScrHandle, SimuVersionId, SimuVersionDispNameList[CurSimuVersion]); GfuiLabelSetText(ScrHandle, MultiThreadSchemeId, MultiThreadSchemeList[CurMultiThreadScheme]); GfuiLabelSetText(ScrHandle, ThreadAffinitySchemeId, ThreadAffinitySchemeList[CurThreadAffinityScheme]); GfuiLabelSetText(ScrHandle, ReplayRateSchemeId, ReplaySchemeDispNameList[CurReplayScheme]); + #ifndef THIRD_PARTY_SQLITE3 GfuiEnable(ScrHandle, ReplayRateSchemeId, GFUI_DISABLE); #endif GfuiLabelSetText(ScrHandle, StartPausedSchemeId, StartPausedSchemeList[CurStartPausedScheme]); GfuiLabelSetText(ScrHandle, CooldownSchemeId, CooldownSchemeList[CurCooldownScheme]); + GfuiLabelSetText(ScrHandle, GraphicSchemeId, GraphicSchemeList[CurGraphicScheme]); + +#ifdef OFFICIAL_ONLY + GfuiEnable(ScrHandle, GraphicSchemeId, GFUI_DISABLE); +#endif } @@ -195,6 +238,7 @@ static void storeSimuCfg(void * /* dummy */) GfParmSetStr(paramHandle, RM_SECT_RACE_ENGINE, RM_ATTR_REPLAY_RATE, ReplaySchemeList[CurReplayScheme]); GfParmSetStr(paramHandle, RM_SECT_RACE_ENGINE, RM_ATTR_STARTPAUSED, StartPausedSchemeList[CurStartPausedScheme]); GfParmSetStr(paramHandle, RM_SECT_RACE_ENGINE, RM_ATTR_COOLDOWN, CooldownSchemeList[CurCooldownScheme]); + GfParmSetStr(paramHandle, RM_SECT_MODULES, RM_ATTR_MOD_GRAPHIC, GraphicSchemeList[CurGraphicScheme]); GfParmWriteFile(NULL, paramHandle, "raceengine"); GfParmReleaseHandle(paramHandle); @@ -224,6 +268,26 @@ onChangeSimuVersion(void *vp) GfuiLabelSetText(ScrHandle, SimuVersionId, SimuVersionDispNameList[CurSimuVersion]); } +/* Change the graphc engine version (but only show really available modules) */ +static void +onChangeGraphicVersion(void *vp) +{ + char buf[1024]; + + if (!vp) + return; + + const int oldGraphicVersion = CurGraphicScheme; + do + { + CurGraphicScheme = (CurGraphicScheme + NbGraphicScheme + (int)(long)vp) % NbGraphicScheme; + + snprintf(buf, sizeof(buf), "%smodules/graphic/%s.%s", GfLibDir(), GraphicSchemeList[CurGraphicScheme], DLLEXT); + } + while (!GfFileExists(buf) && CurGraphicScheme != oldGraphicVersion); + + GfuiLabelSetText(ScrHandle, GraphicSchemeId, GraphicDispNameList[CurGraphicScheme]); +} /* Change the multi-threading scheme */ static void @@ -329,6 +393,12 @@ SimuMenuInit(void *prevMenu) GfuiMenuCreateButtonControl(ScrHandle, menuDescHdle, "cooldownleftarrow", (void*)-1, onChangeCooldownScheme); GfuiMenuCreateButtonControl(ScrHandle, menuDescHdle, "cooldownrightarrow", (void*)1, onChangeCooldownScheme); + GraphicSchemeId = GfuiMenuCreateLabelControl(ScrHandle, menuDescHdle, "graphiclabel"); +#ifndef OFFICIAL_ONLY + GfuiMenuCreateButtonControl(ScrHandle, menuDescHdle, "graphicleftarrow", (void*)-1, onChangeGraphicVersion); + GfuiMenuCreateButtonControl(ScrHandle, menuDescHdle, "graphicrightarrow", (void*)1, onChangeGraphicVersion); +#endif + GfuiMenuCreateButtonControl(ScrHandle, menuDescHdle, "ApplyButton", PrevScrHandle, storeSimuCfg); GfuiMenuCreateButtonControl(ScrHandle, menuDescHdle, "CancelButton", PrevScrHandle, GfuiScreenActivate);