OpenTTD
Data Structures | Typedefs | Enumerations | Functions | Variables
industry_gui.cpp File Reference

GUIs related to industries. More...

#include "stdafx.h"
#include "error.h"
#include "gui.h"
#include "settings_gui.h"
#include "sound_func.h"
#include "window_func.h"
#include "textbuf_gui.h"
#include "command_func.h"
#include "viewport_func.h"
#include "industry.h"
#include "town.h"
#include "cheat_type.h"
#include "newgrf_industries.h"
#include "newgrf_text.h"
#include "newgrf_debug.h"
#include "network/network.h"
#include "strings_func.h"
#include "company_func.h"
#include "tilehighlight_func.h"
#include "string_func.h"
#include "sortlist_type.h"
#include "widgets/dropdown_func.h"
#include "company_base.h"
#include "core/geometry_func.hpp"
#include "core/random_func.hpp"
#include "core/backup_type.hpp"
#include "genworld.h"
#include "smallmap_gui.h"
#include "widgets/dropdown_type.h"
#include "widgets/industry_widget.h"
#include "table/strings.h"
#include <bitset>
#include "safeguards.h"

Go to the source code of this file.

Data Structures

class  BuildIndustryWindow
 Build (fund or prospect) a new industry,. More...
class  IndustryViewWindow
class  IndustryDirectoryWindow
 The list of industries. More...
struct  CargoesField
 Data about a single field in the IndustryCargoesWindow panel. More...
struct  CargoesRow
 A single row of CargoesField. More...
struct  IndustryCargoesWindow
 Window displaying the cargo connections around an industry (or cargo). More...

Typedefs

typedef GUIList< const Industry * > GUIIndustryList

Enumerations

enum  CargoSuffixType { CST_FUND, CST_VIEW, CST_DIR }
 Cargo suffix type (for which window is it requested) More...
enum  CargoesFieldType {
  CFT_EMPTY, CFT_SMALL_EMPTY, CFT_INDUSTRY, CFT_CARGO,
  CFT_CARGO_LABEL, CFT_HEADER
}
 Available types of field. More...

Functions

static void ShowIndustryCargoesWindow (IndustryType id)
 Open the industry and cargoes window.
static void GetCargoSuffix (uint cargo, CargoSuffixType cst, const Industry *ind, IndustryType ind_type, const IndustrySpec *indspec, char *suffix, const char *suffix_last)
 Gets the string to display after the cargo name (using callback 37)
template<typename TC , typename TS >
static void GetAllCargoSuffixes (uint cb_offset, CargoSuffixType cst, const Industry *ind, IndustryType ind_type, const IndustrySpec *indspec, const TC &cargoes, TS &suffixes)
 Gets all strings to display after the cargoes of industries (using callback 37)
static int CDECL IndustryTypeNameSorter (const IndustryType *a, const IndustryType *b)
 Sort industry types by their name.
void SortIndustryTypes ()
 Initialize the list of sorted industry types.
void CcBuildIndustry (const CommandCost &result, TileIndex tile, uint32 p1, uint32 p2)
 Command callback.
void ShowBuildIndustryWindow ()
static void UpdateIndustryProduction (Industry *i)
static bool IsProductionAlterable (const Industry *i)
void ShowIndustryViewWindow (int industry)
void ShowIndustryDirectory ()
 assert_compile (MAX_CARGOES >=cpp_lengthof(IndustrySpec, produced_cargo))
 assert_compile (MAX_CARGOES >=cpp_lengthof(IndustrySpec, accepts_cargo))
void ShowIndustryCargoesWindow ()
 Open the industry and cargoes window with an industry.

Variables

bool _ignore_restrictions
std::bitset< NUM_INDUSTRYTYPES_displayed_industries
 Communication from the industry chain window to the smallmap window about what industries to display.
IndustryType _sorted_industry_types [NUM_INDUSTRYTYPES]
 Industry types sorted by name.
static const NWidgetPart _nested_build_industry_widgets []
static WindowDesc _build_industry_desc (WDP_AUTO,"build_industry", 170, 212, WC_BUILD_INDUSTRY, WC_NONE, WDF_CONSTRUCTION, _nested_build_industry_widgets, lengthof(_nested_build_industry_widgets))
 Window definition of the dynamic place industries gui.
static const NWidgetPart _nested_industry_view_widgets []
 Widget definition of the view industry gui.
