bool MainMenu::check_menu(int key) { bool result = false; int input = get_input_keydown(key); if (input & PRESS_ESC) { result = true; } return result; }
void move_battle_keydown( BATTLE *battle, int key ) { switch(battle->currActor->state) { case BATTLE_STATE_WAIT: move_menu_keydown(key); break; case BATTLE_STATE_MOVE: select_battle_steps(battle, get_input_keydown(key)); break; case BATTLE_STATE_ATTACK: select_battle_destination(battle, get_input_keydown(key), &battle->currActor->attackList, battle->currActor->player->h->status.reach, attack_cb); break; case BATTLE_STATE_SELECT_MAGIC: move_menu_keydown(key); break; case BATTLE_STATE_TARGET: select_battle_destination(battle, get_input_keydown(key), &battle->currActor->targetList, ((SPELL *) battle->currActor->arg)->status.reach, target_cb); break; default: break; } }
static void game_keydown(int key) { int input = get_input_keydown(key); if (input & PRESS_ENTER) open_door(); if (input & PRESS_FIRE) attack(); if (input & PRESS_ADVANCE) descend_level(); if (input & PRESS_REVERT) ascend_level(); }
static void check_esc(int key) { int input = get_input_keydown(key); if (input & PRESS_ESC) { switch(state) { case GAME_STATE_WORLD : set_game_state(GAME_STATE_MENU); break; case GAME_STATE_MAP : set_game_state(GAME_STATE_WORLD); break; case GAME_STATE_STATUS : set_game_state(GAME_STATE_WORLD); break; case GAME_STATE_BATTLE : deinit_battle(game_battle); set_game_state(GAME_STATE_WORLD); break; default : break; } } }
MainMenu::Option MainMenu::move(int key) { Option option = OptionNone; int input = get_input_keydown(key); if (input & PRESS_DOWN) { m_menu->advance_pointer(Menu::DirectionDown); m_media->play_sound("advance.wav"); } else if (input & PRESS_UP) { m_menu->advance_pointer(Menu::DirectionUp); m_media->play_sound("advance.wav"); } else if (input & PRESS_ENTER) { m_media->play_sound("select.wav"); option = (Option) m_menu->get_option(); } else if (input & PRESS_ESC) { option = OptionContinue; } return option; }
Area* Shop::move(int key) { Area *area = 0; void *data = 0; bool rejected = false; int input = get_input_keydown(key); if (input & PRESS_DOWN) { data = m_menu->advance_pointer(Menu::DirectionDown); m_media->play_sound("advance.wav"); } else if (input & PRESS_UP) { data = m_menu->advance_pointer(Menu::DirectionUp); m_media->play_sound("advance.wav"); } else if (input & PRESS_ENTER) { if (m_menu->get_option() == 4) { m_media->play_sound("select.wav"); area = new Area(m_src.c_str(), m_sx, m_sy); } else { Item *item = (Item *) m_menu->get_data(); if (item) { Status *status = m_db->get_status(); if (status->pay_gold(item->get_attribute("price"))) { m_menu->replace_option("Sold out!"); item->aquire(m_db); status->aquire_item(item); m_media->play_sound("select.wav"); } else { m_media->play_sound("reject.wav"); rejected = true; } } else { m_media->play_sound("reject.wav"); rejected = true; } } } if (data) { Item *item = (Item *) data; static char str[12]; Color color; sprintf(str, "%06d Gold", item->get_attribute("price")); Status *status = m_db->get_status(); if (status->get_gold() < item->get_attribute("price")) { color.set_named(Color::Red); } else { color.set_named(Color::White); } m_price_text->replace_line(str, color); } else if (!rejected) { static char str[12]; Color color(Color::White); sprintf(str, "000000 Gold"); m_price_text->replace_line(str, color); } return area; }