本文整理汇总了C++中UI_WINDOW类的典型用法代码示例。如果您正苦于以下问题:C++ UI_WINDOW类的具体用法?C++ UI_WINDOW怎么用?C++ UI_WINDOW使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了UI_WINDOW类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: player_select_init
// functions for selecting single/multiplayer pilots at the very beginning of FreeSpace
void player_select_init()
{
int i;
barracks_buttons *b;
UI_WINDOW *w;
// start a looping ambient sound
main_hall_start_ambient();
Player_select_force_main_hall = "";
Player_select_screen_active = 1;
// create the UI window
Player_select_window.create(0, 0, gr_screen.max_w_unscaled, gr_screen.max_h_unscaled, 0);
Player_select_window.set_mask_bmap(Player_select_background_mask_bitmap[gr_screen.res]);
// initialize the control buttons
for (i=0; i<NUM_PLAYER_SELECT_BUTTONS; i++) {
b = &Player_select_buttons[gr_screen.res][i];
// create the button
b->button.create(&Player_select_window, NULL, b->x, b->y, 60, 30, 1, 1);
// set its highlight action
b->button.set_highlight_action(common_play_highlight_sound);
// set its animation bitmaps
b->button.set_bmaps(b->filename);
// link the mask hotspot
b->button.link_hotspot(b->hotspot);
}
// add some text
w = &Player_select_window;
w->add_XSTR("Create", 1034, Player_select_buttons[gr_screen.res][CREATE_PILOT_BUTTON].xt, Player_select_buttons[gr_screen.res][CREATE_PILOT_BUTTON].yt, &Player_select_buttons[gr_screen.res][CREATE_PILOT_BUTTON].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Clone", 1040, Player_select_buttons[gr_screen.res][CLONE_BUTTON].xt, Player_select_buttons[gr_screen.res][CLONE_BUTTON].yt, &Player_select_buttons[gr_screen.res][CLONE_BUTTON].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Remove", 1038, Player_select_buttons[gr_screen.res][DELETE_BUTTON].xt, Player_select_buttons[gr_screen.res][DELETE_BUTTON].yt, &Player_select_buttons[gr_screen.res][DELETE_BUTTON].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Select", 1039, Player_select_buttons[gr_screen.res][ACCEPT_BUTTON].xt, Player_select_buttons[gr_screen.res][ACCEPT_BUTTON].yt, &Player_select_buttons[gr_screen.res][ACCEPT_BUTTON].button, UI_XSTR_COLOR_PINK);
w->add_XSTR("Single", 1041, Player_select_buttons[gr_screen.res][SINGLE_BUTTON].xt, Player_select_buttons[gr_screen.res][SINGLE_BUTTON].yt, &Player_select_buttons[gr_screen.res][SINGLE_BUTTON].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Multi", 1042, Player_select_buttons[gr_screen.res][MULTI_BUTTON].xt, Player_select_buttons[gr_screen.res][MULTI_BUTTON].yt, &Player_select_buttons[gr_screen.res][MULTI_BUTTON].button, UI_XSTR_COLOR_GREEN);
for(i=0; i<PLAYER_SELECT_NUM_TEXT; i++) {
w->add_XSTR(&Player_select_text[gr_screen.res][i]);
}
// create the list button text select region
Player_select_list_region.create(&Player_select_window, "", Choose_list_coords[gr_screen.res][0], Choose_list_coords[gr_screen.res][1], Choose_list_coords[gr_screen.res][2], Choose_list_coords[gr_screen.res][3], 0, 1);
Player_select_list_region.hide();
// create the pilot callsign input box
Player_select_input_box.create(&Player_select_window, Choose_list_coords[gr_screen.res][0], Choose_list_coords[gr_screen.res][1], Choose_list_coords[gr_screen.res][2] , CALLSIGN_LEN - 1, "", UI_INPUTBOX_FLAG_INVIS | UI_INPUTBOX_FLAG_KEYTHRU | UI_INPUTBOX_FLAG_LETTER_FIRST);
Player_select_input_box.set_valid_chars(VALID_PILOT_CHARS);
Player_select_input_box.hide();
Player_select_input_box.disable();
// not currently entering any text
Player_select_input_mode = 0;
// set up hotkeys for buttons so we draw the correct animation frame when a key is pressed
Player_select_buttons[gr_screen.res][SCROLL_LIST_UP_BUTTON].button.set_hotkey(KEY_UP);
Player_select_buttons[gr_screen.res][SCROLL_LIST_DOWN_BUTTON].button.set_hotkey(KEY_DOWN);
Player_select_buttons[gr_screen.res][ACCEPT_BUTTON].button.set_hotkey(KEY_ENTER);
Player_select_buttons[gr_screen.res][CREATE_PILOT_BUTTON].button.set_hotkey(KEY_C);
// attempt to load in the background bitmap
Player_select_background_bitmap = bm_load(Player_select_background_bitmap_name[gr_screen.res]);
Assert(Player_select_background_bitmap >= 0);
// load in the palette for the screen
// Player_select_palette = bm_load(PLAYER_SELECT_PALETTE);
// Player_select_palette_set = 0;
// unset the very first pilot data
Player_select_very_first_pilot = 0;
Player_select_initial_count = -1;
memset(Player_select_very_first_pilot_callsign, 0, CALLSIGN_LEN + 2);
// if(Player_select_num_pilots == 0){
// Player_select_autoaccept = 1;
// }
// if we found a pilot
if ( player_select_get_last_pilot_info() ) {
if (Player_select_last_is_multi && !Networking_disabled) {
player_select_init_player_stuff(PLAYER_SELECT_MODE_MULTI);
} else {
player_select_init_player_stuff(PLAYER_SELECT_MODE_SINGLE);
}
} else { // otherwise go to the single player mode by default
player_select_init_player_stuff(PLAYER_SELECT_MODE_SINGLE);
}
if ( (Player_select_num_pilots == 1) && Player_select_input_mode ) {
Player_select_autoaccept = 1;
}
}
开发者ID:alisci01,项目名称:fs2open.github.com,代码行数:100,代码来源:playermenu.cpp
示例2: barracks_init
// -----------------------------------------------------------------------------
void barracks_init()
{
//Set these to null, 'cause they aren't allocated yet.
Stat_labels = NULL;
Stats = NULL;
UI_WINDOW *w = &Ui_window;
// save current pilot file, so we don't possibly loose it.
Pilot.save_player();
// create interface
Ui_window.create(0, 0, gr_screen.max_w_unscaled, gr_screen.max_h_unscaled, 0);
Ui_window.set_mask_bmap(Barracks_bitmap_mask_fname[gr_screen.res]);
// load background bitmap
Background_bitmap = bm_load(Barracks_bitmap_fname[gr_screen.res]);
if(Background_bitmap < 0){
// we failed to load the bitmap - this is very bad
Int3();
}
// create buttons
int i;
for (i=0; i<BARRACKS_NUM_BUTTONS; i++) {
// create the object
Buttons[gr_screen.res][i].button.create(&Ui_window, "", Buttons[gr_screen.res][i].x, Buttons[gr_screen.res][i].y, 60, 30, Buttons[gr_screen.res][i].repeat, 1);
// set the sound to play when highlighted
Buttons[gr_screen.res][i].button.set_highlight_action(common_play_highlight_sound);
// set the ani for the button
Buttons[gr_screen.res][i].button.set_bmaps(Buttons[gr_screen.res][i].filename);
// set the hotspot
Buttons[gr_screen.res][i].button.link_hotspot(Buttons[gr_screen.res][i].hotspot);
}
// add all strings
w->add_XSTR("Create", 1034, Buttons[gr_screen.res][0].text_x, Buttons[gr_screen.res][0].text_y, &Buttons[gr_screen.res][0].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Accept", 1035, Buttons[gr_screen.res][5].text_x, Buttons[gr_screen.res][5].text_y, &Buttons[gr_screen.res][5].button, UI_XSTR_COLOR_PINK);
w->add_XSTR("Help", 928, Buttons[gr_screen.res][6].text_x, Buttons[gr_screen.res][6].text_y, &Buttons[gr_screen.res][6].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Options",1036, Buttons[gr_screen.res][7].text_x, Buttons[gr_screen.res][7].text_y, &Buttons[gr_screen.res][7].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Medals", 1037, Buttons[gr_screen.res][8].text_x, Buttons[gr_screen.res][8].text_y, &Buttons[gr_screen.res][8].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Remove", 1038, Buttons[gr_screen.res][11].text_x, Buttons[gr_screen.res][11].text_y, &Buttons[gr_screen.res][11].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Select", 1552, Buttons[gr_screen.res][12].text_x, Buttons[gr_screen.res][12].text_y, &Buttons[gr_screen.res][12].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Clone", 1040, Buttons[gr_screen.res][13].text_x, Buttons[gr_screen.res][13].text_y, &Buttons[gr_screen.res][13].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Single", 1041, Buttons[gr_screen.res][14].text_x, Buttons[gr_screen.res][14].text_y, &Buttons[gr_screen.res][14].button, UI_XSTR_COLOR_GREEN);
w->add_XSTR("Multi", 1042, Buttons[gr_screen.res][15].text_x, Buttons[gr_screen.res][15].text_y, &Buttons[gr_screen.res][15].button, UI_XSTR_COLOR_GREEN);
// w->add_XSTR("Convert",1043, Buttons[gr_screen.res][16].text_x, Buttons[gr_screen.res][16].text_y, &Buttons[gr_screen.res][16].button, UI_XSTR_COLOR_GREEN);
for(i=0; i<BARRACKS_NUM_TEXT; i++) {
w->add_XSTR(&Barracks_text[gr_screen.res][i]);
}
// button for selecting pilot
List_region.create(&Ui_window, "", Barracks_list_coords[gr_screen.res][BARRACKS_X_COORD], Barracks_list_coords[gr_screen.res][BARRACKS_Y_COORD], Barracks_list_coords[gr_screen.res][BARRACKS_W_COORD], Barracks_list_coords[gr_screen.res][BARRACKS_H_COORD], 0, 1);
List_region.hide();
// create input box (for new pilot)
Inputbox.create(&Ui_window, Barracks_list_coords[gr_screen.res][BARRACKS_X_COORD], Barracks_list_coords[gr_screen.res][BARRACKS_Y_COORD], Barracks_list_coords[gr_screen.res][BARRACKS_W_COORD], CALLSIGN_LEN - 1, "", UI_INPUTBOX_FLAG_INVIS | UI_INPUTBOX_FLAG_KEYTHRU | UI_INPUTBOX_FLAG_LETTER_FIRST);
Inputbox.set_valid_chars(VALID_PILOT_CHARS);
Inputbox.disable();
Inputbox.hide();
// load in help overlay bitmap
Barracks_overlay_id = help_overlay_get_index(BARRACKS_OVERLAY);
help_overlay_set_state(Barracks_overlay_id,gr_screen.res,0);
// other init stuff
Barracks_callsign_enter_mode = 0;
List_scroll_offset = Stats_scroll_offset = Pic_number = Pic_squad_number = Selected_line = 0;
Cur_pilot = &Players[Player_num];
// disable squad logo selection buttons in single player
if(!(Cur_pilot->flags & PLAYER_FLAGS_IS_MULTI)){
// squad logo picture buttons
Buttons[gr_screen.res][B_SQUAD_PREV_BUTTON].button.hide();
Buttons[gr_screen.res][B_SQUAD_PREV_BUTTON].button.disable();
Buttons[gr_screen.res][B_SQUAD_NEXT_BUTTON].button.hide();
Buttons[gr_screen.res][B_SQUAD_NEXT_BUTTON].button.disable();
} else {
// squad logo picture buttons
Buttons[gr_screen.res][B_SQUAD_PREV_BUTTON].button.enable();
Buttons[gr_screen.res][B_SQUAD_PREV_BUTTON].button.unhide();
Buttons[gr_screen.res][B_SQUAD_NEXT_BUTTON].button.enable();
Buttons[gr_screen.res][B_SQUAD_NEXT_BUTTON].button.unhide();
}
// set up hotkeys for buttons so we draw the correct animation frame when a key is pressed
barracks_set_hotkeys(1);
// load ramp pips
Rank_pips_bitmaps = bm_load_animation("IconRankMini.ani", &Rank_pips_count);
// load up the pilot pic list
pilot_load_pic_list();
pilot_load_squad_pic_list();
// don't load pilot images yet
//.........这里部分代码省略.........
开发者ID:PhantomHoover,项目名称:fs2open.github.com,代码行数:101,代码来源:barracks.cpp
示例3: chatbox_render
// render the chatbox for this frame
void chatbox_render()
{
if (!Chatbox_created){
return;
}
// clear the multiplayer chat window
// gr_set_clip(Chatbox_x1, Chatbox_y1, Chatbox_w, Chatbox_h, GR_RESIZE_MENU);
// gr_clear();
// gr_reset_clip();
// draw the background bitmap if we're supposed to
if ( (Chatbox_bitmap != -1) && (Chatbox_mode_flags & CHATBOX_FLAG_DRAW_BOX)) {
gr_set_bitmap( Chatbox_bitmap );
gr_bitmap(Chatbox_x1, Chatbox_y1, GR_RESIZE_MENU);
}
// render the chat lines
chatbox_render_chat_lines();
// render any UI window stuff
Chat_window.draw();
}
开发者ID:DahBlount,项目名称:Freespace-Open-Swifty,代码行数:24,代码来源:chatbox.cpp
示例4: red_alert_close
// Called once when the red alert interface is exited
void red_alert_close()
{
if (Red_alert_inited) {
red_alert_voice_stop();
red_alert_voice_unload();
weapon_select_close_team();
if (Background_bitmap >= 0) {
bm_release(Background_bitmap);
}
Ui_window.destroy();
// bm_unload(&Flash_anim);
common_free_interface_palette(); // restore game palette
game_flush();
}
Red_alert_inited = 0;
fsspeech_stop();
}
开发者ID:Echelon9,项目名称:fs2open.github.com,代码行数:24,代码来源:redalert.cpp
示例5: pause_debug_init
// debug pause init
void pause_debug_init()
{
Pause_win.create( 100,100,400,300, WIN_DIALOG );
Pause_physics.create( &Pause_win, NOX("Physics Pause <P>"), 200, 150, physics_paused );
Pause_ai.create( &Pause_win, NOX("AI Pause <A>"), 200, 175, ai_paused );
#ifndef NDEBUG
Pause_ai_render.create( &Pause_win, NOX("AI Render Stuff <R>"), 200, 200, Ai_render_debug_flag);
#endif
Pause_firing.create( &Pause_win, NOX("AI firing <F>"), 200, 225, Ai_firing_enabled);
Pause_external_view_mode_check.create( &Pause_win, NOX("External View <E>"), 200, 250, Pause_external_view_mode);
Pause_single_step.create( &Pause_win, NOX("Single Step <S>"), 200, 290, game_single_step );
Pause_continue.create( &Pause_win, NOX("Leave Pause"), 200, 350, 200, 40 );
Pause_single_step.set_hotkey( KEY_S );
Pause_physics.set_hotkey( KEY_P );
Pause_ai.set_hotkey( KEY_A );
Pause_ai_render.set_hotkey( KEY_R );
Pause_firing.set_hotkey( KEY_F );
Pause_external_view_mode_check.set_hotkey( KEY_E );
Pause_continue.set_hotkey( KEY_ESC );
Pause_continue.set_focus();
}
开发者ID:DahBlount,项目名称:Freespace-Open-Swifty,代码行数:25,代码来源:missionpause.cpp
示例6: barracks_close
// -----------------------------------------------------------------------------
void barracks_close()
{
// destroy window
Ui_window.destroy();
// release background bitmap
if (Background_bitmap >= 0) {
bm_release(Background_bitmap);
}
// release rank pip bitmaps
bm_release(Rank_pips_bitmaps);
// release pilot pic bitmaps
for (int i=0; i<Num_pilot_images; i++) {
if (Pilot_images[i] >= 0) {
bm_release(Pilot_images[i]);
}
}
// unload the overlay bitmap
help_overlay_unload(BARRACKS_OVERLAY);
if(Stat_labels != NULL)
{
delete[] Stat_labels;
Stat_labels = NULL;
}
if(Stats != NULL)
{
delete[] Stats;
Stats = NULL;
}
game_flush();
}
开发者ID:binyu0604,项目名称:fs2_open_patchbucket,代码行数:37,代码来源:barracks.cpp
示例7: player_select_do
void player_select_do()
{
int k;
// Goober5000 - display a popup warning about problems in the mod
if ((Global_warning_count > 10 || Global_error_count > 0) && !Startup_warning_dialog_displayed) {
char text[512];
sprintf(text, "Warning!\n\nThe currently active mod has generated %d warnings and/or errors during program startup. These could have been caused by anything from incorrectly formated table files to corrupt models. While FreeSpace Open will attempt to compensate for these issues, it cannot guarantee a trouble-free gameplay experience. Source Code Project staff cannot provide assistance or support for these problems, as they are caused by the mod's data files, not FreeSpace Open's source code.", Global_warning_count + Global_error_count);
popup(PF_TITLE_BIG | PF_TITLE_RED | PF_USE_AFFIRMATIVE_ICON, 1, POPUP_OK, text);
Startup_warning_dialog_displayed = true;
}
// set the input box at the "virtual" line 0 to be active so the player can enter a callsign
if (Player_select_input_mode) {
Player_select_input_box.set_focus();
}
// process any ui window stuff
k = Player_select_window.process();
if (k) {
extern void game_process_cheats(int k);
game_process_cheats(k);
}
switch (k) {
// switch between single and multiplayer modes
case KEY_TAB: {
if (Player_select_input_mode) {
gamesnd_play_iface(SND_GENERAL_FAIL);
break;
}
// play a little sound
gamesnd_play_iface(SND_USER_SELECT);
if (Player_select_mode == PLAYER_SELECT_MODE_MULTI) {
player_select_set_bottom_text(XSTR( "Single-Player Mode", 376));
// reinitialize as single player mode
player_select_init_player_stuff(PLAYER_SELECT_MODE_SINGLE);
} else if (Player_select_mode == PLAYER_SELECT_MODE_SINGLE) {
player_select_set_bottom_text(XSTR( "Multiplayer Mode", 377));
// reinitialize as multiplayer mode
player_select_init_player_stuff(PLAYER_SELECT_MODE_MULTI);
}
break;
}
case KEY_ESC: {
// we can hit ESC to get out of text input mode, and we don't want
// to set this var in that case since it will crash on a NULL Player
// ptr when going to the mainhall
if ( !Player_select_input_mode ) {
Player_select_no_save_pilot = 1;
}
break;
}
}
// draw the player select pseudo-dialog over it
GR_MAYBE_CLEAR_RES(Player_select_background_bitmap);
gr_set_bitmap(Player_select_background_bitmap);
gr_bitmap(0,0,GR_RESIZE_MENU);
// press the accept button
if (Player_select_autoaccept) {
Player_select_buttons[gr_screen.res][ACCEPT_BUTTON].button.press_button();
}
// draw any ui window stuf
Player_select_window.draw();
// light up the correct mode button (single or multi)
if (Player_select_mode == PLAYER_SELECT_MODE_SINGLE) {
Player_select_buttons[gr_screen.res][SINGLE_BUTTON].button.draw_forced(2);
} else {
Player_select_buttons[gr_screen.res][MULTI_BUTTON].button.draw_forced(2);
}
// draw the pilot list text
player_select_draw_list();
// draw copyright message on the bottom on the screen
player_select_display_copyright();
if (!Player_select_input_mode) {
player_select_process_noninput(k);
} else {
player_select_process_input(k);
}
// draw any pending messages on the bottom or middle of the screen
player_select_display_all_text();
gr_flip();
}
开发者ID:alisci01,项目名称:fs2open.github.com,代码行数:100,代码来源:playermenu.cpp
示例8: mht_do
void mht_do()
{
int k = Mht_window.process();
// need to ensure ambient is playing, since it may be stopped by a playing movie
main_hall_start_ambient();
// process any keypresses
switch(k){
case KEY_ESC :
mht_exit_game();
break;
case KEY_B:
gameseq_post_event( GS_EVENT_BARRACKS_MENU );
break;
case KEY_G:
if(Player->flags & PLAYER_FLAGS_IS_MULTI){
break;
}
if (Num_recent_missions > 0) {
strcpy_s( Game_current_mission_filename, Recent_missions[0] );
} else {
mission_load_up_campaign();
strcpy_s( Game_current_mission_filename, Campaign.missions[0].name );
}
Campaign.current_mission = -1;
gameseq_post_event(GS_EVENT_START_GAME_QUICK);
break;
case KEY_L:
gameseq_post_event( GS_EVENT_LOAD_MISSION_MENU );
break;
case KEY_F2:
gameseq_post_event(GS_EVENT_OPTIONS_MENU);
break;
case KEY_M:
if (Player->flags & PLAYER_FLAGS_IS_MULTI){
main_hall_do_multi_ready();
}
break;
}
// process button presses
mht_check_buttons();
// draw the background, etc
gr_reset_clip();
GR_MAYBE_CLEAR_RES(Mht_bitmap);
if(Mht_bitmap != -1){
gr_set_bitmap(Mht_bitmap);
gr_bitmap(0,0,GR_RESIZE_MENU);
}
Mht_window.draw();
// flip the buffer
gr_flip();
}
开发者ID:Kobrar,项目名称:fs2open.github.com,代码行数:63,代码来源:mainhalltemp.cpp
示例9: barracks_do_frame
// -----------------------------------------------------------------------------
void barracks_do_frame(float frametime)
{
int k = Ui_window.process();
if ( k > 0 ) {
if ( help_overlay_active(Barracks_overlay_id) ) {
help_overlay_set_state(Barracks_overlay_id,gr_screen.res,0);
k = 0;
}
}
// pilot that mouse is over
int prospective_pilot = -1;
int i;
// Entering pilot callsign
if (Barracks_callsign_enter_mode) {
// set focus to inputbox
Inputbox.set_focus();
switch (k) {
case KEY_ESC:
// cancel create pilot
Num_pilots--;
for (i=0; i<Num_pilots; i++) {
strcpy(Pilots[i], Pilots[i + 1]);
Pilot_ranks[i] = Pilot_ranks[i + 1];
}
barracks_set_callsign_enter_mode(false);
break;
case KEY_ENTER:
barracks_accept_new_pilot_callsign();
break;
}
} else {
// not entering pilot callsign
switch (k) {
case KEY_ENTER:
if (barracks_new_pilot_selected()) {
gamesnd_play_iface(SND_GENERAL_FAIL);
} else {
gamesnd_play_iface(SND_USER_SELECT);
}
break;
case KEY_ESC: // cancel
if (!help_overlay_active(Barracks_overlay_id)) {
if (Num_pilots && !barracks_pilot_accepted()) {
gameseq_post_event(GS_EVENT_MAIN_MENU);
} else {
gamesnd_play_iface(SND_GENERAL_FAIL);
}
} else {
// kill the overlay
help_overlay_set_state(Barracks_overlay_id,gr_screen.res,0);
}
break;
case KEY_TAB: // switch mode (simgle/multi)
if ( Networking_disabled ) {
game_feature_disabled_popup();
break;
}
if (Player_sel_mode == PLAYER_SELECT_MODE_SINGLE) {
Cur_pilot->flags |= PLAYER_FLAGS_IS_MULTI;
Pilot.save_player(Cur_pilot);
barracks_init_player_stuff(PLAYER_SELECT_MODE_MULTI);
} else {
// make sure we don't carry over the multi flag
Cur_pilot->flags &= ~PLAYER_FLAGS_IS_MULTI;
Pilot.save_player(Cur_pilot);
barracks_init_player_stuff(PLAYER_SELECT_MODE_SINGLE);
}
gamesnd_play_iface(SND_USER_SELECT);
break;
case KEY_F1: // show help overlay
gamesnd_play_iface(SND_HELP_PRESSED);
break;
case KEY_F2: // goto options screen
gamesnd_play_iface(SND_SWITCH_SCREENS);
gameseq_post_event(GS_EVENT_OPTIONS_MENU);
break;
} // end switch
// process buttons
for (i=0; i<BARRACKS_NUM_BUTTONS; i++) {
if (Buttons[gr_screen.res][i].button.pressed()) {
barracks_button_pressed(i);
}
}
// if mouse is over a pilot, find index into Pilots array
if (List_region.is_mouse_on()) {
//.........这里部分代码省略.........
开发者ID:PhantomHoover,项目名称:fs2open.github.com,代码行数:101,代码来源:barracks.cpp
示例10: pause_debug_close
// debug pause close
void pause_debug_close()
{
last_single_step = 0; // Make so single step waits a frame before stepping
Pause_win.destroy();
game_flush();
}
开发者ID:DahBlount,项目名称:Freespace-Open-Swifty,代码行数:7,代码来源:missionpause.cpp
示例11: techroom_do_frame
void techroom_do_frame(float frametime)
{
int i, k;
// turn off controls when overlay is on
if ( help_overlay_active(Techroom_overlay_id) ) {
Buttons[gr_screen.res][HELP_BUTTON].button.reset_status();
Ui_window.set_ignore_gadgets(1);
}
// turn off controls in trackball mode
if (Trackball_active) {
Ui_window.set_ignore_gadgets(1);
} else {
Ui_window.set_ignore_gadgets(0);
}
k = Ui_window.process() & ~KEY_DEBUGGED;
if ( (k > 0) || B1_JUST_RELEASED ) {
if ( help_overlay_active(Techroom_overlay_id) ) {
help_overlay_set_state(Techroom_overlay_id, gr_screen.res, 0);
Ui_window.set_ignore_gadgets(0);
k = 0;
}
}
if ( !help_overlay_active(Techroom_overlay_id) ) {
Ui_window.set_ignore_gadgets(0);
}
switch (k) {
case KEY_SHIFTED | KEY_TAB: // activate previous tab
i = Tab - 1;
if (i < 0) {
i = NUM_TABS - 1;
}
techroom_change_tab(i);
break;
case KEY_TAB: // activate next tab
i = Tab + 1;
if (i >= NUM_TABS) {
i = 0;
}
techroom_change_tab(i);
break;
case KEY_CTRLED | KEY_DOWN:
if ( !(Player->flags & PLAYER_FLAGS_IS_MULTI) ) {
techroom_button_pressed(SIMULATOR_TAB);
break;
}
// fall through
case KEY_CTRLED | KEY_UP:
techroom_button_pressed(CREDITS_TAB);
break;
case KEY_CTRLED | KEY_ENTER:
case KEY_ESC:
gameseq_post_event(GS_EVENT_MAIN_MENU);
break;
case KEY_CTRLED | KEY_SHIFTED | KEY_S:
Techroom_show_all = 1;
techroom_lists_reset();
techroom_change_tab(Tab);
break;
}
// check ship model window for activity
if (View_window.pressed()) {
Trackball_active = 1;
Trackball_mode = 1;
}
if (B1_RELEASED) {
Trackball_active = 0;
}
// check all da buttons
for (i=0; i<NUM_BUTTONS; i++) {
if (Buttons[gr_screen.res][i].button.pressed()) {
if (techroom_button_pressed(i)) {
return;
}
}
}
// check for mouseovers/clicks on the selection list
Select_tease_line = -1;
for (i=0; i<LIST_BUTTONS_MAX; i++) {
if (List_buttons[i].is_mouse_on()) {
Select_tease_line = i + List_offset;
}
//.........这里部分代码省略.........
开发者ID:RandomTiger,项目名称:fs2open.github.com,代码行数:101,代码来源:techmenu.cpp
示例12: credits_do_frame
void credits_do_frame(float frametime)
{
GR_DEBUG_SCOPE("Credits do frame");
int i, k, next, percent, bm1, bm2;
int bx1, by1, bw1, bh1;
int bx2, by2, bw2, bh2;
// Use this id to trigger the start of music playing on the credits screen
if ( timestamp_elapsed(Credits_music_begin_timestamp) ) {
Credits_music_begin_timestamp = 0;
credits_start_music();
}
k = Ui_window.process();
switch (k) {
case KEY_ESC:
gameseq_post_event(GS_EVENT_MAIN_MENU);
key_flush();
break;
case KEY_CTRLED | KEY_UP:
case KEY_SHIFTED | KEY_TAB:
if ( !(Player->flags & PLAYER_FLAGS_IS_MULTI) ) {
credits_screen_button_pressed(CUTSCENES_BUTTON);
break;
}
// else, react like tab key.
case KEY_CTRLED | KEY_DOWN:
case KEY_TAB:
credits_screen_button_pressed(TECH_DATABASE_BUTTON);
break;
default:
break;
} // end switch
for (i=0; i<NUM_BUTTONS; i++){
if (Buttons[i][gr_screen.res].button.pressed()){
if (credits_screen_button_pressed(i)){
return;
}
}
}
gr_reset_clip();
GR_MAYBE_CLEAR_RES(Background_bitmap);
if (Background_bitmap >= 0) {
gr_set_bitmap(Background_bitmap);
gr_bitmap(0, 0, GR_RESIZE_MENU);
}
percent = (int) (100.0f - (Credits_artwork_display_time - Credits_counter) * 100.0f / Credits_artwork_fade_time);
if (percent < 0){
percent = 0;
}
next = Credits_artwork_index + 1;
if (next >= Credits_num_images){
next = 0;
}
if (Credits_bmps[Credits_artwork_index] < 0) {
char buf[40];
if (gr_screen.res == GR_1024) {
sprintf(buf, NOX("2_CrIm%.2d"), Credits_artwork_index);
} else {
sprintf(buf, NOX("CrIm%.2d"), Credits_artwork_index);
}
Credits_bmps[Credits_artwork_index] = bm_load(buf);
}
if (Credits_bmps[next] < 0) {
char buf[40];
if (gr_screen.res == GR_1024) {
sprintf(buf, NOX("2_CrIm%.2d"), next);
} else {
sprintf(buf, NOX("CrIm%.2d"), next);
}
Credits_bmps[next] = bm_load(buf);
}
bm1 = Credits_bmps[Credits_artwork_index];
bm2 = Credits_bmps[next];
if((bm1 != -1) && (bm2 != -1)){
GR_DEBUG_SCOPE("Render credits bitmap");
Assert(percent >= 0 && percent <= 100);
// get width and height
bm_get_info(bm1, &bw1, &bh1, NULL, NULL, NULL);
bm_get_info(bm2, &bw2, &bh2, NULL, NULL, NULL);
// determine where to draw the coords
bx1 = Credits_image_coords[gr_screen.res][CREDITS_X_COORD] + ((Credits_image_coords[gr_screen.res][CREDITS_W_COORD] - bw1)/2);
by1 = Credits_image_coords[gr_screen.res][CREDITS_Y_COORD] + ((Credits_image_coords[gr_screen.res][CREDITS_H_COORD] - bh1)/2);
//.........这里部分代码省略.........
开发者ID:rtoijala,项目名称:fs2open.github.com,代码行数:101,代码来源:credits.cpp
示例13: fiction_viewer_init
// init
void fiction_viewer_init()
{
if (Fiction_viewer_inited)
return;
// no fiction viewer?
if (!mission_has_fiction())
return;
// music
common_music_init(SCORE_FICTION_VIEWER);
// see if we have a background bitmap, and if so, which one
// currently, we prioritize the UI that comes latest in the array;
// in the future we might specify this in the mission or in a tbl
for (Fiction_viewer_ui = NUM_FVW_SETTINGS - 1; Fiction_viewer_ui >= 0; Fiction_viewer_ui--)
{
// load the first available background bitmap
Fiction_viewer_bitmap = bm_load(Fiction_viewer_screen_filename[Fiction_viewer_ui][gr_screen.res]);
if (Fiction_viewer_bitmap >= 0)
break;
}
// no ui is valid?
if (Fiction_viewer_ui < 0)
{
Warning(LOCATION, "No fiction viewer graphics -- cannot display fiction viewer!");
return;
}
// set up fiction viewer font
use_fv_font();
// calculate text area lines from font
Fiction_viewer_text_max_lines = Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][3] / gr_get_font_height();
// window
Fiction_viewer_window.create(0, 0, gr_screen.max_w_unscaled, gr_screen.max_h_unscaled, 0, Fiction_viewer_fontnum);
Fiction_viewer_window.set_mask_bmap(Fiction_viewer_screen_mask[Fiction_viewer_ui][gr_screen.res]);
// add the buttons
for (int i = 0; i < NUM_FVW_BUTTONS; i++)
{
int repeat = (i == FVW_BUTTON_SCROLL_UP || i == FVW_BUTTON_SCROLL_DOWN);
ui_button_info *b = &Fiction_viewer_buttons[Fiction_viewer_ui][gr_screen.res][i];
b->button.create(&Fiction_viewer_window, "", b->x, b->y, b->xt, b->yt, repeat, 1);
b->button.set_highlight_action(common_play_highlight_sound);
b->button.set_bmaps(b->filename);
b->button.link_hotspot(b->hotspot);
}
// set up hotkeys for buttons
Fiction_viewer_buttons[Fiction_viewer_ui][gr_screen.res][FVW_BUTTON_ACCEPT].button.set_hotkey(KEY_CTRLED | KEY_ENTER);
Fiction_viewer_buttons[Fiction_viewer_ui][gr_screen.res][FVW_BUTTON_SCROLL_UP].button.set_hotkey(KEY_UP);
Fiction_viewer_buttons[Fiction_viewer_ui][gr_screen.res][FVW_BUTTON_SCROLL_DOWN].button.set_hotkey(KEY_DOWN);
// init brief text
brief_color_text_init(Fiction_viewer_text, Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][2], default_fiction_viewer_color, 0, 0);
// if the story is going to overflow the screen, add a slider
if (Num_brief_text_lines[0] > Fiction_viewer_text_max_lines)
{
Fiction_viewer_slider.create(&Fiction_viewer_window,
Fiction_viewer_slider_coordinates[Fiction_viewer_ui][gr_screen.res][0],
Fiction_viewer_slider_coordinates[Fiction_viewer_ui][gr_screen.res][1],
Fiction_viewer_slider_coordinates[Fiction_viewer_ui][gr_screen.res][2],
Fiction_viewer_slider_coordinates[Fiction_viewer_ui][gr_screen.res][3],
Num_brief_text_lines[0] - Fiction_viewer_text_max_lines,
Fiction_viewer_slider_filename[Fiction_viewer_ui][gr_screen.res],
&fiction_viewer_scroll_up,
&fiction_viewer_scroll_down,
&fiction_viewer_scroll_capture);
}
if (Fiction_viewer_voice >= 0)
{
audiostream_play(Fiction_viewer_voice, Master_voice_volume, 0);
}
Fiction_viewer_inited = 1;
}
开发者ID:DahBlount,项目名称:Freespace-Open-Swifty,代码行数:83,代码来源:fictionviewer.cpp
示例14: fiction_viewer_do_frame
// do
void fiction_viewer_do_frame(float frametime)
{
int i, k, w, h;
// make sure we exist
if (!Fiction_viewer_inited)
{
fiction_viewer_exit();
return;
}
// process keys
k = Fiction_viewer_window.process() & ~KEY_DEBUGGED;
switch (k)
{
case KEY_ESC:
common_music_close();
gameseq_post_event(GS_EVENT_MAIN_MENU);
return;
}
// process button presses
for (i = 0; i < NUM_FVW_BUTTONS; i++)
if (Fiction_viewer_buttons[Fiction_viewer_ui][gr_screen.res][i].button.pressed())
fiction_viewer_button_pressed(i);
common_music_do();
// clear
GR_MAYBE_CLEAR_RES(Fiction_viewer_bitmap);
if (Fiction_viewer_bitmap >= 0)
{
gr_set_bitmap(Fiction_viewer_bitmap);
gr_bitmap(0, 0, GR_RESIZE_MENU);
}
// draw the window
Fiction_viewer_window.draw();
// render the briefing text
brief_render_text(Top_fiction_viewer_text_line, Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][0], Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][1], Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][3], frametime);
// maybe output the "more" indicator
if ((Fiction_viewer_text_max_lines + Top_fiction_viewer_text_line) < Num_brief_text_lines[0])
{
use_std_font();
// can be scrolled down
int more_txt_x = Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][0] + (Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][2]/2) - 10;
int more_txt_y = Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][1] + Fiction_viewer_text_coordinates[Fiction_viewer_ui][gr_screen.res][3]; // located below text, centered
gr_get_string_size(&w, &h, XSTR("more", 1469), strlen(XSTR("more", 1469)));
gr_set_color_fast(&Color_black);
gr_rect(more_txt_x-2, more_txt_y, w+3, h, GR_RESIZE_MENU);
gr_set_color_fast(&Color_more_indicator);
gr_string(more_txt_x, more_txt_y, XSTR("more", 1469), GR_RESIZE_MENU); // base location on the input x and y?
use_fv_font();
}
gr_flip();
}
开发者ID:DahBlount,项目名称:Freespace-Open-Swifty,代码行数:64,代码来源:fictionviewer.cpp
示例15: popup_init
// init the Popup window
int popup_init(popup_info *pi, int flags)
{
int i;
UI_BUTTON *b;
popup_background *pbg;
char *fname;
if(pi->nchoices == 0){
pbg = &Popup_background[gr_screen.res][0];
} else {
pbg = &Popup_background[gr_screen.res][pi->nchoices-1];
}
// anytime in single player, and multiplayer, not in mission, go ahead and stop time
if ( (Game_mode & GM_NORMAL) || ((Game_mode & GM_MULTIPLAYER) && !(Game_mode & GM_IN_MISSION)) ){
game_stop_time();
}
// create base window
Popup_window.create(pbg->coords[0], pbg->coords[1], Popup_text_coords[gr_screen.res][2]+100, Popup_text_coords[gr_screen.res][3]+50, 0);
Popup_window.set_foreground_bmap(pbg->filename);
// create buttons
for (i=0; i<pi->nchoices; i++) {
b = &Popup_buttons[i];
// accommodate single-choice positive icon being positioned differently
if ( (pi->nchoices == 1) && (flags&PF_USE_AFFIRMATIVE_ICON) ) {
b->create(&Popup_window, "", Button_coords[gr_screen.res][i+1][0], Button_coords[gr_screen.res][i+1][1], 30, 25, 0, 1);
} else {
b->create(&Popup_window, "", Button_coords[gr_screen.res][i][0], Button_coords[gr_screen.res][i][1], 30, 25, 0, 1);
}
fname = popup_get_button_filename(pi, i, flags);
b->set_bmaps(fname, 3, 0);
b->set_highlight_action(common_play_highlight_sound);
if ( pi->keypress[i] >= 0 ) {
b->set_hotkey(pi->keypress[i]);
}
// create invisible buttons to detect mouse presses... can't use mask since button region is dynamically sized
int lx, w, h;
gr_get_string_size(&w, &h, pi->button_text[i]);
lx = Button_regions[gr_screen.res][i][0] - w;
b = &Popup_button_regions[i];
// accommodate single-choice positive icon being positioned differently
if ( (pi->nchoices == 1) && (flags&PF_USE_AFFIRMATIVE_ICON) ) {
b->create(&Popup_window, "", lx, Button_regions[gr_screen.res][i+1][1], Button_regions[gr_screen.res][i+1][2]-lx, Button_regions[gr_screen.res][i+1][3]-Button_regions[gr_screen.res][i+1][1], 0, 1);
} else {
b->create(&Popup_window, "", lx, Button_regions[gr_screen.res][i][1], Button_regions[gr_screen.res][i][2]-lx, Button_regions[gr_screen.res][i][3]-Button_regions[gr_screen.res][i][1], 0, 1);
}
b->hide();
}
// webcursor setup
if (Web_cursor_bitmap >= 0) {
if (flags & PF_WEB_CURSOR_1) {
Popup_buttons[1].set_custom_cursor_bmap(Web_cursor_bitmap);
}
if (flags & PF_WEB_CURSOR_2) {
Popup_buttons[2].set_custom_cursor_bmap(Web_cursor_bitmap);
}
}
// if this is an input popup, create and center the popup
if(flags & PF_INPUT){
Popup_input.create(&Popup_window, Popup_text_coords[gr_screen.res][0], pbg->coords[1] + Popup_input_y_offset[gr_screen.res], Popup_text_coords[gr_screen.res][2], pi->max_input_text_len, "", UI_INPUTBOX_FLAG_INVIS | UI_INPUTBOX_FLAG_ESC_CLR | UI_INPUTBOX_FLAG_ESC_FOC | UI_INPUTBOX_FLAG_KEYTHRU | UI_INPUTBOX_FLAG_TEXT_CEN);
Popup_input.set_focus();
}
Popup_default_choice=0;
Popup_should_die = 0;
if (flags & PF_RUN_STATE) {
Popup_running_state = 1;
} else {
Popup_running_state = 0;
}
popup_split_lines(pi, flags);
// create the popup slider (which we may not need to use
Popup_slider.create(&Popup_window, Popup_slider_coords[gr_screen.res][0], Popup_slider_coords[gr_screen.res][1], Popup_slider_coords[gr_screen.res][2], Popup_slider_coords[gr_screen.res][3], pi->nlines > Popup_max_display[gr_screen.res] ? pi->nlines - Popup_max_display[gr_screen.res] : 0,
Popup_slider_name[gr_screen.res], popup_slider_bogus, popup_slider_bogus, NULL);
return 0;
}
开发者ID:Admiral-MS,项目名称:fs2open.github.com,代码行数:90,代码来源:popup.cpp
示例16: popup_do
// exit: -1 => error
// 0..nchoices-1 => choice
int popup_do(popup_info *pi, int flags)
{
int screen_id, choice = -1, done = 0;
if ( popup_init(pi, flags) == -1 ){
return -1;
}
screen_id = gr_save_screen();
int old_max_w_unscaled = gr_screen.max_w_unscaled;
int old_max_h_unscaled = gr_screen.max_h_unscaled;
int old_max_w_unscaled_zoomed = gr_screen.max_w_unscaled_zoomed;
int old_max_h_unscaled_zoomed = gr_screen.max_h_unscaled_zoomed;
gr_reset_screen_scale();
while(!done) {
int k;
os_poll();
// if we were killed by a call to popup_kill_any_active(), kill the popup
if(Popup_should_die){
choice = -1;
break;
}
// if we're flagged as should be running the state underneath, then do so
if(flags & PF_RUN_STATE){
game_do_state(gameseq_get_state());
}
// otherwise just run the common functions (for networking,etc)
else {
game_set_frametime(-1);
game_do_state_common(gameseq_get_state(),flags & PF_NO_NETWORKING); // do stuff common to all states
}
k = Popup_window.process(); // poll for input, handle mouse
choice = popup_process_keys(pi, k, flags);
if ( choice != POPUP_NOCHANGE ) {
done=1;
}
if ( !done ) {
choice = popup_check_buttons(pi);
if ( choice != POPUP_NOCHANGE ) {
done=1;
}
}
// don't draw anything
if(!(flags & PF_RUN_STATE)){
gr_restore_screen(screen_id);
}
// if this is an input popup, store the input text
if(flags & PF_INPUT){
Popup_input.get_text(pi->input_text);
}
Popup_window.draw();
popup_force_draw_buttons(pi);
popup_draw_msg_text(pi, flags);
popup_draw_button_text(pi, flags);
gr_flip();
}
gr_set_screen_scale(old_max_w_unscaled, old_max_h_unscaled, old_max_w_unscaled_zoomed, old_max_h_unscaled_zoomed);
popup_close(pi,screen_id);
return choice;
}
开发者ID:Admiral-MS,项目名称:fs2open.github.com,代码行数:75,代码来源:popup.cpp
示例17: loop_brief_do
// do
void loop_brief_do(float frametime)
{
int k;
int idx;
// process keys
k = Loop_brief_window.process();
switch (k) {
case KEY_ESC:
int do_loop = 0;
// this popup should be straight forward, and also not allow you to get out
// of it without actually picking one of the two options
do_loop = popup(PF_USE_NEGATIVE_ICON | PF_USE_AFFIRMATIVE_ICON | PF_IGNORE_ESC | PF_BODY_BIG, 2, XSTR("Decline", 1467), XSTR("Accept", 1035), XSTR("You must either Accept or Decline before returning to the Main Hall", 1618));
// if we accepted moving into loop then set it up for the next time the user plays
if (do_loop == 1) {
// select the loop mission
Campaign.loop_enabled = 1;
Campaign.loop_reentry = Campaign.next_mission; // save reentry pt, so we can break out of loop
Campaign.next_mission = Campaign.loop_mission;
}
gameseq_post_event(GS_EVENT_MAIN_MENU);
return;
}
// process button presses
for (idx=0; idx<NUM_LOOP_BRIEF_BUTTONS; idx++){
if (Loop_buttons[gr_screen.res][idx].button.pressed()){
loop_brief_button_pressed(idx);
}
}
common_music_do();
// clear
GR_MAYBE_CLEAR_RES(Loop_brief_bitmap);
if (Loop_brief_bitmap >= 0) {
gr_set_bitmap(Loop_brief_bitmap);
gr_bitmap(0, 0, GR_RESIZE_MENU);
}
// draw the window
Loop_brief_window.draw();
// render the briefing text
brief_render_text(0, Loop_brief_text_coords[gr_screen.res][0], Loop_brief_text_coords[gr_screen.res][1], Loop_brief_text_coords[gr_screen.res][3], flFrametime);
if(Loop_anim.num_frames > 0) {
int x;
int y;
bm_get_info((Loop_anim.streaming) ? Loop_anim.bitmap_id : Loop_anim.first_frame, &x, &y, NULL, NULL, NULL);
x = Loop_brief_anim_center_coords[gr_screen.res][0] - x / 2;
y = Loop_brief_anim_center_coords[gr_screen.res][1] - y / 2;
generic_anim_render(&Loop_anim, frametime, x, y, true);
}
// render all anims
anim_render_all(GS_STATE_LOOP_BRIEF, flFrametime);
gr_flip();
}
开发者ID:Admiral-MS,项目名称:fs2open.github.com,代码行数:66,代码来源:missionloopbrief.cpp
示例18: loop_brief_init
// init
void loop_brief_init()
{
int idx;
ui_button_info *b;
// load the background bitmap
Loop_brief_bitmap = bm_load(Loop_brief_fname[gr_screen.res]);
Assert(Loop_brief_bitmap != -1);
// window
Loop_brief_window.create(0, 0, gr_screen.max_w_unscaled, gr_screen.max_h_unscaled, 0);
Loop_brief_window.set_mask_bmap(Loop_brief_mask[gr_screen.res]);
// add the buttons
for (idx=0; idx<NUM_LOOP_BRIEF_BUTTONS; idx++) {
b = &Loop_buttons[gr_screen.res][idx];
b->button.create(&Loop_brief_window, "", b->x, b->y, 60, 30, 0, 1);
b->button.set_highlight_action(common_play_highlight_sound);
b->button.set_bmaps(b->filename);
b->button.link_hotspot(b->hotspot);
}
// a
|
请发表评论