Changeset - r28203:306a9b1774fe
[Not reviewed]
master
0 2 0
Peter Nelson - 7 months ago 2023-11-26 21:38:49
peter1138@openttd.org
Codechange: Use max_element to find highest cargo amount.
2 files changed with 6 insertions and 18 deletions:
0 comments (0 inline, 0 general)
src/script/api/script_engine.cpp
Show inline comments
 
@@ -52,22 +52,16 @@
 
/* static */ CargoID ScriptEngine::GetCargoType(EngineID engine_id)
 
{
 
	if (!IsValidEngine(engine_id)) return CT_INVALID;
 

	
 
	CargoArray cap = ::GetCapacityOfArticulatedParts(engine_id);
 

	
 
	CargoID most_cargo = CT_INVALID;
 
	uint amount = 0;
 
	for (CargoID cid = 0; cid < NUM_CARGO; cid++) {
 
		if (cap[cid] > amount) {
 
			amount = cap[cid];
 
			most_cargo = cid;
 
		}
 
	}
 
	auto it = std::max_element(std::cbegin(cap), std::cend(cap));
 
	if (*it == 0) return CT_INVALID;
 

	
 
	return most_cargo;
 
	return CargoID(std::distance(std::cbegin(cap), it));
 
}
 

	
 
/* static */ bool ScriptEngine::CanRefitCargo(EngineID engine_id, CargoID cargo_id)
 
{
 
	if (!IsValidEngine(engine_id)) return false;
 
	if (!ScriptCargo::IsValidCargo(cargo_id)) return false;
src/script/api/script_event_types.cpp
Show inline comments
 
@@ -39,22 +39,16 @@ std::optional<std::string> ScriptEventEn
 

	
 
CargoID ScriptEventEnginePreview::GetCargoType()
 
{
 
	if (!this->IsEngineValid()) return CT_INVALID;
 
	CargoArray cap = ::GetCapacityOfArticulatedParts(this->engine);
 

	
 
	CargoID most_cargo = CT_INVALID;
 
	uint amount = 0;
 
	for (CargoID cid = 0; cid < NUM_CARGO; cid++) {
 
		if (cap[cid] > amount) {
 
			amount = cap[cid];
 
			most_cargo = cid;
 
		}
 
	}
 
	auto it = std::max_element(std::cbegin(cap), std::cend(cap));
 
	if (*it == 0) return CT_INVALID;
 

	
 
	return most_cargo;
 
	return CargoID(std::distance(std::cbegin(cap), it));
 
}
 

	
 
int32_t ScriptEventEnginePreview::GetCapacity()
 
{
 
	if (!this->IsEngineValid()) return -1;
 
	const Engine *e = ::Engine::Get(this->engine);
0 comments (0 inline, 0 general)