private void ReloadTrackDefinition(string trackId = null) { if (trackId == null) { trackId = CurrentTrackDefinition?.TrackName; } if (trackId != null) { CurrentTrackDefinition = MRBackend.GetTrackDefinition(trackId); CreatePitExitRectangle(); PluginManager.Log($"Pit exit rectangle created: {PitExitRectangle}"); PluginManager.Log($"Track Lines parsed: {CurrentTrackDefinition?.Lines?.Length ?? 0}"); } }
protected override void OnChatMessage(MsgChat msg) { if (!msg.IsCommand) { return; } var split = msg.Message.Split(' '); if (split.Length > 0) { switch (split[0].ToLower()) { case "/mr": case "/minorating": { if (split.Length == 1) // only /mr { MRBackend.RequestDriverRatingAsync(msg.CarId); } else { MRBackend.RequestMRCommandAdminInfoAsync(msg.CarId, PluginManager.GetDriverInfo(msg.CarId).IsAdmin, split); } } break; case "/mrpoint": { string text; DriverInfo driver = null; if (!PluginManager.TryGetDriverInfo(Convert.ToByte(msg.CarId), out driver)) { text = "Driver not found: " + msg.CarId; } else if (driver?.LastCarUpdate?.Value == null) { text = "Something's wrong"; } else { var upd = driver?.LastCarUpdate?.Value; text = $"Spl:{upd.NormalizedSplinePosition:F5}|X={upd.WorldPosition.X:F5}|Z={upd.WorldPosition.Z:F5}"; } PluginManager.SendChatMessage(msg.CarId, text); } break; case "/mrinfo": { PluginManager.SendChatMessage(msg.CarId, $"Track id: {CurrentTrackDefinition?.TrackName}, length ={CurrentTrackDefinition?.Length:N0}"); PluginManager.SendChatMessage(msg.CarId, $"Pit exit: {PitExitRectangle?.X}"); } break; case "/mrtrackreload": { CurrentTrackDefinition = MRBackend.GetTrackDefinition(CurrentTrackDefinition.TrackName); CreatePitExitRectangle(); PluginManager.SendChatMessage(msg.CarId, $"Track reloaded"); } break; case "/mrtl1": { string text; DriverInfo driver = null; if (!PluginManager.TryGetDriverInfo(Convert.ToByte(msg.CarId), out driver)) { text = "Driver not found: " + msg.CarId; } else if (driver?.LastCarUpdate?.Value == null) { text = "Something's wrong"; } else { _AdminAddTrackLineStart = driver?.LastCarUpdate?.Value; text = $"Start set: {_AdminAddTrackLineStart}"; } PluginManager.SendChatMessage(msg.CarId, text); } break; case "/mrtl2": { Console.WriteLine("TrackLine 2"); string text = null; int type = 2; // pit exit = 1, default is line = 2 DriverInfo driver = null; if (_AdminAddTrackLineStart == null) { text = "No start set"; } else if (!PluginManager.TryGetDriverInfo(Convert.ToByte(msg.CarId), out driver)) { text = "Driver not found: " + msg.CarId; } else if (driver?.LastCarUpdate?.Value == null) { text = "Something's wrong"; } else if (split.Length < 2 || string.IsNullOrEmpty(split[1])) { text = "No hint set"; } else { if (split.Length == 3) { type = int.Parse(split[2]); } try { var startPoint = _AdminAddTrackLineStart; var endPoint = driver?.LastCarUpdate?.Value; MRBackend.CreateTrackLine(msg.CarId, startPoint.NormalizedSplinePosition, endPoint.NormalizedSplinePosition, startPoint.WorldPosition.X, startPoint.WorldPosition.Z, endPoint.WorldPosition.X, endPoint.WorldPosition.Z, split[1], type); Console.WriteLine($"Message sent, type {type}"); ReloadTrackDefinition(); PluginManager.SendChatMessage(msg.CarId, "Track reloaded"); } catch (Exception ex) { Console.WriteLine($"Exception in TrackLine2: {ex.ToString()}"); } } if (!string.IsNullOrEmpty(text)) { PluginManager.SendChatMessage(msg.CarId, text); } } break; default: break; } } }