File diff r27437:c8c76aa89930 → r27438:22e72ba90974
src/economy.cpp
Show inline comments
 
@@ -1017,9 +1017,9 @@ static uint DeliverGoodsToIndustry(const
 
		Industry *ind = i.industry;
 
		if (ind->index == source) continue;
 

	
 
		int cargo_index = ind->GetCargoAcceptedIndex(cargo_type);
 
		auto it = ind->GetCargoAccepted(cargo_type);
 
		/* Check if matching cargo has been found */
 
		if (cargo_index < 0) continue;
 
		if (it == std::end(ind->accepted)) continue;
 

	
 
		/* Check if industry temporarily refuses acceptance */
 
		if (IndustryTemporarilyRefusesCargo(ind, cargo_type)) continue;
 
@@ -1029,9 +1029,9 @@ static uint DeliverGoodsToIndustry(const
 
		/* Insert the industry into _cargo_delivery_destinations, if not yet contained */
 
		include(_cargo_delivery_destinations, ind);
 

	
 
		uint amount = std::min(num_pieces, 0xFFFFu - ind->incoming_cargo_waiting[cargo_index]);
 
		ind->incoming_cargo_waiting[cargo_index] += amount;
 
		ind->last_cargo_accepted_at[cargo_index] = TimerGameCalendar::date;
 
		uint amount = std::min(num_pieces, 0xFFFFu - it->waiting);
 
		it->waiting += amount;
 
		it->last_accepted = TimerGameCalendar::date;
 
		num_pieces -= amount;
 
		accepted += amount;
 

	
 
@@ -1119,15 +1119,14 @@ static void TriggerIndustryProduction(In
 
			SetWindowDirty(WC_INDUSTRY_VIEW, i->index);
 
		}
 
	} else {
 
		for (uint ci_in = 0; ci_in < lengthof(i->incoming_cargo_waiting); ci_in++) {
 
			uint cargo_waiting = i->incoming_cargo_waiting[ci_in];
 
			if (cargo_waiting == 0) continue;
 
		for (auto ita = std::begin(i->accepted); ita != std::end(i->accepted); ++ita) {
 
			if (ita->waiting == 0) continue;
 

	
 
			for (uint ci_out = 0; ci_out < lengthof(i->produced_cargo_waiting); ci_out++) {
 
				i->produced_cargo_waiting[ci_out] = ClampTo<uint16_t>(i->produced_cargo_waiting[ci_out] + (cargo_waiting * indspec->input_cargo_multiplier[ci_in][ci_out] / 256));
 
			for (auto itp = std::begin(i->produced); itp != std::end(i->produced); ++itp) {
 
				itp->waiting = ClampTo<uint16_t>(itp->waiting + (ita->waiting * indspec->input_cargo_multiplier[ita - std::begin(i->accepted)][itp - std::begin(i->produced)] / 256));
 
			}
 

	
 
			i->incoming_cargo_waiting[ci_in] = 0;
 
			ita->waiting = 0;
 
		}
 
	}