smallmap_gui.cpp File Reference

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 "window_gui.h"
#include "tree_map.h"
#include "viewport_func.h"
#include "gfx_func.h"
#include "town.h"
#include "blitter/factory.hpp"
#include "tunnelbridge_map.h"
#include "strings_func.h"
#include "core/endian_func.hpp"
#include "vehicle_base.h"
#include "sound_func.h"
#include "window_func.h"
#include "table/strings.h"
#include "table/sprites.h"

Go to the source code of this file.

Data Structures

struct  LegendAndColour
 Structure for holding relevant data for legends in small map. More...
struct  AndOr
class  SmallMapWindow
 Class managing the smallmap window. More...
class  NWidgetSmallmapDisplay
 Custom container class for displaying smallmap with a vertically resizing legend panel. More...

Defines

#define MK(a, b)   {a, b, INVALID_INDUSTRYTYPE, true, false, false}
 Macro for ordinary entry of LegendAndColour.
#define MKEND()   {0, STR_NULL, INVALID_INDUSTRYTYPE, true, true, false}
 Macro for end of list marker in arrays of LegendAndColour.
#define MS(a, b)   {a, b, INVALID_INDUSTRYTYPE, true, false, true}
 Macro for break marker in arrays of LegendAndColour.
#define MKCOLOUR(x)   TO_LE32X(x)

Typedefs

typedef uint32 GetSmallMapPixels (TileIndex tile)
 Typedef callthrough function.

Enumerations

enum  SmallMapWindowWidgets {
  SM_WIDGET_CAPTION, SM_WIDGET_MAP_BORDER, SM_WIDGET_MAP, SM_WIDGET_LEGEND,
  SM_WIDGET_CONTOUR, SM_WIDGET_VEHICLES, SM_WIDGET_INDUSTRIES, SM_WIDGET_ROUTES,
  SM_WIDGET_VEGETATION, SM_WIDGET_OWNERS, SM_WIDGET_CENTERMAP, SM_WIDGET_TOGGLETOWNNAME,
  SM_WIDGET_SELECTINDUSTRIES, SM_WIDGET_ENABLEINDUSTRIES, SM_WIDGET_DISABLEINDUSTRIES
}
 Widget numbers of the small map window. More...

Functions

void BuildIndustriesLegend ()
 Fills an array for the industries legends.
 assert_compile (lengthof(_map_height_bits)==MAX_TILE_HEIGHT+1)
static uint32 ApplyMask (uint32 colour, const AndOr *mask)
static TileType GetEffectiveTileType (TileIndex tile)
static uint32 GetSmallMapContoursPixels (TileIndex tile)
 Return the colour a tile would be displayed with in the small map in mode "Contour".
static uint32 GetSmallMapVehiclesPixels (TileIndex tile)
 Return the colour a tile would be displayed with in the small map in mode "Vehicles".
static uint32 GetSmallMapIndustriesPixels (TileIndex tile)
 Return the colour a tile would be displayed with in the small map in mode "Industries".
static uint32 GetSmallMapRoutesPixels (TileIndex tile)
 Return the colour a tile would be displayed with in the small map in mode "Routes".
static uint32 GetSmallMapVegetationPixels (TileIndex tile)
static uint32 GetSmallMapOwnerPixels (TileIndex tile)
 Return the colour a tile would be displayed with in the small map in mode "Owner".
static NWidgetBaseSmallMapDisplay (int *biggest_index)
void ShowSmallMap ()
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 const 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 const LegendAndColour _legend_land_owners []
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 indutry slots all filled up.
static uint _industry_to_list_pos [NUM_INDUSTRYTYPES]
static const LegendAndColour *const _legend_table []
static const uint32 _map_height_bits []
 Height encodings; MAX_TILE_HEIGHT + 1 levels, from 0 to MAX_TILE_HEIGHT.
static const AndOr _smallmap_contours_andor []
static const AndOr _smallmap_vehicles_andor []
static const AndOr _smallmap_vegetation_andor []
static const uint32 _vegetation_clear_bits []
static uint32 _owner_colours [OWNER_END+1]
static const uint32 _smallmap_mask_left [3]
static const uint32 _smallmap_mask_right []
static GetSmallMapPixels *const _smallmap_draw_procs []
static const byte _vehicle_type_colours [6]
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 const WindowDesc _smallmap_desc (WDP_AUTO, 446, 314, WC_SMALLMAP, WC_NONE, WDF_UNCLICK_BUTTONS, _nested_smallmap_widgets, lengthof(_nested_smallmap_widgets))


