File diff r22706:48c5ef34b2a9 → r22707:80b972b362a5
src/newgrf_station.cpp
Show inline comments
 
@@ -235,13 +235,6 @@ static uint32 GetRailContinuationInfo(Ti
 
}
 

	
 

	
 
/* virtual */ void StationScopeResolver::SetTriggers(int triggers) const
 
{
 
	BaseStation *st = const_cast<BaseStation *>(this->st);
 
	assert(st != NULL);
 
	st->waiting_triggers = triggers;
 
}
 

	
 
/**
 
 * Station variable cache
 
 * This caches 'expensive' station variable lookups which iterate over
 
@@ -997,8 +990,9 @@ void TriggerStationRandomisation(Station
 
		}
 
	}
 

	
 
	/* Convert trigger to bit */
 
	uint8 trigger_bit = 1 << trigger;
 
	/* Store triggers now for var 5F */
 
	SetBit(st->waiting_triggers, trigger);
 
	uint32 used_triggers = 0;
 

	
 
	/* Check all tiles over the station to check if the specindex is still in use */
 
	TILE_AREA_LOOP(tile, area) {
 
@@ -1014,11 +1008,13 @@ void TriggerStationRandomisation(Station
 

	
 
			if (cargo_type == CT_INVALID || HasBit(ss->cargo_triggers, cargo_type)) {
 
				StationResolverObject object(ss, st, tile, CBID_RANDOM_TRIGGER, 0);
 
				object.trigger = trigger_bit;
 
				object.waiting_triggers = st->waiting_triggers;
 

	
 
				const SpriteGroup *group = object.Resolve();
 
				if (group == NULL) continue;
 

	
 
				used_triggers |= object.used_triggers;
 

	
 
				uint32 reseed = object.GetReseedSum();
 
				if (reseed != 0) {
 
					whole_reseed |= reseed;
 
@@ -1037,6 +1033,7 @@ void TriggerStationRandomisation(Station
 
	}
 

	
 
	/* Update whole station random bits */
 
	st->waiting_triggers &= ~used_triggers;
 
	if ((whole_reseed & 0xFFFF) != 0) {
 
		st->random_bits &= ~whole_reseed;
 
		st->random_bits |= Random() & whole_reseed;