OpenTTD Source  13.2.1
company_gui.cpp File Reference
#include "stdafx.h"
#include "currency.h"
#include "error.h"
#include "gui.h"
#include "window_gui.h"
#include "textbuf_gui.h"
#include "viewport_func.h"
#include "company_func.h"
#include "command_func.h"
#include "network/network.h"
#include "network/network_gui.h"
#include "network/network_func.h"
#include "newgrf.h"
#include "company_manager_face.h"
#include "strings_func.h"
#include "date_func.h"
#include "widgets/dropdown_type.h"
#include "tilehighlight_func.h"
#include "company_base.h"
#include "core/geometry_func.hpp"
#include "object_type.h"
#include "rail.h"
#include "road.h"
#include "engine_base.h"
#include "window_func.h"
#include "road_func.h"
#include "water.h"
#include "station_func.h"
#include "zoom_func.h"
#include "sortlist_type.h"
#include "company_cmd.h"
#include "economy_cmd.h"
#include "group_cmd.h"
#include "misc_cmd.h"
#include "object_cmd.h"
#include "widgets/company_widget.h"
#include "safeguards.h"

Go to the source code of this file.

Data Structures

struct  ExpensesList
 Expense list container. More...
 
struct  CompanyFinancesWindow
 Window class displaying the company finances. More...
 
class  DropDownListColourItem
 
struct  SelectCompanyLiveryWindow
 Company livery colour scheme window. More...
 
class  SelectCompanyManagerFaceWindow
 Management class for customizing the face of the company manager. More...
 
struct  CompanyInfrastructureWindow
 Window with detailed information about the company's infrastructure. More...
 
struct  CompanyWindow
 Window with general information about a company. More...
 
struct  BuyCompanyWindow
 

Typedefs

typedef GUIList< const Group * > GUIGroupList
 

Functions

static void DoSelectCompanyManagerFace (Window *parent)
 Company GUI constants. More...
 
static void ShowCompanyInfrastructure (CompanyID company)
 Open the infrastructure window of a company. More...
 
static uint GetTotalCategoriesHeight ()
 Get the total height of the "categories" column. More...
 
static uint GetMaxCategoriesWidth ()
 Get the required width of the "categories" column, equal to the widest element. More...
 
static void DrawCategory (const Rect &r, int start_y, ExpensesList list)
 Draw a category of expenses (revenue, operating expenses, capital expenses).
 
static void DrawCategories (const Rect &r)
 Draw the expenses categories. More...
 
static void DrawPrice (Money amount, int left, int right, int top, TextColour colour)
 Draw an amount of money. More...
 
static Money DrawYearCategory (const Rect &r, int start_y, ExpensesList list, const Money(*tbl)[EXPENSES_END])
 Draw a category of expenses/revenues in the year column. More...
 
static void DrawYearColumn (const Rect &r, int year, const Money(*tbl)[EXPENSES_END])
 Draw a column with prices. More...
 
void ShowCompanyFinances (CompanyID company)
 Open the finances window of a company. More...
 
void ShowCompanyLiveryWindow (CompanyID company, GroupID group)
 
void DrawCompanyManagerFace (CompanyManagerFace cmf, int colour, int x, int y)
 Draws the face of a company manager's face. More...
 
int GetAmountOwnedBy (const Company *c, Owner owner)
 
void ShowCompany (CompanyID company)
 Show the window with the overview of the company. More...
 
void DirtyCompanyInfrastructureWindows (CompanyID company)
 Redraw all windows with company infrastructure counts. More...
 
void ShowBuyCompanyDialog (CompanyID company)
 Show the query to buy another company. More...
 

Variables

static ExpensesType _expenses_list_revenue []
 List of revenues. More...
 
static ExpensesType _expenses_list_operating_costs []
 List of operating expenses. More...
 
static ExpensesType _expenses_list_capital_costs []
 List of capital expenses. More...
 
static const ExpensesList _expenses_list_types []
 Types of expense lists. More...
 