Detailed Description

GUI that shows a small map of the world with metadata like owner or height.

Definition in file smallmap_gui.cpp.


Define Documentation

#define MS ( a,
 )     {a, b, INVALID_INDUSTRYTYPE, true, false, true}

Macro for break marker in arrays of LegendAndColour.

It will have valid data, though

Definition at line 60 of file smallmap_gui.cpp.


Enumeration Type Documentation

Widget numbers of the small map window.

Enumerator:
SM_WIDGET_LEGEND  Display of smallmap legend.

Definition at line 34 of file smallmap_gui.cpp.


Function Documentation

static uint32 GetSmallMapContoursPixels ( TileIndex  tile  )  [inline, static]

Return the colour a tile would be displayed with in the small map in mode "Contour".

Parameters:
tile The tile of which we would like to get the colour.
Returns:
The colour of tile in the small map in mode "Contour"

Definition at line 289 of file smallmap_gui.cpp.

References _map_height_bits, and TileHeight().

static uint32 GetSmallMapIndustriesPixels ( TileIndex  tile  )  [inline, static]

Return the colour a tile would be displayed with in the small map in mode "Industries".

Parameters:
tile The tile of which we would like to get the colour.
Returns:
The colour of tile in the small map in mode "Industries"

Definition at line 315 of file smallmap_gui.cpp.

References Industry::GetByTile(), GetIndustrySpec(), IndustrySpec::map_colour, MP_CLEAR, and MP_INDUSTRY.

static uint32 GetSmallMapOwnerPixels ( TileIndex  tile  )  [inline, static]

Return the colour a tile would be displayed with in the small map in mode "Owner".

Parameters:
tile The tile of which we would like to get the colour.
Returns:
The colour of tile in the small map in mode "Owner"

Definition at line 400 of file smallmap_gui.cpp.

References GetTileOwner(), GetTileType(), MP_HOUSE, MP_INDUSTRY, OWNER_END, and OWNER_TOWN.

static uint32 GetSmallMapRoutesPixels ( TileIndex  tile  )  [inline, static]

Return the colour a tile would be displayed with in the small map in mode "Routes".

Parameters:
tile The tile of which we would like to get the colour.
Returns:
The colour of tile in the small map in mode "Routes"

Definition at line 338 of file smallmap_gui.cpp.

References GetStationType(), and MP_STATION.

static uint32 GetSmallMapVehiclesPixels ( TileIndex  tile  )  [inline, static]

Return the colour a tile would be displayed with in the small map in mode "Vehicles".

Parameters:
tile The tile of which we would like to get the colour.
Returns:
The colour of tile in the small map in mode "Vehicles"

Definition at line 302 of file smallmap_gui.cpp.

bool ScrollMainWindowTo ( int  x,
int  y,
int  z,
bool  instant 
)

Scrolls the main window to given coordinates.

Parameters:
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)
Returns:
did the viewport position change?

Definition at line 1295 of file smallmap_gui.cpp.

References FindWindowById(), ScrollWindowTo(), and SmallMapWindow::SmallMapCenterOnCurrentPos().

Referenced by VehicleViewWindow::OnClick(), and NewsWindow::OnClick().


Variable Documentation

Initial value:

 {
  MK(0x5A, STR_SMALLMAP_LEGENDA_100M),
  MK(0x5C, STR_SMALLMAP_LEGENDA_200M),
  MK(0x5E, STR_SMALLMAP_LEGENDA_300M),
  MK(0x1F, STR_SMALLMAP_LEGENDA_400M),
  MK(0x27, STR_SMALLMAP_LEGENDA_500M),

  MS(0xD7, STR_SMALLMAP_LEGENDA_ROADS),
  MK(0x0A, STR_SMALLMAP_LEGENDA_RAILROADS),
  MK(0x98, STR_SMALLMAP_LEGENDA_STATIONS_AIRPORTS_DOCKS),
  MK(0xB5, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES),
  MK(0x0F, STR_SMALLMAP_LEGENDA_VEHICLES),

}
Legend text giving the colours to look for on the minimap.

