changeset 2090:d5376deacf44 draft

(svn r2600) Fix: [vehicles] Fix problem with vehicle loop not distributing the calls evenly over the day.
author ludde <ludde@openttd.org>
date Sun, 17 Jul 2005 12:44:35 +0000
parents 3452d9a81bd8
children 98dd255a204e
files misc.c oldloader.c variables.h vehicle.c
diffstat 4 files changed, 7 insertions(+), 39 deletions(-) [+]
line wrap: on
line diff
--- a/misc.c
+++ b/misc.c
@@ -138,7 +138,6 @@
 	_tick_counter = 0;
 	_date_fract = 0;
 	_cur_tileloop_tile = 0;
-	_vehicle_id_ctr_day = 0;
 
 	{
 		uint starting = ConvertIntDate(_patches.starting_date);
@@ -485,40 +484,21 @@
 };
 
 /**
- * Runs the day_proc of 'amount' vehicles.
+ * Runs the day_proc for every DAY_TICKS vehicle starting at daytick.
  */
-static void RunVehicleDayProc(uint amount)
+static void RunVehicleDayProc(uint daytick)
 {
-	Vehicle *v;
-	VehicleID ctr;
-	uint i;
-
-	ctr = _vehicle_id_ctr_day;
+	uint i, total = _vehicle_pool.total_items;
 
-	/* If the CTR is already over the size of the pool, don't even run the for-loop */
-	if (ctr >= GetVehiclePoolSize()) {
-		_vehicle_id_ctr_day += amount;
-		return;
-	}
-
-	for (i = 0; i < amount; i++, ctr++) {
-		/* Skip non-existing vehicles */
-		if (ctr >= GetVehiclePoolSize()) {
-			_vehicle_id_ctr_day += amount;
-			return;
-		}
-
-		v = GetVehicle(ctr);
+	for (i = daytick; i < total; i += DAY_TICKS) {
+		Vehicle *v = GetVehicle(i);
 		if (v->type != 0)
 			_on_new_vehicle_day_proc[v->type - 0x10](v);
 	}
-
-	_vehicle_id_ctr_day = ctr;
 }
 
 void IncreaseDate(void)
 {
-	uint32 total_vehicles = (1 << _vehicle_pool.block_size_bits) * _vehicle_pool.max_blocks;
 	YearMonthDay ymd;
 
 	if (_game_mode == GM_MENU) {
@@ -526,7 +506,7 @@
 		return;
 	}
 
-	RunVehicleDayProc(total_vehicles / DAY_TICKS);
+	RunVehicleDayProc(_date_fract);
 
 	/* increase day, and check if a new day is there? */
 	_tick_counter++;
@@ -539,13 +519,6 @@
 	/* yeah, increse day counter and call various daily loops */
 	_date++;
 
-	/* We have a hole because of rounding errors, between the last vehicle checked and the max amount
-	 *  of vehicles.. correct for that problem here */
-	RunVehicleDayProc(total_vehicles - _vehicle_id_ctr_day);
-
-	assert(_vehicle_id_ctr_day == total_vehicles);
-	_vehicle_id_ctr_day = 0;
-
 	TextMessageDailyLoop();
 
 	DisasterDailyLoop();
--- a/oldloader.c
+++ b/oldloader.c
@@ -422,8 +422,6 @@
 			}
 		}
 	}
-
-	_vehicle_id_ctr_day = 0;
 }
 
 /*
--- a/variables.h
+++ b/variables.h
@@ -62,7 +62,7 @@
 // Amount of game ticks
 VARDEF uint16 _tick_counter;
 
-// Used when calling OnNewDay
+// This one is not used anymore.
 VARDEF VehicleID _vehicle_id_ctr_day;
 
 // Skip aging of cargo?
--- a/vehicle.c
+++ b/vehicle.c
@@ -2149,9 +2149,6 @@
 			}
 		}
 	}
-
-	if (_sl.full_version < 0x0B01)
-		_vehicle_id_ctr_day = 0;
 }
 
 const ChunkHandler _veh_chunk_handlers[] = {