static WindowDesc _industry_view_desc (WDP_AUTO,"view_industry", 260, 120, WC_INDUSTRY_VIEW, WC_NONE, 0, _nested_industry_view_widgets, lengthof(_nested_industry_view_widgets))
 Window definition of the view industry gui.
static const NWidgetPart _nested_industry_directory_widgets []
 Widget definition of the industry directory gui.
static WindowDesc _industry_directory_desc (WDP_AUTO,"list_industries", 428, 190, WC_INDUSTRY_DIRECTORY, WC_NONE, 0, _nested_industry_directory_widgets, lengthof(_nested_industry_directory_widgets))
 Window definition of the industry directory gui.
static const NWidgetPart _nested_industry_cargoes_widgets []
 Widgets of the industry cargoes window.
static WindowDesc _industry_cargoes_desc (WDP_AUTO,"industry_cargoes", 300, 210, WC_INDUSTRY_CARGOES, WC_NONE, 0, _nested_industry_cargoes_widgets, lengthof(_nested_industry_cargoes_widgets))
 Window description for the industry cargoes window.
static const uint MAX_CARGOES = 3
 Maximum number of cargoes carried in a CFT_CARGO field in CargoesField.

Detailed Description

GUIs related to industries.

Definition in file industry_gui.cpp.

Enumeration Type Documentation

Available types of field.

Enumerator:
CFT_EMPTY 

Empty field.

CFT_SMALL_EMPTY 

Empty small field (for the header).

CFT_INDUSTRY 

Display industry.

CFT_CARGO 

Display cargo connections.

CFT_CARGO_LABEL 

Display cargo labels.

CFT_HEADER 

Header text.

Definition at line 1458 of file industry_gui.cpp.

Cargo suffix type (for which window is it requested)

Enumerator:
CST_FUND 

Fund-industry window.

CST_VIEW 

View-industry window.

CST_DIR 

Industry-directory window.

Definition at line 53 of file industry_gui.cpp.

Function Documentation

void CcBuildIndustry ( const CommandCost result,
TileIndex  tile,
uint32  p1,
uint32  p2 
)

Command callback.

In case of failure to build an industry, show an error message.

Parameters
resultResult of the command.
tileTile where the industry is placed.
p1Additional data of the CMD_BUILD_INDUSTRY command.
p2Additional data of the CMD_BUILD_INDUSTRY command.

Definition at line 155 of file industry_gui.cpp.

References IndustrySpec::enabled, GB(), CommandCost::GetErrorMessage(), GetIndustrySpec(), IndustrySpec::name, NUM_INDUSTRYTYPES, SetDParam(), ShowErrorMessage(), CommandCost::Succeeded(), TILE_SIZE, TileX(), TileY(), and WL_INFO.

Referenced by BuildIndustryWindow::OnPlaceObject().

template<typename TC , typename TS >
static void GetAllCargoSuffixes ( uint  cb_offset,
CargoSuffixType  cst,
const Industry ind,
IndustryType  ind_type,
const IndustrySpec indspec,
const TC &  cargoes,
TS &  suffixes 
)
inlinestatic

Gets all strings to display after the cargoes of industries (using callback 37)

Parameters
cb_offsetThe offset for the cargo used in cb37, 0 for accepted cargoes, 3 for produced cargoes
cstthe cargo suffix type (for which window is it requested).
See Also
CargoSuffixType
Parameters
indthe industry (NULL if in fund window)
ind_typethe industry type
indspecthe industry spec
cargoesarray with cargotypes. for CT_INVALID no suffix will be determined
suffixesis filled with the suffixes

Definition at line 103 of file industry_gui.cpp.

References CT_INVALID, GetCargoSuffix(), lastof, and lengthof.

Referenced by IndustryViewWindow::DrawInfo(), BuildIndustryWindow::DrawWidget(), IndustryDirectoryWindow::GetIndustryString(), and BuildIndustryWindow::UpdateWidgetSize().

static void GetCargoSuffix ( uint  cargo,
CargoSuffixType  cst,
const Industry ind,
IndustryType  ind_type,
const IndustrySpec indspec,
char *  suffix,
const char *  suffix_last 
)
static

Gets the string to display after the cargo name (using callback 37)

