diff --git a/src/lang/english.txt b/src/lang/english.txt index 8b1383f52f..750f2be8dd 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -3659,6 +3659,8 @@ STR_NEWGRF_PARAMETERS_NUM_PARAM :{LTBLUE}Number STR_NEWGRF_INSPECT_CAPTION :{WHITE}Inspect - {STRING5} STR_NEWGRF_INSPECT_PARENT_BUTTON :{BLACK}Parent STR_NEWGRF_INSPECT_PARENT_TOOLTIP :{BLACK}Inspect the object of the parent scope +STR_NEWGRF_INSPECT_REFRESH :{BLACK}R +STR_NEWGRF_INSPECT_REFRESH_TOOLTIP :{BLACK}Toggle whether to refresh the contents every frame STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT :{STRING1} at {HEX} STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_OBJECT :Object diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index c67d115d58..99419d3b0f 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -298,6 +298,8 @@ struct NewGRFInspectWindow : Window { int first_variable_line_index = 0; + bool auto_refresh = false; + /** * Check whether the given variable has a parameter. * @param variable the variable to check. @@ -628,6 +630,13 @@ struct NewGRFInspectWindow : Window { this->current_edit_param = niv->var; ShowQueryString(STR_EMPTY, STR_NEWGRF_INSPECT_QUERY_CAPTION, 9, this, CS_HEXADECIMAL, QSF_NONE); } + break; + } + + case WID_NGRFI_REFRESH: { + this->auto_refresh = !this->auto_refresh; + this->SetWidgetLoweredState(WID_NGRFI_REFRESH, this->auto_refresh); + break; } } } @@ -660,6 +669,11 @@ struct NewGRFInspectWindow : Window { this->SetWidgetDisabledState(WID_NGRFI_VEH_NEXT, v == nullptr || v->Next() == nullptr); } } + + void OnRealtimeTick(uint delta_ms) override + { + if (this->auto_refresh) this->SetDirty(); + } }; /* static */ uint32 NewGRFInspectWindow::var60params[GSF_FAKE_END][0x20] = { {0} }; // Use spec to have 0s in whole array @@ -668,6 +682,7 @@ static const NWidgetPart _nested_newgrf_inspect_chain_widgets[] = { NWidget(NWID_HORIZONTAL), NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_NGRFI_CAPTION), SetDataTip(STR_NEWGRF_INSPECT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_NGRFI_REFRESH), SetDataTip(STR_NEWGRF_INSPECT_REFRESH, STR_NEWGRF_INSPECT_REFRESH_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), @@ -693,6 +708,7 @@ static const NWidgetPart _nested_newgrf_inspect_widgets[] = { NWidget(WWT_CLOSEBOX, COLOUR_GREY), NWidget(WWT_CAPTION, COLOUR_GREY, WID_NGRFI_CAPTION), SetDataTip(STR_NEWGRF_INSPECT_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS), NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NGRFI_PARENT), SetDataTip(STR_NEWGRF_INSPECT_PARENT_BUTTON, STR_NEWGRF_INSPECT_PARENT_TOOLTIP), + NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_NGRFI_REFRESH), SetDataTip(STR_NEWGRF_INSPECT_REFRESH, STR_NEWGRF_INSPECT_REFRESH_TOOLTIP), NWidget(WWT_SHADEBOX, COLOUR_GREY), NWidget(WWT_DEFSIZEBOX, COLOUR_GREY), NWidget(WWT_STICKYBOX, COLOUR_GREY), diff --git a/src/widgets/newgrf_debug_widget.h b/src/widgets/newgrf_debug_widget.h index 6ae41de348..a6e91fa37f 100644 --- a/src/widgets/newgrf_debug_widget.h +++ b/src/widgets/newgrf_debug_widget.h @@ -19,6 +19,7 @@ enum NewGRFInspectWidgets { WID_NGRFI_VEH_CHAIN, ///< Display for vehicle chain. WID_NGRFI_MAINPANEL, ///< Panel widget containing the actual data. WID_NGRFI_SCROLLBAR, ///< Scrollbar. + WID_NGRFI_REFRESH, ///< Refresh toggle. }; /** Widgets of the #SpriteAlignerWindow class. */