Definition at line 73 of file smallmap_gui.cpp.

const LegendAndColour _legend_land_owners[] [static]

Initial value:

 {
  MK(0xCA, STR_SMALLMAP_LEGENDA_WATER),
  MK(0x54, STR_SMALLMAP_LEGENDA_NO_OWNER),
  MK(0xB4, STR_SMALLMAP_LEGENDA_TOWNS),
  MK(0x20, STR_SMALLMAP_LEGENDA_INDUSTRIES),

}

Definition at line 128 of file smallmap_gui.cpp.

const LegendAndColour _legend_routes[] [static]

Initial value:

 {
  MK(0xD7, STR_SMALLMAP_LEGENDA_ROADS),
  MK(0x0A, STR_SMALLMAP_LEGENDA_RAILROADS),
  MK(0xB5, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES),

  MS(0x56, STR_SMALLMAP_LEGENDA_RAILROAD_STATION),
  MK(0xC2, STR_SMALLMAP_LEGENDA_TRUCK_LOADING_BAY),
  MK(0xBF, STR_SMALLMAP_LEGENDA_BUS_STATION),
  MK(0xB8, STR_SMALLMAP_LEGENDA_AIRPORT_HELIPORT),
  MK(0x98, STR_SMALLMAP_LEGENDA_DOCK),

}

Definition at line 99 of file smallmap_gui.cpp.

const LegendAndColour* const _legend_table[] [static]

Initial value:

 {
  _legend_land_contours,
  _legend_vehicles,
  _legend_from_industries,
  _legend_routes,
  _legend_vegetation,
  _legend_land_owners,
}

Definition at line 175 of file smallmap_gui.cpp.

const LegendAndColour _legend_vegetation[] [static]

Initial value:

 {
  MK(0x52, STR_SMALLMAP_LEGENDA_ROUGH_LAND),
  MK(0x54, STR_SMALLMAP_LEGENDA_GRASS_LAND),
  MK(0x37, STR_SMALLMAP_LEGENDA_BARE_LAND),
  MK(0x25, STR_SMALLMAP_LEGENDA_FIELDS),
  MK(0x57, STR_SMALLMAP_LEGENDA_TREES),
  MK(0xD0, STR_SMALLMAP_LEGENDA_FOREST),

  MS(0x0A, STR_SMALLMAP_LEGENDA_ROCKS),
  MK(0xC2, STR_SMALLMAP_LEGENDA_DESERT),
  MK(0x98, STR_SMALLMAP_LEGENDA_SNOW),
  MK(0xD7, STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES),
  MK(0xB5, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES),

}

Definition at line 112 of file smallmap_gui.cpp.

const LegendAndColour _legend_vehicles[] [static]

Initial value:

 {
  MK(0xB8, STR_SMALLMAP_LEGENDA_TRAINS),
  MK(0xBF, STR_SMALLMAP_LEGENDA_ROAD_VEHICLES),
  MK(0x98, STR_SMALLMAP_LEGENDA_SHIPS),
  MK(0x0F, STR_SMALLMAP_LEGENDA_AIRCRAFT),

  MS(0xD7, STR_SMALLMAP_LEGENDA_TRANSPORT_ROUTES),
  MK(0xB5, STR_SMALLMAP_LEGENDA_BUILDINGS_INDUSTRIES),

}

Definition at line 88 of file smallmap_gui.cpp.

const uint32 _map_height_bits[] [static]

Initial value:

 {
  MKCOLOUR(0x5A5A5A5A),
  MKCOLOUR(0x5A5B5A5B),
  MKCOLOUR(0x5B5B5B5B),
  MKCOLOUR(0x5B5C5B5C),
  MKCOLOUR(0x5C5C5C5C),
  MKCOLOUR(0x5C5D5C5D),
  MKCOLOUR(0x5D5D5D5D),
  MKCOLOUR(0x5D5E5D5E),
  MKCOLOUR(0x5E5E5E5E),
  MKCOLOUR(0x5E5F5E5F),
  MKCOLOUR(0x5F5F5F5F),
  MKCOLOUR(0x5F1F5F1F),
  MKCOLOUR(0x1F1F1F1F),
  MKCOLOUR(0x1F271F27),
  MKCOLOUR(0x27272727),
  MKCOLOUR(0x27272727),
}
Height encodings; MAX_TILE_HEIGHT + 1 levels, from 0 to MAX_TILE_HEIGHT.