Parameters
cargothe cargo for which the suffix is requested
  • 00 - first accepted cargo type
  • 01 - second accepted cargo type
  • 02 - third accepted cargo type
  • 03 - first produced cargo type
  • 04 - second produced cargo type
cstthe cargo suffix type (for which window is it requested).
See Also
CargoSuffixType
Parameters
indthe industry (NULL if in fund window)
ind_typethe industry type
indspecthe industry spec
suffixis filled with the string to display
suffix_lastlastof(suffix)

Definition at line 76 of file industry_gui.cpp.

References CALLBACK_FAILED, IndustrySpec::callback_mask, CBID_INDUSTRY_CARGO_SUFFIX, CBM_IND_CARGO_SUFFIX, CST_FUND, ErrorUnknownCallbackResult(), GB(), GetGRFStringID(), GetIndustryCallback(), IndustrySpec::grf_prop, GRFFilePropsBase< Tcnt >::grffile, HasBit(), INVALID_TILE, Industry::location, StartTextRefStackUsage(), StopTextRefStackUsage(), and OrthogonalTileArea::tile.

Referenced by GetAllCargoSuffixes().

static int CDECL IndustryTypeNameSorter ( const IndustryType *  a,
const IndustryType *  b 
)
static

Sort industry types by their name.

Definition at line 118 of file industry_gui.cpp.

References GetIndustrySpec(), lastof, IndustrySpec::name, and strnatcmp().

Referenced by SortIndustryTypes().

static void ShowIndustryCargoesWindow ( IndustryType  id)
static

Open the industry and cargoes window.

Parameters
idIndustry type to display, NUM_INDUSTRYTYPES selects a default industry type.

Definition at line 2692 of file industry_gui.cpp.

References _sorted_industry_types, BringWindowToFrontById(), IndustrySpec::enabled, GetIndustrySpec(), Window::InvalidateData(), NUM_INDUSTRYTYPES, and WC_INDUSTRY_CARGOES.

void ShowIndustryCargoesWindow ( )

Open the industry and cargoes window with an industry.

Definition at line 2714 of file industry_gui.cpp.

References NUM_INDUSTRYTYPES, and ShowIndustryCargoesWindow().

Referenced by MenuClickIndustry(), BuildIndustryWindow::OnClick(), IndustryViewWindow::OnClick(), and ShowIndustryCargoesWindow().

Variable Documentation

WindowDesc _industry_cargoes_desc(WDP_AUTO,"industry_cargoes", 300, 210, WC_INDUSTRY_CARGOES, WC_NONE, 0, _nested_industry_cargoes_widgets, lengthof(_nested_industry_cargoes_widgets))
static

Window description for the industry cargoes window.

const NWidgetPart _nested_build_industry_widgets[]
static
Initial value:
{
NWidget(WWT_CLOSEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_CAPTION, COLOUR_DARK_GREEN), SetDataTip(STR_FUND_INDUSTRY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_SHADEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_DEFSIZEBOX, COLOUR_DARK_GREEN),
NWidget(WWT_STICKYBOX, COLOUR_DARK_GREEN),
NWidget(WWT_MATRIX, COLOUR_DARK_GREEN, WID_DPI_MATRIX_WIDGET), SetMatrixDataTip(1, 0, STR_FUND_INDUSTRY_SELECTION_TOOLTIP), SetFill(1, 0), SetResize(1, 1), SetScrollbar(WID_DPI_SCROLLBAR),
NWidget(WWT_PANEL, COLOUR_DARK_GREEN, WID_DPI_INFOPANEL), SetResize(1, 0),
NWidget(WWT_TEXTBTN, COLOUR_DARK_GREEN, WID_DPI_DISPLAY_WIDGET), SetFill(1, 0), SetResize(1, 0),
SetDataTip(STR_INDUSTRY_DISPLAY_CHAIN, STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP),
NWidget(WWT_TEXTBTN, COLOUR_DARK_GREEN, WID_DPI_FUND_WIDGET), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_JUST_STRING, STR_NULL),
NWidget(WWT_RESIZEBOX, COLOUR_DARK_GREEN),
}

Definition at line 169 of file industry_gui.cpp.

