OpenTTD

Data Structures | Enumerations | Functions | Variables
newgrf_debug_gui.cpp File Reference

GUIs for debugging NewGRFs. More...

`#include "stdafx.h"`
`#include <stdarg.h>`
`#include "window_gui.h"`
`#include "window_func.h"`
`#include "fileio_func.h"`
`#include "spritecache.h"`
`#include "string_func.h"`
`#include "strings_func.h"`
`#include "textbuf_gui.h"`
`#include "vehicle_gui.h"`
`#include "zoom_func.h"`
`#include "engine_base.h"`
`#include "industry.h"`
`#include "object_base.h"`
`#include "station_base.h"`
`#include "town.h"`
`#include "vehicle_base.h"`
`#include "train.h"`
`#include "roadveh.h"`
`#include "newgrf_airporttiles.h"`
`#include "newgrf_debug.h"`
`#include "newgrf_object.h"`
`#include "newgrf_spritegroup.h"`
`#include "newgrf_station.h"`
`#include "newgrf_town.h"`
`#include "newgrf_railtype.h"`
`#include "newgrf_industries.h"`
`#include "newgrf_industrytiles.h"`
`#include "widgets/newgrf_debug_widget.h"`
`#include "table/strings.h"`
`#include "safeguards.h"`
`#include "table/newgrf_debug_data.h"`

Go to the source code of this file.

## Data Structures
struct | NIProperty
| Representation of the data from a NewGRF property. More...
struct | NICallback
| Representation of the available callbacks with information on when they actually apply. More...
struct | NIVariable
| Representation on the NewGRF variables. More...
class | NIHelper
| Helper class to wrap some functionality/queries in. More...
struct | NIFeature
| Container for all information for a given feature. More...
struct | NewGRFInspectWindow
| Window used for inspecting NewGRFs. More...
struct | SpriteAlignerWindow
| Window used for aligning sprites. More...

## Enumerations
enum | NIType { NIT_INT, NIT_CARGO }
| The type of a property to show. More...

## Functions
static uint | GetFeatureIndex (uint window_number)
| Get the feature index related to the window number. More...
static uint | GetInspectWindowNumber (GrfSpecFeature feature, uint index)
| Get the window number for the inspect window given a feature and index. More...
static GrfSpecFeature | GetFeatureNum (uint window_number)
| Get the feature number related to the window number. More...
static const NIFeature * | GetFeature (uint window_number)
| Get the NIFeature related to the window number. More...
static const NIHelper * | GetFeatureHelper (uint window_number)
| Get the NIHelper related to the window number. More...
void | ShowNewGRFInspectWindow (GrfSpecFeature feature, uint index, const uint32 grfid)
| Show the inspect window for a given feature and index. More...
void | InvalidateNewGRFInspectWindow (GrfSpecFeature feature, uint index)
| Invalidate the inspect window for a given feature and index. More...
void | DeleteNewGRFInspectWindow (GrfSpecFeature feature, uint index)
| Delete inspect window for a given feature and index. More...
bool | IsNewGRFInspectable (GrfSpecFeature feature, uint index)
| Can we inspect the data given a certain feature and index. More...
GrfSpecFeature | GetGrfSpecFeature (TileIndex tile)
| Get the GrfSpecFeature associated with the tile. More...
GrfSpecFeature | GetGrfSpecFeature (VehicleType type)
| Get the GrfSpecFeature associated with the vehicle. More...
void | ShowSpriteAlignerWindow ()
| Show the window for aligning sprites.

