Debug: Add options to mark sprite groups, clear highlight/markings
Adjust tooltip strings
This commit is contained in:
@@ -1192,7 +1192,9 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}Zobrazí
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U
|
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_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 :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_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT :{BLACK}Kliknutí zvýrazní skupinu spritů
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_COLLAPSE :{BLACK}Shift+kliknutí sbalí skupinu spritů
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT_TEMP :{BLACK}Ctrl+kliknutí zvýrazní dočasný registr úložiště
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Návěstidla
|
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})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Neimplementované přemapované feature ID: název: {2:STRING}, mapováno na: {5:HEX} (sprite {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Neimplementované přemapované Action 0 property feature: {4:HEX}, název: {2:STRING}, mapováno na: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Neimplementované přemapované Action 0 property feature: {4:HEX}, název: {2:STRING}, mapováno na: {5:HEX} (sprite {3:NUM})
|
||||||
|
@@ -1275,9 +1275,15 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}Display
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U
|
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_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 :Scroll to sprite number
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :Scroll to sprite number
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_CLEAR :Clear highlighting/marking
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_MORE_DETAILS :Show more details
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_MORE_DETAILS :Show more details
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_CLICK_TO_HIGHLIGHT :Click to highlight
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_CLICK_TO_MARK :Click to mark
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_OPTIONS :{BLACK}Options and extra commands
|
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_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT :{BLACK}Click to highlight sprite group
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_MARK :{BLACK}Click to mark sprite group
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_COLLAPSE :{BLACK}Shift+Click to collapse sprite group
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT_TEMP :{BLACK}Ctrl+Click to highlight temporary storage register
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Signals
|
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})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Unimplemented remapped feature ID: name: {2:RAW_STRING}, mapped to: {5:HEX} (sprite {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Unimplemented remapped Action 0 property feature: {4:HEX}, name: {2:RAW_STRING}, mapped to: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Unimplemented remapped Action 0 property feature: {4:HEX}, name: {2:RAW_STRING}, mapped to: {5:HEX} (sprite {3:NUM})
|
||||||
|
@@ -1218,7 +1218,9 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}Amosa a
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U
|
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_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 :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_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT :{BLACK}Click para destacar o grupo de sprites
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_COLLAPSE :{BLACK}Shift+Click para compactar o grupo de sprites
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT_TEMP :{BLACK}Ctrl+Click para destacar o rexistro de almacenamento temporal
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Sinais
|
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})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :Característica non implementada remapeada ID: nome: {2:STRING}, mapeada a: {5:HEX} (sprite {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Remapeado non implementado dunha característica da propiedade 'Action 0': {4:HEX}, nome: {2:STRING}, mapeado a: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :Remapeado non implementado dunha característica da propiedade 'Action 0': {4:HEX}, nome: {2:STRING}, mapeado a: {5:HEX} (sprite {3:NUM})
|
||||||
|
@@ -1092,7 +1092,9 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}Aktuelle
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U
|
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_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 :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_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT :{BLACK}Klicke, um Sprite-Gruppe hervorzuheben
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_COLLAPSE :{BLACK}Umschalt+Klick, um die Sprite-Gruppe zu schließen
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT_TEMP :{BLACK}Strg+Klick, um temporäres Speicherregister hervorzuheben
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Signale
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :Signale
|
||||||
|
|
||||||
STR_NEWGRF_TOO_MANY_STRINGS :{WHITE}Nicht genügend String-IDs für alle NewGRFs vorhanden.
|
STR_NEWGRF_TOO_MANY_STRINGS :{WHITE}Nicht genügend String-IDs für alle NewGRFs vorhanden.
|
||||||
|
@@ -1218,7 +1218,9 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}현재
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U
|
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_UNOPT_TOOLTIP :{BLACK}모든 최적화가 적용되지 않은 스프라이트 그룹을 보여줍니다.{}이전에 활성화한 적이 없다면 NewGRF을 다시 불러와야 합니다. (misc_debug 10).
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :특정 스프라이트 번호로 이동합니다
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :특정 스프라이트 번호로 이동합니다
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}스프라이트 그룹을 강조 표시하려면 클릭하세요{}SHIFT+클릭하면 스프라이트 그룹을 접거나 펼 수 있습니다.{}Ctrl+클릭하면 임시 저장 레지스터를 강조 표시합니다.
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT :{BLACK}스프라이트 그룹을 강조 표시하려면 클릭하세요
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_COLLAPSE :{BLACK}SHIFT+클릭하면 스프라이트 그룹을 접거나 펼 수 있습니다.
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT_TEMP :{BLACK}Ctrl+클릭하면 임시 저장 레지스터를 강조 표시합니다.
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :신호기
|
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :신호기
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :구현되지 않은 재배치된 기능 ID: 이름: {2:STRING}, 재배치: {5:HEX} (스프라이트 {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :구현되지 않은 재배치된 기능 ID: 이름: {2:STRING}, 재배치: {5:HEX} (스프라이트 {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :구현되지 않은 재배치된 액션 0 속성 특성: {4:HEX}, 이름: {2:STRING}, 재배치: {5:HEX} (스프라이트 {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :구현되지 않은 재배치된 액션 0 속성 특성: {4:HEX}, 이름: {2:STRING}, 재배치: {5:HEX} (스프라이트 {3:NUM})
|
||||||
|
@@ -1211,7 +1211,9 @@ STR_NEWGRF_INSPECT_SPRITE_DUMP_TOOLTIP :{BLACK}显示
|
|||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_UNOPT :{BLACK}U
|
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_UNOPT_TOOLTIP :{BLACK}在没有应用任何优化的情况下显示Sprite组{}{}如果之前没有启用,则需要重新加载NewGRF (misc_debug 10)
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :滚动Sprite编号
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO :滚动Sprite编号
|
||||||
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP :{BLACK}点击高亮Sprite组{}Shift+点击折叠Sprite组{}Ctrl+点击高亮临时存储寄存器
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT :{BLACK}点击高亮Sprite组
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_COLLAPSE :{BLACK}Shift+点击折叠Sprite组
|
||||||
|
STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT_TEMP :{BLACK}Ctrl+点击高亮临时存储寄存器
|
||||||
STR_NEWGRF_INSPECT_CAPTION_OBJECT_AT_SIGNALS :信号
|
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})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_FEATURE_ID :未生效的重映射特性 ID: name: {2:STRING},mapped to: {5:HEX} (sprite {3:NUM})
|
||||||
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :未生效的重映射 Action 0 属性特性: {4:HEX},name: {2:STRING},mapped to: {5:HEX} (sprite {3:NUM})
|
STR_NEWGRF_ERROR_UNIMPLEMETED_MAPPED_PROPERTY :未生效的重映射 Action 0 属性特性: {4:HEX},name: {2:STRING},mapped to: {5:HEX} (sprite {3:NUM})
|
||||||
|
@@ -50,6 +50,8 @@
|
|||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
||||||
|
#include <array>
|
||||||
|
|
||||||
#include "safeguards.h"
|
#include "safeguards.h"
|
||||||
|
|
||||||
/** The sprite picker. */
|
/** The sprite picker. */
|
||||||
@@ -323,6 +325,7 @@ struct NewGRFInspectWindow : Window {
|
|||||||
|
|
||||||
bool auto_refresh = false;
|
bool auto_refresh = false;
|
||||||
bool log_console = false;
|
bool log_console = false;
|
||||||
|
bool click_to_mark_mode = false;
|
||||||
bool sprite_dump = false;
|
bool sprite_dump = false;
|
||||||
bool sprite_dump_unopt = false;
|
bool sprite_dump_unopt = false;
|
||||||
bool sprite_dump_more_details = false;
|
bool sprite_dump_more_details = false;
|
||||||
@@ -333,12 +336,17 @@ struct NewGRFInspectWindow : Window {
|
|||||||
btree::btree_map<int, uint16> nfo_line_lines;
|
btree::btree_map<int, uint16> nfo_line_lines;
|
||||||
const SpriteGroup *selected_sprite_group = nullptr;
|
const SpriteGroup *selected_sprite_group = nullptr;
|
||||||
btree::btree_map<int, uint32> highlight_tag_lines;
|
btree::btree_map<int, uint32> highlight_tag_lines;
|
||||||
uint32 selected_highlight_tags[6] = {};
|
|
||||||
btree::btree_set<const SpriteGroup *> collapsed_groups;
|
btree::btree_set<const SpriteGroup *> collapsed_groups;
|
||||||
|
|
||||||
|
std::array<uint32, 6> selected_highlight_tags = {};
|
||||||
|
std::array<const SpriteGroup *, 8> marked_groups = {};
|
||||||
|
|
||||||
enum DropDownOptions {
|
enum DropDownOptions {
|
||||||
NGIWDDO_GOTO_SPRITE,
|
NGIWDDO_GOTO_SPRITE,
|
||||||
|
NGIWDDO_CLEAR,
|
||||||
NGIWDDO_MORE_DETAILS,
|
NGIWDDO_MORE_DETAILS,
|
||||||
|
NGIWDDO_CLICK_TO_HIGHLIGHT,
|
||||||
|
NGIWDDO_CLICK_TO_MARK,
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -573,6 +581,9 @@ struct NewGRFInspectWindow : Window {
|
|||||||
const_cast<NewGRFInspectWindow *>(this)->highlight_tag_lines.clear();
|
const_cast<NewGRFInspectWindow *>(this)->highlight_tag_lines.clear();
|
||||||
const_cast<NewGRFInspectWindow *>(this)->nfo_line_lines.clear();
|
const_cast<NewGRFInspectWindow *>(this)->nfo_line_lines.clear();
|
||||||
if (this->sprite_dump) {
|
if (this->sprite_dump) {
|
||||||
|
const bool rtl = _current_text_dir == TD_RTL;
|
||||||
|
Rect sprite_ir = ir.Indent(WidgetDimensions::scaled.hsep_normal * 3, rtl);
|
||||||
|
|
||||||
bool collapsed = false;
|
bool collapsed = false;
|
||||||
const SpriteGroup *collapse_group = nullptr;
|
const SpriteGroup *collapse_group = nullptr;
|
||||||
uint collapse_lines = 0;
|
uint collapse_lines = 0;
|
||||||
@@ -627,7 +638,18 @@ struct NewGRFInspectWindow : Window {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
::DrawString(ir.left, ir.right, ir.top + (scroll_offset * this->resize.step_height), buf, colour);
|
if (group != nullptr) {
|
||||||
|
for (uint i = 0; i < lengthof(this->marked_groups); i++) {
|
||||||
|
if (this->marked_groups[i] == group) {
|
||||||
|
static const uint8 mark_colours[] = { PC_YELLOW, PC_GREEN, PC_ORANGE, PC_DARK_BLUE, PC_RED, PC_LIGHT_BLUE, 0xAE /* purple */, 0x6C /* brown */ };
|
||||||
|
static_assert(lengthof(this->marked_groups) == lengthof(mark_colours));
|
||||||
|
Rect mark_ir = ir.Indent(WidgetDimensions::scaled.hsep_normal, rtl).WithWidth(WidgetDimensions::scaled.hsep_normal, rtl).Translate(0, (scroll_offset * this->resize.step_height));
|
||||||
|
GfxFillRect(mark_ir.left, mark_ir.top, mark_ir.right, mark_ir.top + this->resize.step_height - 1, mark_colours[i]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
::DrawString(sprite_ir.left, sprite_ir.right, sprite_ir.top + (scroll_offset * this->resize.step_height), buf, colour);
|
||||||
});
|
});
|
||||||
dumper.use_shadows = this->sprite_dump_unopt;
|
dumper.use_shadows = this->sprite_dump_unopt;
|
||||||
dumper.more_details = this->sprite_dump_more_details;
|
dumper.more_details = this->sprite_dump_more_details;
|
||||||
@@ -820,24 +842,35 @@ struct NewGRFInspectWindow : Window {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SelectHighlightTag(uint32 tag)
|
template <typename T, typename V>
|
||||||
|
void SelectTagArrayItem(T &items, V value)
|
||||||
{
|
{
|
||||||
for (uint i = 0; i < lengthof(this->selected_highlight_tags); i++) {
|
for (size_t i = 0; i < items.size(); i++) {
|
||||||
if (this->selected_highlight_tags[i] == tag) {
|
if (items[i] == value) {
|
||||||
this->selected_highlight_tags[i] = 0;
|
items[i] = V{};
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (uint i = 0; i < lengthof(this->selected_highlight_tags); i++) {
|
for (size_t i = 0; i < items.size(); i++) {
|
||||||
if (this->selected_highlight_tags[i] == 0) {
|
if (!items[i]) {
|
||||||
this->selected_highlight_tags[i] = tag;
|
items[i] = value;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->selected_highlight_tags[lengthof(this->selected_highlight_tags) - 1] = tag;
|
items[items.size() - 1] = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
void OnClick([[maybe_unused]] Point pt, int widget, [[maybe_unused]] int click_count) override
|
void SelectHighlightTag(uint32 tag)
|
||||||
|
{
|
||||||
|
this->SelectTagArrayItem(this->selected_highlight_tags, tag);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SelectMarkedGroup(const SpriteGroup *group)
|
||||||
|
{
|
||||||
|
this->SelectTagArrayItem(this->marked_groups, group);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnClick(Point pt, int widget, int click_count) override
|
||||||
{
|
{
|
||||||
switch (widget) {
|
switch (widget) {
|
||||||
case WID_NGRFI_PARENT: {
|
case WID_NGRFI_PARENT: {
|
||||||
@@ -892,14 +925,20 @@ struct NewGRFInspectWindow : Window {
|
|||||||
}
|
}
|
||||||
this->SetWidgetDirty(WID_NGRFI_MAINPANEL);
|
this->SetWidgetDirty(WID_NGRFI_MAINPANEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
const SpriteGroup *group = nullptr;
|
const SpriteGroup *group = nullptr;
|
||||||
auto iter = this->sprite_group_lines.find(line);
|
auto iter = this->sprite_group_lines.find(line);
|
||||||
if (iter != this->sprite_group_lines.end()) group = iter->second;
|
if (iter != this->sprite_group_lines.end()) group = iter->second;
|
||||||
if (group != nullptr || this->selected_sprite_group != nullptr) {
|
if (this->click_to_mark_mode) {
|
||||||
this->selected_sprite_group = (group == this->selected_sprite_group) ? nullptr : group;
|
if (group != nullptr) {
|
||||||
this->SetWidgetDirty(WID_NGRFI_MAINPANEL);
|
this->SelectMarkedGroup(group);
|
||||||
|
this->SetWidgetDirty(WID_NGRFI_MAINPANEL);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (group != nullptr || this->selected_sprite_group != nullptr) {
|
||||||
|
this->selected_sprite_group = (group == this->selected_sprite_group) ? nullptr : group;
|
||||||
|
this->SetWidgetDirty(WID_NGRFI_MAINPANEL);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -955,7 +994,6 @@ struct NewGRFInspectWindow : Window {
|
|||||||
this->SetWidgetLoweredState(WID_NGRFI_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_UNOPT, !this->sprite_dump || !UnOptimisedSpriteDumpOK());
|
||||||
this->SetWidgetDisabledState(WID_NGRFI_SPRITE_DUMP_OPTIONS, !this->sprite_dump);
|
this->SetWidgetDisabledState(WID_NGRFI_SPRITE_DUMP_OPTIONS, !this->sprite_dump);
|
||||||
this->GetWidget<NWidgetCore>(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);
|
||||||
this->SetWidgetDirty(WID_NGRFI_SPRITE_DUMP_UNOPT);
|
this->SetWidgetDirty(WID_NGRFI_SPRITE_DUMP_UNOPT);
|
||||||
this->SetWidgetDirty(WID_NGRFI_SPRITE_DUMP_OPTIONS);
|
this->SetWidgetDirty(WID_NGRFI_SPRITE_DUMP_OPTIONS);
|
||||||
@@ -991,6 +1029,10 @@ struct NewGRFInspectWindow : Window {
|
|||||||
case WID_NGRFI_SPRITE_DUMP_OPTIONS: {
|
case WID_NGRFI_SPRITE_DUMP_OPTIONS: {
|
||||||
DropDownList list;
|
DropDownList list;
|
||||||
list.push_back(std::make_unique<DropDownListStringItem>(STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO, NGIWDDO_GOTO_SPRITE, false));
|
list.push_back(std::make_unique<DropDownListStringItem>(STR_NEWGRF_INSPECT_SPRITE_DUMP_GOTO, NGIWDDO_GOTO_SPRITE, false));
|
||||||
|
list.push_back(std::make_unique<DropDownListStringItem>(STR_NEWGRF_INSPECT_SPRITE_DUMP_CLEAR, NGIWDDO_CLEAR, false));
|
||||||
|
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false));
|
||||||
|
list.push_back(std::make_unique<DropDownListCheckedItem>(!this->click_to_mark_mode, STR_NEWGRF_INSPECT_SPRITE_DUMP_CLICK_TO_HIGHLIGHT, NGIWDDO_CLICK_TO_HIGHLIGHT, false));
|
||||||
|
list.push_back(std::make_unique<DropDownListCheckedItem>(this->click_to_mark_mode, STR_NEWGRF_INSPECT_SPRITE_DUMP_CLICK_TO_MARK, NGIWDDO_CLICK_TO_MARK, false));
|
||||||
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false));
|
list.push_back(std::make_unique<DropDownListDividerItem>(-1, false));
|
||||||
list.push_back(std::make_unique<DropDownListCheckedItem>(this->sprite_dump_more_details, STR_NEWGRF_INSPECT_SPRITE_DUMP_MORE_DETAILS, NGIWDDO_MORE_DETAILS, false));
|
list.push_back(std::make_unique<DropDownListCheckedItem>(this->sprite_dump_more_details, STR_NEWGRF_INSPECT_SPRITE_DUMP_MORE_DETAILS, NGIWDDO_MORE_DETAILS, false));
|
||||||
|
|
||||||
@@ -1009,10 +1051,24 @@ struct NewGRFInspectWindow : Window {
|
|||||||
this->current_edit_param = 0;
|
this->current_edit_param = 0;
|
||||||
ShowQueryString(STR_EMPTY, STR_SPRITE_ALIGNER_GOTO_CAPTION, 10, this, CS_NUMERAL, QSF_NONE);
|
ShowQueryString(STR_EMPTY, STR_SPRITE_ALIGNER_GOTO_CAPTION, 10, this, CS_NUMERAL, QSF_NONE);
|
||||||
break;
|
break;
|
||||||
|
case NGIWDDO_CLEAR:
|
||||||
|
this->selected_highlight_tags.fill(0);
|
||||||
|
this->marked_groups.fill(nullptr);
|
||||||
|
this->selected_sprite_group = nullptr;
|
||||||
|
this->SetDirty();
|
||||||
|
break;
|
||||||
case NGIWDDO_MORE_DETAILS:
|
case NGIWDDO_MORE_DETAILS:
|
||||||
this->sprite_dump_more_details = !this->sprite_dump_more_details;
|
this->sprite_dump_more_details = !this->sprite_dump_more_details;
|
||||||
this->SetDirty();
|
this->SetDirty();
|
||||||
break;
|
break;
|
||||||
|
case NGIWDDO_CLICK_TO_HIGHLIGHT:
|
||||||
|
this->click_to_mark_mode = false;
|
||||||
|
break;
|
||||||
|
case NGIWDDO_CLICK_TO_MARK:
|
||||||
|
this->click_to_mark_mode = true;
|
||||||
|
this->selected_sprite_group = nullptr;
|
||||||
|
this->SetDirty();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -1067,6 +1123,21 @@ struct NewGRFInspectWindow : Window {
|
|||||||
this->redraw_panel = false;
|
this->redraw_panel = false;
|
||||||
this->redraw_scrollbar = false;
|
this->redraw_scrollbar = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual bool OnTooltip(Point pt, int widget, TooltipCloseCondition close_cond) override
|
||||||
|
{
|
||||||
|
if (widget == WID_NGRFI_MAINPANEL && this->sprite_dump) {
|
||||||
|
_temp_special_strings[0] = GetString(this->click_to_mark_mode ? STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_MARK : STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT);
|
||||||
|
_temp_special_strings[0] += "\n";
|
||||||
|
_temp_special_strings[0] += GetString(STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_COLLAPSE);
|
||||||
|
_temp_special_strings[0] += "\n";
|
||||||
|
_temp_special_strings[0] += GetString(STR_NEWGRF_INSPECT_SPRITE_DUMP_PANEL_TOOLTIP_HIGHLIGHT_TEMP);
|
||||||
|
GuiShowTooltips(this, SPECSTR_TEMP_START, close_cond);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static const NWidgetPart _nested_newgrf_inspect_chain_widgets[] = {
|
static const NWidgetPart _nested_newgrf_inspect_chain_widgets[] = {
|
||||||
|
Reference in New Issue
Block a user