Definition at line 189 of file smallmap_gui.cpp.

Referenced by GetSmallMapContoursPixels().

Initial value:

 {
  NWidget(WWT_PANEL, COLOUR_BROWN),
    NWidget(NWID_HORIZONTAL),
      NWidget(WWT_EMPTY, INVALID_COLOUR, SM_WIDGET_LEGEND), SetResize(1, 1),
      NWidget(NWID_VERTICAL),
        
        NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
          NWidget(WWT_PUSHIMGBTN, COLOUR_BROWN, SM_WIDGET_CENTERMAP), SetDataTip(SPR_IMG_SMALLMAP, STR_SMALLMAP_CENTER),
          NWidget(WWT_IMGBTN, COLOUR_BROWN, SM_WIDGET_CONTOUR), SetDataTip(SPR_IMG_SHOW_COUNTOURS, STR_SMALLMAP_TOOLTIP_SHOW_LAND_CONTOURS_ON_MAP),
          NWidget(WWT_IMGBTN, COLOUR_BROWN, SM_WIDGET_VEHICLES), SetDataTip(SPR_IMG_SHOW_VEHICLES, STR_SMALLMAP_TOOLTIP_SHOW_VEHICLES_ON_MAP),
          NWidget(WWT_IMGBTN, COLOUR_BROWN, SM_WIDGET_INDUSTRIES), SetDataTip(SPR_IMG_INDUSTRY, STR_SMALLMAP_TOOLTIP_SHOW_INDUSTRIES_ON_MAP),
        EndContainer(),
        
        NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
          NWidget(WWT_IMGBTN, COLOUR_BROWN, SM_WIDGET_TOGGLETOWNNAME), SetDataTip(SPR_IMG_TOWN, STR_SMALLMAP_TOOLTIP_TOGGLE_TOWN_NAMES_ON_OFF),
          NWidget(WWT_IMGBTN, COLOUR_BROWN, SM_WIDGET_ROUTES), SetDataTip(SPR_IMG_SHOW_ROUTES, STR_SMALLMAP_TOOLTIP_SHOW_TRANSPORT_ROUTES_ON),
          NWidget(WWT_IMGBTN, COLOUR_BROWN, SM_WIDGET_VEGETATION), SetDataTip(SPR_IMG_PLANTTREES, STR_SMALLMAP_TOOLTIP_SHOW_VEGETATION_ON_MAP),
          NWidget(WWT_IMGBTN, COLOUR_BROWN, SM_WIDGET_OWNERS), SetDataTip(SPR_IMG_COMPANY_GENERAL, STR_SMALLMAP_TOOLTIP_SHOW_LAND_OWNERS_ON_MAP),
        EndContainer(),
        NWidget(NWID_SPACER), SetResize(0, 1),
      EndContainer(),
    EndContainer(),
  EndContainer(),
}
Widget parts of the smallmap legend bar + image buttons.

Definition at line 1214 of file smallmap_gui.cpp.

Initial value:

 {
  NWidget(WWT_PANEL, COLOUR_BROWN, SM_WIDGET_MAP_BORDER),
    NWidget(WWT_INSET, COLOUR_BROWN, SM_WIDGET_MAP), SetMinimalSize(346, 140), SetResize(1, 1), SetPadding(2, 2, 2, 2), EndContainer(),
  EndContainer(),
}
Widget parts of the smallmap display.

Definition at line 1207 of file smallmap_gui.cpp.

const NWidgetPart _nested_smallmap_widgets[] [static]