## Variables
NewGrfDebugSpritePicker | _newgrf_debug_sprite_picker = { SPM_NONE, NULL, 0, SmallVector<SpriteID, 256>() }
| The sprite picker. More...
static const int | CBM_NO_BIT = UINT8_MAX
| Mask to show no bit needs to be enabled for the callback. More...
static const NWidgetPart | _nested_newgrf_inspect_chain_widgets []
static const NWidgetPart | _nested_newgrf_inspect_widgets []
static WindowDesc | _newgrf_inspect_chain_desc (WDP_AUTO, "newgrf_inspect_chain", 400, 300, WC_NEWGRF_INSPECT, WC_NONE, 0, _nested_newgrf_inspect_chain_widgets, lengthof(_nested_newgrf_inspect_chain_widgets))
static WindowDesc | _newgrf_inspect_desc (WDP_AUTO, "newgrf_inspect", 400, 300, WC_NEWGRF_INSPECT, WC_NONE, 0, _nested_newgrf_inspect_widgets, lengthof(_nested_newgrf_inspect_widgets))
static const NWidgetPart | _nested_sprite_aligner_widgets []
static WindowDesc | _sprite_aligner_desc (WDP_AUTO, "sprite_aligner", 400, 300, WC_SPRITE_ALIGNER, WC_NONE, 0, _nested_sprite_aligner_widgets, lengthof(_nested_sprite_aligner_widgets))

## Detailed Description

GUIs for debugging NewGRFs.

Definition in file newgrf_debug_gui.cpp.

## Enumeration Type Documentation

## ◆ NIType

enum NIType

The type of a property to show.

This is used to provide an appropriate representation in the GUI.

Enumerator
NIT_INT | The property is a simple integer.
NIT_CARGO | The property is a cargo.

Definition at line 79 of file newgrf_debug_gui.cpp.

## Function Documentation

## ◆ DeleteNewGRFInspectWindow()

void DeleteNewGRFInspectWindow | ( | GrfSpecFeature | feature,
|  | uint | index
| ) |  |

Delete inspect window for a given feature and index.

The index is normally an in-game location/identifier, such as a TileIndex or an IndustryID depending on the feature we want to inspect.

Parameters

  feature | The feature we want to delete the window for.
  index | The index/identifier of the feature to delete.

Definition at line 734 of file newgrf_debug_gui.cpp.

References DeleteWindowById(), GetInspectWindowNumber(), GSF_INVALID, InvalidateWindowData(), WC_LAND_INFO, and WC_NEWGRF_INSPECT.

Referenced by ReallyClearObjectTile().

## ◆ GetFeature()

static const NIFeature* GetFeature | ( | uint | window_number | ) |
| inline static

Get the NIFeature related to the window number.

Parameters

  window_number | The window to get the NIFeature for.

Returns
  the NIFeature, or NULL is there isn't one.

Definition at line 257 of file newgrf_debug_gui.cpp.

References _nifeatures, GetFeatureNum(), and GSF_FAKE_END.

Referenced by GetFeatureHelper(), IsNewGRFInspectable(), and NewGRFInspectWindow::OnClick().

## ◆ GetFeatureHelper()

static const NIHelper* GetFeatureHelper | ( | uint | window_number | ) |
| inline static

Get the NIHelper related to the window number.

Parameters

  window_number | The window to get the NIHelper for.

Precondition
  GetFeature(window_number) != NULL

Returns
  the NIHelper

Definition at line 269 of file newgrf_debug_gui.cpp.

References GetFeature(), and NIFeature::helper.

Referenced by NewGRFInspectWindow::OnClick(), and NewGRFInspectWindow::SetStringParameters().

## ◆ GetFeatureIndex()

static uint GetFeatureIndex | ( | uint | window_number | ) |
| inline static

Get the feature index related to the window number.

Parameters

  window_number | The window to get the feature index from.

Returns
  the feature index

Definition at line 57 of file newgrf_debug_gui.cpp.

References GB().

Referenced by NewGRFInspectWindow::DrawWidget(), NewGRFInspectWindow::GetFeatureIndex(), NewGRFInspectWindow::OnClick(), NewGRFInspectWindow::OnInvalidateData(), and NewGRFInspectWindow::SetStringParameters().

## ◆ GetFeatureNum()

static GrfSpecFeature GetFeatureNum | ( | uint | window_number | ) |
| inline static

Get the feature number related to the window number.

Parameters

  window_number | The window to get the feature number for.

Returns
  The feature number.

Definition at line 247 of file newgrf_debug_gui.cpp.

References GB().

