summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--newgrf_callbacks.h4
-rw-r--r--vehicle_gui.c12
-rw-r--r--vehicle_gui.h1
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 */