mirror of https://github.com/OpenTTD/OpenTTD
(svn r9475) -Codechange: Allow the purchase details widget to expand dynamically if there's still not enough room for the text.
parent
d2bd12d52e
commit
cdf74ca0c9
|
@ -41,6 +41,7 @@ enum BuildVehicleWidgets {
|
||||||
BUILD_VEHICLE_WIDGET_BUILD,
|
BUILD_VEHICLE_WIDGET_BUILD,
|
||||||
BUILD_VEHICLE_WIDGET_RENAME,
|
BUILD_VEHICLE_WIDGET_RENAME,
|
||||||
BUILD_VEHICLE_WIDGET_RESIZE,
|
BUILD_VEHICLE_WIDGET_RESIZE,
|
||||||
|
BUILD_VEHICLE_WIDGET_END
|
||||||
};
|
};
|
||||||
|
|
||||||
static const Widget _build_vehicle_widgets[] = {
|
static const Widget _build_vehicle_widgets[] = {
|
||||||
|
@ -527,8 +528,9 @@ static int DrawAircraftPurchaseInfo(int x, int y, EngineID engine_number, const
|
||||||
* @param x,y location where to draw the info
|
* @param x,y location where to draw the info
|
||||||
* @param w how wide are the text allowed to be (size of widget/window to Draw in)
|
* @param w how wide are the text allowed to be (size of widget/window to Draw in)
|
||||||
* @param engine_number the engine of which to draw the info of
|
* @param engine_number the engine of which to draw the info of
|
||||||
|
* @return y after drawing all the text
|
||||||
*/
|
*/
|
||||||
void DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number)
|
int DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number)
|
||||||
{
|
{
|
||||||
const Engine *e = GetEngine(engine_number);
|
const Engine *e = GetEngine(engine_number);
|
||||||
YearMonthDay ymd;
|
YearMonthDay ymd;
|
||||||
|
@ -594,6 +596,8 @@ void DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number)
|
||||||
/* Additional text from NewGRF */
|
/* Additional text from NewGRF */
|
||||||
y += ShowAdditionalText(x, y, w, engine_number);
|
y += ShowAdditionalText(x, y, w, engine_number);
|
||||||
if (refitable) y += ShowRefitOptionsList(x, y, w, engine_number);
|
if (refitable) y += ShowRefitOptionsList(x, y, w, engine_number);
|
||||||
|
|
||||||
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Figure out what train EngineIDs to put in the list */
|
/* Figure out what train EngineIDs to put in the list */
|
||||||
|
@ -793,6 +797,23 @@ void DrawEngineList(byte type, int x, int y, const EngineList eng_list, uint16 m
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void ExpandPurchaseInfoWidget(Window *w, int expand_by)
|
||||||
|
{
|
||||||
|
Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
|
||||||
|
|
||||||
|
SetWindowDirty(w);
|
||||||
|
wi->bottom += expand_by;
|
||||||
|
|
||||||
|
for (uint i = BUILD_VEHICLE_WIDGET_BUILD; i < BUILD_VEHICLE_WIDGET_END; i++) {
|
||||||
|
wi = &w->widget[i];
|
||||||
|
wi->top += expand_by;
|
||||||
|
wi->bottom += expand_by;
|
||||||
|
}
|
||||||
|
|
||||||
|
w->height += expand_by;
|
||||||
|
SetWindowDirty(w);
|
||||||
|
}
|
||||||
|
|
||||||
static void DrawBuildVehicleWindow(Window *w)
|
static void DrawBuildVehicleWindow(Window *w)
|
||||||
{
|
{
|
||||||
const buildvehicle_d *bv = &WP(w, buildvehicle_d);
|
const buildvehicle_d *bv = &WP(w, buildvehicle_d);
|
||||||
|
@ -808,7 +829,9 @@ static void DrawBuildVehicleWindow(Window *w)
|
||||||
|
|
||||||
if (bv->sel_engine != INVALID_ENGINE) {
|
if (bv->sel_engine != INVALID_ENGINE) {
|
||||||
const Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
|
const Widget *wi = &w->widget[BUILD_VEHICLE_WIDGET_PANEL];
|
||||||
DrawVehiclePurchaseInfo(2, wi->top + 1, wi->right - wi->left - 2, bv->sel_engine);
|
int text_end = DrawVehiclePurchaseInfo(2, wi->top + 1, wi->right - wi->left - 2, bv->sel_engine);
|
||||||
|
|
||||||
|
if (text_end > wi->bottom) ExpandPurchaseInfoWidget(w, text_end - wi->bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
DrawString(85, 15, _sort_listing[bv->vehicle_type][bv->sort_criteria], 0x10);
|
DrawString(85, 15, _sort_listing[bv->vehicle_type][bv->sort_criteria], 0x10);
|
||||||
|
|
|
@ -32,7 +32,7 @@ static inline bool ValidVLWFlags(uint16 flags)
|
||||||
|
|
||||||
void PlayerVehWndProc(Window *w, WindowEvent *e);
|
void PlayerVehWndProc(Window *w, WindowEvent *e);
|
||||||
|
|
||||||
void DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number);
|
int DrawVehiclePurchaseInfo(int x, int y, uint w, EngineID engine_number);
|
||||||
|
|
||||||
void DrawTrainImage(const Vehicle *v, int x, int y, int count, int skip, VehicleID selection);
|
void DrawTrainImage(const Vehicle *v, int x, int y, int count, int skip, VehicleID selection);
|
||||||
void DrawRoadVehImage(const Vehicle *v, int x, int y, VehicleID selection);
|
void DrawRoadVehImage(const Vehicle *v, int x, int y, VehicleID selection);
|
||||||
|
|
Loading…
Reference in New Issue