Draw in response to EVENT_UI_DIALOG_DRAW, uncomment medlisp_update_screen call. You can now see what you're doing
This commit is contained in:
parent
0c7e61de92
commit
4acf60c1c7
|
@ -4,6 +4,7 @@ D2X-Rebirth Changelog
|
|||
--------
|
||||
arch/ogl/gr.c, arch/sdl/gr.c, ui/menubar.c: Draw the editor menubar properly - by drawing in response to EVENT_WINDOW_DRAW and initialising the screen canvas properly. The latter fixes a lot of other editor drawing issues as well
|
||||
2d/bitmap.c, arch/include/window.h, arch/sdl/gr.c, arch/sdl/window.c, include/gr.h: Update the canvas data pointers for all windows after changing the screen mode, so the main menu draws properly after leaving the editor
|
||||
arch/include/event.h, editor/centers.c, editor/eswitch.c, editor/med.c, editor/meddraw.c, editor/medrobot.c, editor/medwall.c, ui/dialog.c: Draw in response to EVENT_UI_DIALOG_DRAW, uncomment medlisp_update_screen call. You can now see what you're doing!
|
||||
|
||||
20120319
|
||||
--------
|
||||
|
|
|
@ -46,6 +46,7 @@ typedef enum event_type
|
|||
EVENT_NEWMENU_CHANGED, // an item had its value/text changed
|
||||
EVENT_NEWMENU_SELECTED, // user chose something - pressed enter/clicked on it
|
||||
|
||||
EVENT_UI_DIALOG_DRAW, // draw after the dialog stuff is drawn (e.g. spinning robots)
|
||||
EVENT_UI_GADGET_PRESSED, // user 'pressed' a gadget
|
||||
EVENT_UI_LISTBOX_MOVED,
|
||||
EVENT_UI_LISTBOX_SELECTED,
|
||||
|
|
|
@ -126,7 +126,6 @@ int centers_dialog_handler(UI_DIALOG *dlg, d_event *event, centers_dialog *c)
|
|||
int i;
|
||||
// int robot_flags;
|
||||
int keypress = 0;
|
||||
int redraw_window;
|
||||
int rval = 0;
|
||||
|
||||
Assert(MainWindow != NULL);
|
||||
|
@ -161,7 +160,6 @@ int centers_dialog_handler(UI_DIALOG *dlg, d_event *event, centers_dialog *c)
|
|||
// update the corresponding center.
|
||||
//------------------------------------------------------------
|
||||
|
||||
redraw_window=0;
|
||||
for ( i=0; i < MAX_CENTER_TYPES; i++ )
|
||||
{
|
||||
if ( GADGET_PRESSED(c->centerFlag[i]) )
|
||||
|
@ -171,7 +169,7 @@ int centers_dialog_handler(UI_DIALOG *dlg, d_event *event, centers_dialog *c)
|
|||
else if (Curseg2p->special != i)
|
||||
{
|
||||
fuelcen_delete(Cursegp);
|
||||
redraw_window = 1;
|
||||
Update_flags |= UF_WORLD_CHANGED;
|
||||
fuelcen_activate( Cursegp, i );
|
||||
}
|
||||
rval = 1;
|
||||
|
@ -194,7 +192,8 @@ int centers_dialog_handler(UI_DIALOG *dlg, d_event *event, centers_dialog *c)
|
|||
// If anything changes in the ui system, redraw all the text that
|
||||
// identifies this wall.
|
||||
//------------------------------------------------------------
|
||||
if (redraw_window || (c->old_seg_num != Cursegp-Segments ) ) {
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
{
|
||||
// int i;
|
||||
// char temp_text[CENTER_STRING_LENGTH];
|
||||
|
||||
|
@ -207,9 +206,11 @@ int centers_dialog_handler(UI_DIALOG *dlg, d_event *event, centers_dialog *c)
|
|||
// Assert(Curseg2p->special < MAX_CENTER_TYPES);
|
||||
// strncpy(temp_text, Center_names[Curseg2p->special], strlen(Center_names[Curseg2p->special]));
|
||||
// ui_dprintf_at( dlg, 12, 23, " Type: %s", temp_text );
|
||||
Update_flags |= UF_WORLD_CHANGED;
|
||||
}
|
||||
|
||||
if (c->old_seg_num != Cursegp-Segments)
|
||||
Update_flags |= UF_WORLD_CHANGED;
|
||||
|
||||
if (event->type == EVENT_WINDOW_CLOSE)
|
||||
{
|
||||
d_free(c);
|
||||
|
|
|
@ -446,6 +446,8 @@ int trigger_dialog_handler(UI_DIALOG *dlg, d_event *event, trigger_dialog *t)
|
|||
//------------------------------------------------------------
|
||||
// Draw the wall in the little 64x64 box
|
||||
//------------------------------------------------------------
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
{
|
||||
gr_set_current_canvas( t->wallViewBox->canvas );
|
||||
|
||||
if ((Markedsegp->sides[Markedside].wall_num == -1) || (Walls[Markedsegp->sides[Markedside].wall_num].trigger) == -1)
|
||||
|
@ -461,20 +463,24 @@ int trigger_dialog_handler(UI_DIALOG *dlg, d_event *event, trigger_dialog *t)
|
|||
gr_clear_canvas( CGREY );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------
|
||||
// If anything changes in the ui system, redraw all the text that
|
||||
// identifies this robot.
|
||||
//------------------------------------------------------------
|
||||
if (ui_button_any_drawn || (t->old_trigger_num != trigger_num) ) {
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
{
|
||||
if ( Markedsegp->sides[Markedside].wall_num > -1 ) {
|
||||
ui_dprintf_at( MainWindow, 12, 6, "Trigger: %d ", trigger_num);
|
||||
} else {
|
||||
ui_dprintf_at( MainWindow, 12, 6, "Trigger: none ");
|
||||
}
|
||||
Update_flags |= UF_WORLD_CHANGED;
|
||||
}
|
||||
|
||||
if (ui_button_any_drawn || (t->old_trigger_num != trigger_num) )
|
||||
Update_flags |= UF_WORLD_CHANGED;
|
||||
|
||||
if (event->type == EVENT_WINDOW_CLOSE)
|
||||
{
|
||||
d_free(t);
|
||||
|
|
32
editor/med.c
32
editor/med.c
|
@ -164,7 +164,7 @@ void print_diagnostic( char message[DIAGNOSTIC_MESSAGE_MAX] ) {
|
|||
gr_rect( 4+w, 583, 799, 599 );
|
||||
}
|
||||
|
||||
static char status_line[DIAGNOSTIC_MESSAGE_MAX];
|
||||
static char status_line[DIAGNOSTIC_MESSAGE_MAX] = "";
|
||||
|
||||
struct tm Editor_status_last_time;
|
||||
|
||||
|
@ -176,8 +176,6 @@ void editor_status( const char *format, ... )
|
|||
vsprintf(status_line, format, ap);
|
||||
va_end(ap);
|
||||
|
||||
print_status_bar(status_line);
|
||||
|
||||
Editor_status_last_time = Editor_time_of_day;
|
||||
|
||||
}
|
||||
|
@ -199,13 +197,11 @@ void clear_editor_status(void)
|
|||
|
||||
if (cur_time > erase_time) {
|
||||
int i;
|
||||
char message[DIAGNOSTIC_MESSAGE_MAX];
|
||||
|
||||
for (i=0; i<DIAGNOSTIC_MESSAGE_MAX-1; i++)
|
||||
message[i] = ' ';
|
||||
status_line[i] = ' ';
|
||||
|
||||
message[i] = 0;
|
||||
print_status_bar(message);
|
||||
status_line[i] = 0;
|
||||
Editor_status_last_time.tm_hour = 99;
|
||||
}
|
||||
}
|
||||
|
@ -1112,12 +1108,16 @@ int editor_handler(UI_DIALOG *dlg, d_event *event, void *data)
|
|||
|
||||
// Update the windows
|
||||
|
||||
// Only update if there is no key waiting and we're not in
|
||||
// fast play mode.
|
||||
// if (!key_peekkey()) //-- && (MacroStatus != UI_STATUS_FASTPLAY))
|
||||
// medlisp_update_screen();
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
{
|
||||
medlisp_update_screen();
|
||||
print_status_bar(status_line);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//do editor stuff
|
||||
if (event->type == EVENT_IDLE)
|
||||
{
|
||||
check_wall_validity();
|
||||
Assert(Num_walls>=0);
|
||||
|
||||
|
@ -1138,12 +1138,14 @@ int editor_handler(UI_DIALOG *dlg, d_event *event, void *data)
|
|||
event_reset_idle_seconds();
|
||||
}
|
||||
|
||||
// Commented out because it occupies about 25% of time in twirling the mine.
|
||||
// Removes some Asserts....
|
||||
// med_check_all_vertices();
|
||||
// Commented out because it occupies about 25% of time in twirling the mine.
|
||||
// Removes some Asserts....
|
||||
// med_check_all_vertices();
|
||||
clear_editor_status(); // if enough time elapsed, clear editor status message
|
||||
TimedAutosave(mine_filename);
|
||||
set_editor_time_of_day();
|
||||
}
|
||||
|
||||
gr_set_current_canvas( GameViewBox->canvas );
|
||||
|
||||
// Remove keys used for slew
|
||||
|
@ -1236,7 +1238,9 @@ int editor_handler(UI_DIALOG *dlg, d_event *event, void *data)
|
|||
current_view = new_cv;
|
||||
}
|
||||
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
calc_frame_time();
|
||||
|
||||
if (slew_frame(0)) { //do movement and check keys
|
||||
Update_flags |= UF_GAME_VIEW_CHANGED;
|
||||
if (Gameview_lockstep) {
|
||||
|
|
|
@ -800,8 +800,6 @@ void draw_world(grs_canvas *screen_canvas,editor_view *v,segment *mine_ptr,int d
|
|||
gr_set_current_canvas(screen_canvas);
|
||||
#endif
|
||||
|
||||
mouse_toggle_cursor(0);
|
||||
|
||||
//g3_set_points(Segment_points,Vertices);
|
||||
|
||||
viewer_position = v->ev_matrix.fvec;
|
||||
|
@ -906,9 +904,6 @@ void draw_world(grs_canvas *screen_canvas,editor_view *v,segment *mine_ptr,int d
|
|||
// }
|
||||
|
||||
#endif
|
||||
|
||||
mouse_toggle_cursor(1);
|
||||
|
||||
}
|
||||
|
||||
//find the segments that render at a given screen x,y
|
||||
|
|
|
@ -583,15 +583,15 @@ int robot_dialog_handler(UI_DIALOG *dlg, d_event *event, robot_dialog *r)
|
|||
}
|
||||
|
||||
//------------------------------------------------------------
|
||||
// A simple frame time counter for spinning the objects...
|
||||
// Redraw the object in the little 64x64 box
|
||||
//------------------------------------------------------------
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
{
|
||||
// A simple frame time counter for spinning the objects...
|
||||
Temp = timer_query();
|
||||
DeltaTime = Temp - r->time;
|
||||
r->time = Temp;
|
||||
|
||||
//------------------------------------------------------------
|
||||
// Redraw the object in the little 64x64 box
|
||||
//------------------------------------------------------------
|
||||
if (Cur_object_index > -1 ) {
|
||||
object *obj = &Objects[Cur_object_index];
|
||||
|
||||
|
@ -603,12 +603,15 @@ int robot_dialog_handler(UI_DIALOG *dlg, d_event *event, robot_dialog *r)
|
|||
gr_set_current_canvas( r->robotViewBox->canvas );
|
||||
gr_clear_canvas( CGREY );
|
||||
|
||||
// LocalObjectSelectNextInMine();
|
||||
// LocalObjectSelectNextInMine();
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------
|
||||
// Redraw the contained object in the other little box
|
||||
//------------------------------------------------------------
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
{
|
||||
if ((Cur_object_index > -1 ) && (Cur_goody_count > 0)) {
|
||||
gr_set_current_canvas( r->containsViewBox->canvas );
|
||||
if ( Cur_goody_id > -1 )
|
||||
|
@ -621,7 +624,8 @@ int robot_dialog_handler(UI_DIALOG *dlg, d_event *event, robot_dialog *r)
|
|||
gr_set_current_canvas( r->containsViewBox->canvas );
|
||||
gr_clear_canvas( CGREY );
|
||||
|
||||
// LocalObjectSelectNextInMine();
|
||||
// LocalObjectSelectNextInMine();
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------------
|
||||
|
@ -629,7 +633,8 @@ int robot_dialog_handler(UI_DIALOG *dlg, d_event *event, robot_dialog *r)
|
|||
// identifies this robot.
|
||||
//------------------------------------------------------------
|
||||
|
||||
if (ui_button_any_drawn || (r->old_object != Cur_object_index) ) {
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
{
|
||||
int i;
|
||||
char type_text[STRING_LENGTH+1],id_text[STRING_LENGTH+1];
|
||||
|
||||
|
@ -691,9 +696,11 @@ int robot_dialog_handler(UI_DIALOG *dlg, d_event *event, robot_dialog *r)
|
|||
ui_dprintf_at( MainWindow, 12, 22, " Type: ? " );
|
||||
ui_dprintf_at( MainWindow, 12, 38, " Name: ________" );
|
||||
}
|
||||
Update_flags |= UF_WORLD_CHANGED;
|
||||
}
|
||||
|
||||
if (ui_button_any_drawn || (r->old_object != Cur_object_index) )
|
||||
Update_flags |= UF_WORLD_CHANGED;
|
||||
|
||||
if (event->type == EVENT_WINDOW_CLOSE)
|
||||
{
|
||||
d_free(r);
|
||||
|
|
|
@ -508,14 +508,14 @@ int wall_dialog_handler(UI_DIALOG *dlg, d_event *event, wall_dialog *wd)
|
|||
}
|
||||
|
||||
//------------------------------------------------------------
|
||||
// A simple frame time counter for animating the walls...
|
||||
// Draw the wall in the little 64x64 box
|
||||
//------------------------------------------------------------
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
{
|
||||
// A simple frame time counter for animating the walls...
|
||||
Temp = timer_query();
|
||||
DeltaTime = Temp - wd->time;
|
||||
|
||||
//------------------------------------------------------------
|
||||
// Draw the wall in the little 64x64 box
|
||||
//------------------------------------------------------------
|
||||
gr_set_current_canvas( wd->wallViewBox->canvas );
|
||||
if (Cursegp->sides[Curside].wall_num != -1) {
|
||||
type = Walls[Cursegp->sides[Curside].wall_num].type;
|
||||
|
@ -542,12 +542,14 @@ int wall_dialog_handler(UI_DIALOG *dlg, d_event *event, wall_dialog *wd)
|
|||
}
|
||||
} else
|
||||
gr_clear_canvas( CGREY );
|
||||
}
|
||||
|
||||
//------------------------------------------------------------
|
||||
// If anything changes in the ui system, redraw all the text that
|
||||
// identifies this wall.
|
||||
//------------------------------------------------------------
|
||||
if (ui_button_any_drawn || (wd->old_wall_num != Cursegp->sides[Curside].wall_num) ) {
|
||||
if (event->type == EVENT_UI_DIALOG_DRAW)
|
||||
{
|
||||
if ( Cursegp->sides[Curside].wall_num > -1 ) {
|
||||
ui_dprintf_at( MainWindow, 12, 6, "Wall: %d ", Cursegp->sides[Curside].wall_num);
|
||||
switch (Walls[Cursegp->sides[Curside].wall_num].type) {
|
||||
|
@ -585,9 +587,11 @@ int wall_dialog_handler(UI_DIALOG *dlg, d_event *event, wall_dialog *wd)
|
|||
ui_dprintf_at( MainWindow, 12, 40, " Clip: none ");
|
||||
ui_dprintf_at( MainWindow, 12, 57, " Trigger: none ");
|
||||
}
|
||||
Update_flags |= UF_WORLD_CHANGED;
|
||||
}
|
||||
|
||||
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);
|
||||
|
|
|
@ -176,8 +176,12 @@ int ui_dialog_handler(window *wind, d_event *event, UI_DIALOG *dlg)
|
|||
break;
|
||||
|
||||
case EVENT_WINDOW_DRAW:
|
||||
return ui_dialog_draw(dlg);
|
||||
{
|
||||
d_event event2 = { EVENT_UI_DIALOG_DRAW };
|
||||
rval = ui_dialog_draw(dlg);
|
||||
window_send_event(wind, &event2);
|
||||
break;
|
||||
}
|
||||
|
||||
case EVENT_WINDOW_CLOSE:
|
||||
//ui_close_dialog(dlg); // need to hide this function and make it not call window_close first
|
||||
|
@ -606,8 +610,5 @@ void ui_dprintf_at( UI_DIALOG * dlg, short x, short y, char * format, ... )
|
|||
|
||||
ui_dialog_set_current_canvas( dlg );
|
||||
|
||||
mouse_toggle_cursor(0);
|
||||
gr_string( x, y, buffer );
|
||||
mouse_toggle_cursor(1);
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue