summaryrefslogtreecommitdiff
path: root/src/company_gui.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2009-11-20 17:36:46 +0000
committerrubidium <rubidium@openttd.org>2009-11-20 17:36:46 +0000
commit77d6c4e07a311935c158b8bad544a64fa25e0a95 (patch)
tree94697c36a27c0a642843daa82b6447f2481e6b42 /src/company_gui.cpp
parent69f50570e35a8af2fca01508c588a85e357d3350 (diff)
downloadopenttd-77d6c4e07a311935c158b8bad544a64fa25e0a95.tar.xz
(svn r18199) -Codechange: make the company view window RTL aware and somewhat big font aware
Diffstat (limited to 'src/company_gui.cpp')
-rw-r--r--src/company_gui.cpp361
1 files changed, 210 insertions, 151 deletions
diff --git a/src/company_gui.cpp b/src/company_gui.cpp
index cd9ea1ce3..7e6a34bb5 100644
--- a/src/company_gui.cpp
+++ b/src/company_gui.cpp
@@ -1420,20 +1420,35 @@ static void DoSelectCompanyManagerFace(Window *parent, bool adv, int top, int le
enum CompanyWindowWidgets {
CW_WIDGET_CLOSEBOX = 0,
CW_WIDGET_CAPTION,
+ CW_WIDGET_BACKGROUND,
+
CW_WIDGET_FACE,
+ CW_WIDGET_FACE_TITLE,
+
+ CW_WIDGET_DESC_INAUGURATION,
+ CW_WIDGET_DESC_COLOUR_SCHEME,
+ CW_WIDGET_DESC_COLOUR_SCHEME_EXAMPLE,
+ CW_WIDGET_DESC_VEHICLE,
+ CW_WIDGET_DESC_VEHICLE_COUNTS,
+ CW_WIDGET_DESC_COMPANY_VALUE,
+ CW_WIDGET_DESC_OWNERS,
+
CW_WIDGET_SELECT_BUTTONS, ///< Selection widget for the button bar.
CW_WIDGET_NEW_FACE,
CW_WIDGET_COLOUR_SCHEME,
CW_WIDGET_PRESIDENT_NAME,
CW_WIDGET_COMPANY_NAME,
- CW_WIDGET_BUILD_VIEW_HQ,
- CW_WIDGET_SELECT_RELOCATE, ///< View/hide the 'Relocate HQ' button.
- CW_WIDGET_RELOCATE_EMPTY, ///< Empty widget to hide the relocate HQ button.
- CW_WIDGET_RELOCATE_HQ,
CW_WIDGET_BUY_SHARE,
CW_WIDGET_SELL_SHARE,
+
+ CW_WIDGET_SELECT_VIEW_BUILD_HQ,
+ CW_WIDGET_VIEW_HQ,
+ CW_WIDGET_BUILD_HQ,
+
+ CW_WIDGET_SELECT_RELOCATE, ///< View/hide the 'Relocate HQ' button.
+ CW_WIDGET_RELOCATE_HQ,
+
CW_WIDGET_SELECT_MULTIPLAYER, ///< Multiplayer selection panel.
- CW_WIDGET_MP_EMPTY,
CW_WIDGET_COMPANY_PASSWORD,
CW_WIDGET_COMPANY_JOIN,
};
@@ -1443,101 +1458,76 @@ static const NWidgetPart _nested_company_widgets[] = {
NWidget(WWT_CLOSEBOX, COLOUR_GREY, CW_WIDGET_CLOSEBOX),
NWidget(WWT_CAPTION, COLOUR_GREY, CW_WIDGET_CAPTION), SetDataTip(STR_COMPANY_VIEW_CAPTION, STR_TOOLTIP_WINDOW_TITLE_DRAG_THIS),
EndContainer(),
- NWidget(WWT_PANEL, COLOUR_GREY, CW_WIDGET_FACE),
- NWidget(NWID_SPACER), SetMinimalSize(360, 4),
- NWidget(NWID_HORIZONTAL),
- NWidget(NWID_SPACER), SetFill(true, false),
- NWidget(WWT_TEXTBTN, COLOUR_GREY, CW_WIDGET_BUILD_VIEW_HQ), SetMinimalSize(90, 12), SetPadding(0, 4, 0, 0),
- SetDataTip(STR_COMPANY_VIEW_VIEW_HQ_BUTTON, STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP),
- EndContainer(),
- NWidget(NWID_SPACER), SetMinimalSize(0, 2),
- NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_RELOCATE),
- NWidget(NWID_HORIZONTAL),
- NWidget(NWID_SPACER), SetFill(true, false),
- NWidget(WWT_TEXTBTN, COLOUR_GREY, CW_WIDGET_RELOCATE_HQ), SetMinimalSize(90, 12), SetPadding(0, 4, 0, 0),
- SetDataTip(STR_COMPANY_VIEW_RELOCATE_HQ, STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS),
+ NWidget(WWT_PANEL, COLOUR_GREY, CW_WIDGET_BACKGROUND),
+ NWidget(NWID_HORIZONTAL), SetPIP(4, 6, 4),
+ NWidget(NWID_VERTICAL), SetPIP(4, 2, 4),
+ NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_FACE), SetMinimalSize(91, 120), SetFill(true, false),
+ NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_FACE_TITLE), SetFill(true, true), SetMinimalTextLines(2, 0),
EndContainer(),
- NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_RELOCATE_EMPTY), SetFill(true, true),
- EndContainer(),
- NWidget(NWID_SPACER), SetMinimalSize(0, 94),
- /* Multi player buttons. */
- NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_MULTIPLAYER),
- NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_MP_EMPTY), SetFill(true, true),
- NWidget(NWID_HORIZONTAL),
- NWidget(NWID_SPACER), SetFill(true, false),
- NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_PASSWORD), SetMinimalSize(90, 12), SetPadding(0, 4, 0, 0),
- SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP),
- EndContainer(),
- NWidget(NWID_HORIZONTAL),
- NWidget(NWID_SPACER), SetFill(true, false),
- NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_JOIN), SetMinimalSize(90, 12), SetPadding(0, 4, 0, 0),
- SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP),
+ NWidget(NWID_VERTICAL),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(NWID_VERTICAL), SetPIP(4, 5, 5),
+ NWidget(WWT_TEXT, COLOUR_GREY, CW_WIDGET_DESC_INAUGURATION), SetDataTip(STR_COMPANY_VIEW_INAUGURATED_TITLE, STR_NULL), SetFill(true, false),
+ NWidget(NWID_HORIZONTAL), SetPIP(0, 5, 0),
+ NWidget(WWT_LABEL, COLOUR_GREY, CW_WIDGET_DESC_COLOUR_SCHEME), SetDataTip(STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE, STR_NULL),
+ NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_DESC_COLOUR_SCHEME_EXAMPLE), SetMinimalSize(30, 0), SetFill(false, true),
+ NWidget(NWID_SPACER), SetFill(true, false),
+ EndContainer(),
+ NWidget(NWID_HORIZONTAL), SetPIP(0, 4, 0),
+ NWidget(NWID_VERTICAL),
+ NWidget(WWT_TEXT, COLOUR_GREY, CW_WIDGET_DESC_VEHICLE), SetDataTip(STR_COMPANY_VIEW_VEHICLES_TITLE, STR_NULL),
+ NWidget(NWID_SPACER), SetFill(false, true),
+ EndContainer(),
+ NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_DESC_VEHICLE_COUNTS), SetMinimalTextLines(4, 0),
+ NWidget(NWID_SPACER), SetFill(true, false),
+ EndContainer(),
+ EndContainer(),
+ NWidget(NWID_VERTICAL), SetPIP(4, 2, 4),
+ NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_VIEW_BUILD_HQ),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_VIEW_HQ), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_VIEW_HQ_BUTTON, STR_COMPANY_VIEW_VIEW_HQ_TOOLTIP),
+ NWidget(WWT_TEXTBTN, COLOUR_GREY, CW_WIDGET_BUILD_HQ), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_BUILD_HQ_BUTTON, STR_COMPANY_VIEW_BUILD_HQ_TOOLTIP),
+ EndContainer(),
+ NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_RELOCATE),
+ NWidget(WWT_TEXTBTN, COLOUR_GREY, CW_WIDGET_RELOCATE_HQ), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_RELOCATE_HQ, STR_COMPANY_VIEW_RELOCATE_COMPANY_HEADQUARTERS),
+ NWidget(NWID_SPACER), SetMinimalSize(90, 0),
+ EndContainer(),
+ NWidget(NWID_SPACER), SetFill(false, true),
+ EndContainer(),
+ EndContainer(),
+ NWidget(WWT_TEXT, COLOUR_GREY, CW_WIDGET_DESC_COMPANY_VALUE), SetDataTip(STR_COMPANY_VIEW_COMPANY_VALUE, STR_NULL), SetFill(true, false),
+ NWidget(NWID_HORIZONTAL),
+ NWidget(NWID_VERTICAL), SetPIP(5, 5, 4),
+ NWidget(WWT_EMPTY, INVALID_COLOUR, CW_WIDGET_DESC_OWNERS), SetMinimalTextLines(3, 0),
+ NWidget(NWID_SPACER), SetFill(false, true),
+ EndContainer(),
+ NWidget(NWID_VERTICAL), SetPIP(4, 2, 4),
+ NWidget(NWID_SPACER), SetMinimalSize(90, 0), SetFill(false, true),
+ /* Multi player buttons. */
+ NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_MULTIPLAYER),
+ NWidget(NWID_SPACER), SetFill(true, false),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_PASSWORD), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_PASSWORD, STR_COMPANY_VIEW_PASSWORD_TOOLTIP),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_JOIN), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_JOIN, STR_COMPANY_VIEW_JOIN_TOOLTIP),
+ EndContainer(),
+ EndContainer(),
+ EndContainer(),
EndContainer(),
EndContainer(),
- NWidget(NWID_SPACER), SetMinimalSize(0, 8),
EndContainer(),
/* Button bars at the bottom. */
NWidget(NWID_SELECTION, INVALID_COLOUR, CW_WIDGET_SELECT_BUTTONS),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
- NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_NEW_FACE), SetMinimalSize(90, 12), SetFill(true, false),
- SetDataTip(STR_COMPANY_VIEW_NEW_FACE_BUTTON, STR_COMPANY_VIEW_NEW_FACE_TOOLTIP),
- NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COLOUR_SCHEME), SetMinimalSize(90, 12), SetFill(true, false),
- SetDataTip(STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON, STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP),
- NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_PRESIDENT_NAME), SetMinimalSize(90, 12), SetFill(true, false),
- SetDataTip(STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON, STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP),
- NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_NAME), SetMinimalSize(90, 12), SetFill(true, false),
- SetDataTip(STR_COMPANY_VIEW_COMPANY_NAME_BUTTON, STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_NEW_FACE), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_NEW_FACE_BUTTON, STR_COMPANY_VIEW_NEW_FACE_TOOLTIP),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COLOUR_SCHEME), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_COLOUR_SCHEME_BUTTON, STR_COMPANY_VIEW_COLOUR_SCHEME_TOOLTIP),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_PRESIDENT_NAME), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_PRESIDENT_NAME_BUTTON, STR_COMPANY_VIEW_PRESIDENT_NAME_TOOLTIP),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_COMPANY_NAME), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_COMPANY_NAME_BUTTON, STR_COMPANY_VIEW_COMPANY_NAME_TOOLTIP),
EndContainer(),
NWidget(NWID_HORIZONTAL, NC_EQUALSIZE),
- NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_BUY_SHARE), SetMinimalSize(180, 12), SetFill(true, false),
- SetDataTip(STR_COMPANY_VIEW_BUY_SHARE_BUTTON, STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP),
- NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_SELL_SHARE), SetMinimalSize(180, 12), SetFill(true, false),
- SetDataTip(STR_COMPANY_VIEW_SELL_SHARE_BUTTON, STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_BUY_SHARE), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_BUY_SHARE_BUTTON, STR_COMPANY_VIEW_BUY_SHARE_TOOLTIP),
+ NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, CW_WIDGET_SELL_SHARE), SetFill(true, false), SetDataTip(STR_COMPANY_VIEW_SELL_SHARE_BUTTON, STR_COMPANY_VIEW_SELL_SHARE_TOOLTIP),
EndContainer(),
EndContainer(),
};
-/**
- * Draws text "Vehicles:" and number of all vehicle types, or "(none)"
- * @param company ID of company to print statistics of
- * @param right the right most location to draw to
- */
-static void DrawCompanyVehiclesAmount(CompanyID company, int right)
-{
- const int x = 110;
- int y = 63;
- uint amounts[] = { 0, 0, 0, 0 };
-
- DrawString(x, right, y, STR_COMPANY_VIEW_VEHICLES_TITLE);
-
- const Vehicle *v;
- FOR_ALL_VEHICLES(v) {
- if (v->owner == company) {
- if (v->IsPrimaryVehicle()) {
- assert((size_t)v->type < lengthof(amounts));
- amounts[v->type]++;
- }
- }
- }
-
- if (amounts[0] + amounts[1] + amounts[2] + amounts[3] == 0) {
- DrawString(x + 70, right, y, STR_COMPANY_VIEW_VEHICLES_NONE);
- } else {
- static const StringID strings[] = {
- STR_COMPANY_VIEW_TRAINS, STR_COMPANY_VIEW_ROAD_VEHICLES, STR_COMPANY_VIEW_SHIPS, STR_COMPANY_VIEW_AIRCRAFT
- };
- assert_compile(lengthof(amounts) == lengthof(strings));
-
- for (uint i = 0; i < lengthof(amounts); i++) {
- if (amounts[i] != 0) {
- SetDParam(0, amounts[i]);
- DrawString(x + 70, right, y, strings[i]);
- y += 10;
- }
- }
- }
-}
-
int GetAmountOwnedBy(const Company *c, Owner owner)
{
return (c->share_owners[0] == owner) +
@@ -1546,26 +1536,10 @@ int GetAmountOwnedBy(const Company *c, Owner owner)
(c->share_owners[3] == owner);
}
-/**
- * Draws list of all companies with shares
- * @param c pointer to the Company structure
- */
-static void DrawCompanyOwnerText(const Company *c)
-{
- const Company *c2;
- uint num = 0;
- const byte height = GetCharacterHeight(FS_NORMAL);
-
- FOR_ALL_COMPANIES(c2) {
- uint amt = GetAmountOwnedBy(c, c2->index);
- if (amt != 0) {
- SetDParam(0, amt * 25);
- SetDParam(1, c2->index);
-
- DrawString(120, 359, (num++) * height + 116, STR_COMPANY_VIEW_SHARES_OWNED_BY);
- }
- }
-}
+/** Strings for the company vehicle counts */
+static const StringID _company_view_vehicle_count_strings[] = {
+ STR_COMPANY_VIEW_TRAINS, STR_COMPANY_VIEW_ROAD_VEHICLES, STR_COMPANY_VIEW_SHIPS, STR_COMPANY_VIEW_AIRCRAFT
+};
/**
* Window with general information about a company
@@ -1581,6 +1555,10 @@ struct CompanyWindow : Window
CWP_MP_C_PWD, ///< Display the company password button.
CWP_MP_C_JOIN, ///< Display the join company button.
+ /* Display planes of the #CW_WIDGET_SELECT_VIEW_BUILD_HQ selection widget. */
+ CWP_VB_VIEW = 0, ///< Display the view button
+ CWP_VB_BUILD, ///< Display the build button
+
/* Display planes of the #CW_WIDGET_SELECT_RELOCATE selection widget. */
CWP_RELOCATE_SHOW = 0, ///< Show the relocate HQ button.
CWP_RELOCATE_HIDE, ///< Hide the relocate HQ button.
@@ -1604,7 +1582,6 @@ struct CompanyWindow : Window
/* Button bar selection. */
int plane = local ? CWP_BUTTONS_LOCAL : CWP_BUTTONS_OTHER;
NWidgetStacked *wi = this->GetWidget<NWidgetStacked>(CW_WIDGET_SELECT_BUTTONS);
- wi = this->GetWidget<NWidgetStacked>(CW_WIDGET_SELECT_BUTTONS);
if (plane != wi->shown_plane) {
wi->SetDisplayedPlane(plane);
this->SetDirty();
@@ -1612,10 +1589,15 @@ struct CompanyWindow : Window
}
/* Build HQ button handling. */
- NWidgetCore *wi_core = this->GetWidget<NWidgetCore>(CW_WIDGET_BUILD_VIEW_HQ);
- wi_core->widget_data = (local && c->location_of_HQ == INVALID_TILE) ? STR_COMPANY_VIEW_BUILD_HQ_BUTTON : STR_COMPANY_VIEW_VIEW_HQ_BUTTON;
- if (local && c->location_of_HQ != INVALID_TILE) wi_core->type = WWT_PUSHTXTBTN; // HQ is already built.
- wi_core->SetDisabled(!local && c->location_of_HQ == INVALID_TILE);
+ plane = (local && c->location_of_HQ == INVALID_TILE) ? CWP_VB_BUILD : CWP_VB_VIEW;
+ wi = this->GetWidget<NWidgetStacked>(CW_WIDGET_SELECT_VIEW_BUILD_HQ);
+ if (plane != wi->shown_plane) {
+ wi->SetDisplayedPlane(plane);
+ this->SetDirty();
+ return;
+ }
+
+ this->SetWidgetDisabledState(CW_WIDGET_VIEW_HQ, c->location_of_HQ == INVALID_TILE);
/* Enable/disable 'Relocate HQ' button. */
plane = (!local || c->location_of_HQ == INVALID_TILE) ? CWP_RELOCATE_HIDE : CWP_RELOCATE_SHOW;
@@ -1656,46 +1638,123 @@ struct CompanyWindow : Window
}
this->DrawWidgets();
+ }
-#ifdef ENABLE_NETWORK
- if (_networking && NetworkCompanyIsPassworded(c->index)) {
- const NWidgetBase *wi = this->GetWidget<NWidgetBase>(CW_WIDGET_COMPANY_JOIN);
- DrawSprite(SPR_LOCK, PAL_NONE, wi->pos_x - 10, wi->pos_y + 2);
+ virtual void UpdateWidgetSize(int widget, Dimension *size, const Dimension &padding, Dimension *resize)
+ {
+ switch (widget) {
+ case CW_WIDGET_DESC_COMPANY_VALUE:
+ SetDParam(0, INT64_MAX); // Arguably the maximum company value
+ size->width = GetStringBoundingBox(STR_COMPANY_VIEW_COMPANY_VALUE).width;
+ break;
+
+ case CW_WIDGET_DESC_VEHICLE_COUNTS:
+ SetDParam(0, 5000); // Maximum number of vehicles
+ for (uint i = 0; i < lengthof(_company_view_vehicle_count_strings); i++) {
+ size->width = max(size->width, GetStringBoundingBox(_company_view_vehicle_count_strings[i]).width);
+ }
+ break;
+
+ case CW_WIDGET_DESC_OWNERS: {
+ const Company *c2;
+
+ FOR_ALL_COMPANIES(c2) {
+ SetDParam(0, 25);
+ SetDParam(1, c2->index);
+
+ size->width = max(size->width, GetStringBoundingBox(STR_COMPANY_VIEW_SHARES_OWNED_BY).width);
+ }
+ } break;
}
-#endif /* ENABLE_NETWORK */
+ }
+
+ virtual void DrawWidget(const Rect &r, int widget) const
+ {
+ const Company *c = Company::Get((CompanyID)this->window_number);
+ switch (widget) {
+ case CW_WIDGET_FACE:
+ DrawCompanyManagerFace(c->face, c->colour, r.left, r.top);
+ break;
- /* Company manager's face */
- DrawCompanyManagerFace(c->face, c->colour, 2, 16);
+ case CW_WIDGET_FACE_TITLE:
+ SetDParam(0, c->index);
+ DrawStringMultiLine(r.left, r.right, r.top, r.bottom, STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE, TC_FROMSTRING, SA_CENTER);
+ break;
+
+ case CW_WIDGET_DESC_COLOUR_SCHEME_EXAMPLE:
+ DrawSprite(SPR_VEH_BUS_SW_VIEW, COMPANY_SPRITE_COLOUR(c->index), (r.left + r.right) / 2, r.top + FONT_HEIGHT_NORMAL / 10);
+ break;
+
+ case CW_WIDGET_DESC_VEHICLE_COUNTS: {
+ uint amounts[] = { 0, 0, 0, 0 };
+ int y = r.top;
+
+ const Vehicle *v;
+ FOR_ALL_VEHICLES(v) {
+ if (v->owner == c->index) {
+ if (v->IsPrimaryVehicle()) {
+ assert((size_t)v->type < lengthof(amounts));
+ amounts[v->type]++;
+ }
+ }
+ }
- /* "xxx (Manager)" */
- SetDParam(0, c->index);
- DrawStringMultiLine(48 - MAX_LENGTH_PRESIDENT_NAME_PIXELS / 2, 48 + MAX_LENGTH_PRESIDENT_NAME_PIXELS / 2, 135, 157, STR_COMPANY_VIEW_PRESIDENT_MANAGER_TITLE, TC_FROMSTRING, SA_CENTER);
+ if (amounts[0] + amounts[1] + amounts[2] + amounts[3] == 0) {
+ DrawString(r.left, r.right, y, STR_COMPANY_VIEW_VEHICLES_NONE);
+ } else {
+ assert_compile(lengthof(amounts) == lengthof(_company_view_vehicle_count_strings));
- /* "Inaugurated:" */
- SetDParam(0, c->inaugurated_year);
- DrawString(110, this->width, 23, STR_COMPANY_VIEW_INAUGURATED_TITLE);
+ for (uint i = 0; i < lengthof(amounts); i++) {
+ if (amounts[i] != 0) {
+ SetDParam(0, amounts[i]);
+ DrawString(r.left, r.right, y, _company_view_vehicle_count_strings[i]);
+ y += FONT_HEIGHT_NORMAL;
+ }
+ }
+ }
+ } break;
- /* "Colour scheme:" */
- DrawString(110, this->width, 43, STR_COMPANY_VIEW_COLOUR_SCHEME_TITLE);
- /* Draw company-colour bus */
- DrawSprite(SPR_VEH_BUS_SW_VIEW, COMPANY_SPRITE_COLOUR(c->index), 215, 44);
+ case CW_WIDGET_DESC_OWNERS: {
+ const Company *c2;
+ uint y = r.top;
- /* "Vehicles:" */
- DrawCompanyVehiclesAmount((CompanyID)this->window_number, this->width);
+ FOR_ALL_COMPANIES(c2) {
+ uint amt = GetAmountOwnedBy(c, c2->index);
+ if (amt != 0) {
+ SetDParam(0, amt * 25);
+ SetDParam(1, c2->index);
- /* "Company value:" */
- SetDParam(0, CalculateCompanyValue(c));
- DrawString(110, this->width, 106, STR_COMPANY_VIEW_COMPANY_VALUE);
+ DrawString(r.left, r.right, y, STR_COMPANY_VIEW_SHARES_OWNED_BY);
+ y += FONT_HEIGHT_NORMAL;
+ }
+ }
+ } break;
- /* Shares list */
- DrawCompanyOwnerText(c);
+#ifdef ENABLE_NETWORK
+ case CW_WIDGET_COMPANY_PASSWORD:
+ if (_networking && NetworkCompanyIsPassworded(c->index)) {
+ DrawSprite(SPR_LOCK, PAL_NONE, _dynlang.text_dir == TD_RTL ? r.right + 10 : r.left - 10, r.top + 2);
+ }
+ break;
+#endif /* ENABLE_NETWORK */
+ }
}
virtual void SetStringParameters(int widget) const
{
- if (widget == CW_WIDGET_CAPTION) {
- SetDParam(0, (CompanyID)this->window_number);
- SetDParam(1, (CompanyID)this->window_number);
+ switch (widget) {
+ case CW_WIDGET_CAPTION:
+ SetDParam(0, (CompanyID)this->window_number);
+ SetDParam(1, (CompanyID)this->window_number);
+ break;
+
+ case CW_WIDGET_DESC_INAUGURATION:
+ SetDParam(0, Company::Get((CompanyID)this->window_number)->inaugurated_year);
+ break;
+
+ case CW_WIDGET_DESC_COMPANY_VALUE:
+ SetDParam(0, CalculateCompanyValue(Company::Get((CompanyID)this->window_number)));
+ break;
}
}
@@ -1721,24 +1780,24 @@ struct CompanyWindow : Window
ShowQueryString(STR_COMPANY_NAME, STR_COMPANY_VIEW_COMPANY_NAME_QUERY_CAPTION, MAX_LENGTH_COMPANY_NAME_BYTES, MAX_LENGTH_COMPANY_NAME_PIXELS, this, CS_ALPHANUMERAL, QSF_ENABLE_DEFAULT);
break;
- case CW_WIDGET_BUILD_VIEW_HQ: {
+ case CW_WIDGET_VIEW_HQ: {
TileIndex tile = Company::Get((CompanyID)this->window_number)->location_of_HQ;
- if (tile == INVALID_TILE) {
- if ((byte)this->window_number != _local_company) return;
- SetObjectToPlaceWnd(SPR_CURSOR_HQ, PAL_NONE, HT_RECT, this);
- SetTileSelectSize(2, 2);
- this->LowerWidget(CW_WIDGET_BUILD_VIEW_HQ);
- this->SetWidgetDirty(CW_WIDGET_BUILD_VIEW_HQ);
+ if (_ctrl_pressed) {
+ ShowExtraViewPortWindow(tile);
} else {
- if (_ctrl_pressed) {
- ShowExtraViewPortWindow(tile);
- } else {
- ScrollMainWindowToTile(tile);
- }
+ ScrollMainWindowToTile(tile);
}
break;
}
+ case CW_WIDGET_BUILD_HQ:
+ if ((byte)this->window_number != _local_company) return;
+ SetObjectToPlaceWnd(SPR_CURSOR_HQ, PAL_NONE, HT_RECT, this);
+ SetTileSelectSize(2, 2);
+ this->LowerWidget(CW_WIDGET_BUILD_HQ);
+ this->SetWidgetDirty(CW_WIDGET_BUILD_HQ);
+ break;
+
case CW_WIDGET_RELOCATE_HQ:
SetObjectToPlaceWnd(SPR_CURSOR_HQ, PAL_NONE, HT_RECT, this);
SetTileSelectSize(2, 2);