mirror of https://github.com/OpenTTD/OpenTTD
(svn r17089) -Codechange: move RunVehicleDayProc() to vehicle.cpp
parent
0ab39b52d0
commit
88a2d688da
25
src/date.cpp
25
src/date.cpp
|
@ -261,38 +261,17 @@ static void OnNewDay()
|
||||||
EnginesDailyLoop();
|
EnginesDailyLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Runs the day_proc for every DAY_TICKS vehicle starting at daytick.
|
|
||||||
*/
|
|
||||||
static void RunVehicleDayProc(uint daytick)
|
|
||||||
{
|
|
||||||
for (size_t i = daytick; i < Vehicle::GetPoolSize(); i += DAY_TICKS) {
|
|
||||||
Vehicle *v = Vehicle::Get(i);
|
|
||||||
|
|
||||||
if (v != NULL) {
|
|
||||||
/* Call the 32-day callback if needed */
|
|
||||||
CheckVehicle32Day(v);
|
|
||||||
v->OnNewDay();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Increases the tick counter, increases date and possibly calls
|
* Increases the tick counter, increases date and possibly calls
|
||||||
* procedures that have to be called daily, monthly or yearly.
|
* procedures that have to be called daily, monthly or yearly.
|
||||||
*/
|
*/
|
||||||
void IncreaseDate()
|
void IncreaseDate()
|
||||||
{
|
{
|
||||||
if (_game_mode == GM_MENU) {
|
|
||||||
_tick_counter++;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
RunVehicleDayProc(_date_fract);
|
|
||||||
|
|
||||||
/* increase day, and check if a new day is there? */
|
/* increase day, and check if a new day is there? */
|
||||||
_tick_counter++;
|
_tick_counter++;
|
||||||
|
|
||||||
|
if (_game_mode == GM_MENU) return;
|
||||||
|
|
||||||
_date_fract++;
|
_date_fract++;
|
||||||
if (_date_fract < DAY_TICKS) return;
|
if (_date_fract < DAY_TICKS) return;
|
||||||
_date_fract = 0;
|
_date_fract = 0;
|
||||||
|
|
|
@ -559,12 +559,41 @@ void VehicleEnteredDepotThisTick(Vehicle *v)
|
||||||
v->vehstatus |= VS_STOPPED;
|
v->vehstatus |= VS_STOPPED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increases the day counter for all vehicles and calls 1-day and 32-day handlers.
|
||||||
|
* Each tick, it processes vehicles with "index % DAY_TICKS == _date_fract",
|
||||||
|
* so each day, all vehicles are processes in DAY_TICKS steps.
|
||||||
|
*/
|
||||||
|
static void RunVehicleDayProc()
|
||||||
|
{
|
||||||
|
if (_game_mode != GM_NORMAL) return;
|
||||||
|
|
||||||
|
/* Run the day_proc for every DAY_TICKS vehicle starting at _date_fract. */
|
||||||
|
for (size_t i = _date_fract; i < Vehicle::GetPoolSize(); i += DAY_TICKS) {
|
||||||
|
Vehicle *v = Vehicle::Get(i);
|
||||||
|
if (v == NULL) continue;
|
||||||
|
|
||||||
|
/* Call the 32-day callback if needed */
|
||||||
|
if ((v->day_counter & 0x1F) == 0) {
|
||||||
|
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->colourmap = PAL_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* This is called once per day for each vehicle, but not in the first tick of the day */
|
||||||
|
v->OnNewDay();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CallVehicleTicks()
|
void CallVehicleTicks()
|
||||||
{
|
{
|
||||||
_vehicles_to_autoreplace.Clear();
|
_vehicles_to_autoreplace.Clear();
|
||||||
|
|
||||||
_age_cargo_skip_counter = (_age_cargo_skip_counter == 0) ? 184 : (_age_cargo_skip_counter - 1);
|
_age_cargo_skip_counter = (_age_cargo_skip_counter == 0) ? 184 : (_age_cargo_skip_counter - 1);
|
||||||
|
|
||||||
|
RunVehicleDayProc();
|
||||||
|
|
||||||
Station *st;
|
Station *st;
|
||||||
FOR_ALL_STATIONS(st) LoadUnloadStation(st);
|
FOR_ALL_STATIONS(st) LoadUnloadStation(st);
|
||||||
|
|
||||||
|
@ -801,16 +830,6 @@ Vehicle *CheckClickOnVehicle(const ViewPort *vp, int x, int y)
|
||||||
return found;
|
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->colourmap = PAL_NONE; // Update colourmap via callback 2D
|
|
||||||
}
|
|
||||||
|
|
||||||
void DecreaseVehicleValue(Vehicle *v)
|
void DecreaseVehicleValue(Vehicle *v)
|
||||||
{
|
{
|
||||||
v->value -= v->value >> 8;
|
v->value -= v->value >> 8;
|
||||||
|
|
|
@ -676,8 +676,6 @@ struct FreeUnitIDGenerator {
|
||||||
~FreeUnitIDGenerator() { free(this->cache); }
|
~FreeUnitIDGenerator() { free(this->cache); }
|
||||||
};
|
};
|
||||||
|
|
||||||
void CheckVehicle32Day(Vehicle *v);
|
|
||||||
|
|
||||||
static const int32 INVALID_COORD = 0x7fffffff;
|
static const int32 INVALID_COORD = 0x7fffffff;
|
||||||
|
|
||||||
#endif /* VEHICLE_BASE_H */
|
#endif /* VEHICLE_BASE_H */
|
||||||
|
|
Loading…
Reference in New Issue