Referenced by GetFeature(), NewGRFInspectWindow::HasChainIndex(), NewGRFInspectWindow::OnClick(), and NewGRFInspectWindow::OnQueryTextFinished().

## ◆ GetGrfSpecFeature() [1/2]

GrfSpecFeature GetGrfSpecFeature | ( | TileIndex | tile | ) |

Get the GrfSpecFeature associated with the tile.

Parameters

  tile | The tile to get the feature from.

Returns
  the GrfSpecFeature.

Definition at line 768 of file newgrf_debug_gui.cpp.

References GetTileType(), GSF_INVALID, and MP_RAILWAY.

Referenced by NIHVehicle::GetParent(), LandInfoWindow::IsNewGRFInspectable(), VehicleViewWindow::IsNewGRFInspectable(), LandInfoWindow::ShowNewGRFInspectWindow(), and VehicleViewWindow::ShowNewGRFInspectWindow().

## ◆ GetGrfSpecFeature() [2/2]

GrfSpecFeature GetGrfSpecFeature | ( | VehicleType | type | ) |

Get the GrfSpecFeature associated with the vehicle.

Parameters

  type | The vehicle type to get the feature from.

Returns
  the GrfSpecFeature.

Definition at line 792 of file newgrf_debug_gui.cpp.

References VEH_TRAIN.

## ◆ GetInspectWindowNumber()

static uint GetInspectWindowNumber | ( | GrfSpecFeature | feature,
|  | uint | index
| ) |  |
| inline static

Get the window number for the inspect window given a feature and index.

Parameters

  feature | The feature we want to inspect.
  index | The index/identifier of the feature to inspect.

Returns
  the InspectWindow (Window)Number

Definition at line 69 of file newgrf_debug_gui.cpp.

Referenced by DeleteNewGRFInspectWindow(), NIHVehicle::GetParent(), NIHStation::GetParent(), NIHHouse::GetParent(), NIHIndustryTile::GetParent(), NIHIndustry::GetParent(), NIHObject::GetParent(), NIHAirportTile::GetParent(), InvalidateNewGRFInspectWindow(), IsNewGRFInspectable(), and ShowNewGRFInspectWindow().

## ◆ InvalidateNewGRFInspectWindow()

void InvalidateNewGRFInspectWindow | ( | GrfSpecFeature | feature,
|  | uint | index
| ) |  |

Invalidate the inspect window for a given feature and index.

The index is normally an in-game location/identifier, such as a TileIndex or an IndustryID depending on the feature we want to inspect.

Parameters

  feature | The feature we want to invalidate the window for.
  index | The index/identifier of the feature to invalidate.

Definition at line 718 of file newgrf_debug_gui.cpp.

References GetInspectWindowNumber(), GSF_INVALID, InvalidateWindowData(), and WC_NEWGRF_INSPECT.

## ◆ IsNewGRFInspectable()

bool IsNewGRFInspectable | ( | GrfSpecFeature | feature,
|  | uint | index
| ) |  |

Can we inspect the data given a certain feature and index.

The index is normally an in-game location/identifier, such as a TileIndex or an IndustryID depending on the feature we want to inspect.

Parameters

  feature | The feature we want to inspect.
  index | The index/identifier of the feature to inspect.

Returns
  true if there is something to show.

Definition at line 756 of file newgrf_debug_gui.cpp.

References GetFeature(), GetInspectWindowNumber(), NIFeature::helper, and NIHelper::IsInspectable().

Referenced by LandInfoWindow::IsNewGRFInspectable(), IndustryViewWindow::IsNewGRFInspectable(), VehicleViewWindow::IsNewGRFInspectable(), and ShowNewGRFInspectWindow().

## ◆ ShowNewGRFInspectWindow()

void ShowNewGRFInspectWindow | ( | GrfSpecFeature | feature,
|  | uint | index,
|  | const uint32 | grfid
| ) |  |

Show the inspect window for a given feature and index.

The index is normally an in-game location/identifier, such as a TileIndex or an IndustryID depending on the feature we want to inspect.

