Use unique_ptr for centers_dialog
This commit is contained in:
parent
f0c8482b8b
commit
7e4e8f3501
|
@ -55,6 +55,8 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
||||||
#include "centers.h"
|
#include "centers.h"
|
||||||
#include "u_mem.h"
|
#include "u_mem.h"
|
||||||
|
|
||||||
|
#include "compiler-make_unique.h"
|
||||||
|
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
// Variables for this module...
|
// Variables for this module...
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
|
@ -75,9 +77,6 @@ static int centers_dialog_handler(UI_DIALOG *dlg,const d_event &event, centers_d
|
||||||
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
||||||
int do_centers_dialog()
|
int do_centers_dialog()
|
||||||
{
|
{
|
||||||
centers_dialog *c;
|
|
||||||
int i;
|
|
||||||
|
|
||||||
// Only open 1 instance of this window...
|
// Only open 1 instance of this window...
|
||||||
if ( MainWindow != NULL ) return 0;
|
if ( MainWindow != NULL ) return 0;
|
||||||
|
|
||||||
|
@ -87,42 +86,46 @@ int do_centers_dialog()
|
||||||
close_wall_window();
|
close_wall_window();
|
||||||
robot_close_window();
|
robot_close_window();
|
||||||
|
|
||||||
MALLOC(c, centers_dialog, 1);
|
auto c = make_unique<centers_dialog>();
|
||||||
if (!c)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
// Open a window with a quit button
|
// Open a window with a quit button
|
||||||
#if defined(DXX_BUILD_DESCENT_I)
|
#if defined(DXX_BUILD_DESCENT_I)
|
||||||
MainWindow = ui_create_dialog( TMAPBOX_X+20, TMAPBOX_Y+20, 765-TMAPBOX_X, 545-TMAPBOX_Y, DF_DIALOG, centers_dialog_handler, c );
|
const unsigned x = TMAPBOX_X+20;
|
||||||
i = 80;
|
const unsigned width = 765-TMAPBOX_X;
|
||||||
#elif defined(DXX_BUILD_DESCENT_II)
|
#elif defined(DXX_BUILD_DESCENT_II)
|
||||||
MainWindow = ui_create_dialog( 20, TMAPBOX_Y+20, 740, 545-TMAPBOX_Y, DF_DIALOG, centers_dialog_handler, c );
|
const unsigned x = 20;
|
||||||
i = 40;
|
const unsigned width = 740;
|
||||||
#endif
|
#endif
|
||||||
c->quitButton = ui_add_gadget_button( MainWindow, 20, 252, 48, 40, "Done", NULL );
|
MainWindow = ui_create_dialog(x, TMAPBOX_Y+20, width, 545-TMAPBOX_Y, DF_DIALOG, centers_dialog_handler, std::move(c));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int centers_dialog_created(UI_DIALOG *const w, centers_dialog *const c)
|
||||||
|
{
|
||||||
|
#if defined(DXX_BUILD_DESCENT_I)
|
||||||
|
int i = 80;
|
||||||
|
#elif defined(DXX_BUILD_DESCENT_II)
|
||||||
|
int i = 40;
|
||||||
|
#endif
|
||||||
|
c->quitButton = ui_add_gadget_button(w, 20, 252, 48, 40, "Done", NULL);
|
||||||
// These are the checkboxes for each door flag.
|
// These are the checkboxes for each door flag.
|
||||||
c->centerFlag[0] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "NONE" ); i += 24;
|
c->centerFlag[0] = ui_add_gadget_radio(w, 18, i, 16, 16, 0, "NONE"); i += 24;
|
||||||
c->centerFlag[1] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "FuelCen" ); i += 24;
|
c->centerFlag[1] = ui_add_gadget_radio(w, 18, i, 16, 16, 0, "FuelCen"); i += 24;
|
||||||
c->centerFlag[2] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "RepairCen" ); i += 24;
|
c->centerFlag[2] = ui_add_gadget_radio(w, 18, i, 16, 16, 0, "RepairCen"); i += 24;
|
||||||
c->centerFlag[3] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "ControlCen" ); i += 24;
|
c->centerFlag[3] = ui_add_gadget_radio(w, 18, i, 16, 16, 0, "ControlCen"); i += 24;
|
||||||
c->centerFlag[4] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "RobotCen" ); i += 24;
|
c->centerFlag[4] = ui_add_gadget_radio(w, 18, i, 16, 16, 0, "RobotCen"); i += 24;
|
||||||
#if defined(DXX_BUILD_DESCENT_II)
|
#if defined(DXX_BUILD_DESCENT_II)
|
||||||
c->centerFlag[5] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "Blue Goal" ); i += 24;
|
c->centerFlag[5] = ui_add_gadget_radio(w, 18, i, 16, 16, 0, "Blue Goal"); i += 24;
|
||||||
c->centerFlag[6] = ui_add_gadget_radio( MainWindow, 18, i, 16, 16, 0, "Red Goal" ); i += 24;
|
c->centerFlag[6] = ui_add_gadget_radio(w, 18, i, 16, 16, 0, "Red Goal"); i += 24;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// These are the checkboxes for each robot flag.
|
// These are the checkboxes for each robot flag.
|
||||||
#if defined(DXX_BUILD_DESCENT_I)
|
#if defined(DXX_BUILD_DESCENT_I)
|
||||||
const unsigned d = 2;
|
const unsigned d = 2;
|
||||||
#elif defined(DXX_BUILD_DESCENT_II)
|
#elif defined(DXX_BUILD_DESCENT_II)
|
||||||
const unsigned d = 6;
|
const unsigned d = 6;
|
||||||
#endif
|
#endif
|
||||||
for (i=0; i<N_robot_types; i++)
|
for (i=0; i < N_robot_types; i++)
|
||||||
c->robotMatFlag[i] = ui_add_gadget_checkbox( MainWindow, 128 + (i%d)*92, 20+(i/d)*24, 16, 16, 0, Robot_names[i]);
|
c->robotMatFlag[i] = ui_add_gadget_checkbox( w, 128 + (i%d)*92, 20+(i/d)*24, 16, 16, 0, Robot_names[i]);
|
||||||
|
|
||||||
c->old_seg_num = -2; // Set to some dummy value so everything works ok on the first frame.
|
c->old_seg_num = -2; // Set to some dummy value so everything works ok on the first frame.
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,6 +139,17 @@ void close_centers_window()
|
||||||
|
|
||||||
int centers_dialog_handler(UI_DIALOG *dlg,const d_event &event, centers_dialog *c)
|
int centers_dialog_handler(UI_DIALOG *dlg,const d_event &event, centers_dialog *c)
|
||||||
{
|
{
|
||||||
|
switch(event.type)
|
||||||
|
{
|
||||||
|
case EVENT_WINDOW_CREATED:
|
||||||
|
return centers_dialog_created(dlg, c);
|
||||||
|
case EVENT_WINDOW_CLOSE:
|
||||||
|
std::default_delete<centers_dialog>()(c);
|
||||||
|
MainWindow = NULL;
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
int i;
|
int i;
|
||||||
// int robot_flags;
|
// int robot_flags;
|
||||||
int keypress = 0;
|
int keypress = 0;
|
||||||
|
@ -223,14 +237,6 @@ int centers_dialog_handler(UI_DIALOG *dlg,const d_event &event, centers_dialog *
|
||||||
|
|
||||||
if (c->old_seg_num != Cursegp-Segments)
|
if (c->old_seg_num != Cursegp-Segments)
|
||||||
Update_flags |= UF_WORLD_CHANGED;
|
Update_flags |= UF_WORLD_CHANGED;
|
||||||
|
|
||||||
if (event.type == EVENT_WINDOW_CLOSE)
|
|
||||||
{
|
|
||||||
d_free(c);
|
|
||||||
MainWindow = NULL;
|
|
||||||
return 0; // we're not cancelling the close
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( GADGET_PRESSED(c->quitButton) || (keypress==KEY_ESC) )
|
if ( GADGET_PRESSED(c->quitButton) || (keypress==KEY_ESC) )
|
||||||
{
|
{
|
||||||
close_centers_window();
|
close_centers_window();
|
||||||
|
|
Loading…
Reference in a new issue