void menuLoadAll() { MenuMain = menuCreateNew(MenuMain, 0, "OPTIONS", actNetwork); MenuMain = menuCreateNew(MenuMain, 1, "CONNECT/DISCONNECT", actConnect); MenuMain = menuCreateNew(MenuMain, 2, "EXIT", actQuit); MenuNetwork = menuCreateNew(MenuNetwork, 0, "NETWORK SETTINGS", actOptions); MenuNetwork = menuCreateNew(MenuNetwork, 1, "", NULL ); MenuNetwork = menuCreateNew(MenuNetwork, 2, "LOAD NETWORK", actNetworks ); MenuNetwork = menuCreateNew(MenuNetwork, 3, "SAVE NETWORK", actProfileSave ); MenuNetwork = menuCreateNew(MenuNetwork, 4, "", NULL ); MenuNetwork = menuCreateNew(MenuNetwork, 5, "BACK", actNetworkBack ); //MenuOptions = menuCreateNew(MenuOptions, 0, "MODE", actOptionsMode); MenuOptions = menuCreateNew(MenuOptions, 0, "ESSID", actOptionsESSID); MenuOptions = menuCreateNew(MenuOptions, 1, "ENCRYPTION", actOptionsEnc); MenuOptions = menuCreateNew(MenuOptions, 2, "PASSWORD", actOptionsPassword); //MenuOptions = menuCreateNew(MenuOptions, 4, "DHCP", actOptionsDHCP); //MenuOptions = menuCreateNew(MenuOptions, 5, "IP", actOptionsIP); //MenuOptions = menuCreateNew(MenuOptions, 6, "NETMASK", actOptionsNETMASK); MenuOptions = menuCreateNew(MenuOptions, 3, "SHOW/HIDE PASS", actOptionsTogglePasswordVisibility); MenuOptions = menuCreateNew(MenuOptions, 4, "", NULL); MenuOptions = menuCreateNew(MenuOptions, 5, "BACK", actOptionsBack); CurrentMenu = MenuMain; SelectedItem = menuSwitchItem(CurrentMenu, 0); }
void game (gamedata &g){ SDL_Event event; quit = false; // Set first tick interval Uint32 next_time = SDL_GetTicks() + TICK_INTERVAL; while (!quit){ if(g.winner){ finish_game(g); setup_game(g); GameState = STATE_INTRO; CurrentMenu = MenuMainIntro; SelectedItem = menuSwitchItem(CurrentMenu, 0); demo = true; } else if (g.winner == 0){ Uint8 *keys = SDL_GetKeyState(NULL); if (SDL_PollEvent(&event) == 1){ switch (event.type){ case SDL_QUIT: { printf("Quit requested, quitting.\n"); quit = true; } break; } } if(GameState == STATE_INTRO || GameState == STATE_MENU) { menuInput(g); } else if(GameState == STATE_MENU_PLANE_SELECT) { menuPlanes(g); } else if(GameState == STATE_MENU_PLAYER_CONTROL_SELECT) { menuSelectPlayer(g); } else if(GameState == STATE_GAME) { if ((keys[SDLK_ESCAPE] == SDL_PRESSED) || (keys[51] == SDL_PRESSED)){ keys[SDLK_ESCAPE] = SDL_RELEASED; GameState = STATE_MENU; CurrentMenu = MenuMain; SelectedItem = menuSwitchItem(CurrentMenu, 0); //quit = true; } } // Go through each plane individually g.p.reset(); while (g.p.next()){ // Setup virtual joystick int jx = 0; int jy = 0; bool jb = false; if (g.p().state < 2){ control(g, keys, jx, jy, jb); controlJoy(g, jx, jy, jb); } // Then move the plane act(g, jx, jy, jb); // Remove expunged planes if (g.p().state == 4){ g.drakms.fighter[g.p().id-7] = false; g.drakms.fightersout--; g.dp.reset(); while(g.dp.next()){ if (g.dp().id == g.p().id) g.dp.kill(); } g.p.kill(); } } // Then do everything else all(g); drawall(g); // Delay for time remaining in TICK_INTERVAL SDL_Delay(time_left(next_time)); next_time = SDL_GetTicks() + TICK_INTERVAL; } } }
void menuInput() { MenuItem *NewItem = NULL; int newItemNumber = SelectedItem->number; if(!keyDelayCheck(SDLK_UP, 15)) { newItemNumber--; } else if(!keyDelayCheck(SDLK_DOWN, 15)) { newItemNumber++; } if(newItemNumber < 0) { newItemNumber = CurrentMenu->size - 1; } if(newItemNumber >= CurrentMenu->size) { newItemNumber = 0; } if(newItemNumber != SelectedItem->number) { NewItem = menuSwitchItem(CurrentMenu, newItemNumber); if(NewItem != NULL) { while(NewItem->callback == NULL) { if(NewItem->number < SelectedItem->number) { newItemNumber--; } else if(NewItem->number > SelectedItem->number) { newItemNumber++; } else { return; } NewItem = menuSwitchItem(CurrentMenu, newItemNumber); } SelectedItem = NewItem; } } if(keystate[SDLK_RETURN]) { keystate[SDLK_RETURN] = 0; //menuAction(SelectedItem); SelectedItem->callback(SelectedItem); } if(keystate[SDLK_LCTRL]) { keystate[SDLK_LCTRL] = 0; //menuAction(SelectedItem); SelectedItem->callback(SelectedItem); } }
void controlJoy(gamedata &g, int &jx, int &jy, bool &jb){ int deadzone = 250; int x; int y; switch(g.p().control){ case 1: { if(g.playerJoy[0] == -1) break; SDL_Joystick *joy = SDL_JoystickOpen(g.playerJoy[0]); if(demo) { //computer_ai(g, g.p(), jx, jy, jb); } else { x = SDL_JoystickGetAxis(joy, 0); // left-right y = SDL_JoystickGetAxis(joy, 1); // up-down if(x < -deadzone) jx = -1; else if(x > deadzone) jx = 1; //else // jx = 0; if(y < -deadzone) jy = -1; //else if(y > deadzone) // jy = 1; // drop bomb //else // jy = 0; if(!jb) jb = (bool)SDL_JoystickGetButton(joy, g.playerJoyBut[0][0]); // fire if(SDL_JoystickGetButton(joy, g.playerJoyBut[0][1])) // drop bomb jy = 1; if(SDL_JoystickGetButton(joy, g.playerJoyBut[0][2]) && GameState == STATE_GAME) { GameState = STATE_MENU; CurrentMenu = MenuMain; SelectedItem = menuSwitchItem(CurrentMenu, 0); } } } break; case 2: { if(g.playerJoy[1] == -1) break; SDL_Joystick *joy = SDL_JoystickOpen(g.playerJoy[1]); if(demo) { //computer_ai(g, g.p(), jx, jy, jb); } else { x = SDL_JoystickGetAxis(joy, 0); // left-right y = SDL_JoystickGetAxis(joy, 1); // up-down if(x < -deadzone) jx = -1; else if(x > deadzone) jx = 1; //else // jx = 0; if(y < -deadzone) jy = -1; //else if(y > deadzone) // jy = 1; // drop bomb //else // jy = 0; if(!jb) jb = (bool)SDL_JoystickGetButton(joy, g.playerJoyBut[1][0]); // fire if(SDL_JoystickGetButton(joy, g.playerJoyBut[1][1])) // drop bomb jy = 1; } } break; default: computer_ai(g, g.p(), jx, jy, jb); break; } }