mirror of https://github.com/OpenTTD/OpenTTD.git
Fix 30ae072: when a road type is hidden, towns may not build them even when that flag is set
This commit is contained in:
parent
e60632bce6
commit
8fa61533f0
|
@ -112,14 +112,7 @@ bool HasRoadTypeAvail(const CompanyID company, RoadType roadtype)
|
||||||
{
|
{
|
||||||
if (company == OWNER_DEITY || company == OWNER_TOWN || _game_mode == GM_EDITOR || _generating_world) {
|
if (company == OWNER_DEITY || company == OWNER_TOWN || _game_mode == GM_EDITOR || _generating_world) {
|
||||||
const RoadTypeInfo *rti = GetRoadTypeInfo(roadtype);
|
const RoadTypeInfo *rti = GetRoadTypeInfo(roadtype);
|
||||||
if (rti->label == 0) return false;
|
return rti->label != 0 && (rti->flags & ROTFB_HIDDEN) == 0;
|
||||||
|
|
||||||
/*
|
|
||||||
* Do not allow building hidden road types, except when a town may build it.
|
|
||||||
* The GS under deity mode, as well as anybody in the editor builds roads that are
|
|
||||||
* owned by towns. So if a town may build it, it should be buildable by them too.
|
|
||||||
*/
|
|
||||||
return (rti->flags & ROTFB_HIDDEN) == 0 || (rti->flags & ROTFB_TOWN_BUILD) != 0;
|
|
||||||
} else {
|
} else {
|
||||||
const Company *c = Company::GetIfValid(company);
|
const Company *c = Company::GetIfValid(company);
|
||||||
if (c == nullptr) return false;
|
if (c == nullptr) return false;
|
||||||
|
|
|
@ -40,14 +40,14 @@ enum RoadTypeFlags {
|
||||||
ROTF_NO_LEVEL_CROSSING, ///< Bit number for disabling level crossing
|
ROTF_NO_LEVEL_CROSSING, ///< Bit number for disabling level crossing
|
||||||
ROTF_NO_HOUSES, ///< Bit number for setting this roadtype as not house friendly
|
ROTF_NO_HOUSES, ///< Bit number for setting this roadtype as not house friendly
|
||||||
ROTF_HIDDEN, ///< Bit number for hidden from construction.
|
ROTF_HIDDEN, ///< Bit number for hidden from construction.
|
||||||
ROTF_TOWN_BUILD, ///< Bit number for allowing towns to build this roadtype.
|
ROTF_TOWN_BUILD, ///< Bit number for allowing towns to build this roadtype. Does not override ROTF_HIDDEN.
|
||||||
|
|
||||||
ROTFB_NONE = 0, ///< All flags cleared.
|
ROTFB_NONE = 0, ///< All flags cleared.
|
||||||
ROTFB_CATENARY = 1 << ROTF_CATENARY, ///< Value for drawing a catenary.
|
ROTFB_CATENARY = 1 << ROTF_CATENARY, ///< Value for drawing a catenary.
|
||||||
ROTFB_NO_LEVEL_CROSSING = 1 << ROTF_NO_LEVEL_CROSSING, ///< Value for disabling a level crossing.
|
ROTFB_NO_LEVEL_CROSSING = 1 << ROTF_NO_LEVEL_CROSSING, ///< Value for disabling a level crossing.
|
||||||
ROTFB_NO_HOUSES = 1 << ROTF_NO_HOUSES, ///< Value for for setting this roadtype as not house friendly.
|
ROTFB_NO_HOUSES = 1 << ROTF_NO_HOUSES, ///< Value for for setting this roadtype as not house friendly.
|
||||||
ROTFB_HIDDEN = 1 << ROTF_HIDDEN, ///< Value for hidden from construction.
|
ROTFB_HIDDEN = 1 << ROTF_HIDDEN, ///< Value for hidden from construction.
|
||||||
ROTFB_TOWN_BUILD = 1 << ROTF_TOWN_BUILD, ///< Value for allowing towns to build this roadtype.
|
ROTFB_TOWN_BUILD = 1 << ROTF_TOWN_BUILD, ///< Value for allowing towns to build this roadtype. Does not override ROTFB_HIDDEN.
|
||||||
};
|
};
|
||||||
DECLARE_ENUM_AS_BIT_SET(RoadTypeFlags)
|
DECLARE_ENUM_AS_BIT_SET(RoadTypeFlags)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue