// Sound menu void* SoundMenuInit(void *prevMenu) { // Has screen already been created? if (scrHandle) { return scrHandle; } prevHandle = prevMenu; scrHandle = GfuiScreenCreate((float*)NULL, NULL, onActivate, NULL, (tfuiCallback)NULL, 1); void *param = GfuiMenuLoad("soundconfigmenu.xml"); GfuiMenuCreateStaticControls(scrHandle, param); GfuiMenuCreateButtonControl(scrHandle,param,"soundleftarrow",(void*)-1,changeSoundState); GfuiMenuCreateButtonControl(scrHandle,param,"soundrightarrow",(void*)1,changeSoundState); SoundOptionId = GfuiMenuCreateLabelControl(scrHandle,param,"soundlabel"); GfuiMenuCreateButtonControl(scrHandle,param,"ApplyButton",NULL,saveSoundOption); GfuiMenuCreateButtonControl(scrHandle,param,"CancelButton",prevMenu,GfuiScreenActivate); VolumeValueId = GfuiMenuCreateEditControl(scrHandle,param,"volumeedit",NULL,NULL,changeVolume); //// TODO remove this and uncomment the static controls in 'soundconfigmenu.xml' //// if/when Music is officially included //// HACK to allow CMake option 'OPTION_MENU_MUSIC' to show/hide these menu music labels //GfuiMenuCreateLabelControl(scrHandle,param,"musicstaticlabel"); //GfuiMenuCreateLabelControl(scrHandle,param,"musicstaticvolume"); //// end of code to remove GfuiMenuCreateButtonControl(scrHandle,param,"musicleftarrow",(void*)-1,changeMusicState); GfuiMenuCreateButtonControl(scrHandle,param,"musicrightarrow",(void*)1,changeMusicState); MusicStateId = GfuiMenuCreateLabelControl(scrHandle,param,"musiclabel"); MusicVolumeValueId = GfuiMenuCreateEditControl(scrHandle,param,"musicvolumeedit",NULL,NULL,changeMusicVolume); GfParmReleaseHandle(param); GfuiAddKey(scrHandle, GFUIK_RETURN, "Apply", NULL, saveSoundOption, NULL); GfuiAddKey(scrHandle, GFUIK_ESCAPE, "Cancel", prevMenu, GfuiScreenActivate, NULL); GfuiAddKey(scrHandle, GFUIK_F1, "Help", scrHandle, GfuiHelpScreen, NULL); GfuiAddKey(scrHandle, GFUIK_F12, "Screen-Shot", NULL, GfuiScreenShot, NULL); GfuiAddKey(scrHandle, GFUIK_LEFT, "Previous Option in list", (void*)-1, changeSoundState, NULL); GfuiAddKey(scrHandle, GFUIK_RIGHT, "Next Option in list", (void*)1, changeSoundState, NULL); return scrHandle; }
static void NetworkClientConnectMenu(void * /* dummy */) { GfLogTrace("Entering Network Client Connect menu.\n"); LookupPlayerSetup(g_strDriver,g_strCar); if (racemanMenuHdle) GfuiScreenRelease(racemanMenuHdle); racemanMenuHdle = GfuiScreenCreate(NULL, NULL, (tfuiCallback)NULL, NULL, (tfuiCallback)NULL, 1); void *mparam = GfuiMenuLoad("networkclientconnectmenu.xml"); GfuiMenuCreateStaticControls(racemanMenuHdle, mparam); g_IPEditId = GfuiMenuCreateEditControl(racemanMenuHdle, mparam, "IPAddrEdit", 0, 0, ChangeIP); char namebuf[255]; snprintf(namebuf, sizeof(namebuf), "%s", g_strDriver.c_str()); g_NameId = GfuiMenuCreateEditControl(racemanMenuHdle, mparam, "PlayerNameEdit", 0, 0, ChangeName); GfuiEditboxSetString(racemanMenuHdle, g_NameId, namebuf); GfuiMenuCreateButtonControl(racemanMenuHdle, mparam, "ConnectButton", 0, RmNetworkClientMenu); GfuiMenuCreateButtonControl(racemanMenuHdle, mparam, "BackButton", RmRaceSelectMenuHandle, GfuiScreenActivate); GfuiMenuDefaultKeysAdd(racemanMenuHdle); GfuiAddKey(racemanMenuHdle, GFUIK_ESCAPE, "Back to previous menu", RmRaceSelectMenuHandle, 0, GfuiScreenActivate); GfParmReleaseHandle(mparam); GfuiScreenActivate(racemanMenuHdle); }
/** * This function shows the pit menu and let the user fill in the amount * of fuel he wants and the number of damage he want to repair * * @param car The current car (pitcmd is modified on user decisions) * @param s The current situation (used to calculate the remaining time) * @param callback The function which is called after the user made a decision */ void RmPitMenuStart(tCarElt *car, tSituation *s, tfuiCallback callback) { char buf[128]; rmCar = car; rmCallback = callback; if (menuHandle) GfuiScreenRelease(menuHandle); GfLogInfo("Entering Pit menu\n"); // Create screen, load menu XML descriptor and create static controls. menuHandle = GfuiScreenCreate(NULL, NULL, NULL, NULL, NULL, 1); void *menuXMLDescHdle = GfuiMenuLoad("pitmenu.xml"); GfuiMenuCreateStaticControls(menuHandle, menuXMLDescHdle); // Create variable title label. int titleId = GfuiMenuCreateLabelControl(menuHandle, menuXMLDescHdle, "titlelabel"); snprintf(buf, sizeof(buf), "Pit Stop for %s", car->_name); GfuiLabelSetText(menuHandle, titleId, buf); // Create labels for remaining laps and remaining fuel. int remainLapsTimeId = GfuiMenuCreateLabelControl(menuHandle, menuXMLDescHdle, "remaininglapstimelabel"); if( s->_totTime > 0 && s->_totTime > s->currentTime ) // Timed part of the timed session { GfuiMenuCreateLabelControl(menuHandle, menuXMLDescHdle, "remainingtimelabel"); if( s->_extraLaps > 0) snprintf(buf, sizeof(buf), "%s + %d laps", GfTime2Str( s->_totTime - s->currentTime, NULL, true, 0 ), s->_extraLaps); else snprintf(buf, sizeof(buf), "%s", GfTime2Str( s->_totTime - s->currentTime, NULL, true, 0 ) ); } else { GfuiMenuCreateLabelControl(menuHandle, menuXMLDescHdle, "remaininglapslabel"); snprintf(buf, sizeof(buf), "%d", car->_remainingLaps); //Laps tot drive to win the race } GfuiLabelSetText(menuHandle, remainLapsTimeId, buf); int remainFuelId = GfuiMenuCreateLabelControl(menuHandle, menuXMLDescHdle, "remainingfuellabel"); snprintf(buf, sizeof(buf), "%.1f", car->_fuel); GfuiLabelSetText(menuHandle, remainFuelId, buf); // Create edit boxes for fuel and repair amounts. fuelId = GfuiMenuCreateEditControl(menuHandle, menuXMLDescHdle, "fuelamountedit", NULL, NULL, rmUpdtFuel); snprintf(buf, sizeof(buf), "%.1f", car->pitcmd.fuel); GfuiEditboxSetString(menuHandle, fuelId, buf); repairId = GfuiMenuCreateEditControl(menuHandle, menuXMLDescHdle, "repairamountedit", NULL, NULL, rmUpdtRepair); snprintf(buf, sizeof(buf), "%d", (int)car->pitcmd.repair); GfuiEditboxSetString(menuHandle, repairId, buf); // Create Repair and Stop&Go buttons. GfuiMenuCreateButtonControl(menuHandle, menuXMLDescHdle, "repairbutton", NULL, rmRepair); GfuiMenuCreateButtonControl(menuHandle, menuXMLDescHdle, "stopgobutton", NULL, rmStopAndGo); // Close menu XML descriptor. GfParmReleaseHandle(menuXMLDescHdle); // Register keyboard shortcuts. GfuiMenuDefaultKeysAdd(menuHandle); // Activate the created screen. GfuiScreenActivate(menuHandle); }
void * PlayerConfigMenuInit(void *prevMenu) { /* Save previous screen handle for exit time */ PrevScrHandle = prevMenu; /* Screen already created : nothing more to do */ if (ScrHandle) { return ScrHandle; } /* Create the screen, load menu XML descriptor and create static controls */ ScrHandle = GfuiScreenCreate((float*)NULL, NULL, onActivate, NULL, (tfuiCallback)NULL, 1); void *param = GfuiMenuLoad("playerconfigmenu.xml"); GfuiMenuCreateStaticControls(ScrHandle, param); /* Player scroll list */ ScrollList = GfuiMenuCreateScrollListControl(ScrHandle, param, "playerscrolllist", NULL, onSelect); /* New, copy and delete player buttons */ GfuiMenuCreateButtonControl(ScrHandle, param, "new", NULL, onNewPlayer); GfuiMenuCreateButtonControl(ScrHandle, param, "copy", NULL, onCopyPlayer); GfuiMenuCreateButtonControl(ScrHandle, param, "delete", NULL, onDeletePlayer); /* Access to control screen button */ GfuiMenuCreateButtonControl(ScrHandle, param, "controls", NULL, onConfControls); /* Player name editbox */ NameEditId = GfuiMenuCreateEditControl(ScrHandle, param, "nameedit", NULL, onActivateName, onChangeName); /* Player skill level "combobox" (left arrow, label, right arrow) */ GfuiMenuCreateButtonControl(ScrHandle, param, "skillleftarrow", (void*)0, onChangeLevel); GfuiMenuCreateButtonControl(ScrHandle, param, "skillrightarrow", (void*)1, onChangeLevel); SkillEditId = GfuiMenuCreateLabelControl(ScrHandle, param, "skilltext"); /* Races and pits numbers editboxes (Must they really stay here ?) */ /* TODO: definitely should be moved from here to pre-race menus. kilo */ RaceNumEditId = GfuiMenuCreateEditControl(ScrHandle, param, "racenumedit", NULL, NULL, onChangeNum); PitsEditId = GfuiMenuCreateEditControl(ScrHandle, param, "pitstopedit", NULL, NULL, onChangePits); /* Gear changing mode and associated "combobox" (left arrow, label, right arrow) */ GfuiMenuCreateButtonControl(ScrHandle, param, "gearleftarrow", (void*)0, onChangeGearChange); GfuiMenuCreateButtonControl(ScrHandle, param, "gearrightarrow", (void*)1, onChangeGearChange); GearChangeEditId = GfuiMenuCreateLabelControl(ScrHandle, param, "geartext"); /* Gear changing auto-reverse flag and associated "combobox" (left arrow, label, right arrow) */ AutoReverseLabelId = GfuiMenuCreateLabelControl(ScrHandle, param, "autoreversetext"); AutoReverseLeftId = GfuiMenuCreateButtonControl(ScrHandle, param, "autoleftarrow", (void*)-1, onChangeReverse); AutoReverseRightId = GfuiMenuCreateButtonControl(ScrHandle, param, "autorightarrow", (void*)1, onChangeReverse); AutoReverseEditId = GfuiMenuCreateLabelControl(ScrHandle, param, "autotext"); // Accept and Cancel buttons. GfuiMenuCreateButtonControl(ScrHandle, param, "ApplyButton", NULL, onSavePlayerList); GfuiMenuCreateButtonControl(ScrHandle, param, "CancelButton", NULL, onQuitPlayerConfig); // Close menu XML descriptor. GfParmReleaseHandle(param); // Register keyboard shortcuts. GfuiAddKey(ScrHandle, GFUIK_RETURN, "Accept and save changes", NULL, onSavePlayerList, NULL); GfuiAddKey(ScrHandle, GFUIK_ESCAPE, "Cancel changes", NULL, onQuitPlayerConfig, NULL); GfuiAddKey(ScrHandle, GFUIK_F1, "Help", ScrHandle, GfuiHelpScreen, NULL); GfuiAddKey(ScrHandle, GFUIK_F12, "Screen-Shot", NULL, GfuiScreenShot, NULL); // GfuiAddKey(ScrHandle, GFUIK_UP, "Previous Car", (void*)0, ChangeCar, NULL); // GfuiAddKey(ScrHandle, GFUIK_DOWN, "Next Car", (void*)1, ChangeCar, NULL); // GfuiAddKey(ScrHandle, GFUIK_PAGEUP, "Previous Car Category", (void*)0, ChangeCat, NULL); // GfuiAddKey(ScrHandle, GFUIK_PAGEDOWN, "Next Car Category", (void*)1, ChangeCat, NULL); return ScrHandle; }