OpenTTD
|
GUI that shows a small map of the world with metadata like owner or height. More...
#include "stdafx.h"
#include "clear_map.h"
#include "industry.h"
#include "station_map.h"
#include "landscape.h"
#include "tree_map.h"
#include "viewport_func.h"
#include "town.h"
#include "tunnelbridge_map.h"
#include "core/endian_func.hpp"
#include "vehicle_base.h"
#include "sound_func.h"
#include "window_func.h"
#include "company_base.h"
#include "smallmap_gui.h"
#include "table/strings.h"
#include <bitset>
#include "safeguards.h"
#include "table/heightmap_colours.h"
Go to the source code of this file.
Data Structures | |
struct | SmallMapColourScheme |
Colour scheme of the smallmap. More... | |
struct | AndOr |
class | NWidgetSmallmapDisplay |
Custom container class for displaying smallmap with a vertically resizing legend panel. More... |
Macros | |
#define | MK(a, b) {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, false} |
Macro for ordinary entry of LegendAndColour. | |
#define | MC(col_break) {0, STR_TINY_BLACK_HEIGHT, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, col_break} |
Macro for a height legend entry with configurable colour. | |
#define | MO(a, b) {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, false} |
Macro for non-company owned property entry of LegendAndColour. | |
#define | MOEND() {0, 0, INVALID_INDUSTRYTYPE, 0, OWNER_NONE, true, true, false} |
Macro used for forcing a rebuild of the owner legend the first time it is used. | |
#define | MKEND() {0, STR_NULL, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, true, false} |
Macro for end of list marker in arrays of LegendAndColour. | |
#define | MS(a, b) {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, true} |
Macro for break marker in arrays of LegendAndColour. | |
#define | MKCOLOUR(x) TO_LE32X(x) |
#define | MKCOLOUR_XXXX(x) (MKCOLOUR(0x01010101) * (uint)(x)) |
#define | MKCOLOUR_X0X0(x) (MKCOLOUR(0x01000100) * (uint)(x)) |
#define | MKCOLOUR_0X0X(x) (MKCOLOUR(0x00010001) * (uint)(x)) |
#define | MKCOLOUR_0XX0(x) (MKCOLOUR(0x00010100) * (uint)(x)) |
#define | MKCOLOUR_X00X(x) (MKCOLOUR(0x01000001) * (uint)(x)) |
#define | MKCOLOUR_XYXY(x, y) (MKCOLOUR_X0X0(x) | MKCOLOUR_0X0X(y)) |
#define | MKCOLOUR_XYYX(x, y) (MKCOLOUR_X00X(x) | MKCOLOUR_0XX0(y)) |
#define | MKCOLOUR_0000 MKCOLOUR_XXXX(0x00) |
#define | MKCOLOUR_0FF0 MKCOLOUR_0XX0(0xFF) |
#define | MKCOLOUR_F00F MKCOLOUR_X00X(0xFF) |
#define | MKCOLOUR_FFFF MKCOLOUR_XXXX(0xFF) |
Functions | |
void | BuildIndustriesLegend () |
Fills an array for the industries legends. | |
void | BuildLinkStatsLegend () |
Populate legend table for the link stat view. | |
void | BuildLandLegend () |
(Re)build the colour tables for the legends. | |
void | BuildOwnerLegend () |
Completes the array for the owned property legend. | |
static uint32 | ApplyMask (uint32 colour, const AndOr *mask) |
static TileType | GetEffectiveTileType (TileIndex tile) |
static uint32 | GetSmallMapContoursPixels (TileIndex tile, TileType t) |
Return the colour a tile would be displayed with in the small map in mode "Contour". | |
static uint32 | GetSmallMapVehiclesPixels (TileIndex tile, TileType t) |
Return the colour a tile would be displayed with in the small map in mode "Vehicles". | |
static uint32 | GetSmallMapIndustriesPixels (TileIndex tile, TileType t) |
Return the colour a tile would be displayed with in the small map in mode "Industries". | |
static uint32 | GetSmallMapRoutesPixels (TileIndex tile, TileType t) |
Return the colour a tile would be displayed with in the small map in mode "Routes". | |
static uint32 | GetSmallMapLinkStatsPixels (TileIndex tile, TileType t) |
Return the colour a tile would be displayed with in the small map in mode "link stats". | |
static uint32 | GetSmallMapVegetationPixels (TileIndex tile, TileType t) |
Return the colour a tile would be displayed with in the smallmap in mode "Vegetation". | |
static uint32 | GetSmallMapOwnerPixels (TileIndex tile, TileType t) |
Return the colour a tile would be displayed with in the small map in mode "Owner". | |
static NWidgetBase * | SmallMapDisplay (int *biggest_index) |
void | ShowSmallMap () |
Show the smallmap window. | |
bool | ScrollMainWindowTo (int x, int y, int z, bool instant) |
Scrolls the main window to given coordinates. |
Variables | |
static int | _smallmap_industry_count |
Number of used industries. | |
static int | _smallmap_company_count |
Number of entries in the owner legend. | |
static int | _smallmap_cargo_count |
Number of cargos in the link stats legend. | |
static uint8 | _linkstat_colours_in_legenda [] = {0, 1, 3, 5, 7, 9, 11} |
Link stat colours shown in legenda. | |
static const int | NUM_NO_COMPANY_ENTRIES = 4 |
Number of entries in the owner legend that are not companies. | |
static const uint8 | PC_ROUGH_LAND = 0x52 |
Dark green palette colour for rough land. | |
static const uint8 | PC_GRASS_LAND = 0x54 |
Dark green palette colour for grass land. | |
static const uint8 | PC_BARE_LAND = 0x37 |
Brown palette colour for bare land. | |
static const uint8 | PC_FIELDS = 0x25 |
Light brown palette colour for fields. | |
static const uint8 | PC_TREES = 0x57 |
Green palette colour for trees. | |
static const uint8 | PC_WATER = 0xCA |
Dark blue palette colour for water. | |
static LegendAndColour | _legend_land_contours [] |
Legend text giving the colours to look for on the minimap. | |
static const LegendAndColour | _legend_vehicles [] |
static const LegendAndColour | _legend_routes [] |
static const LegendAndColour | _legend_vegetation [] |
static LegendAndColour | _legend_land_owners [NUM_NO_COMPANY_ENTRIES+MAX_COMPANIES+1] |
static LegendAndColour | _legend_linkstats [NUM_CARGO+lengthof(_linkstat_colours_in_legenda)+1] |
Legend entries for the link stats view. | |
static LegendAndColour | _legend_from_industries [NUM_INDUSTRYTYPES+1] |
Allow room for all industries, plus a terminator entry This is required in order to have the industry slots all filled up. | |
static uint | _industry_to_list_pos [NUM_INDUSTRYTYPES] |
For connecting industry type to position in industries list(small map legend) | |
static bool | _smallmap_show_heightmap = false |
Show heightmap in industry and owner mode of smallmap window. | |
static IndustryType | _smallmap_industry_highlight = INVALID_INDUSTRYTYPE |
Highlight a specific industry type. | |
static bool | _smallmap_industry_highlight_state |
State of highlight blinking. | |
static uint | _company_to_list_pos [MAX_COMPANIES] |
For connecting company ID to position in owner list (small map legend) | |
static const LegendAndColour *const | _legend_table [] |
static SmallMapColourScheme | _heightmap_schemes [] |
Available colour schemes for height maps. | |
static const AndOr | _smallmap_contours_andor [] |
Colour masks for "Contour" and "Routes" modes. | |
static const AndOr | _smallmap_vehicles_andor [] |
Colour masks for "Vehicles", "Industry", and "Vegetation" modes. | |
static const byte | _tiletype_importance [] |
Mapping of tile type to importance of the tile (higher number means more interesting to show). | |
static const uint32 | _vegetation_clear_bits [] |
static const byte | _vehicle_type_colours [6] |
Vehicle colours in #SMT_VEHICLES mode. | |
static const NWidgetPart | _nested_smallmap_display [] |
Widget parts of the smallmap display. | |
static const NWidgetPart | _nested_smallmap_bar [] |
Widget parts of the smallmap legend bar + image buttons. | |
static const NWidgetPart | _nested_smallmap_widgets [] |
static WindowDesc | _smallmap_desc (WDP_AUTO,"smallmap", 484, 314, WC_SMALLMAP, WC_NONE, 0, _nested_smallmap_widgets, lengthof(_nested_smallmap_widgets)) |
GUI that shows a small map of the world with metadata like owner or height.
Definition in file smallmap_gui.cpp.
#define MC | ( | col_break | ) | {0, STR_TINY_BLACK_HEIGHT, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, col_break} |
Macro for a height legend entry with configurable colour.
Definition at line 55 of file smallmap_gui.cpp.
#define MOEND | ( | ) | {0, 0, INVALID_INDUSTRYTYPE, 0, OWNER_NONE, true, true, false} |
Macro used for forcing a rebuild of the owner legend the first time it is used.
Definition at line 61 of file smallmap_gui.cpp.
#define MS | ( | a, | |
b | |||
) | {a, b, INVALID_INDUSTRYTYPE, 0, INVALID_COMPANY, true, false, true} |
Macro for break marker in arrays of LegendAndColour.
It will have valid data, though
Definition at line 70 of file smallmap_gui.cpp.
Return the colour a tile would be displayed with in the small map in mode "Contour".
tile | The tile of which we would like to get the colour. |
t | Effective tile type of the tile (see #GetEffectiveTileType). |
Definition at line 438 of file smallmap_gui.cpp.
References _settings_client, ClientSettings::gui, SmallMapColourScheme::height_colours, GUISettings::smallmap_land_colour, and TileHeight().
Referenced by GetSmallMapLinkStatsPixels(), and SmallMapWindow::GetTileColours().
Return the colour a tile would be displayed with in the small map in mode "Industries".
tile | The tile of which we would like to get the colour. |
t | Effective tile type of the tile (see #GetEffectiveTileType). |
Definition at line 464 of file smallmap_gui.cpp.
References _industry_to_list_pos, _settings_client, _smallmap_industry_highlight, _smallmap_industry_highlight_state, _smallmap_show_heightmap, SmallMapColourScheme::default_colour, Industry::GetByTile(), GetIndustrySpec(), ClientSettings::gui, SmallMapColourScheme::height_colours, IsTileOnWater(), MP_CLEAR, MP_INDUSTRY, MP_WATER, PC_WHITE, GUISettings::smallmap_land_colour, TileHeight(), and Industry::type.
Referenced by SmallMapWindow::GetTileColours().
Return the colour a tile would be displayed with in the small map in mode "link stats".
tile | The tile of which we would like to get the colour. |
t | Effective tile type of the tile (see #GetEffectiveTileType). |
Definition at line 522 of file smallmap_gui.cpp.
References _smallmap_show_heightmap, GetSmallMapContoursPixels(), and GetSmallMapRoutesPixels().
Referenced by SmallMapWindow::GetTileColours().
Return the colour a tile would be displayed with in the small map in mode "Owner".
tile | The tile of which we would like to get the colour. |
t | Effective tile type of the tile (see #GetEffectiveTileType). |
Definition at line 572 of file smallmap_gui.cpp.
References _company_to_list_pos, _settings_client, _smallmap_show_heightmap, SmallMapColourScheme::default_colour, GetTileOwner(), ClientSettings::gui, SmallMapColourScheme::height_colours, MAX_COMPANIES, MP_HOUSE, MP_INDUSTRY, MP_WATER, OWNER_NONE, OWNER_TOWN, OWNER_WATER, PC_DARK_GREY, PC_DARK_RED, PC_WATER, GUISettings::smallmap_land_colour, and TileHeight().
Referenced by SmallMapWindow::GetTileColours().
Return the colour a tile would be displayed with in the small map in mode "Routes".
tile | The tile of which we would like to get the colour. |
t | Effective tile type of the tile (see #GetEffectiveTileType). |
Definition at line 489 of file smallmap_gui.cpp.
References _settings_client, SmallMapColourScheme::default_colour, GetRailType(), GetRailTypeInfo(), GetStationType(), ClientSettings::gui, MP_RAILWAY, MP_STATION, PC_LIGHT_BLUE, PC_ORANGE, PC_RED, PC_VERY_DARK_BROWN, PC_YELLOW, and GUISettings::smallmap_land_colour.
Referenced by GetSmallMapLinkStatsPixels(), and SmallMapWindow::GetTileColours().
Return the colour a tile would be displayed with in the smallmap in mode "Vegetation".
tile | The tile of which we would like to get the colour. |
t | Effective tile type of the tile (see #GetEffectiveTileType). |
Definition at line 545 of file smallmap_gui.cpp.
References _settings_game, CLEAR_GRASS, GameSettings::game_creation, GetClearDensity(), GetClearGround(), GetTreeGround(), IsClearGround(), IsTileForestIndustry(), GameCreationSettings::landscape, MP_CLEAR, MP_INDUSTRY, MP_TREES, PC_BARE_LAND, PC_DARK_RED, PC_GRASS_LAND, PC_GREEN, PC_LIGHT_BLUE, PC_ORANGE, PC_TREES, TREE_GROUND_ROUGH_SNOW, and TREE_GROUND_SNOW_DESERT.
Referenced by SmallMapWindow::GetTileColours().
Return the colour a tile would be displayed with in the small map in mode "Vehicles".
tile | The tile of which we would like to get the colour. |
t | Effective tile type of the tile (see #GetEffectiveTileType). |
Definition at line 451 of file smallmap_gui.cpp.
References _settings_client, SmallMapColourScheme::default_colour, ClientSettings::gui, and GUISettings::smallmap_land_colour.
Referenced by SmallMapWindow::GetTileColours().
bool ScrollMainWindowTo | ( | int | x, |
int | y, | ||
int | z, | ||
bool | instant | ||
) |
Scrolls the main window to given coordinates.
x | x coordinate |
y | y coordinate |
z | z coordinate; -1 to scroll to terrain height |
instant | scroll instantly (meaningful only when smooth_scrolling is active) |
Definition at line 1839 of file smallmap_gui.cpp.
References FindWindowById(), ScrollWindowTo(), SmallMapWindow::SmallMapCenterOnCurrentPos(), WC_MAIN_WINDOW, and WC_SMALLMAP.
Referenced by HandleViewportScroll(), NewsWindow::OnClick(), VehicleViewWindow::OnClick(), MainWindow::OnHotkey(), and ScrollMainWindowToTile().
|
static |
Available colour schemes for height maps.
Definition at line 273 of file smallmap_gui.cpp.
|
static |
Legend text giving the colours to look for on the minimap.
Definition at line 73 of file smallmap_gui.cpp.
|
static |
Definition at line 138 of file smallmap_gui.cpp.
|
static |
Legend entries for the link stats view.
Definition at line 155 of file smallmap_gui.cpp.
Referenced by SmallMapWindow::OnClick().
|
static |
Definition at line 109 of file smallmap_gui.cpp.
|
static |
Definition at line 236 of file smallmap_gui.cpp.
|
static |
Definition at line 122 of file smallmap_gui.cpp.
|
static |
Definition at line 98 of file smallmap_gui.cpp.
|
static |
Link stat colours shown in legenda.
Definition at line 40 of file smallmap_gui.cpp.
Referenced by BuildLinkStatsLegend(), and SmallMapWindow::OnInit().
|
static |
Widget parts of the smallmap legend bar + image buttons.
Definition at line 1739 of file smallmap_gui.cpp.
|
static |
Widget parts of the smallmap display.
Definition at line 1732 of file smallmap_gui.cpp.
|
static |
Definition at line 1790 of file smallmap_gui.cpp.
|
static |
Colour masks for "Contour" and "Routes" modes.
Definition at line 368 of file smallmap_gui.cpp.
|
static |
Show heightmap in industry and owner mode of smallmap window.
Definition at line 164 of file smallmap_gui.cpp.
Referenced by GetSmallMapIndustriesPixels(), GetSmallMapLinkStatsPixels(), GetSmallMapOwnerPixels(), and SmallMapWindow::OnClick().
|
static |
Colour masks for "Vehicles", "Industry", and "Vegetation" modes.
Definition at line 384 of file smallmap_gui.cpp.
|
static |
Mapping of tile type to importance of the tile (higher number means more interesting to show).
Definition at line 400 of file smallmap_gui.cpp.
|
static |
Definition at line 527 of file smallmap_gui.cpp.
|
static |
Vehicle colours in #SMT_VEHICLES mode.
Indexed by VehicleTypeByte.
Definition at line 598 of file smallmap_gui.cpp.