mirror of https://github.com/OpenTTD/OpenTTD
(svn r4703) - NewGRF: add support for callback 0x1D, "can wagon be attached". This can be used to disallow freight wagons to be placed in passenger trains, along with other uses.
parent
a38c8605b0
commit
6c3cc7fd16
|
@ -25,6 +25,8 @@ enum CallbackID {
|
||||||
|
|
||||||
CBID_TRAIN_ARTIC_ENGINE = 0x16,
|
CBID_TRAIN_ARTIC_ENGINE = 0x16,
|
||||||
|
|
||||||
|
CBID_TRAIN_ALLOW_WAGON_ATTACH = 0x1D,
|
||||||
|
|
||||||
/* This callback is called from vehicle purchase lists. It returns a value to be
|
/* This callback is called from vehicle purchase lists. It returns a value to be
|
||||||
* used as a custom string ID in the 0xD000 range. */
|
* used as a custom string ID in the 0xD000 range. */
|
||||||
CBID_VEHICLE_ADDITIONAL_TEXT = 0x23,
|
CBID_VEHICLE_ADDITIONAL_TEXT = 0x23,
|
||||||
|
|
12
train_cmd.c
12
train_cmd.c
|
@ -27,6 +27,7 @@
|
||||||
#include "train.h"
|
#include "train.h"
|
||||||
#include "newgrf_callbacks.h"
|
#include "newgrf_callbacks.h"
|
||||||
#include "newgrf_engine.h"
|
#include "newgrf_engine.h"
|
||||||
|
#include "newgrf_text.h"
|
||||||
#include "direction.h"
|
#include "direction.h"
|
||||||
|
|
||||||
static bool TrainCheckIfLineEnds(Vehicle *v);
|
static bool TrainCheckIfLineEnds(Vehicle *v);
|
||||||
|
@ -1076,6 +1077,17 @@ int32 CmdMoveRailVehicle(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
|
||||||
if (flags & DC_EXEC) src->unitnumber = unit_num;
|
if (flags & DC_EXEC) src->unitnumber = unit_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (dst_head != NULL) {
|
||||||
|
/* Check NewGRF Callback 0x1D */
|
||||||
|
uint16 callback = GetVehicleCallbackParent(CBID_TRAIN_ALLOW_WAGON_ATTACH, 0, 0, dst_head->engine_type, src, dst_head);
|
||||||
|
if (callback != CALLBACK_FAILED) {
|
||||||
|
if (callback == 0xFD) return CMD_ERROR;
|
||||||
|
if (callback < 0xFD) {
|
||||||
|
StringID error = GetGRFStringID(GetEngineGRFID(dst_head->engine_type), 0xD000 + callback);
|
||||||
|
return_cmd_error(error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* do it? */
|
/* do it? */
|
||||||
if (flags & DC_EXEC) {
|
if (flags & DC_EXEC) {
|
||||||
|
|
Loading…
Reference in New Issue