const NWidgetPart _nested_industry_cargoes_widgets[]
static
Initial value:
{
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
NWidget(WWT_CAPTION, COLOUR_BROWN, WID_IC_CAPTION), SetDataTip(STR_INDUSTRY_CARGOES_INDUSTRY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
SetDataTip(STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP, STR_INDUSTRY_CARGOES_NOTIFY_SMALLMAP_TOOLTIP),
NWidget(WWT_PANEL, COLOUR_BROWN), SetFill(1, 0), SetResize(0, 0), EndContainer(),
NWidget(WWT_DROPDOWN, COLOUR_BROWN, WID_IC_IND_DROPDOWN), SetFill(0, 0), SetResize(0, 0),
SetDataTip(STR_INDUSTRY_CARGOES_SELECT_INDUSTRY, STR_INDUSTRY_CARGOES_SELECT_INDUSTRY_TOOLTIP),
SetDataTip(STR_INDUSTRY_CARGOES_SELECT_CARGO, STR_INDUSTRY_CARGOES_SELECT_CARGO_TOOLTIP),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN),
}

Widgets of the industry cargoes window.

Definition at line 1421 of file industry_gui.cpp.

const NWidgetPart _nested_industry_directory_widgets[]
static
Initial value:
{
NWidget(WWT_CLOSEBOX, COLOUR_BROWN),
NWidget(WWT_CAPTION, COLOUR_BROWN), SetDataTip(STR_INDUSTRY_DIRECTORY_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_SHADEBOX, COLOUR_BROWN),
NWidget(WWT_DEFSIZEBOX, COLOUR_BROWN),
NWidget(WWT_STICKYBOX, COLOUR_BROWN),
NWidget(WWT_TEXTBTN, COLOUR_BROWN, WID_ID_DROPDOWN_ORDER), SetDataTip(STR_BUTTON_SORT_BY, STR_TOOLTIP_SORT_ORDER),
NWidget(WWT_DROPDOWN, COLOUR_BROWN, WID_ID_DROPDOWN_CRITERIA), SetDataTip(STR_JUST_STRING, STR_TOOLTIP_SORT_CRITERIA),
NWidget(WWT_PANEL, COLOUR_BROWN), SetResize(1, 0), EndContainer(),
NWidget(WWT_PANEL, COLOUR_BROWN, WID_ID_INDUSTRY_LIST), SetDataTip(0x0, STR_INDUSTRY_DIRECTORY_LIST_CAPTION), SetResize(1, 1), SetScrollbar(WID_ID_SCROLLBAR), EndContainer(),
NWidget(WWT_RESIZEBOX, COLOUR_BROWN),
}

Widget definition of the industry directory gui.

Definition at line 1049 of file industry_gui.cpp.

const NWidgetPart _nested_industry_view_widgets[]
static
Initial value:
{
NWidget(WWT_CLOSEBOX, COLOUR_CREAM),
NWidget(WWT_CAPTION, COLOUR_CREAM, WID_IV_CAPTION), SetDataTip(STR_INDUSTRY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_DEBUGBOX, COLOUR_CREAM),
NWidget(WWT_SHADEBOX, COLOUR_CREAM),
NWidget(WWT_DEFSIZEBOX, COLOUR_CREAM),
NWidget(WWT_STICKYBOX, COLOUR_CREAM),
NWidget(WWT_PANEL, COLOUR_CREAM),
NWidget(WWT_INSET, COLOUR_CREAM), SetPadding(2, 2, 2, 2),
NWidget(NWID_VIEWPORT, INVALID_COLOUR, WID_IV_VIEWPORT), SetMinimalSize(254, 86), SetFill(1, 0), SetPadding(1, 1, 1, 1), SetResize(1, 1),
NWidget(WWT_PANEL, COLOUR_CREAM, WID_IV_INFO), SetMinimalSize(260, 2), SetResize(1, 0),
NWidget(WWT_PUSHTXTBTN, COLOUR_CREAM, WID_IV_GOTO), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_BUTTON_LOCATION, STR_INDUSTRY_VIEW_LOCATION_TOOLTIP),
NWidget(WWT_PUSHTXTBTN, COLOUR_CREAM, WID_IV_DISPLAY), SetFill(1, 0), SetResize(1, 0), SetDataTip(STR_INDUSTRY_DISPLAY_CHAIN, STR_INDUSTRY_DISPLAY_CHAIN_TOOLTIP),
NWidget(WWT_RESIZEBOX, COLOUR_CREAM),
}

Widget definition of the view industry gui.

Definition at line 1012 of file industry_gui.cpp.