Use unique_ptr for wall_dialog
This commit is contained in:
parent
63ee79d988
commit
6735a94f3b
|
@ -49,6 +49,7 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED.
|
|||
#include "kdefs.h"
|
||||
#include "u_mem.h"
|
||||
|
||||
#include "compiler-make_unique.h"
|
||||
#include "compiler-range_for.h"
|
||||
#include "highest_valid.h"
|
||||
#include "partial_range.h"
|
||||
|
@ -357,56 +358,48 @@ static int NextWall() {
|
|||
//-------------------------------------------------------------------------
|
||||
int do_wall_dialog()
|
||||
{
|
||||
int i;
|
||||
wall_dialog *wd;
|
||||
|
||||
// Only open 1 instance of this window...
|
||||
if ( MainWindow != NULL ) return 0;
|
||||
|
||||
MALLOC(wd, wall_dialog, 1);
|
||||
if (!wd)
|
||||
return 0;
|
||||
|
||||
auto wd = make_unique<wall_dialog>();
|
||||
wd->framenum = 0;
|
||||
|
||||
// Close other windows.
|
||||
close_all_windows();
|
||||
|
||||
// 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, wall_dialog_handler, wd );
|
||||
wd->quitButton = ui_add_gadget_button( MainWindow, 20, 252, 48, 40, "Done", NULL );
|
||||
MainWindow = ui_create_dialog(TMAPBOX_X+20, TMAPBOX_Y+20, 765-TMAPBOX_X, 545-TMAPBOX_Y, DF_DIALOG, wall_dialog_handler, std::move(wd));
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int wall_dialog_created(UI_DIALOG *const w, wall_dialog *const wd)
|
||||
{
|
||||
wd->quitButton = ui_add_gadget_button(w, 20, 252, 48, 40, "Done", NULL);
|
||||
// These are the checkboxes for each door flag.
|
||||
i = 80;
|
||||
wd->doorFlag[0] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Locked" ); i += 24;
|
||||
wd->doorFlag[1] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Auto" ); i += 24;
|
||||
wd->doorFlag[2] = ui_add_gadget_checkbox( MainWindow, 22, i, 16, 16, 0, "Illusion OFF" ); i += 24;
|
||||
|
||||
wd->keyFlag[0] = ui_add_gadget_radio( MainWindow, 22, i, 16, 16, 0, "NONE" ); i += 24;
|
||||
wd->keyFlag[1] = ui_add_gadget_radio( MainWindow, 22, i, 16, 16, 0, "Blue" ); i += 24;
|
||||
wd->keyFlag[2] = ui_add_gadget_radio( MainWindow, 22, i, 16, 16, 0, "Red" ); i += 24;
|
||||
wd->keyFlag[3] = ui_add_gadget_radio( MainWindow, 22, i, 16, 16, 0, "Yellow" ); i += 24;
|
||||
|
||||
int i = 80;
|
||||
wd->doorFlag[0] = ui_add_gadget_checkbox(w, 22, i, 16, 16, 0, "Locked"); i += 24;
|
||||
wd->doorFlag[1] = ui_add_gadget_checkbox(w, 22, i, 16, 16, 0, "Auto"); i += 24;
|
||||
wd->doorFlag[2] = ui_add_gadget_checkbox(w, 22, i, 16, 16, 0, "Illusion OFF"); i += 24;
|
||||
wd->keyFlag[0] = ui_add_gadget_radio(w, 22, i, 16, 16, 0, "NONE"); i += 24;
|
||||
wd->keyFlag[1] = ui_add_gadget_radio(w, 22, i, 16, 16, 0, "Blue"); i += 24;
|
||||
wd->keyFlag[2] = ui_add_gadget_radio(w, 22, i, 16, 16, 0, "Red"); i += 24;
|
||||
wd->keyFlag[3] = ui_add_gadget_radio(w, 22, i, 16, 16, 0, "Yellow"); i += 24;
|
||||
// The little box the wall will appear in.
|
||||
wd->wallViewBox = ui_add_gadget_userbox( MainWindow, 155, 5, 64, 64 );
|
||||
|
||||
wd->wallViewBox = ui_add_gadget_userbox(w, 155, 5, 64, 64);
|
||||
// A bunch of buttons...
|
||||
i = 80;
|
||||
ui_add_gadget_button( MainWindow,155,i,70, 22, "<< Clip", PrevWall );
|
||||
ui_add_gadget_button( MainWindow,155+70,i,70, 22, "Clip >>", NextWall );i += 25;
|
||||
ui_add_gadget_button( MainWindow,155,i,140, 22, "Add Blastable", wall_add_blastable ); i += 25;
|
||||
ui_add_gadget_button( MainWindow,155,i,140, 22, "Add Door", wall_add_door ); i += 25;
|
||||
ui_add_gadget_button( MainWindow,155,i,140, 22, "Add Illusory", wall_add_illusion); i += 25;
|
||||
ui_add_gadget_button( MainWindow,155,i,140, 22, "Add Closed Wall", wall_add_closed_wall ); i+=25;
|
||||
// ui_add_gadget_button( MainWindow,155,i,140, 22, "Restore All Walls", wall_restore_all ); i += 25;
|
||||
ui_add_gadget_button( MainWindow,155,i,70, 22, "<< Prev", GotoPrevWall );
|
||||
ui_add_gadget_button( MainWindow,155+70,i,70, 22, "Next >>", GotoNextWall );i += 25;
|
||||
ui_add_gadget_button( MainWindow,155,i,140, 22, "Remove Wall", wall_remove ); i += 25;
|
||||
ui_add_gadget_button( MainWindow,155,i,140, 22, "Bind to Trigger", bind_wall_to_trigger ); i += 25;
|
||||
ui_add_gadget_button( MainWindow,155,i,140, 22, "Bind to Control", bind_wall_to_control_center ); i+=25;
|
||||
|
||||
ui_add_gadget_button(w, 155, i, 70, 22, "<< Clip", PrevWall);
|
||||
ui_add_gadget_button(w, 155+70, i, 70, 22, "Clip >>", NextWall);i += 25;
|
||||
ui_add_gadget_button(w, 155, i, 140, 22, "Add Blastable", wall_add_blastable); i += 25;
|
||||
ui_add_gadget_button(w, 155, i, 140, 22, "Add Door", wall_add_door ); i += 25;
|
||||
ui_add_gadget_button(w, 155, i, 140, 22, "Add Illusory", wall_add_illusion); i += 25;
|
||||
ui_add_gadget_button(w, 155, i, 140, 22, "Add Closed Wall", wall_add_closed_wall); i+=25;
|
||||
ui_add_gadget_button(w, 155, i, 70, 22, "<< Prev", GotoPrevWall);
|
||||
ui_add_gadget_button(w, 155+70, i, 70, 22, "Next >>", GotoNextWall);i += 25;
|
||||
ui_add_gadget_button(w, 155, i, 140, 22, "Remove Wall", wall_remove); i += 25;
|
||||
ui_add_gadget_button(w, 155, i, 140, 22, "Bind to Trigger", bind_wall_to_trigger); i += 25;
|
||||
ui_add_gadget_button(w, 155, i, 140, 22, "Bind to Control", bind_wall_to_control_center); i+=25;
|
||||
wd->old_wall_num = -2; // Set to some dummy value so everything works ok on the first frame.
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -420,6 +413,17 @@ void close_wall_window()
|
|||
|
||||
int wall_dialog_handler(UI_DIALOG *dlg,const d_event &event, wall_dialog *wd)
|
||||
{
|
||||
switch(event.type)
|
||||
{
|
||||
case EVENT_WINDOW_CREATED:
|
||||
return wall_dialog_created(dlg, wd);
|
||||
case EVENT_WINDOW_CLOSE:
|
||||
std::default_delete<wall_dialog>()(wd);
|
||||
MainWindow = NULL;
|
||||
return 0;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
sbyte type;
|
||||
fix DeltaTime;
|
||||
fix64 Temp;
|
||||
|
@ -598,14 +602,6 @@ int wall_dialog_handler(UI_DIALOG *dlg,const d_event &event, wall_dialog *wd)
|
|||
|
||||
if (ui_button_any_drawn || (wd->old_wall_num != Cursegp->sides[Curside].wall_num) )
|
||||
Update_flags |= UF_WORLD_CHANGED;
|
||||
|
||||
if (event.type == EVENT_WINDOW_CLOSE)
|
||||
{
|
||||
d_free(wd);
|
||||
MainWindow = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ( GADGET_PRESSED(wd->quitButton) || (keypress==KEY_ESC) )
|
||||
{
|
||||
close_wall_window();
|
||||
|
|
Loading…
Reference in a new issue