rubidium@9405: /* $Id$ */ rubidium@9405: rubidium@9430: /** @file ai_industry.cpp handles the query-related of the AIIndustry class */ rubidium@9405: rubidium@9430: #include "ai_industry.hpp" truelight@9649: #include "ai_cargo.hpp" rubidium@9430: #include "../../industry.h" rubidium@9723: #include "../../strings_func.h" rubidium@9405: #include "table/strings.h" rubidium@9405: truebrain@9737: /* static */ IndustryID AIIndustry::GetMaxIndustryID() rubidium@9405: { rubidium@9405: return ::GetMaxIndustryIndex(); rubidium@9405: } rubidium@9405: truebrain@9737: /* static */ int32 AIIndustry::GetIndustryCount() rubidium@9405: { rubidium@9405: return ::GetNumIndustries(); rubidium@9405: } rubidium@9405: rubidium@9497: /* static */ bool AIIndustry::IsValidIndustry(IndustryID industry_id) rubidium@9405: { rubidium@9405: return ::IsValidIndustryID(industry_id); rubidium@9405: } rubidium@9405: truebrain@9737: /* static */ char *AIIndustry::GetName(IndustryID industry_id) rubidium@9405: { truebrain@9736: if (!IsValidIndustry(industry_id)) return NULL; rubidium@9405: static const int len = 64; rubidium@9405: char *industry_name = MallocT(len); rubidium@9405: truebrain@9736: ::SetDParam(0, industry_id); truebrain@9736: ::GetString(industry_name, STR_INDUSTRY, &industry_name[len - 1]); rubidium@9405: rubidium@9405: return industry_name; rubidium@9405: } rubidium@9405: truelight@9650: /* static */ int32 AIIndustry::GetProduction(IndustryID industry_id, CargoID cargo_id) rubidium@9405: { truebrain@9736: if (!IsValidIndustry(industry_id)) return -1; truelight@9649: if (!AICargo::IsValidCargo(cargo_id)) return -1; truelight@9649: rubidium@9405: const Industry *i = ::GetIndustry(industry_id); truebrain@9736: const IndustrySpec *indsp = ::GetIndustrySpec(i->type); truelight@9649: truelight@9717: if (indsp->produced_cargo[0] == cargo_id) return i->production_rate[0]; truelight@9717: if (indsp->produced_cargo[1] == cargo_id) return i->production_rate[1]; truelight@9649: return -1; rubidium@9405: } truelight@9649: truelight@9710: /* static */ bool AIIndustry::IsCargoAccepted(IndustryID industry_id, CargoID cargo_id) truelight@9710: { truebrain@9736: if (!IsValidIndustry(industry_id)) return false; truelight@9710: if (!AICargo::IsValidCargo(cargo_id)) return false; truelight@9710: truelight@9710: const Industry *i = ::GetIndustry(industry_id); truebrain@9736: const IndustrySpec *indsp = ::GetIndustrySpec(i->type); truelight@9710: truelight@9710: if (indsp->accepts_cargo[0] == cargo_id) return true; truelight@9710: if (indsp->accepts_cargo[1] == cargo_id) return true; truelight@9710: if (indsp->accepts_cargo[2] == cargo_id) return true; truelight@9710: truelight@9710: return false; truelight@9710: } truelight@9710: truelight@9649: /* static */ TileIndex AIIndustry::GetLocation(IndustryID industry_id) truelight@9649: { truebrain@9736: if (!IsValidIndustry(industry_id)) return INVALID_TILE; truelight@9649: return ::GetIndustry(industry_id)->xy; truelight@9649: }