//------------------------------------------------------------------------- // Called from the editor... does one instance of the centers dialog box //------------------------------------------------------------------------- int do_centers_dialog() { int i; // Only open 1 instance of this window... if ( MainWindow != NULL ) return 0; // Close other windows. close_trigger_window(); hostage_close_window(); close_wall_window(); robot_close_window(); // Open a window with a quit button MainWindow = ui_open_window( TMAPBOX_X+20, TMAPBOX_Y+20, 765-TMAPBOX_X, 545-TMAPBOX_Y, WIN_DIALOG ); QuitButton = ui_add_gadget_button( MainWindow, 20, 252, 48, 40, "Done", NULL ); // These are the checkboxes for each door flag. i = 80; CenterFlag[0] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "NONE" ); i += 24; CenterFlag[1] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "FuelCen" ); i += 24; CenterFlag[2] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "RepairCen" ); i += 24; CenterFlag[3] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "ControlCen" ); i += 24; CenterFlag[4] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "RobotCen" ); i += 24; // These are the checkboxes for each door flag. for (i=0; i<N_robot_types; i++) RobotMatFlag[i] = ui_add_gadget_checkbox( MainWindow, 128 + (i%2)*92, 20+(i/2)*24, 16, 16, 0, Robot_names[i]); old_seg_num = -2; // Set to some dummy value so everything works ok on the first frame. return 1; }
void close_all_windows(void) { close_trigger_window(); close_wall_window(); close_centers_window(); hostage_close_window(); robot_close_window(); }
//------------------------------------------------------------------------- // Called from the editor... does one instance of the trigger dialog box //------------------------------------------------------------------------- int do_trigger_dialog() { int i; trigger_dialog *t; if (!Markedsegp) { editor_status("Trigger requires Marked Segment & Side."); return 0; } // Only open 1 instance of this window... if ( MainWindow != NULL ) return 0; MALLOC(t, trigger_dialog, 1); if (!t) return 0; // Close other windows. robot_close_window(); close_wall_window(); close_centers_window(); hostage_close_window(); // Open a window with a quit button MainWindow = ui_create_dialog( TMAPBOX_X+20, TMAPBOX_Y+20, 765-TMAPBOX_X, 545-TMAPBOX_Y, DF_DIALOG, (int (*)(UI_DIALOG *, d_event *, void *))trigger_dialog_handler, t ); // These are the checkboxes for each door flag. i = 44; t->triggerFlag[0] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Door Control" ); i+=22; t->triggerFlag[1] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Shield damage" ); i+=22; t->triggerFlag[2] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Energy drain" ); i+=22; t->triggerFlag[3] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Exit" ); i+=22; t->triggerFlag[4] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "One-shot" ); i+=22; t->triggerFlag[5] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Illusion ON" ); i+=22; t->triggerFlag[6] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Illusion OFF" ); i+=22; t->triggerFlag[7] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Trigger ON" ); i+=22; t->triggerFlag[8] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Matcen Trigger" ); i+=22; t->triggerFlag[9] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Secret Exit" ); i+=22; t->quitButton = ui_add_gadget_button( MainWindow, 20, i, 48, 40, "Done", NULL ); // The little box the wall will appear in. t->wallViewBox = ui_add_gadget_userbox( MainWindow, 155, 5, 64, 64 ); // A bunch of buttons... i = 80; // ui_add_gadget_button( MainWindow,155,i,140, 26, "Add Door Control", add_trigger_control ); i += 29; ui_add_gadget_button( MainWindow,155,i,140, 26, "Remove Trigger", trigger_remove ); i += 29; ui_add_gadget_button( MainWindow,155,i,140, 26, "Bind Wall", bind_wall_to_trigger ); i += 29; ui_add_gadget_button( MainWindow,155,i,140, 26, "Bind Matcen", bind_matcen_to_trigger ); i += 29; ui_add_gadget_button( MainWindow,155,i,140, 26, "All Triggers ON", trigger_turn_all_ON ); i += 29; t->old_trigger_num = -2; // Set to some dummy value so everything works ok on the first frame. return 1; }
int do_centers_dialog() { // Only open 1 instance of this window... if ( MainWindow != NULL ) return 0; // Close other windows. close_trigger_window(); hostage_close_window(); close_wall_window(); robot_close_window(); auto c = make_unique<centers_dialog>(); // Open a window with a quit button #if defined(DXX_BUILD_DESCENT_I) const unsigned x = TMAPBOX_X+20; const unsigned width = 765-TMAPBOX_X; #elif defined(DXX_BUILD_DESCENT_II) const unsigned x = 20; const unsigned width = 740; #endif MainWindow = ui_create_dialog(x, TMAPBOX_Y+20, width, 545-TMAPBOX_Y, DF_DIALOG, centers_dialog_handler, std::move(c)); return 1; }
void do_hostage_window() { fix DeltaTime, Temp; if ( MainWindow == NULL ) return; SelectClosestHostage(); //------------------------------------------------------------ // Call the ui code.. //------------------------------------------------------------ ui_button_any_drawn = 0; ui_window_do_gadgets(MainWindow); //------------------------------------------------------------ // If we change objects, we need to reset the ui code for all // of the radio buttons that control the ai mode. Also makes // the current AI mode button be flagged as pressed down. //------------------------------------------------------------ if (LastHostageIndex != CurrentHostageIndex ) { if ( CurrentHostageIndex > -1 ) strcpy( HostageText->text, Hostages[CurrentHostageIndex].text ); else strcpy(HostageText->text, " " ); HostageText->position = strlen(HostageText->text); HostageText->oldposition = HostageText->position; HostageText->status=1; HostageText->first_time = 1; } //------------------------------------------------------------ // If any of the radio buttons that control the mode are set, then // update the cooresponding AI state. //------------------------------------------------------------ if ( CurrentHostageIndex > -1 ) strcpy( Hostages[CurrentHostageIndex].text, HostageText->text ); //------------------------------------------------------------ // A simple frame time counter for spinning the objects... //------------------------------------------------------------ Temp = timer_get_fixed_seconds(); DeltaTime = Temp - Time; Time = Temp; //------------------------------------------------------------ // Redraw the object in the little 64x64 box //------------------------------------------------------------ if (CurrentHostageIndex > -1 ) { int vclip_num; vclip_num = Hostages[CurrentHostageIndex].vclip_num; Assert(vclip_num != -1); gr_set_current_canvas( HostageViewBox->canvas ); if ( vclip_num > -1 ) { vclip_play( &Hostage_face_clip[vclip_num], DeltaTime ); } else { gr_clear_canvas( CGREY ); } } else { // no hostage, so just blank out gr_set_current_canvas( HostageViewBox->canvas ); gr_clear_canvas( CGREY ); } //------------------------------------------------------------ // If anything changes in the ui system, redraw all the text that // identifies this robot. //------------------------------------------------------------ if (ui_button_any_drawn || (LastHostageIndex != CurrentHostageIndex) ) { if ( CurrentHostageIndex > -1 ) { ui_wprintf_at( MainWindow, 10, 15, "Hostage: %d Object: %d", CurrentHostageIndex, Hostages[CurrentHostageIndex].objnum ); //@@ui_wprintf_at( MainWindow, 10, 73, "Type: %d Sound: %d ", Hostages[CurrentHostageIndex].type, Hostages[CurrentHostageIndex].sound_num ); ui_wprintf_at( MainWindow, 10, 73, "Face: %d ", Hostages[CurrentHostageIndex].vclip_num); } else { ui_wprintf_at( MainWindow, 10, 15, "Hostage: none " ); //@@ui_wprintf_at( MainWindow, 10, 73, "Type: Sound: " ); ui_wprintf_at( MainWindow, 10, 73, "Face: " ); } Update_flags |= UF_WORLD_CHANGED; } if ( QuitButton->pressed || (last_keypress==KEY_ESC)) { hostage_close_window(); return; } LastHostageIndex = CurrentHostageIndex; }