void dialogs::show_timed_dialog(std::string face_file, bool is_left, std::string lines[], short delay, bool show_btn=true) { UNUSED(is_left); std::string temp_text; char temp_char; timer.pause(); draw_dialog_bg(show_btn); draw_lib.update_screen(); st_position dialog_pos = graphLib.get_dialog_pos(); graphLib.place_face(face_file, st_position(dialog_pos.x+16, dialog_pos.y+16)); draw_lib.update_screen(); /// @TODO: usar show_config_bg e hide_config_bg da graphLib - modificar para aceitar centered (que é o atual) ou top ou bottom for (int i=0; i<3; i++) { for (unsigned int j=0; j<lines[i].size(); j++) { temp_char = lines[i].at(j); temp_text = ""; temp_text += temp_char; graphLib.draw_text(j*9+(dialog_pos.x+52), i*11+(dialog_pos.y+16), temp_text); //graphLib.draw_text(j*9+53, i*11+9, "A"); draw_lib.update_screen(); input.waitTime(15); } } input.waitTime(delay); timer.unpause(); }
void draw::show_ingame_warning(std::vector<std::string> message) { graphLib.show_dialog(0, true); st_position dialog_pos = graphLib.get_dialog_pos(); for (unsigned int i=0; i<message.size(); i++) { graphLib.draw_text(dialog_pos.x+20, dialog_pos.y+16+(12*i), message[i]); } input.clean(); input.wait_keypress(); }
bool dialogs::show_leave_game_dialog() const { bool res = false; bool repeat_menu = true; int picked_n = -1; timer.pause(); std::cout << ">>>>>>> show_leave_game_dialog::START" << std::endl; graphicsLib_gSurface bgCopy; graphLib.initSurface(st_size(RES_W, RES_H), &bgCopy); graphLib.copyArea(st_position(0, 0), &graphLib.gameScreen, &bgCopy); graphLib.show_dialog(0, false); st_position dialog_pos = graphLib.get_dialog_pos(); graphLib.draw_text(dialog_pos.x+30, dialog_pos.y+16, "QUIT GAME?"); std::vector<std::string> item_list; item_list.push_back("YES"); item_list.push_back("NO"); option_picker main_picker(false, st_position(dialog_pos.x+40, dialog_pos.y+16+11), item_list, false); draw_lib.update_screen(); while (repeat_menu == true) { picked_n = main_picker.pick(); std::cout << "picked_n: " << picked_n << std::endl; if (picked_n == 0) { res = true; repeat_menu = false; } else if (picked_n == 1) { res = false; repeat_menu = false; } else { main_picker.draw(); } } input.clean(); input.waitTime(200); graphLib.copyArea(st_position(0, 0), &bgCopy, &graphLib.gameScreen); draw_lib.update_screen(); timer.unpause(); std::cout << ">>>>>>> show_leave_game_dialog::END" << std::endl; return res; }
void key_map::redraw_line(short line) const { std::cout << "******* key_map::redraw_line - line: " << line << std::endl; st_position config_text_pos; config_text_pos.x = graphLib.get_config_menu_pos().x + 74; config_text_pos.y = graphLib.get_config_menu_pos().y + 40; graphLib.clear_area(config_text_pos.x+70-1, config_text_pos.y-1 + line*CURSOR_SPACING, 110, CURSOR_SPACING+1, 0, 0, 0); ///@TODO - /* if (key_config[line].key_type == 0) { graphLib.draw_text(config_text_pos.x + 70, config_text_pos.y + line*CURSOR_SPACING, "JOYSTICK"); // input type (joystick/keyboard) } else { graphLib.draw_text(config_text_pos.x + 70, config_text_pos.y + line*CURSOR_SPACING, "KEYBOARD"); // input type (joystick/keyboard) } */ std::stringstream key_n_ss; ///@TODO - key_n_ss << key_config[line].key_number; graphLib.draw_text(config_text_pos.x + 140, config_text_pos.y + line*CURSOR_SPACING, key_n_ss.str()); //input code (number) }
void key_map::draw_screen() { bool finished = false; st_position config_text_pos; st_position cursor_pos; short _pick_pos = 0; config_text_pos.x = graphLib.get_config_menu_pos().x + 74; config_text_pos.y = graphLib.get_config_menu_pos().y + 40; cursor_pos = config_text_pos; graphLib.clear_area(config_text_pos.x-1, config_text_pos.y-1, 180, 180, 0, 0, 0); input.clean(); input.waitTime(300); for (unsigned int i=0; i<_keys_list.size(); i++) { graphLib.draw_text(config_text_pos.x, config_text_pos.y + i*CURSOR_SPACING, _keys_list[i].c_str()); redraw_line(i); } graphLib.draw_text(config_text_pos.x, config_text_pos.y + _keys_list.size()*CURSOR_SPACING, "RETURN"); draw_lib.update_screen(); //cout << "scenesLib::option_picker::START\n"; graphLib.drawCursor(st_position(cursor_pos.x-CURSOR_SPACING, cursor_pos.y+(_pick_pos*CURSOR_SPACING))); while (finished == false) { input.readInput(); if (input.p1_input[BTN_START]) { if (_pick_pos == (short)_keys_list.size()) { std::cout << "key_map::draw_screen - FINISHED #1" << std::endl; finished = true; } else { graphLib.draw_text(config_text_pos.x, config_text_pos.y + _keys_list.size()*CURSOR_SPACING+CURSOR_SPACING*2, "PRESS NEW KEY/BUTTON"); //input code (number) draw_lib.update_screen(); //format_v_2_1_1::st_key_config new_key = input.get_pressed_key(); graphLib.clear_area(config_text_pos.x, config_text_pos.y + _keys_list.size()*CURSOR_SPACING+CURSOR_SPACING*2-1, 180, CURSOR_SPACING+1, 0, 0, 0); ///@TODO - key_config[_pick_pos].key_type = new_key.key_type; ///@TODO - key_config[_pick_pos].key_number = new_key.key_number; redraw_line(_pick_pos); draw_lib.update_screen(); } } if (input.p1_input[BTN_DOWN]) { soundManager.play_sfx(SFX_CURSOR); graphLib.eraseCursor(st_position(cursor_pos.x-CURSOR_SPACING, cursor_pos.y+(_pick_pos*CURSOR_SPACING))); _pick_pos++; if (_pick_pos >= (short)_keys_list.size()+1) { _pick_pos = 0; } graphLib.drawCursor(st_position(cursor_pos.x-CURSOR_SPACING, cursor_pos.y+(_pick_pos*CURSOR_SPACING))); } if (input.p1_input[BTN_UP]) { soundManager.play_sfx(SFX_CURSOR); graphLib.eraseCursor(st_position(cursor_pos.x-CURSOR_SPACING, cursor_pos.y+(_pick_pos*CURSOR_SPACING))); _pick_pos--; if (_pick_pos < 0) { _pick_pos = _keys_list.size(); } graphLib.drawCursor(st_position(cursor_pos.x-CURSOR_SPACING, cursor_pos.y+(_pick_pos*CURSOR_SPACING))); } if (input.p1_input[BTN_QUIT]) { std::cout << "key_map::draw_screen - FINISHED #2" << std::endl; finished = true; } input.clean(); input.waitTime(10); draw_lib.update_screen(); } }
void key_map::config_input() { CURRENT_FILE_FORMAT::st_game_config game_config_copy = game_config; int selected_option = 0; while (selected_option != -1) { selected_option = draw_config_keys(); std::cout << "key_map::config_input - selected_option: " << selected_option << std::endl; if (selected_option == 0) { game_config.set_default_keys(); std::cout << "key_map::config_input - LEAVE #1" << std::endl; } else if (selected_option == -1) { std::cout << "key_map::config_input - LEAVE #2" << std::endl; // apply changes to game-config apply_key_codes_changes(game_config_copy); return; // -- NEW -- // } else if (selected_option == 8) { if (game_config.input_mode == INPUT_MODE_DIGITAL) { game_config.input_mode = INPUT_MODE_ANALOG; } else { game_config.input_mode = INPUT_MODE_DIGITAL; } // -- NEW -- // } else { std::cout << "key_map::config_input - PICK KEY #1" << std::endl; INPUT_COMMANDS selected_key = BTN_JUMP; if (selected_option == 1) { selected_key = BTN_JUMP; } else if (selected_option == 2) { selected_key = BTN_ATTACK; } else if (selected_option == 3) { selected_key = BTN_SHIELD; } else if (selected_option == 4) { selected_key = BTN_DASH; } else if (selected_option == 5) { selected_key = BTN_L; } else if (selected_option == 6) { selected_key = BTN_R; } else if (selected_option == 7) { selected_key = BTN_START; } else if (selected_option == 9) { selected_key = BTN_UP; } else if (selected_option == 10) { selected_key = BTN_DOWN; } else if (selected_option == 11) { selected_key = BTN_LEFT; } else if (selected_option == 12) { selected_key = BTN_RIGHT; } st_position menu_pos(graphLib.get_config_menu_pos().x + 74, graphLib.get_config_menu_pos().y + 40); graphLib.clear_area(menu_pos.x, menu_pos.y, 180, 180, 0, 0, 0); graphLib.draw_text(menu_pos.x, menu_pos.y, "PRESS A KEY OR BUTTON"); input.clean(); input.waitTime(20); bool is_joystick = input.pick_key_or_button(game_config_copy, selected_key); check_key_duplicates(game_config_copy, selected_key, is_joystick); } } // apply changes to game-config apply_key_codes_changes(game_config_copy); }