25 #include "table/strings.h"
110 int size = spec == NULL ? 0 : spec->
size;
124 for (uint i = 0; i < ObjectClass::GetClassCount(); i++) {
129 size->width += padding.width;
146 if (spec->
views >= 2) size->width += resize->width;
147 if (spec->
views >= 4) size->height += resize->height;
155 bool two_wide =
false;
162 two_wide |= spec->
views >= 2;
167 for (
size_t i = 0; i <
lengthof(height); i++) {
176 size->height =
max(height[0], height[1] * 2 + 2);
186 if (spec->
views >= 2) size->width = size->width / 2 - 1;
187 if (spec->
views >= 4) size->height = size->height / 2 - 1;
212 switch (
GB(widget, 0, 16)) {
216 for (uint i = 0; i < ObjectClass::GetClassCount(); i++) {
229 if (spec == NULL)
break;
240 if (
FillDrawPixelInfo(&tmp_dpi, r.left, r.top, r.right - r.left + 1, r.bottom - r.top + 1)) {
257 int obj_index = objclass->GetIndexFromUI(
GB(widget, 16, 16));
258 if (obj_index < 0)
break;
259 const ObjectSpec *spec = objclass->GetSpec(obj_index);
260 if (spec == NULL)
break;
267 if (
FillDrawPixelInfo(&tmp_dpi, r.left + 1, r.top, (r.right - 1) - (r.left + 1) + 1, r.bottom - r.top + 1)) {
285 if (spec == NULL)
break;
291 if (callback_res > 0x400) {
295 if (message != STR_NULL && message != STR_UNDEFINED) {
300 int y =
DrawStringMultiLine(r.left, r.right, r.top, UINT16_MAX, message, TC_ORANGE) - r.top;
342 this->UpdateSelectSize();
346 void UpdateSelectSize()
365 switch (
GB(widget, 0, 16)) {
368 if (num_clicked >= (
int)ObjectClass::GetUIClassCount())
break;
377 int num_clicked = objclass->GetIndexFromUI(
GB(widget, 16, 16));
378 if (num_clicked >= 0 && objclass->GetSpec(num_clicked)->IsAvailable()) this->
SelectOtherObject(num_clicked);
386 this->UpdateSelectSize();
402 for (uint i = 0; i < sel_objclass->
GetSpecCount(); i++) {
403 const ObjectSpec *spec = sel_objclass->GetSpec(i);
415 const ObjectSpec *spec = objclass->GetSpec(i);
438 static const NWidgetPart _nested_build_object_widgets[] = {
471 NWidget(
WWT_EMPTY, INVALID_COLOUR,
WID_BO_INFO),
SetPadding(2, 5, 0, 5),
SetFill(1, 0),
SetResize(1, 0),
484 _nested_build_object_widgets,
lengthof(_nested_build_object_widgets)