|
|
|
@ -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), 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 += (FONT_HEIGHT_NORMAL * 3) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
|
|
|
|
|
|
|
|
|
/* Get a multiple of tiny_step_height of that amount */
|
|
|
|
|
size->height = Ceil(size->height - max_icon_height, tiny_step_height);
|
|
|
|
|
break;
|
|
|
|
@ -403,6 +407,11 @@ public:
|
|
|
|
|
*size = maxdim(*size, d);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
case WID_GL_INFO: {
|
|
|
|
|
size->height = (FONT_HEIGHT_NORMAL * 3) + WD_FRAMERECT_TOP + WD_FRAMERECT_BOTTOM;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -527,6 +536,44 @@ 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 vehicle_count = this->vehicles.Length();
|
|
|
|
|
|
|
|
|
|
for (uint i = 0; 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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const int left = r.left + WD_FRAMERECT_LEFT + 8;
|
|
|
|
|
const int right = r.right - WD_FRAMERECT_RIGHT - 8;
|
|
|
|
|
|
|
|
|
|
int y = r.top + WD_FRAMERECT_TOP;
|
|
|
|
|
DrawString(left, right, y, STR_GROUP_PROFIT_THIS_YEAR, TC_BLACK);
|
|
|
|
|
SetDParam(0, this_year);
|
|
|
|
|
DrawString(left, right, y, STR_JUST_CURRENCY_LONG, TC_BLACK, SA_RIGHT);
|
|
|
|
|
|
|
|
|
|
y += FONT_HEIGHT_NORMAL;
|
|
|
|
|
DrawString(left, right, y, STR_GROUP_PROFIT_LAST_YEAR, TC_BLACK);
|
|
|
|
|
SetDParam(0, last_year);
|
|
|
|
|
DrawString(left, right, y, STR_JUST_CURRENCY_LONG, TC_BLACK, SA_RIGHT);
|
|
|
|
|
|
|
|
|
|
y += FONT_HEIGHT_NORMAL;
|
|
|
|
|
DrawString(left, right, y, STR_GROUP_OCCUPANCY, TC_BLACK);
|
|
|
|
|
if (vehicle_count > 0) {
|
|
|
|
|
SetDParam(0, occupancy / vehicle_count);
|
|
|
|
|
DrawString(left, right, y, 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());
|
|
|
|
|