infrastructure_func.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00012 #ifndef INFRASTRUCTURE_FUNC_H
00013 #define INFRASTRUCTURE_FUNC_H
00014
00015 #include "vehicle_base.h"
00016 #include "functions.h"
00017 #include "company_func.h"
00018
00019 void PayStationSharingFee(Vehicle *v, const Station *st);
00020 void PayDailyTrackSharingFee(Train *v);
00021 bool CheckSharingChangePossible(VehicleType type);
00022 void HandleSharingCompanyDeletion(Owner owner);
00023 void UpdateAllBlockSignals(Owner owner = INVALID_OWNER);
00024
00030 static FORCEINLINE bool GetSharingSetting(VehicleType type)
00031 {
00032 switch (type) {
00033 case VEH_TRAIN: return _settings_game.sharing.sharing_rail;
00034 case VEH_ROAD: return _settings_game.sharing.sharing_road;
00035 case VEH_SHIP: return _settings_game.sharing.sharing_water;
00036 case VEH_AIRCRAFT: return _settings_game.sharing.sharing_air;
00037 default: NOT_REACHED();
00038 }
00039 }
00040
00048 static FORCEINLINE bool IsInfraUsageAllowed(Owner infra_owner, Owner veh_owner, VehicleType type)
00049 {
00050 return infra_owner == veh_owner || infra_owner == OWNER_NONE || GetSharingSetting(type);
00051 }
00052
00060 static FORCEINLINE bool IsInfraTileUsageAllowed(TileIndex tile, Owner veh_owner, VehicleType type)
00061 {
00062 return IsInfraUsageAllowed(GetTileOwner(tile), veh_owner, type);
00063 }
00064
00073 static FORCEINLINE bool CheckInfraUsageAllowed(Owner infra_owner, VehicleType type)
00074 {
00075 return infra_owner == OWNER_NONE || GetSharingSetting(type) || CheckOwnership(infra_owner);
00076 }
00077
00085 static FORCEINLINE bool IsVehicleControlAllowed(const Vehicle *v, Owner o)
00086 {
00087 return v->owner == o || (v->type == VEH_TRAIN && IsTileOwner(v->tile, o));
00088 }
00089
00097 static FORCEINLINE bool CheckVehicleControlAllowed(const Vehicle *v)
00098 {
00099 return (v->type == VEH_TRAIN && IsTileOwner(v->tile, _current_company)) || CheckOwnership(v->owner);
00100 }
00101
00110 static FORCEINLINE bool IsOneSignalBlock(Owner o1, Owner o2)
00111 {
00112 return o1 == o2 || _settings_game.sharing.sharing_rail;
00113 }
00114
00115 #endif