static const NWidgetPart _nested_company_finances_widgets []
 
static WindowDesc _company_finances_desc (WDP_AUTO, "company_finances", 0, 0, WC_FINANCES, WC_NONE, 0, _nested_company_finances_widgets, lengthof(_nested_company_finances_widgets))
 
static const StringID _colour_dropdown []
 
static const LiveryClass _livery_class [LS_END]
 
static const NWidgetPart _nested_select_company_livery_widgets []
 
static WindowDesc _select_company_livery_desc (WDP_AUTO, "company_livery", 0, 0, WC_COMPANY_COLOUR, WC_NONE, 0, _nested_select_company_livery_widgets, lengthof(_nested_select_company_livery_widgets))
 
static const NWidgetPart _nested_select_company_manager_face_widgets []
 Nested widget description for the company manager face selection dialog.
 
static WindowDesc _select_company_manager_face_desc (WDP_AUTO, "company_face", 0, 0, WC_COMPANY_MANAGER_FACE, WC_NONE, WDF_CONSTRUCTION, _nested_select_company_manager_face_widgets, lengthof(_nested_select_company_manager_face_widgets))
 Company manager face selection window description.
 
static const NWidgetPart _nested_company_infrastructure_widgets []
 
static WindowDesc _company_infrastructure_desc (WDP_AUTO, "company_infrastructure", 0, 0, WC_COMPANY_INFRASTRUCTURE, WC_NONE, 0, _nested_company_infrastructure_widgets, lengthof(_nested_company_infrastructure_widgets))
 
static const NWidgetPart _nested_company_widgets []
 
static const StringID _company_view_vehicle_count_strings []
 Strings for the company vehicle counts. More...
 
static WindowDesc _company_desc (WDP_AUTO, "company", 0, 0, WC_COMPANY, WC_NONE, 0, _nested_company_widgets, lengthof(_nested_company_widgets))
 
static const NWidgetPart _nested_buy_company_widgets []
 
static WindowDesc _buy_company_desc (WDP_AUTO, nullptr, 0, 0, WC_BUY_COMPANY, WC_NONE, WDF_CONSTRUCTION, _nested_buy_company_widgets, lengthof(_nested_buy_company_widgets))
 

Detailed Description

Company related GUIs.

Definition in file company_gui.cpp.

Function Documentation

◆ DirtyCompanyInfrastructureWindows()

void DirtyCompanyInfrastructureWindows ( CompanyID  company)

Redraw all windows with company infrastructure counts.

Parameters
companyThe company to redraw the windows of.

Definition at line 2774 of file company_gui.cpp.

References SetWindowDirty(), WC_COMPANY, and WC_COMPANY_INFRASTRUCTURE.

Referenced by Station::AfterStationTileSetChange(), CmdConvertRail(), RemoveLock(), and UpdateCompanyRoadInfrastructure().

◆ DoSelectCompanyManagerFace()

static void DoSelectCompanyManagerFace ( Window parent)
static

Company GUI constants.

Open the simple/advanced company manager face selection window.

Parameters
parentthe parent company window

Definition at line 1780 of file company_gui.cpp.

References _select_company_manager_face_desc, BringWindowToFrontById(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), WC_COMPANY_MANAGER_FACE, and Window::window_number.

Referenced by CompanyWindow::OnClick().

◆ DrawCategories()

static void DrawCategories ( const Rect r)
static

Draw the expenses categories.

Parameters
rAvailable space for drawing.
Note
The environment must provide padding at the left and right of r.

Definition at line 175 of file company_gui.cpp.

Referenced by CompanyFinancesWindow::DrawWidget().

◆ DrawCompanyManagerFace()

void DrawCompanyManagerFace ( CompanyManagerFace  cmf,
int  colour,
int  x,
int  y 
)

Draws the face of a company manager's face.

Parameters
cmfthe company manager's face
colourthe (background) colour of the gradient
xx-position to draw the face
yy-position to draw the face

Definition at line 1179 of file company_gui.cpp.

