Skip to content

Commit a369f11

Browse files
Merge pull request #362 from dymanoid/master
Use Actual Maximum Vehicle Count
2 parents 7250add + 9ceb18f commit a369f11

File tree

6 files changed

+12
-11
lines changed

6 files changed

+12
-11
lines changed

TLM/TLM/Custom/Data/CustomVehicle.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public static void Spawn(ref Vehicle vehicleData, ushort vehicleId) {
2828
while (trailingVehicle != 0) {
2929
vehManager.m_vehicles.m_buffer[trailingVehicle].Spawn(trailingVehicle);
3030
trailingVehicle = vehManager.m_vehicles.m_buffer[trailingVehicle].m_trailingVehicle;
31-
if (++numIter > VehicleManager.MAX_VEHICLE_COUNT) {
31+
if (++numIter > Constants.ServiceFactory.VehicleService.MaxVehicleCount) {
3232
CODebugBase<LogChannel>.Error(LogChannel.Core, "Invalid list detected!\n" + Environment.StackTrace);
3333
break;
3434
}

TLM/TLM/Custom/Manager/CustomVehicleManager.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public bool CustomCreateVehicle(out ushort vehicleId, ref Randomizer r, VehicleI
3131
#if BENCHMARK
3232
using (var bm = new Benchmark(null, "keep-spare-vehicles")) {
3333
#endif
34-
if (this.m_vehicleCount > VehicleManager.MAX_VEHICLE_COUNT - 5) {
34+
if (this.m_vehicleCount > Constants.ServiceFactory.VehicleService.MaxVehicleCount - 5) {
3535
// prioritize service vehicles and public transport when hitting the vehicle limit
3636
ItemClass.Service service = info.GetService();
3737
if (service == ItemClass.Service.Residential || service == ItemClass.Service.Industrial || service == ItemClass.Service.Commercial || service == ItemClass.Service.Office) {

TLM/TLM/Manager/Impl/UtilityManager.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ public void ResetStuckEntities() {
127127
}
128128

129129
Log.Info($"UtilityManager.RemoveStuckEntities(): Resetting vehicles that are waiting for a path.");
130-
for (uint vehicleId = 1; vehicleId < VehicleManager.MAX_VEHICLE_COUNT; ++vehicleId) {
130+
for (uint vehicleId = 1; vehicleId < Constants.ServiceFactory.VehicleService.MaxVehicleCount; ++vehicleId) {
131131
//Log._Debug($"UtilityManager.RemoveStuckEntities(): Processing vehicle {vehicleId}.");
132132
if ((Singleton<VehicleManager>.instance.m_vehicles.m_buffer[vehicleId].m_flags & Vehicle.Flags.WaitingPath) != 0) {
133133
if (Singleton<VehicleManager>.instance.m_vehicles.m_buffer[vehicleId].m_path != 0u) {
@@ -141,7 +141,7 @@ public void ResetStuckEntities() {
141141
}
142142

143143
Log.Info($"UtilityManager.RemoveStuckEntities(): Resetting vehicles that are parking and where no parked vehicle is assigned to the driver.");
144-
for (uint vehicleId = 1; vehicleId < VehicleManager.MAX_VEHICLE_COUNT; ++vehicleId) {
144+
for (uint vehicleId = 1; vehicleId < Constants.ServiceFactory.VehicleService.MaxVehicleCount; ++vehicleId) {
145145
//Log._Debug($"UtilityManager.RemoveStuckEntities(): Processing vehicle {vehicleId}.");
146146
if ((Singleton<VehicleManager>.instance.m_vehicles.m_buffer[vehicleId].m_flags & Vehicle.Flags.Parking) != 0) {
147147
ushort driverInstanceId = CustomPassengerCarAI.GetDriverInstanceId((ushort)vehicleId, ref Singleton<VehicleManager>.instance.m_vehicles.m_buffer[vehicleId]);

TLM/TLM/Manager/Impl/VehicleStateManager.cs

+3-7
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@ public class VehicleStateManager : AbstractCustomManager, IVehicleStateManager {
2121
/// </summary>
2222
public VehicleState[] VehicleStates { get; private set; } = null;
2323

24-
static VehicleStateManager() {
25-
Instance = new VehicleStateManager();
26-
}
27-
2824
protected override void InternalPrintDebugInfo() {
2925
base.InternalPrintDebugInfo();
3026
Log._Debug($"Vehicle states:");
@@ -37,8 +33,8 @@ protected override void InternalPrintDebugInfo() {
3733
}
3834

3935
private VehicleStateManager() {
40-
VehicleStates = new VehicleState[VehicleManager.MAX_VEHICLE_COUNT];
41-
for (uint i = 0; i < VehicleManager.MAX_VEHICLE_COUNT; ++i) {
36+
VehicleStates = new VehicleState[Constants.ServiceFactory.VehicleService.MaxVehicleCount];
37+
for (uint i = 0; i < VehicleStates.Length; ++i) {
4238
VehicleStates[i] = new VehicleState((ushort)i);
4339
}
4440
}
@@ -253,7 +249,7 @@ internal void InitAllVehicles() {
253249
Log._Debug("VehicleStateManager: InitAllVehicles()");
254250
VehicleManager vehicleManager = Singleton<VehicleManager>.instance;
255251

256-
for (uint vehicleId = 0; vehicleId < VehicleManager.MAX_VEHICLE_COUNT; ++vehicleId) {
252+
for (uint vehicleId = 0; vehicleId < Constants.ServiceFactory.VehicleService.MaxVehicleCount; ++vehicleId) {
257253
Services.VehicleService.ProcessVehicle((ushort)vehicleId, delegate (ushort vId, ref Vehicle vehicle) {
258254
if ((vehicle.m_flags & Vehicle.Flags.Created) == 0) {
259255
return true;

TLM/TMPE.CitiesGameBridge/Service/VehicleService.cs

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ private VehicleService() {
1111

1212
}
1313

14+
public int MaxVehicleCount => VehicleManager.instance.m_vehicles.m_buffer.Length;
15+
1416
public bool CheckVehicleFlags(ushort vehicleId, Vehicle.Flags flagMask, Vehicle.Flags? expectedResult = default(Vehicle.Flags?)) {
1517
bool ret = false;
1618
ProcessVehicle(vehicleId, delegate (ushort vId, ref Vehicle vehicle) {

TLM/TMPE.GenericGameBridge/Service/IVehicleService.cs

+3
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ namespace GenericGameBridge.Service {
88
public delegate bool ParkedVehicleHandler(ushort parkedVehicleId, ref VehicleParked parkedVehicle);
99

1010
public interface IVehicleService {
11+
12+
int MaxVehicleCount { get; }
13+
1114
bool CheckVehicleFlags(ushort vehicleId, Vehicle.Flags flagMask, Vehicle.Flags? expectedResult = default(Vehicle.Flags?));
1215
bool CheckVehicleFlags2(ushort vehicleId, Vehicle.Flags2 flagMask, Vehicle.Flags2? expectedResult = default(Vehicle.Flags2?));
1316
bool IsVehicleValid(ushort vehicleId);

0 commit comments

Comments
 (0)