diff options
-rw-r--r-- | newgrf_callbacks.h | 4 | ||||
-rw-r--r-- | vehicle_gui.c | 12 | ||||
-rw-r--r-- | vehicle_gui.h | 1 |
3 files changed, 17 insertions, 0 deletions
diff --git a/newgrf_callbacks.h b/newgrf_callbacks.h index 228b46af2..0d591067b 100644 --- a/newgrf_callbacks.h +++ b/newgrf_callbacks.h @@ -24,6 +24,10 @@ enum CallbackID { CBID_VEHICLE_REFIT_CAPACITY = 0x15, CBID_TRAIN_ARTIC_ENGINE = 0x16, + + /* This callback is called from vehicle purchase lists. It returns a value to be + * used as a custom string ID in the 0xD000 range. */ + CBID_VEHICLE_ADDITIONAL_TEXT = 0x23, }; /** diff --git a/vehicle_gui.c b/vehicle_gui.c index 97396546e..3ed835f2e 100644 --- a/vehicle_gui.c +++ b/vehicle_gui.c @@ -19,7 +19,9 @@ #include "vehicle_gui.h" #include "viewport.h" #include "train.h" +#include "newgrf_callbacks.h" #include "newgrf_engine.h" +#include "newgrf_text.h" Sorting _sorting; @@ -256,6 +258,16 @@ CargoID DrawVehicleRefitWindow(const Vehicle *v, int sel) return cargo; } +/* Display additional text from NewGRF in the purchase information window */ +int ShowAdditionalText(int x, int y, int w, EngineID engine) +{ + uint16 callback = GetVehicleCallback(CBID_VEHICLE_ADDITIONAL_TEXT, 0, 0, engine, NULL); + if (callback == CALLBACK_FAILED) return 0; + + DrawStringTruncated(x, y, GetGRFStringID(GetEngineGRFID(engine), 0xD000 + callback), 16, w); + return 10; +} + /************ Sorter functions *****************/ int CDECL GeneralOwnerSorter(const void *a, const void *b) { diff --git a/vehicle_gui.h b/vehicle_gui.h index cf081130c..74a1835f1 100644 --- a/vehicle_gui.h +++ b/vehicle_gui.h @@ -62,6 +62,7 @@ void DrawShipPurchaseInfo(int x, int y, EngineID engine_number); void ChangeVehicleViewWindow(const Vehicle *from_v, const Vehicle *to_v); +int ShowAdditionalText(int x, int y, int w, EngineID engine_number); #endif /* VEHICLE_GUI_H */ |