Referenced by ErrmsgWindow::DrawWidget(), SelectCompanyManagerFaceWindow::DrawWidget(), CompanyWindow::DrawWidget(), and BuyCompanyWindow::DrawWidget().

◆ DrawPrice()

static void DrawPrice ( Money  amount,
int  left,
int  right,
int  top,
TextColour  colour 
)
static

Draw an amount of money.

Parameters
amountAmount of money to draw,
leftLeft coordinate of the space to draw in.
rightRight coordinate of the space to draw in.
topTop coordinate of the space to draw in.
colourThe TextColour of the string.

Definition at line 213 of file company_gui.cpp.

References DrawString(), SA_RIGHT, and SetDParam().

◆ DrawYearCategory()

static Money DrawYearCategory ( const Rect r,
int  start_y,
ExpensesList  list,
const Money(*)  tbl[EXPENSES_END] 
)
static

Draw a category of expenses/revenues in the year column.

Returns
The income sum of the category.

Definition at line 230 of file company_gui.cpp.

◆ DrawYearColumn()

static void DrawYearColumn ( const Rect r,
int  year,
const Money(*)  tbl[EXPENSES_END] 
)
static

Draw a column with prices.

Parameters
rAvailable space for drawing.
yearYear being drawn.
tblPointer to table of amounts for year.
Note
The environment must provide padding at the left and right of r.

Definition at line 261 of file company_gui.cpp.

Referenced by CompanyFinancesWindow::DrawWidget().

◆ GetMaxCategoriesWidth()

static uint GetMaxCategoriesWidth ( )
static

Get the required width of the "categories" column, equal to the widest element.

Returns
The required width in pixels.

Definition at line 138 of file company_gui.cpp.

References _expenses_list_types, GetStringBoundingBox(), lengthof, and WidgetDimensions::scaled.

Referenced by CompanyFinancesWindow::UpdateWidgetSize().

◆ GetTotalCategoriesHeight()

static uint GetTotalCategoriesHeight ( )
static

Get the total height of the "categories" column.

Returns
The total height in pixels.

Definition at line 118 of file company_gui.cpp.

References _expenses_list_types, FONT_HEIGHT_NORMAL, lengthof, WidgetDimensions::scaled, WidgetDimensions::vsep_normal, and WidgetDimensions::vsep_wide.

Referenced by CompanyFinancesWindow::OnPaint(), and CompanyFinancesWindow::UpdateWidgetSize().

◆ ShowBuyCompanyDialog()

void ShowBuyCompanyDialog ( CompanyID  company)

Show the query to buy another company.

Parameters
companyThe company to buy.

Definition at line 2875 of file company_gui.cpp.

Referenced by HandleBankruptcyTakeover().

◆ ShowCompany()

void ShowCompany ( CompanyID  company)

Show the window with the overview of the company.

Parameters
companyThe company to show the window for.

Definition at line 2763 of file company_gui.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID().

Referenced by GoalListWindow::HandleClick().

◆ ShowCompanyFinances()

void ShowCompanyFinances ( CompanyID  company)

Open the finances window of a company.

Parameters
companyCompany to show finances of.
Precondition
is company a valid company.

Definition at line 548 of file company_gui.cpp.

References BringWindowToFrontById(), Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID(), and WC_FINANCES.

Referenced by CompaniesYearlyLoop(), MenuClickFinances(), and StatusBarWindow::OnClick().

◆ ShowCompanyInfrastructure()

static void ShowCompanyInfrastructure ( CompanyID  company)
static

Open the infrastructure window of a company.

Parameters
companyCompany to show infrastructure of.

Definition at line 2155 of file company_gui.cpp.

References Pool< Titem, Tindex, Tgrowth_step, Tmax_size, Tpool_type, Tcache, Tzero >::PoolItem<&_company_pool >::IsValidID().

Variable Documentation

◆ _colour_dropdown

