diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp index bb51f4c0c8..b8337ec04f 100644 --- a/src/console_cmds.cpp +++ b/src/console_cmds.cpp @@ -3353,8 +3353,7 @@ DEF_CONSOLE_CMD(ConMiscDebug) IConsoleHelp(" 4: MDF_ZONING_RS_TROPIC_ZONE"); IConsoleHelp(" 8: MDF_ZONING_RS_ANIMATED_TILE"); IConsoleHelp(" 10: MDF_NEWGRF_SG_SAVE_RAW"); - IConsoleHelp(" 20: MDF_NEWGRF_SG_DUMP_MORE_DETAIL"); - IConsoleHelp(" 40: MDF_SPECIAL_CMDS"); + IConsoleHelp(" 20: MDF_SPECIAL_CMDS"); return true; } diff --git a/src/debug_settings.h b/src/debug_settings.h index dcc4515ba9..58c7062c7f 100644 --- a/src/debug_settings.h +++ b/src/debug_settings.h @@ -51,7 +51,6 @@ enum MiscDebugFlags { MDF_ZONING_RS_TROPIC_ZONE, MDF_ZONING_RS_ANIMATED_TILE, MDF_NEWGRF_SG_SAVE_RAW, - MDF_NEWGRF_SG_DUMP_MORE_DETAIL, MDF_SPECIAL_CMDS, }; extern uint32 _misc_debug_flags; diff --git a/src/lang/extra/czech.txt b/src/lang/extra/czech.txt index 08f7cf440a..5e20e6e602 100644 --- a/src/lang/extra/czech.txt +++ b/src/lang/extra/czech.txt @@ -1191,8 +1191,7 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP :{BLACK}S STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}Zobrazí aktuální posloupnost spritů STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}Zobrazí skupiny spritů bez užití jakékoli optimalizace.{}{}Vyžaduje znovunačítání NewGRF, nebylo-li dříve zapnuto (misc_debug 10). -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}P -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Přejít na číslo spritu... +STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :Přejít na číslo spritu... STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Kliknutí zvýrazní skupinu spritů{}Shift+kliknutí sbalí skupinu spritů{}Ctrl+kliknutí zvýrazní dočasný registr úložiště STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Návěstidla STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Neimplementované přemapované feature ID: název: {2:STRING}, mapováno na: {5:HEX} (sprite {3:NUM}) diff --git a/src/lang/extra/english.txt b/src/lang/extra/english.txt index 9ddf11dbc6..6baf399c6a 100644 --- a/src/lang/extra/english.txt +++ b/src/lang/extra/english.txt @@ -1274,8 +1274,9 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP :{BLACK}S STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}Display current sprite chain STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}Display sprite groups without any optimisations applied.{}{}Requires reloading NewGRFs if not previously enabled (misc_debug 10). -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Scroll to sprite number +STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :Scroll to sprite number +STR_NEWGRF_INSPECT_SPRITE_DUMP_MORE_DETAILS :Show more details +STR_NEWGRF_INSPECT_SPRITE_DUMP_OPTIONS :{BLACK}Options and extra commands STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Click to highlight sprite group{}Shift+Click to collapse sprite group{}Ctrl+Click to highlight temporary storage register STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Signals STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Unimplemented remapped feature ID: name: {2:RAW_STRING}, mapped to: {5:HEX} (sprite {3:NUM}) diff --git a/src/lang/extra/galician.txt b/src/lang/extra/galician.txt index 38005f0275..f73e40b9ba 100644 --- a/src/lang/extra/galician.txt +++ b/src/lang/extra/galician.txt @@ -1217,8 +1217,7 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP :{BLACK}S STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}Amosa a cadea de sprites actual STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}Amosar grupos de sprites sen ter ningunha aplicación optimizada.{}{}Require recargar NewGRFs se non estaba previamente habilitado (misc_debug 10). -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Desprazarse o sprite número +STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :Desprazarse o sprite número STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Click para destacar o grupo de sprites{}Shift+Click para compactar o grupo de sprites{}Ctrl+Click para destacar o rexistro de almacenamento temporal STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Sinais STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Característica non implementada remapeada ID: nome: {2:STRING}, mapeada a: {5:HEX} (sprite {3:NUM}) diff --git a/src/lang/extra/german.txt b/src/lang/extra/german.txt index 6ea6f8d6c0..d8bcc57801 100644 --- a/src/lang/extra/german.txt +++ b/src/lang/extra/german.txt @@ -1091,8 +1091,7 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP :{BLACK}S STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}Aktuelle Sprite-Reihe anzeigen STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}Zeige Sprite-Gruppe ohne jede Optimierung an.{}{}Wenn nicht vorher aktiviert, müssen NewGRFs erneut geladen werden (misc_debug 10). -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}Scrolle zum Sprite Nummer +STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :Scrolle zum Sprite Nummer STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}Klicke, um Sprite-Gruppe hervorzuheben{}Umschalt+Klick, um die Sprite-Gruppe zu schließen{}Strg+Klick, um temporäres Speicherregister hervorzuheben STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Signale diff --git a/src/lang/extra/korean.txt b/src/lang/extra/korean.txt index 0a3c6428a8..f4db2b36c6 100644 --- a/src/lang/extra/korean.txt +++ b/src/lang/extra/korean.txt @@ -1217,8 +1217,7 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP :{BLACK}S STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}현재 스프라이트 체인을 표시합니다 STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}모든 최적화가 적용되지 않은 스프라이트 그룹을 보여줍니다.{}이전에 활성화한 적이 없다면 NewGRF을 다시 불러와야 합니다. (misc_debug 10). -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}특정 스프라이트 번호로 이동합니다 +STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :특정 스프라이트 번호로 이동합니다 STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}스프라이트 그룹을 강조 표시하려면 클릭하세요{}SHIFT+클릭하면 스프라이트 그룹을 접거나 펼 수 있습니다.{}Ctrl+클릭하면 임시 저장 레지스터를 강조 표시합니다. STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :신호기 STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :구현되지 않은 재배치된 기능 ID: 이름: {2:STRING}, 재배치: {5:HEX} (스프라이트 {3:NUM}) diff --git a/src/lang/extra/simplified_chinese.txt b/src/lang/extra/simplified_chinese.txt index c066141559..d6f9d0cae2 100644 --- a/src/lang/extra/simplified_chinese.txt +++ b/src/lang/extra/simplified_chinese.txt @@ -1210,8 +1210,7 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP :{BLACK}S STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}显示当前Sprite链 STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP :{BLACK}在没有应用任何优化的情况下显示Sprite组{}{}如果之前没有启用,则需要重新加载NewGRF (misc_debug 10) -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :{BLACK}G -STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP :{BLACK}滚动Sprite编号 +STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :滚动Sprite编号 STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}点击高亮Sprite组{}Shift+点击折叠Sprite组{}Ctrl+点击高亮临时存储寄存器 STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :信号 STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :未生效的重映射特性 ID: name: {2:STRING},mapped to: {5:HEX} (sprite {3:NUM}) diff --git a/src/newgrf_debug_gui.cpp b/src/newgrf_debug_gui.cpp index 70321240df..e720b58860 100644 --- a/src/newgrf_debug_gui.cpp +++ b/src/newgrf_debug_gui.cpp @@ -45,6 +45,7 @@ #include "newgrf_config.h" +#include "widgets/dropdown_type.h" #include "widgets/newgrf_debug_widget.h" #include "table/strings.h" @@ -324,6 +325,7 @@ struct NewGRFInspectWindow : Window { bool log_console = false; bool sprite_dump = false; bool sprite_dump_unopt = false; + bool sprite_dump_more_details = false; uint32 extra_info_flags = 0; btree::btree_map extra_info_click_flag_toggles; @@ -334,6 +336,11 @@ struct NewGRFInspectWindow : Window { uint32 selected_highlight_tags[6] = {}; btree::btree_set collapsed_groups; + enum DropDownOptions { + NGIWDDO_GOTO_SPRITE, + NGIWDDO_MORE_DETAILS, + }; + /** * Check whether the given variable has a parameter. * @param variable the variable to check. @@ -400,9 +407,9 @@ struct NewGRFInspectWindow : Window { bool show_sprite_dump_button = GetFeatureHelper(wno)->ShowSpriteDumpButton(::GetFeatureIndex(wno)); this->GetWidget(WID_NGRFI_SPRITE_DUMP_SEL)->SetDisplayedPlane(show_sprite_dump_button ? 0 : SZSP_NONE); this->GetWidget(WID_NGRFI_SPRITE_DUMP_UNOPT_SEL)->SetDisplayedPlane(show_sprite_dump_button ? 0 : SZSP_NONE); - this->GetWidget(WID_NGRFI_SPRITE_DUMP_GOTO_SEL)->SetDisplayedPlane(show_sprite_dump_button ? 0 : SZSP_NONE); + this->GetWidget(WID_NGRFI_OPTIONS_SEL)->SetDisplayedPlane(show_sprite_dump_button ? 0 : SZSP_NONE); this->SetWidgetDisabledState(WID_NGRFI_SPRITE_DUMP_UNOPT, true); - this->SetWidgetDisabledState(WID_NGRFI_SPRITE_DUMP_GOTO, true); + this->SetWidgetDisabledState(WID_NGRFI_SPRITE_DUMP_OPTIONS, true); this->FinishInitNested(wno); this->vscroll->SetCount(0); @@ -623,7 +630,7 @@ struct NewGRFInspectWindow : Window { ::DrawString(ir.left, ir.right, ir.top + (scroll_offset * this->resize.step_height), buf, colour); }); dumper.use_shadows = this->sprite_dump_unopt; - dumper.more_details = HasBit(_misc_debug_flags, MDF_NEWGRF_SG_DUMP_MORE_DETAIL); + dumper.more_details = this->sprite_dump_more_details; nih->SpriteDump(index, dumper); return; } else { @@ -947,11 +954,11 @@ struct NewGRFInspectWindow : Window { this->sprite_dump = !this->sprite_dump; this->SetWidgetLoweredState(WID_NGRFI_SPRITE_DUMP, this->sprite_dump); this->SetWidgetDisabledState(WID_NGRFI_SPRITE_DUMP_UNOPT, !this->sprite_dump || !UnOptimisedSpriteDumpOK()); - this->SetWidgetDisabledState(WID_NGRFI_SPRITE_DUMP_GOTO, !this->sprite_dump); + this->SetWidgetDisabledState(WID_NGRFI_SPRITE_DUMP_OPTIONS, !this->sprite_dump); this->GetWidget(WID_NGRFI_MAINPANEL)->SetToolTip(this->sprite_dump ? STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP : STR_NULL); this->SetWidgetDirty(WID_NGRFI_SPRITE_DUMP); this->SetWidgetDirty(WID_NGRFI_SPRITE_DUMP_UNOPT); - this->SetWidgetDirty(WID_NGRFI_SPRITE_DUMP_GOTO); + this->SetWidgetDirty(WID_NGRFI_SPRITE_DUMP_OPTIONS); this->SetWidgetDirty(WID_NGRFI_MAINPANEL); this->SetWidgetDirty(WID_NGRFI_SCROLLBAR); break; @@ -981,11 +988,33 @@ struct NewGRFInspectWindow : Window { break; } - case WID_NGRFI_SPRITE_DUMP_GOTO: { + case WID_NGRFI_SPRITE_DUMP_OPTIONS: { + DropDownList list; + list.push_back(std::make_unique(STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO, NGIWDDO_GOTO_SPRITE, false)); + list.push_back(std::make_unique(-1, false)); + list.push_back(std::make_unique(this->sprite_dump_more_details, STR_NEWGRF_INSPECT_SPRITE_DUMP_MORE_DETAILS, NGIWDDO_MORE_DETAILS, false)); + + ShowDropDownList(this, std::move(list), 0, WID_NGRFI_SPRITE_DUMP_OPTIONS, 140); + break; + } + } + } + + void OnDropdownSelect(int widget, int index) override + { + if (widget != WID_NGRFI_SPRITE_DUMP_OPTIONS) return; + + switch (index) { + case NGIWDDO_GOTO_SPRITE: this->current_edit_param = 0; ShowQueryString(STR_EMPTY, STR_SPRITE_ALIGNER_GOTO_CAPTION, 10, this, CS_NUMERAL, QSF_NONE); break; - } + case NGIWDDO_MORE_DETAILS: + this->sprite_dump_more_details = !this->sprite_dump_more_details; + this->SetDirty(); + break; + default: + break; } } @@ -1044,8 +1073,8 @@ 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(NWID_SELECTION, INVALID_COLOUR, WID_NGRFI_SPRITE_DUMP_GOTO_SEL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NGRFI_SPRITE_DUMP_GOTO), SetDataTip(STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO, STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NGRFI_OPTIONS_SEL), + NWidget(WWT_IMGBTN, COLOUR_GREY, WID_NGRFI_SPRITE_DUMP_OPTIONS), SetDataTip(SPR_ARROW_DOWN, STR_NEWGRF_INSPECT_SPRITE_DUMP_OPTIONS), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NGRFI_SPRITE_DUMP_UNOPT_SEL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_NGRFI_SPRITE_DUMP_UNOPT), SetDataTip(STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT, STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP), @@ -1081,8 +1110,8 @@ 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(NWID_SELECTION, INVALID_COLOUR, WID_NGRFI_SPRITE_DUMP_GOTO_SEL), - NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NGRFI_SPRITE_DUMP_GOTO), SetDataTip(STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO, STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO_TOOLTIP), + NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NGRFI_OPTIONS_SEL), + NWidget(WWT_IMGBTN, COLOUR_GREY, WID_NGRFI_SPRITE_DUMP_OPTIONS), SetDataTip(SPR_ARROW_DOWN, STR_NEWGRF_INSPECT_SPRITE_DUMP_OPTIONS), EndContainer(), NWidget(NWID_SELECTION, INVALID_COLOUR, WID_NGRFI_SPRITE_DUMP_UNOPT_SEL), NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_NGRFI_SPRITE_DUMP_UNOPT), SetDataTip(STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT, STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT_TOOLTIP), diff --git a/src/widgets/newgrf_debug_widget.h b/src/widgets/newgrf_debug_widget.h index bf0bc1705e..c1700fc03b 100644 --- a/src/widgets/newgrf_debug_widget.h +++ b/src/widgets/newgrf_debug_widget.h @@ -26,8 +26,8 @@ enum NewGRFInspectWidgets { WID_NGRFI_SPRITE_DUMP_SEL, ///< Selection widget for WID_NGRFI_SPRITE_DUMP WID_NGRFI_SPRITE_DUMP_UNOPT, ///< Dump unoptimised sprite group WID_NGRFI_SPRITE_DUMP_UNOPT_SEL, ///< Selection widget for WID_NGRFI_SPRITE_DUMP_UNOPT - WID_NGRFI_SPRITE_DUMP_GOTO, ///< Goto sprite - WID_NGRFI_SPRITE_DUMP_GOTO_SEL, ///< Selection widget for WID_NGRFI_SPRITE_DUMP_GOTO + WID_NGRFI_SPRITE_DUMP_OPTIONS, ///< Options dropdown + WID_NGRFI_OPTIONS_SEL, ///< Selection widget for WID_NGRFI_SPRITE_DUMP_OPTIONS }; /** Widgets of the #SpriteAlignerWindow class. */