(svn r11353) -Codechange: add support for newgrf callback 32

replace/41b28d7194a279bdc17475d4fbe2ea6ec885a466
glx 17 years ago
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…
Cancel
Save