const StringID _colour_dropdown[]
static
Initial value:
= {
STR_COLOUR_DARK_BLUE,
STR_COLOUR_PALE_GREEN,
STR_COLOUR_PINK,
STR_COLOUR_YELLOW,
STR_COLOUR_RED,
STR_COLOUR_LIGHT_BLUE,
STR_COLOUR_GREEN,
STR_COLOUR_DARK_GREEN,
STR_COLOUR_BLUE,
STR_COLOUR_CREAM,
STR_COLOUR_MAUVE,
STR_COLOUR_PURPLE,
STR_COLOUR_ORANGE,
STR_COLOUR_BROWN,
STR_COLOUR_GREY,
STR_COLOUR_WHITE,
}

Definition at line 557 of file company_gui.cpp.

◆ _company_view_vehicle_count_strings

const StringID _company_view_vehicle_count_strings[]
static
Initial value:
= {
STR_COMPANY_VIEW_TRAINS, STR_COMPANY_VIEW_ROAD_VEHICLES, STR_COMPANY_VIEW_SHIPS, STR_COMPANY_VIEW_AIRCRAFT
}

Strings for the company vehicle counts.

Definition at line 2268 of file company_gui.cpp.

◆ _expenses_list_capital_costs

ExpensesType _expenses_list_capital_costs[]
static
Initial value:

List of capital expenses.

Definition at line 74 of file company_gui.cpp.

◆ _expenses_list_operating_costs

ExpensesType _expenses_list_operating_costs[]
static
Initial value:

List of operating expenses.

Definition at line 64 of file company_gui.cpp.

◆ _expenses_list_revenue

ExpensesType _expenses_list_revenue[]
static
Initial value:

List of revenues.

Definition at line 56 of file company_gui.cpp.

◆ _expenses_list_types

◆ _livery_class

const LiveryClass _livery_class[LS_END]
static
Initial value:
= {
LC_OTHER,
LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL, LC_RAIL,
LC_ROAD, LC_ROAD,
LC_SHIP, LC_SHIP,
LC_AIRCRAFT, LC_AIRCRAFT, LC_AIRCRAFT,
LC_ROAD, LC_ROAD,
}

Definition at line 577 of file company_gui.cpp.

◆ _nested_buy_company_widgets

const NWidgetPart _nested_buy_company_widgets[]
static
Initial value:
= {
NWidget(WWT_CLOSEBOX, COLOUR_LIGHT_BLUE),
NWidget(WWT_CAPTION, COLOUR_LIGHT_BLUE, WID_BC_CAPTION), SetDataTip(STR_ERROR_MESSAGE_CAPTION_OTHER_COMPANY, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
NWidget(WWT_PANEL, COLOUR_LIGHT_BLUE),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BC_FACE), SetFill(0, 1),
NWidget(WWT_EMPTY, INVALID_COLOUR, WID_BC_QUESTION), SetMinimalSize(240, 0), SetFill(1, 1),
NWidget(WWT_TEXTBTN, COLOUR_LIGHT_BLUE, WID_BC_NO), SetMinimalSize(60, 12), SetDataTip(STR_QUIT_NO, STR_NULL), SetFill(1, 0),
NWidget(WWT_TEXTBTN, COLOUR_LIGHT_BLUE, WID_BC_YES), SetMinimalSize(60, 12), SetDataTip(STR_QUIT_YES, STR_NULL), SetFill(1, 0),
}

Definition at line 2845 of file company_gui.cpp.

