mirror of
https://github.com/OpenTTD/OpenTTD
synced 2026-01-19 10:22:39 +01:00
Codechange: Use EnumBitSet for RoadTypes.
This commit is contained in:
committed by
Peter Nelson
parent
819e097d6e
commit
732109e444
22
src/road.cpp
22
src/road.cpp
@@ -126,7 +126,9 @@ bool HasRoadTypeAvail(const CompanyID company, RoadType roadtype)
|
||||
} else {
|
||||
const Company *c = Company::GetIfValid(company);
|
||||
if (c == nullptr) return false;
|
||||
return HasBit(c->avail_roadtypes & ~_roadtypes_hidden_mask, roadtype);
|
||||
RoadTypes avail = c->avail_roadtypes;
|
||||
avail.Reset(_roadtypes_hidden_mask);
|
||||
return avail.Test(roadtype);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -137,7 +139,9 @@ bool HasRoadTypeAvail(const CompanyID company, RoadType roadtype)
|
||||
*/
|
||||
bool HasAnyRoadTypesAvail(CompanyID company, RoadTramType rtt)
|
||||
{
|
||||
return (Company::Get(company)->avail_roadtypes & ~_roadtypes_hidden_mask & GetMaskForRoadTramType(rtt)) != ROADTYPES_NONE;
|
||||
RoadTypes avail = Company::Get(company)->avail_roadtypes;
|
||||
avail.Reset(_roadtypes_hidden_mask);
|
||||
return avail.Any(GetMaskForRoadTramType(rtt));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -177,7 +181,7 @@ RoadTypes AddDateIntroducedRoadTypes(RoadTypes current, TimerGameCalendar::Date
|
||||
RoadTypes required = rti->introduction_required_roadtypes;
|
||||
if ((rts & required) != required) continue;
|
||||
|
||||
rts |= rti->introduces_roadtypes;
|
||||
rts.Set(rti->introduces_roadtypes);
|
||||
}
|
||||
|
||||
/* When we added roadtypes we need to run this method again; the added
|
||||
@@ -193,7 +197,7 @@ RoadTypes AddDateIntroducedRoadTypes(RoadTypes current, TimerGameCalendar::Date
|
||||
*/
|
||||
RoadTypes GetCompanyRoadTypes(CompanyID company, bool introduces)
|
||||
{
|
||||
RoadTypes rts = ROADTYPES_NONE;
|
||||
RoadTypes rts{};
|
||||
|
||||
for (const Engine *e : Engine::IterateType(VEH_ROAD)) {
|
||||
const EngineInfo *ei = &e->info;
|
||||
@@ -203,9 +207,9 @@ RoadTypes GetCompanyRoadTypes(CompanyID company, bool introduces)
|
||||
const RoadVehicleInfo *rvi = &e->u.road;
|
||||
assert(rvi->roadtype < ROADTYPE_END);
|
||||
if (introduces) {
|
||||
rts |= GetRoadTypeInfo(rvi->roadtype)->introduces_roadtypes;
|
||||
rts.Set(GetRoadTypeInfo(rvi->roadtype)->introduces_roadtypes);
|
||||
} else {
|
||||
SetBit(rts, rvi->roadtype);
|
||||
rts.Set(rvi->roadtype);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -221,7 +225,7 @@ RoadTypes GetCompanyRoadTypes(CompanyID company, bool introduces)
|
||||
*/
|
||||
RoadTypes GetRoadTypes(bool introduces)
|
||||
{
|
||||
RoadTypes rts = ROADTYPES_NONE;
|
||||
RoadTypes rts{};
|
||||
|
||||
for (const Engine *e : Engine::IterateType(VEH_ROAD)) {
|
||||
const EngineInfo *ei = &e->info;
|
||||
@@ -230,9 +234,9 @@ RoadTypes GetRoadTypes(bool introduces)
|
||||
const RoadVehicleInfo *rvi = &e->u.road;
|
||||
assert(rvi->roadtype < ROADTYPE_END);
|
||||
if (introduces) {
|
||||
rts |= GetRoadTypeInfo(rvi->roadtype)->introduces_roadtypes;
|
||||
rts.Set(GetRoadTypeInfo(rvi->roadtype)->introduces_roadtypes);
|
||||
} else {
|
||||
SetBit(rts, rvi->roadtype);
|
||||
rts.Set(rvi->roadtype);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user