Initial value:

 {
  NWidget(NWID_HORIZONTAL),
    NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
    NWidget(WWT_CAPTION, COLOUR_BROWN, SM_WIDGET_CAPTION), SetDataTip(STR_SMALLMAP_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
    NWidget(WWT_SHADEBOX, COLOUR_BROWN),
    NWidget(WWT_STICKYBOX, COLOUR_BROWN),
  EndContainer(),
  NWidgetFunction(SmallMapDisplay), 
  
  NWidget(NWID_HORIZONTAL),
    NWidget(WWT_PANEL, COLOUR_BROWN),
      NWidget(NWID_HORIZONTAL),
        NWidget(NWID_SELECTION, INVALID_COLOUR, SM_WIDGET_SELECTINDUSTRIES),
          NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
            NWidget(WWT_TEXTBTN, COLOUR_BROWN, SM_WIDGET_ENABLEINDUSTRIES), SetMinimalSize(100, 12), SetDataTip(STR_SMALLMAP_ENABLE_ALL, STR_NULL),
            NWidget(WWT_TEXTBTN, COLOUR_BROWN, SM_WIDGET_DISABLEINDUSTRIES), SetMinimalSize(100, 12), SetDataTip(STR_SMALLMAP_DISABLE_ALL, STR_NULL),
          EndContainer(),
          NWidget(NWID_SPACER), SetFill(1, 1),
        EndContainer(),
        NWidget(NWID_SPACER), SetFill(1, 0), SetResize(1, 0),
      EndContainer(),
    EndContainer(),
    NWidget(WWT_RESIZEBOX, COLOUR_BROWN),
  EndContainer(),
}

Definition at line 1249 of file smallmap_gui.cpp.

const AndOr _smallmap_contours_andor[] [static]

Initial value:

 {
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0x000A0A00), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00D7D700), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00B5B500), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0x98989898), MKCOLOUR(0x00000000)},
  {MKCOLOUR(0xCACACACA), MKCOLOUR(0x00000000)},
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0xB5B5B5B5), MKCOLOUR(0x00000000)},
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0x00B5B500), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x000A0A00), MKCOLOUR(0xFF0000FF)},
}

Definition at line 220 of file smallmap_gui.cpp.

GetSmallMapPixels* const _smallmap_draw_procs[] [static]

const uint32 _smallmap_mask_left[3] [static]

Initial value:

 {
  MKCOLOUR(0xFF000000),
  MKCOLOUR(0xFFFF0000),
  MKCOLOUR(0xFFFFFF00),
}

Definition at line 418 of file smallmap_gui.cpp.

const uint32 _smallmap_mask_right[] [static]

Initial value:

 {
  MKCOLOUR(0x000000FF),
  MKCOLOUR(0x0000FFFF),
  MKCOLOUR(0x00FFFFFF),
}

Definition at line 424 of file smallmap_gui.cpp.

const AndOr _smallmap_vegetation_andor[] [static]

Initial value:

 {
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0x00D7D700), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00D7D700), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00B5B500), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00575700), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00D7D700), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0xCACACACA), MKCOLOUR(0x00000000)},
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0xB5B5B5B5), MKCOLOUR(0x00000000)},
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0x00B5B500), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00D7D700), MKCOLOUR(0xFF0000FF)},
}

Definition at line 250 of file smallmap_gui.cpp.

const AndOr _smallmap_vehicles_andor[] [static]

Initial value:

 {
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0x00D7D700), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00D7D700), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00B5B500), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0x00D7D700), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0xCACACACA), MKCOLOUR(0x00000000)},
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0xB5B5B5B5), MKCOLOUR(0x00000000)},
  {MKCOLOUR(0x00000000), MKCOLOUR(0xFFFFFFFF)},
  {MKCOLOUR(0x00B5B500), MKCOLOUR(0xFF0000FF)},
  {MKCOLOUR(0x00D7D700), MKCOLOUR(0xFF0000FF)},
}

Definition at line 235 of file smallmap_gui.cpp.

const uint32 _vegetation_clear_bits[] [static]

Initial value:

 {
  MKCOLOUR(0x54545454), 
  MKCOLOUR(0x52525252), 
  MKCOLOUR(0x0A0A0A0A), 
  MKCOLOUR(0x25252525), 
  MKCOLOUR(0x98989898), 
  MKCOLOUR(0xC2C2C2C2), 
  MKCOLOUR(0x54545454), 
  MKCOLOUR(0x54545454), 
}

Definition at line 358 of file smallmap_gui.cpp.

const byte _vehicle_type_colours[6] [static]

Initial value:

 {
  184, 191, 152, 15, 215, 184
}

Definition at line 441 of file smallmap_gui.cpp.


Generated on Sat Dec 26 20:06:14 2009 for OpenTTD by  doxygen 1.5.6