int ReRacemanMenu(void) { char *str; void *params = ReInfo->params; if (racemanMenuHdle) { GfuiScreenRelease(racemanMenuHdle); } racemanMenuHdle = GfuiScreenCreateEx(NULL, NULL, (tfuiCallback)NULL, NULL, (tfuiCallback)NULL, 1); str = GfParmGetStr(params, RM_SECT_HEADER, RM_ATTR_BGIMG, 0); if (str) { GfuiScreenAddBgImg(racemanMenuHdle, str); } GfuiMenuDefaultKeysAdd(racemanMenuHdle); str = GfParmGetStr(params, RM_SECT_HEADER, RM_ATTR_NAME, 0); if (str) { GfuiTitleCreate(racemanMenuHdle, str, strlen(str)); } GfuiMenuButtonCreate(racemanMenuHdle, "New Race", "Start a New Race", NULL, ReStartNewRace); GfuiMenuButtonCreate(racemanMenuHdle, "Configure Race", "Configure The Race", NULL, reConfigureMenu); /* GfuiMenuButtonCreate(racemanMenuHdle, */ /* "Configure Players", "Players configuration menu", */ /* TorcsDriverMenuInit(racemanMenuHdle), GfuiScreenActivate); */ if (GfParmGetEltNb(params, RM_SECT_TRACKS) > 1) { GfuiMenuButtonCreate(racemanMenuHdle, "Load", "Load a Previously Saved Game", racemanMenuHdle, reLoadMenu); } GfuiMenuBackQuitButtonCreate(racemanMenuHdle, "Back to Main", "Return to previous Menu", ReInfo->_reMenuScreen, GfuiScreenActivate); GfuiScreenActivate(racemanMenuHdle); return RM_ASYNC | RM_NEXT_STEP; }
int ReNewTrackMenu(void) { void *params = ReInfo->params; void *results = ReInfo->results; if (newTrackMenuHdle) { GfuiScreenRelease(newTrackMenuHdle); } newTrackMenuHdle = GfuiScreenCreateEx(NULL, NULL, (tfuiCallback)NULL, NULL, (tfuiCallback)NULL, 1); const char* str = GfParmGetStr(params, RM_SECT_HEADER, RM_ATTR_BGIMG, 0); if (str) { GfuiScreenAddBgImg(newTrackMenuHdle, str); } str = GfParmGetStr(params, RM_SECT_HEADER, RM_ATTR_NAME, ""); GfuiTitleCreate(newTrackMenuHdle, str, strlen(str)); GfuiMenuDefaultKeysAdd(newTrackMenuHdle); sprintf(buf, "Race Day #%d/%d on %s", (int)GfParmGetNum(results, RE_SECT_CURRENT, RE_ATTR_CUR_TRACK, NULL, 1), GfParmGetEltNb(params, RM_SECT_TRACKS), ReInfo->track->name); GfuiLabelCreateEx(newTrackMenuHdle, buf, red, GFUI_FONT_MEDIUM_C, 320, 420, GFUI_ALIGN_HC_VB, 50); GfuiMenuButtonCreate(newTrackMenuHdle, "Start Event", "Start The Current Race", NULL, reStateManage); GfuiMenuButtonCreate(newTrackMenuHdle, "Abandon", "Abandon The Race", ReInfo->_reMenuScreen, GfuiScreenActivate); GfuiAddKey(newTrackMenuHdle, 27, "Abandon", ReInfo->_reMenuScreen, GfuiScreenActivate, NULL); GfuiScreenActivate(newTrackMenuHdle); return RM_ASYNC | RM_NEXT_STEP; }
/* * Function * TorcsMainMenuInit * * Description * init the main menus * * Parameters * none * * Return * 0 ok -1 nok * * Remarks * */ int TorcsMainMenuInit(void) { if (getTextOnly()) ReSinglePlayerInit(NULL); else { menuHandle = GfuiScreenCreateEx((float*)NULL, NULL, TorcsMainMenuActivate, NULL, (tfuiCallback)NULL, 1); GfuiScreenAddBgImg(menuHandle, "data/img/splash-main.png"); GfuiTitleCreate(menuHandle, "TORCS", 0); GfuiLabelCreate(menuHandle, "The Open Racing Car Simulator", GFUI_FONT_LARGE, 320, 420, GFUI_ALIGN_HC_VB, 0); GfuiMenuButtonCreate(menuHandle, "Race", "Races Menu", ReSinglePlayerInit(menuHandle), GfuiScreenActivate); GfuiMenuButtonCreate(menuHandle, "Configure Players", "Players configuration menu", TorcsDriverMenuInit(menuHandle), GfuiScreenActivate); GfuiMenuButtonCreate(menuHandle, "Options", "Configure", TorcsOptionOptionInit(menuHandle), GfuiScreenActivate); GfuiMenuDefaultKeysAdd(menuHandle); GfuiMenuBackQuitButtonCreate(menuHandle, "Quit", "Quit TORCS", TorcsMainExitMenuInit(menuHandle), GfuiScreenActivate); } return 0; }
/* * Function * TorcsMainMenuInit * * Description * init the main menus * * Parameters * none * * Return * 0 ok -1 nok * * Remarks * */ int TorcsMainMenuInit(void) { menuHandle = GfuiScreenCreateEx((float*)NULL, NULL, TorcsMainMenuActivate, NULL, (tfuiCallback)NULL, 1); GfuiScreenAddBgImg(menuHandle, "data/img/splash-main.png"); GfuiTitleCreate(menuHandle, "TORCS Adaptive", 0); GfuiLabelCreate(menuHandle, "A TORCS Modification with procedural tracks", GFUI_FONT_LARGE, 320, 420, GFUI_ALIGN_HC_VB, 0); GfuiMenuButtonCreate(menuHandle, "Race", "Races Menu", ReSinglePlayerInit(menuHandle), GfuiScreenActivate); GfuiMenuButtonCreate(menuHandle, "Configure Players", "Players configuration menu", TorcsDriverMenuInit(menuHandle), GfuiScreenActivate); GfuiMenuButtonCreate(menuHandle, "Options", "Configure", TorcsOptionOptionInit(menuHandle), GfuiScreenActivate); GfuiMenuDefaultKeysAdd(menuHandle); GfuiMenuBackQuitButtonCreate(menuHandle, "Quit", "Quit TORCS", TorcsMainExitMenuInit(menuHandle), GfuiScreenActivate); return 0; }
void * TorcsOptionOptionInit(void *precMenu) { if (optionHandle) return optionHandle; optionHandle = GfuiMenuScreenCreate("OPTIONS"); GfuiScreenAddBgImg(optionHandle, "data/img/splash-options.png"); GfuiMenuButtonCreate(optionHandle, "Graphic", "Configure graphic parameters", GraphMenuInit(optionHandle), GfuiScreenActivate); GfuiMenuButtonCreate(optionHandle, "Display", "Configure display parameters", GfScrMenuInit(optionHandle), GfuiScreenActivate); /* GfuiMenuButtonCreate(optionHandle, "Simulation", "Configure simulation parameters", SimuMenuInit(optionHandle), GfuiScreenActivate); */ GfuiMenuButtonCreate(optionHandle, "Sound", "Configure sound parameters", SoundMenuInit(optionHandle), GfuiScreenActivate); GfuiMenuButtonCreate(optionHandle, "OpenGL", "Configure OpenGL parameters", OpenGLMenuInit(optionHandle), GfuiScreenActivate); GfuiMenuBackQuitButtonCreate(optionHandle, "Back", "Back to Main", precMenu, GfuiScreenActivate); return optionHandle; }
void * exitMenuInit(void *menu, void *menuHandle) { if (menuHandle) { GfuiScreenRelease(menuHandle); } menuHandle = GfuiMenuScreenCreate("Quit ?"); GfuiScreenAddBgImg(menuHandle, "data/img/splash-quit.png"); GfuiMenuButtonCreate(menuHandle, "No, Back to Game", "Return to TORCS", menu, GfuiScreenActivate); GfuiMenuButtonCreate(menuHandle, "Yes, Let's Quit", "Exit of TORCS", NULL, endofprog); return menuHandle; }
/* Load race managers selection menu */ void ReAddRacemanListButton(void *menuHandle) { tFList *racemanList; tFList *racemanCur; racemanList = GfDirGetListFiltered("config/raceman", "xml"); if (!racemanList) { GfOut("No race manager available\n"); return; } racemanCur = racemanList; do { reRegisterRaceman(racemanCur); racemanCur = racemanCur->next; } while (racemanCur != racemanList); reSortRacemanList(&racemanList); racemanCur = racemanList; do { GfuiMenuButtonCreate(menuHandle, racemanCur->dispName, GfParmGetStr(racemanCur->userData, RM_SECT_HEADER, RM_ATTR_DESCR, ""), racemanCur->userData, reSelectRaceman); racemanCur = racemanCur->next; } while (racemanCur != racemanList); // The list contains at least one element, checked above. tFList *rl = racemanList; do { tFList *tmp = rl; rl = rl->next; // Do not free userData and dispName, is in use. freez(tmp->name); free(tmp); } while (rl != racemanList); }