|
|
|
@ -55,6 +55,7 @@ static const NWidgetPart _nested_group_widgets[] = {
|
|
|
|
|
SetFill(1, 0), SetResize(0, 1), SetScrollbar(WID_GL_LIST_GROUP_SCROLLBAR),
|
|
|
|
|
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_GL_LIST_GROUP_SCROLLBAR),
|
|
|
|
|
EndContainer(),
|
|
|
|
|
NWidget(WWT_PANEL, COLOUR_GREY, WID_GL_INFO), SetMinimalSize(200, 37), SetFill(1, 0), EndContainer(),
|
|
|
|
|
NWidget(NWID_HORIZONTAL),
|
|
|
|
|
NWidget(WWT_PUSHIMGBTN, COLOUR_GREY, WID_GL_CREATE_GROUP), SetFill(0, 1),
|
|
|
|
|
SetDataTip(SPR_GROUP_CREATE_TRAIN, STR_GROUP_CREATE_TOOLTIP),
|
|
|
|
@ -371,6 +372,9 @@ public:
|
|
|
|
|
max_icon_height = max(max_icon_height, GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_DELETE_GROUP)->widget_data).height);
|
|
|
|
|
max_icon_height = max(max_icon_height, GetSpriteSize(this->GetWidget<NWidgetCore>(WID_GL_REPLACE_PROTECTION)->widget_data).height);
|
|
|
|
|
|
|
|
|
|
/* ... minus the height of the group info ... */
|
|
|
|
|
max_icon_height += 37;
|
|
|
|
|
|
|
|
|
|
/* Get a multiple of tiny_step_height of that amount */
|
|
|
|
|
size->height = Ceil(size->height - max_icon_height, tiny_step_height);
|
|
|
|
|
break;
|
|
|
|
@ -527,6 +531,40 @@ public:
|
|
|
|
|
DrawGroupInfo(r.top + WD_FRAMERECT_TOP, r.left, r.right, DEFAULT_GROUP);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case WID_GL_INFO: {
|
|
|
|
|
Money this_year = 0;
|
|
|
|
|
Money last_year = 0;
|
|
|
|
|
uint32 occupancy = 0;
|
|
|
|
|
uint32 group_vehicles = 0;
|
|
|
|
|
|
|
|
|
|
for (uint i = 0, vehicle_count = this->vehicles.Length(); i < vehicle_count; i++) {
|
|
|
|
|
const Vehicle *v = this->vehicles[i];
|
|
|
|
|
|
|
|
|
|
assert(v->owner == this->owner);
|
|
|
|
|
|
|
|
|
|
this_year += v->GetDisplayProfitThisYear();
|
|
|
|
|
last_year += v->GetDisplayProfitLastYear();
|
|
|
|
|
occupancy += v->trip_occupancy;
|
|
|
|
|
group_vehicles++;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DrawString(r.left + WD_FRAMERECT_LEFT + 8, r.right - WD_FRAMERECT_RIGHT - 16, r.top + WD_FRAMERECT_TOP + 1, STR_GROUP_PROFIT_THIS_YEAR, TC_BLACK);
|
|
|
|
|
SetDParam(0, this_year);
|
|
|
|
|
DrawString(r.left + WD_FRAMERECT_LEFT + 8, r.right - WD_FRAMERECT_RIGHT - 16, r.top + WD_FRAMERECT_TOP + 1, STR_JUST_CURRENCY_LONG, TC_BLACK, SA_RIGHT);
|
|
|
|
|
|
|
|
|
|
DrawString(r.left + WD_FRAMERECT_LEFT + 8, r.right - WD_FRAMERECT_RIGHT - 16, r.top + WD_FRAMERECT_TOP + FONT_HEIGHT_NORMAL + 2, STR_GROUP_PROFIT_LAST_YEAR, TC_BLACK);
|
|
|
|
|
SetDParam(0, last_year);
|
|
|
|
|
DrawString(r.left + WD_FRAMERECT_LEFT + 8, r.right - WD_FRAMERECT_RIGHT - 16, r.top + WD_FRAMERECT_TOP + FONT_HEIGHT_NORMAL + 2, STR_JUST_CURRENCY_LONG, TC_BLACK, SA_RIGHT);
|
|
|
|
|
|
|
|
|
|
DrawString(r.left + WD_FRAMERECT_LEFT + 8, r.right - WD_FRAMERECT_RIGHT - 16, r.top + WD_FRAMERECT_TOP + 2 * FONT_HEIGHT_NORMAL + 3, STR_GROUP_OCCUPANCY, TC_BLACK);
|
|
|
|
|
if (group_vehicles > 0) {
|
|
|
|
|
SetDParam(0, occupancy / group_vehicles);
|
|
|
|
|
DrawString(r.left + WD_FRAMERECT_LEFT + 8, r.right - WD_FRAMERECT_RIGHT - 16, r.top + WD_FRAMERECT_TOP + 2 * FONT_HEIGHT_NORMAL + 3, STR_GROUP_OCCUPANCY_VALUE, TC_BLACK, SA_RIGHT);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case WID_GL_LIST_GROUP: {
|
|
|
|
|
int y1 = r.top + WD_FRAMERECT_TOP;
|
|
|
|
|
int max = min(this->group_sb->GetPosition() + this->group_sb->GetCapacity(), this->groups.Length());
|
|
|
|
|