/** Update game (every 10 ms) */ void update() { // handle buttons (with repeating when held down) for (uint8_t i = 0; i < DEBO_CHANNELS; i++) { if (debo_get_pin(i)) { if (btn_hold_cnt[i] == 0) { if (is_arrow_key(i)) { safe_press_arrow_key(i); } else { button_click(i); } } // non-arrows wrap to 1 -> do not generate repeated clicks inc_wrap(btn_hold_cnt[i], is_arrow_key(i) ? 0 : 1, BTNHOLD_REPEAT); } else { btn_hold_cnt[i] = 0; } } // game logic - hide or remove cards when time is up if (hide_timeout > 0) { if (--hide_timeout == 0) { if (hide_timeout_match) { // Tiles removed from board board[tile1].state = GONE; board[tile2].state = GONE; if (board[Cursor].state == GONE) { // move to some other tile // try not to change row if possible if ((Cursor % WIDTH) == (WIDTH - 1)) safe_press_arrow_key(D_LEFT); else safe_press_arrow_key(D_RIGHT); } } else { // Tiles made secret again board[tile1].state = SECRET; board[tile2].state = SECRET; } tiles_revealed = 0; // no revealed } } // Animation for pulsing the active color inc_wrapi(animframe, 0, F_ANIM_LEN * 2); }
void Game::buildmenu_selection_not_set(SDL_Event* event) //Player does not have an object selected from Buildmenu { if (!game_started && event->key.keysym.sym == SDLK_RETURN) { if (game_state == GAME_PAUSED) { game_state = GAMEPLAY_RUNNING; game_started = true; send_new_wave(); grid->clear_paths(); for(iter_enemy = enemy_list.begin(); iter_enemy != enemy_list.end(); iter_enemy++) { (*iter_enemy)->try_update_path(); } } } if (event->key.keysym.sym == SDLK_SPACE) { if (tile_selection != NULL) { toggle_option_box(); } } update_option_box(); int position = 0; for (iter_op_box = optionbox.begin(); iter_op_box != optionbox.end(); iter_op_box++) { int posX = (int)selection_sprite->get_x() + 2; int posY = (int)selection_sprite->get_y() + 2; GridPosition pos = GridPosition(0,0); Tile* tile = grid->get_tile_from_mouse(posX, posY); if (tile != NULL) pos = tile->get_position(); if (event->key.keysym.sym == SDLK_1 && position == 1) { if (optbox_do_selection((*iter_op_box), pos)) break; } else if (event->key.keysym.sym == SDLK_2 && position == 2) { if (optbox_do_selection((*iter_op_box), pos)) break; } else if (event->key.keysym.sym == SDLK_3 && position == 3) { if (optbox_do_selection((*iter_op_box), pos)) break; } else if (event->key.keysym.sym == SDLK_4 && position == 4) { if (optbox_do_selection((*iter_op_box), pos)) break; } else if (event->key.keysym.sym == SDLK_5 && position == 5) { if (optbox_do_selection((*iter_op_box), pos)) break; } else if (event->key.keysym.sym == SDLK_u) { if (optbox_do_selection(BUTTON_UPGRADE, pos)) break; } else if (event->key.keysym.sym == SDLK_s) { if (optbox_do_selection(BUTTON_SELL, pos)) break; } position++; } if (is_arrow_key(event)) { arrowkey_bflag_not_set(event); } }