Parameters

  feature | The feature we want to inspect.
  index | The index/identifier of the feature to inspect.
  grfid | GRFID of the item opening this window, or 0 if not opened by other window.

Definition at line 700 of file newgrf_debug_gui.cpp.

References GetInspectWindowNumber(), and IsNewGRFInspectable().

Referenced by NewGRFInspectWindow::OnClick(), and IndustryViewWindow::ShowNewGRFInspectWindow().

## Variable Documentation

## ◆ _nested_newgrf_inspect_chain_widgets

const NWidgetPart _nested_newgrf_inspect_chain_widgets[]
| static

Initial value:
= {
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_SHADEBOX, COLOUR_GREY),
NWidget(WWT_DEFSIZEBOX, COLOUR_GREY),
NWidget(WWT_STICKYBOX, COLOUR_GREY),
EndContainer(),
NWidget(WWT_PANEL, COLOUR_GREY),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_NGRFI_VEH_PREV), SetDataTip(AWV_DECREASE, STR_NULL),
NWidget(WWT_PUSHARROWBTN, COLOUR_GREY, WID_NGRFI_VEH_NEXT), SetDataTip(AWV_INCREASE, STR_NULL),
NWidget(WWT_EMPTY, COLOUR_GREY, WID_NGRFI_VEH_CHAIN), SetFill(1, 0), SetResize(1, 0),
EndContainer(),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PANEL, COLOUR_GREY, WID_NGRFI_MAINPANEL), SetMinimalSize(300, 0), SetScrollbar(WID_NGRFI_SCROLLBAR), EndContainer(),
NWidget(NWID_VERTICAL),
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_NGRFI_SCROLLBAR),
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
EndContainer(),
EndContainer(),
}
WWT_EMPTY
Empty widget, place holder to reserve space in widget array.
Definition: widget_type.h:48
WID_NGRFI_CAPTION
The caption bar of course.
Definition: newgrf_debug_widget.h:17
WID_NGRFI_VEH_CHAIN
Display for vehicle chain.
Definition: newgrf_debug_widget.h:21
SetResize
static NWidgetPart SetResize(int16 dx, int16 dy)
Widget part function for setting the resize step.
Definition: widget_type.h:930
NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:75
AWV_INCREASE
Arrow to the right or in case of RTL to the left.
Definition: widget_type.h:38
AWV_DECREASE
Arrow to the left or in case of RTL to the right.
Definition: widget_type.h:37
WID_NGRFI_VEH_PREV
Go to previous vehicle in chain.
Definition: newgrf_debug_widget.h:19
WWT_RESIZEBOX
Resize box (normally at bottom-right of a window)
Definition: widget_type.h:68
WID_NGRFI_MAINPANEL
Panel widget containing the actual data.
Definition: newgrf_debug_widget.h:22
WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:69
WWT_DEFSIZEBOX
Default window size box (at top-right of a window, between WWT_SHADEBOX and WWT_STICKYBOX) ...
Definition: widget_type.h:65
SetDataTip
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1014
SetMinimalSize
static NWidgetPart SetMinimalSize(int16 x, int16 y)
Widget part function for setting the minimal size.
Definition: widget_type.h:947
WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:50
NWidget
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new &#39;real&#39; widget.
Definition: widget_type.h:1114
WID_NGRFI_VEH_NEXT
Go to next vehicle in chain.
Definition: newgrf_debug_widget.h:20
WID_NGRFI_SCROLLBAR
Scrollbar.
Definition: newgrf_debug_widget.h:23
WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:61
NWID_VERTICAL
Vertical container.
Definition: widget_type.h:77
EndContainer
static NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME, WWT_INSET, or WWT_PANEL).
Definition: widget_type.h:999
WWT_PUSHARROWBTN
Normal push-button (no toggle button) with arrow caption.
Definition: widget_type.h:106
WWT_STICKYBOX
Sticky box (at top-right of a window, after WWT_DEFSIZEBOX)
Definition: widget_type.h:66
SetFill
static NWidgetPart SetFill(uint fill_x, uint fill_y)
Widget part function for setting filling.
Definition: widget_type.h:983
NWID_VSCROLLBAR
Vertical scrollbar.
Definition: widget_type.h:84
SetScrollbar
static NWidgetPart SetScrollbar(int index)
Attach a scrollbar to a widget.
Definition: widget_type.h:1095
WWT_SHADEBOX
Shade box (at top-right of a window, between WWT_DEBUGBOX and WWT_DEFSIZEBOX)
Definition: widget_type.h:64

