Skip to content

Commit b800fe8

Browse files
authored
Delay traffic spawn until after session start (#92)
1 parent a7f5e4a commit b800fe8

4 files changed

Lines changed: 17 additions & 4 deletions

File tree

AssettoServer.Shared/Network/Packets/Shared/CSPAdminPenalty.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class CSPAdminPenalty : IIncomingNetworkPacket, IOutgoingNetworkPacket
1010
public CSPAdminPenaltyMode Mode;
1111
public ushort CarIndex;
1212
public int PenaltyArgument;
13-
public string Message;
13+
public string Message = "";
1414
public ulong Signature;
1515

1616
public void FromReader(PacketReader reader)

AssettoServer/Server/Ai/AiBehavior.cs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ public AiBehavior(SessionManager sessionManager,
6565

6666
_entryCarManager.ClientDisconnected += OnClientDisconnected;
6767
_configuration.Extra.AiParams.PropertyChanged += (_, _) => AdjustOverbooking();
68+
69+
_sessionManager.SessionChanged += OnSessionChanged;
6870
}
6971

7072
private static void OnCollision(ACTcpClient sender, CollisionEventArgs args)
@@ -202,6 +204,9 @@ private void Update()
202204

203205
_aiStateCountMetric.Set(_initializedAiStates.Count);
204206

207+
if (_sessionManager.CurrentSession.StartTimeMilliseconds > _sessionManager.ServerTimeMilliseconds)
208+
return;
209+
205210
for (int i = 0; i < _initializedAiStates.Count; i++)
206211
{
207212
_aiMinDistanceToPlayer.Add(new KeyValuePair<AiState, float>(_initializedAiStates[i], float.MaxValue));
@@ -350,6 +355,14 @@ private void OnClientDisconnected(ACTcpClient sender, EventArgs args)
350355
}
351356
}
352357

358+
private void OnSessionChanged(SessionManager sender, SessionChangedEventArgs args)
359+
{
360+
for (var i = 0; i < _initializedAiStates.Count; i++)
361+
{
362+
_initializedAiStates[i].Despawn();
363+
}
364+
}
365+
353366
private int GetRandomWeighted(int max)
354367
{
355368
// Probabilities for max = 4

AssettoServer/Server/Configuration/Kunos/CarSetups.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ public class CarSetups
1515
[UsedImplicitly(ImplicitUseKindFlags.Assign, ImplicitUseTargetFlags.WithMembers)]
1616
public class CarSetup
1717
{
18-
[IniField("CAR", "MODEL")] public string CarModel { get; init; }
19-
[IniField("__EXT_PATCH", "VERSION")] public string CspVersion { get; init; }
18+
[IniField("CAR", "MODEL")] public string? CarModel { get; init; }
19+
[IniField("__EXT_PATCH", "VERSION")] public string? CspVersion { get; init; }
2020
public Dictionary<string, float> Settings { get; init; } = new();
2121
}
2222

AssettoServer/Server/SessionManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ public bool OnLapCompleted(ACTcpClient client, LapCompletedIncoming lap)
144144
return false;
145145
}
146146

147-
Log.Information("Lap completed by {ClientName}, {NumCuts} cuts, laptime {LapTime}", client.Name, lap.Cuts, lap.LapTime);
147+
Log.Information("Lap completed by {ClientName}, {NumCuts} cuts, laptime {LapTime}", client.Name, lap.Cuts, TimeSpan.FromMilliseconds(lap.LapTime).ToString(@"mm\:ss\.ffff"));
148148

149149
if (CurrentSession.Configuration.Type == SessionType.Race || lap.Cuts == 0)
150150
{

0 commit comments

Comments
 (0)