EXPENSES_ROADVEH_RUN
@ EXPENSES_ROADVEH_RUN
Running costs road vehicles.
Definition: economy_type.h:161
EXPENSES_OTHER
@ EXPENSES_OTHER
Other expenses.
Definition: economy_type.h:170
WWT_CAPTION
@ WWT_CAPTION
Window caption (window title between closebox and stickybox)
Definition: widget_type.h:59
EXPENSES_TRAIN_REVENUE
@ EXPENSES_TRAIN_REVENUE
Revenue from trains.
Definition: economy_type.h:165
NWID_HORIZONTAL
@ NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:73
EXPENSES_AIRCRAFT_RUN
@ EXPENSES_AIRCRAFT_RUN
Running costs aircraft.
Definition: economy_type.h:162
WWT_EMPTY
@ WWT_EMPTY
Empty widget, place holder to reserve space in widget array.
Definition: widget_type.h:46
SetDataTip
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1111
ExpensesList
Expense list container.
Definition: company_gui.cpp:81
WID_BC_QUESTION
@ WID_BC_QUESTION
Question text.
Definition: company_widget.h:195
NC_EQUALSIZE
@ NC_EQUALSIZE
Value of the NCB_EQUALSIZE flag.
Definition: widget_type.h:469
EXPENSES_CONSTRUCTION
@ EXPENSES_CONSTRUCTION
Construction costs.
Definition: economy_type.h:158
WID_BC_FACE
@ WID_BC_FACE
Face button.
Definition: company_widget.h:194
NWID_VERTICAL
@ NWID_VERTICAL
Vertical container.
Definition: widget_type.h:75
WWT_CLOSEBOX
@ WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:67
_expenses_list_capital_costs
static ExpensesType _expenses_list_capital_costs[]
List of capital expenses.
Definition: company_gui.cpp:74
EndContainer
static NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME,...
Definition: widget_type.h:1096
NWidget
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new 'real' widget.
Definition: widget_type.h:1229
SetMinimalSize
static NWidgetPart SetMinimalSize(int16 x, int16 y)
Widget part function for setting the minimal size.
Definition: widget_type.h:1014
WWT_PANEL
@ WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:48
_expenses_list_revenue
static ExpensesType _expenses_list_revenue[]
List of revenues.
Definition: company_gui.cpp:56
_expenses_list_operating_costs
static ExpensesType _expenses_list_operating_costs[]
List of operating expenses.
Definition: company_gui.cpp:64
EXPENSES_PROPERTY
@ EXPENSES_PROPERTY
Property costs.
Definition: economy_type.h:164
EXPENSES_NEW_VEHICLES
@ EXPENSES_NEW_VEHICLES
New vehicles.
Definition: economy_type.h:159
lengthof
#define lengthof(x)
Return the length of an fixed size array.
Definition: stdafx.h:386
EXPENSES_TRAIN_RUN
@ EXPENSES_TRAIN_RUN
Running costs trains.
Definition: economy_type.h:160
SetPIP
static NWidgetPart SetPIP(uint8 pre, uint8 inter, uint8 post)
Widget part function for setting a pre/inter/post spaces.
Definition: widget_type.h:1191
SetFill
static NWidgetPart SetFill(uint fill_x, uint fill_y)
Widget part function for setting filling.
Definition: widget_type.h:1080
WID_BC_NO
@ WID_BC_NO
No button.
Definition: company_widget.h:196
EXPENSES_ROADVEH_REVENUE
@ EXPENSES_ROADVEH_REVENUE
Revenue from road vehicles.
Definition: economy_type.h:166
EXPENSES_AIRCRAFT_REVENUE
@ EXPENSES_AIRCRAFT_REVENUE
Revenue from aircraft.
Definition: economy_type.h:167
EXPENSES_SHIP_RUN
@ EXPENSES_SHIP_RUN
Running costs ships.
Definition: economy_type.h:163
WID_BC_CAPTION
@ WID_BC_CAPTION
Caption of window.
Definition: company_widget.h:193
EXPENSES_LOAN_INTEREST
@ EXPENSES_LOAN_INTEREST
Interest payments over the loan.
Definition: economy_type.h:169
WWT_TEXTBTN
@ WWT_TEXTBTN
(Toggle) Button with text
Definition: widget_type.h:53
EXPENSES_SHIP_REVENUE
@ EXPENSES_SHIP_REVENUE
Revenue from ships.
Definition: economy_type.h:168
WID_BC_YES
@ WID_BC_YES
Yes button.
Definition: company_widget.h:197