Example #1
0
/** 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);
}
Example #2
0
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);
	}
}