Definition at line 635 of file newgrf_debug_gui.cpp.

## ◆ _nested_newgrf_inspect_widgets

const NWidgetPart _nested_newgrf_inspect_widgets[]
| static

Initial value:
= {
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_PUSHTXTBTN, COLOUR_GREY, WID_NGRFI_PARENT), SetDataTip(STR_NEWGRF_INSPECT_PARENT_BUTTON, STR_NEWGRF_INSPECT_PARENT_TOOLTIP),
NWidget(WWT_SHADEBOX, COLOUR_GREY),
NWidget(WWT_DEFSIZEBOX, COLOUR_GREY),
NWidget(WWT_STICKYBOX, COLOUR_GREY),
EndContainer(),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_PANEL, COLOUR_GREY, WID_NGRFI_MAINPANEL), SetMinimalSize(300, 0), SetScrollbar(WID_NGRFI_SCROLLBAR), EndContainer(),
NWidget(NWID_VERTICAL),
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_NGRFI_SCROLLBAR),
NWidget(WWT_RESIZEBOX, COLOUR_GREY),
EndContainer(),
EndContainer(),
}
WID_NGRFI_CAPTION
The caption bar of course.
Definition: newgrf_debug_widget.h:17
NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:75
WWT_RESIZEBOX
Resize box (normally at bottom-right of a window)
Definition: widget_type.h:68
WID_NGRFI_MAINPANEL
Panel widget containing the actual data.
Definition: newgrf_debug_widget.h:22
WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:69
WID_NGRFI_PARENT
Inspect the parent.
Definition: newgrf_debug_widget.h:18
WWT_DEFSIZEBOX
Default window size box (at top-right of a window, between WWT_SHADEBOX and WWT_STICKYBOX) ...
Definition: widget_type.h:65
SetDataTip
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1014
SetMinimalSize
static NWidgetPart SetMinimalSize(int16 x, int16 y)
Widget part function for setting the minimal size.
Definition: widget_type.h:947
WWT_PUSHTXTBTN
Normal push-button (no toggle button) with text caption.
Definition: widget_type.h:104
WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:50
NWidget
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new &#39;real&#39; widget.
Definition: widget_type.h:1114
WID_NGRFI_SCROLLBAR
Scrollbar.
Definition: newgrf_debug_widget.h:23
WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:61
NWID_VERTICAL
Vertical container.
Definition: widget_type.h:77
EndContainer
static NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME, WWT_INSET, or WWT_PANEL).
Definition: widget_type.h:999
WWT_STICKYBOX
Sticky box (at top-right of a window, after WWT_DEFSIZEBOX)
Definition: widget_type.h:66
NWID_VSCROLLBAR
Vertical scrollbar.
Definition: widget_type.h:84
SetScrollbar
static NWidgetPart SetScrollbar(int index)
Attach a scrollbar to a widget.
Definition: widget_type.h:1095
WWT_SHADEBOX
Shade box (at top-right of a window, between WWT_DEBUGBOX and WWT_DEFSIZEBOX)
Definition: widget_type.h:64

Definition at line 659 of file newgrf_debug_gui.cpp.

## ◆ _newgrf_debug_sprite_picker

NewGrfDebugSpritePicker _newgrf_debug_sprite_picker = { SPM_NONE, NULL, 0, SmallVector<SpriteID, 256>() }

The sprite picker.

Definition at line 50 of file newgrf_debug_gui.cpp.

## ◆ CBM_NO_BIT

const int CBM_NO_BIT = UINT8_MAX
| static

Mask to show no bit needs to be enabled for the callback.

Definition at line 106 of file newgrf_debug_gui.cpp.