mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r11353) -Codechange: add support for newgrf callback 32
This commit is contained in:
parent
4041d8108a
commit
1256cbade3
|
@ -220,7 +220,11 @@ static void RunVehicleDayProc(uint daytick)
|
|||
for (i = daytick; i < total; i += DAY_TICKS) {
|
||||
Vehicle *v = GetVehicle(i);
|
||||
|
||||
if (v->IsValid()) _on_new_vehicle_day_proc[v->type](v);
|
||||
if (v->IsValid()) {
|
||||
/* Call the 32-day callback if needed */
|
||||
CheckVehicle32Day(v);
|
||||
_on_new_vehicle_day_proc[v->type](v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ enum CallbackID {
|
|||
CBID_VEHICLE_START_STOP_CHECK = 0x31,
|
||||
|
||||
/** Called for every vehicle every 32 days (not all on same date though). */
|
||||
CBID_VEHICLE_32DAY_CALLBACK = 0x32, // not implemented
|
||||
CBID_VEHICLE_32DAY_CALLBACK = 0x32,
|
||||
|
||||
/** Called to play a special sound effect */
|
||||
CBID_VEHICLE_SOUND_EFFECT = 0x33,
|
||||
|
|
|
@ -1050,6 +1050,10 @@ static void DoTriggerVehicle(Vehicle *v, VehicleTrigger trigger, byte base_rando
|
|||
assert(!first);
|
||||
if (v->Next() != NULL) DoTriggerVehicle(v->Next(), VEHICLE_TRIGGER_ANY_NEW_CARGO, base_random_bits, false);
|
||||
break;
|
||||
|
||||
case VEHICLE_TRIGGER_CALLBACK_32:
|
||||
/* Do not do any recursion */
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -49,6 +49,8 @@ enum VehicleTrigger {
|
|||
VEHICLE_TRIGGER_EMPTY = 4,
|
||||
/* Not triggered externally (called for the whole chain if we got NEW_CARGO) */
|
||||
VEHICLE_TRIGGER_ANY_NEW_CARGO = 8,
|
||||
/* Externally triggered for each vehicle in chain */
|
||||
VEHICLE_TRIGGER_CALLBACK_32 = 10,
|
||||
};
|
||||
void TriggerVehicle(Vehicle *veh, VehicleTrigger trigger);
|
||||
|
||||
|
|
|
@ -1398,6 +1398,15 @@ Vehicle *CheckClickOnVehicle(const ViewPort *vp, int x, int y)
|
|||
return found;
|
||||
}
|
||||
|
||||
void CheckVehicle32Day(Vehicle *v)
|
||||
{
|
||||
if ((v->day_counter & 0x1F) != 0) return;
|
||||
|
||||
uint16 callback = GetVehicleCallback(CBID_VEHICLE_32DAY_CALLBACK, 0, 0, v->engine_type, v);
|
||||
if (callback == CALLBACK_FAILED) return;
|
||||
if (HASBIT(callback, 0)) TriggerVehicle(v, VEHICLE_TRIGGER_CALLBACK_32); // Trigger vehicle trigger 10
|
||||
if (HASBIT(callback, 1)) v->colormap = PAL_NONE; // Update colormap via callback 2D
|
||||
}
|
||||
|
||||
void DecreaseVehicleValue(Vehicle *v)
|
||||
{
|
||||
|
|
|
@ -591,6 +591,7 @@ void InitializeTrains();
|
|||
byte VehicleRandomBits();
|
||||
void ResetVehiclePosHash();
|
||||
void ResetVehicleColorMap();
|
||||
void CheckVehicle32Day(Vehicle *v);
|
||||
|
||||
bool CanRefitTo(EngineID engine_type, CargoID cid_to);
|
||||
CargoID FindFirstRefittableCargo(EngineID engine_type);
|
||||
|
|
Loading…
Reference in New Issue