void Outro::on_draw() { if (m_snd_game_exit != NULL) { if (timer_elapsed() > static_cast<unsigned int>(m_snd_game_exit->length_in_ms) + 100) { next_state(); } } Globals g; g.render().DrawTile(0,0, g.values().res_w(), g.values().res_h(), m_img_mainmenu); string text1 = g.snd2txt().text(); string text2 = ""; if (text1.length() >= 25) { text2 = text1; text1.erase(25, string::npos); text2.erase(0, 25); } g.render().DrawText(500, 400, 1.0, 1.0, 1.0, text1); g.render().DrawText(500, 450, 1.0, 1.0, 1.0, text2); }
void ConfigureKeys::on_draw() { #ifndef DISABLE_LIBSIGC Globals g; // background image g.render().DrawTile(0, 0, g.values().res_w(), g.values().res_h(), m_bg); int width = g.values().res_w(); int half = width / 2; int quarter= width / 4; SDL_Rect top = {quarter - 220, 80, width - 2*(quarter-220), 80}; SDL_Rect rl = {quarter - 220, 170, half - 50, 500}; SDL_Rect rr = {half + (half -(quarter - 220 + (half - 50))), 170, half - 50, 500}; g.render().FillRect(top,.0, .0, .0, 0.5f); g.render().FillRect(rl ,.0, .0, .0, 0.5f); g.render().FillRect(rr ,.0, .0, .0, 0.5f); m_con_active.draw_all(); m_con_passive.draw_all(); draw_player_keys(); m_anim_bomb.Update(); if (mb_grab_key) { draw_grab_key(); m_anim_bomb.Draw(quarter - 185, 740, 50, 50); m_anim_bomb.Draw(quarter - 220 + (width - 2*(quarter-220)) - 45, 740, 50, 50); } else { int index = m_con_active.current_focused(); m_anim_bomb.Draw(quarter-145 + 512*(index>5?1:0), 142 + 75*((index>5?(index-6):index)+1), 50, 50); } #endif // DISABLE_LIBSIGC }
void ConfigureKeys::on_enter() { #ifndef DISABLE_LIBSIGC Globals g; SDL_EnableKeyRepeat(g.values().get(VAL_MENU_KEYREPEAT_DELAY), g.values().get(VAL_MENU_KEYREPEAT_INTERVAL)); create_key_map(); create_gui(); mb_grab_key = false; m_which_player = 0; m_bg = g.render().LoadTexture(g.images().background_random()); m_anim_bomb.SetAnimation(ANI_BOMB); m_anim_bomb.Start(); mp_keyconfig = &g.keycfg(); g.render().SetTextSizes(16, 16); #endif // DISABLE_LIBSIGC }
void ConfigureKeys::draw_grab_key() { Globals g; int width = g.values().res_w(); int height = g.values().res_h(); int quarter= width / 4; SDL_Rect r = {quarter - 220, 680, width - 2*(quarter-220), 70}; g.render().FillRect(r, .0, .0, .0, .5f); string str = "Press a key for "; switch (m_which_player) { case 0: str += "Player 1!"; break; case 1: str += "Player 2!"; break; } g.render().SetTextSizes(24, 24); g.render().DrawText(r, 255, 255, 255, str); }
void ConfigureKeys::create_gui() { #ifndef DISABLE_LIBSIGC Globals g; int width = g.values().res_w(); int height = g.values().res_h(); int half = width / 2; int quarter= half / 2; // create buttons m_btn_p1_head = new PushButton("Player 1"); m_btn_p1_up = new PushButton("Up"); m_btn_p1_down = new PushButton("Down"); m_btn_p1_left = new PushButton("Left"); m_btn_p1_right = new PushButton("Right"); m_btn_p1_drop = new PushButton("Drop bomb"); m_btn_p1_special = new PushButton("Special key"); m_btn_p2_head = new PushButton("Player 2"); m_btn_p2_up = new PushButton("Up"); m_btn_p2_down = new PushButton("Down"); m_btn_p2_left = new PushButton("Left"); m_btn_p2_right = new PushButton("Right"); m_btn_p2_drop = new PushButton("Drop bomb"); m_btn_p2_special = new PushButton("Special key"); int d = 75; // positions m_btn_p1_head ->wnd_set_rect(quarter - 200, 100, 400, 40); m_btn_p1_up ->wnd_set_rect(quarter - 100, 100 + 1*d, 200, 40); m_btn_p1_down ->wnd_set_rect(quarter - 100, 100 + 2*d, 200, 40); m_btn_p1_left ->wnd_set_rect(quarter - 100, 100 + 3*d, 200, 40); m_btn_p1_right ->wnd_set_rect(quarter - 100, 100 + 4*d, 200, 40); m_btn_p1_drop ->wnd_set_rect(quarter - 100, 100 + 5*d, 200, 40); m_btn_p1_special ->wnd_set_rect(quarter - 100, 100 + 6*d, 200, 40); m_btn_p2_head ->wnd_set_rect(3*quarter - 200, 100, 400, 40); m_btn_p2_up ->wnd_set_rect(3*quarter - 100, 100 + 1*d, 200, 40); m_btn_p2_down ->wnd_set_rect(3*quarter - 100, 100 + 2*d, 200, 40); m_btn_p2_left ->wnd_set_rect(3*quarter - 100, 100 + 3*d, 200, 40); m_btn_p2_right ->wnd_set_rect(3*quarter - 100, 100 + 4*d, 200, 40); m_btn_p2_drop ->wnd_set_rect(3*quarter - 100, 100 + 5*d, 200, 40); m_btn_p2_special ->wnd_set_rect(3*quarter - 100, 100 + 6*d, 200, 40); // font size m_btn_p1_head ->set_font_size(24, 24); m_btn_p1_up ->set_font_size(16, 16); m_btn_p1_down ->set_font_size(16, 16); m_btn_p1_left ->set_font_size(16, 16); m_btn_p1_right ->set_font_size(16, 16); m_btn_p1_drop ->set_font_size(16, 16); m_btn_p1_special ->set_font_size(16, 16); m_btn_p2_head ->set_font_size(24, 24); m_btn_p2_up ->set_font_size(16, 16); m_btn_p2_down ->set_font_size(16, 16); m_btn_p2_left ->set_font_size(16, 16); m_btn_p2_right ->set_font_size(16, 16); m_btn_p2_drop ->set_font_size(16, 16); m_btn_p2_special ->set_font_size(16, 16); // text alignment /* m_btn_p1_head ->set_text_alignment(TAL_CENTER); m_btn_p1_up ->set_text_alignment(TAL_LEFT); m_btn_p1_down ->set_text_alignment(TAL_LEFT); m_btn_p1_left ->set_text_alignment(TAL_LEFT); m_btn_p1_right ->set_text_alignment(TAL_LEFT); m_btn_p1_drop ->set_text_alignment(TAL_LEFT); m_btn_p1_special ->set_text_alignment(TAL_LEFT); m_btn_p2_head ->set_text_alignment(TAL_CENTER); m_btn_p2_up ->set_text_alignment(TAL_LEFT); m_btn_p2_down ->set_text_alignment(TAL_LEFT); m_btn_p2_left ->set_text_alignment(TAL_LEFT); m_btn_p2_right ->set_text_alignment(TAL_LEFT); m_btn_p2_drop ->set_text_alignment(TAL_LEFT); m_btn_p2_special ->set_text_alignment(TAL_LEFT); */ m_btn_p1_up ->set_border_type(BT_MOUSE_OVER); m_btn_p1_down ->set_border_type(BT_MOUSE_OVER); m_btn_p1_left ->set_border_type(BT_MOUSE_OVER); m_btn_p1_right ->set_border_type(BT_MOUSE_OVER); m_btn_p1_drop ->set_border_type(BT_MOUSE_OVER); m_btn_p1_special ->set_border_type(BT_MOUSE_OVER); m_btn_p2_up ->set_border_type(BT_MOUSE_OVER); m_btn_p2_down ->set_border_type(BT_MOUSE_OVER); m_btn_p2_left ->set_border_type(BT_MOUSE_OVER); m_btn_p2_right ->set_border_type(BT_MOUSE_OVER); m_btn_p2_drop ->set_border_type(BT_MOUSE_OVER); m_btn_p2_special ->set_border_type(BT_MOUSE_OVER); m_con_active.add(m_btn_p1_up ); m_con_active.add(m_btn_p1_down ); m_con_active.add(m_btn_p1_left ); m_con_active.add(m_btn_p1_right ); m_con_active.add(m_btn_p1_drop ); m_con_active.add(m_btn_p1_special); m_con_active.add(m_btn_p2_up ); m_con_active.add(m_btn_p2_down ); m_con_active.add(m_btn_p2_left ); m_con_active.add(m_btn_p2_right ); m_con_active.add(m_btn_p2_drop ); m_con_active.add(m_btn_p2_special); // signals & slots m_btn_p1_up ->on_clicked.connect(slot(*this, &ConfigureKeys::p1_up_clicked)); m_btn_p1_down ->on_clicked.connect(slot(*this, &ConfigureKeys::p1_down_clicked)); m_btn_p1_left ->on_clicked.connect(slot(*this, &ConfigureKeys::p1_left_clicked)); m_btn_p1_right ->on_clicked.connect(slot(*this, &ConfigureKeys::p1_right_clicked)); m_btn_p1_drop ->on_clicked.connect(slot(*this, &ConfigureKeys::p1_drop_clicked)); m_btn_p1_special->on_clicked.connect(slot(*this, &ConfigureKeys::p1_special_clicked)); m_btn_p2_up ->on_clicked.connect(slot(*this, &ConfigureKeys::p2_up_clicked)); m_btn_p2_down ->on_clicked.connect(slot(*this, &ConfigureKeys::p2_down_clicked)); m_btn_p2_left ->on_clicked.connect(slot(*this, &ConfigureKeys::p2_left_clicked)); m_btn_p2_right ->on_clicked.connect(slot(*this, &ConfigureKeys::p2_right_clicked)); m_btn_p2_drop ->on_clicked.connect(slot(*this, &ConfigureKeys::p2_drop_clicked)); m_btn_p2_special->on_clicked.connect(slot(*this, &ConfigureKeys::p2_special_clicked)); m_con_active.create_tab_order(); // delete objects when calling m_con_active.clear()! m_con_active.set_autodelete(true); m_btn_p1_up->set_focus(true); m_con_passive.add(m_btn_p1_head ); m_con_passive.add(m_btn_p2_head ); m_con_passive.create_tab_order(); m_con_passive.set_autodelete(true); #endif // DISABLE_LIBSIGC }