From d27f1ded36a5824e67cf4c61cdea91198e9d5050 Mon Sep 17 00:00:00 2001 From: RaidMax Date: Tue, 2 Jul 2019 17:30:05 -0500 Subject: [PATCH] tweak initial live radar --- Plugins/LiveRadar/RadarEvent.cs | 21 +- .../Web/Controllers/RadarController.cs | 20 +- .../Web/Views/LiveRadar/Index.cshtml | 184 ++++++++++++++---- 3 files changed, 175 insertions(+), 50 deletions(-) diff --git a/Plugins/LiveRadar/RadarEvent.cs b/Plugins/LiveRadar/RadarEvent.cs index b34ba9591..c8c47e4f9 100644 --- a/Plugins/LiveRadar/RadarEvent.cs +++ b/Plugins/LiveRadar/RadarEvent.cs @@ -21,6 +21,23 @@ namespace LiveRadar public int Health { get; set; } public bool IsAlive { get; set; } public Vector3 RadianAngles => new Vector3(ViewAngles.X.ToRadians(), ViewAngles.Y.ToRadians(), ViewAngles.Z.ToRadians()); + public RadarEvent Previous { get; set; } + public int Id => GetHashCode(); + + public override bool Equals(object obj) + { + if (obj is RadarEvent re) + { + return re.ViewAngles.X == ViewAngles.X && + re.ViewAngles.Y == ViewAngles.Y && + re.ViewAngles.Z == ViewAngles.Z && + re.Location.X == Location.X && + re.Location.Y == Location.Y && + re.Location.Z == Location.Z; + } + + return false; + } public static RadarEvent Parse(string input) { @@ -28,9 +45,9 @@ namespace LiveRadar var parsedEvent = new RadarEvent() { - Guid = items[0].ConvertLong(), + Guid = items[0].ConvertGuidToLong(), Location = Vector3.Parse(items[1]), - ViewAngles = Vector3.Parse(items[2]), + ViewAngles = Vector3.Parse(items[2]).FixIW4Angles(), Team = items[3], Kills = int.Parse(items[4]), Deaths = int.Parse(items[5]), diff --git a/Plugins/LiveRadar/Web/Controllers/RadarController.cs b/Plugins/LiveRadar/Web/Controllers/RadarController.cs index 6db470855..367b8fa5d 100644 --- a/Plugins/LiveRadar/Web/Controllers/RadarController.cs +++ b/Plugins/LiveRadar/Web/Controllers/RadarController.cs @@ -38,20 +38,28 @@ namespace LiveRadar.Web.Controllers { var server = serverId == null ? Manager.GetServers()[0] : Manager.GetServers().First(_server => _server.GetHashCode() == serverId); var radarInfo = server.GetClientsAsList().Select(_client => _client.GetAdditionalProperty("LiveRadar")); - return Json(radarInfo); } [HttpGet] public IActionResult Update(string payload) { - return Ok(); - var radarUpdate = RadarEvent.Parse(payload); - var client = Manager.GetActiveClients().First(_client => _client.NetworkId == radarUpdate.Guid); - radarUpdate.Name = client.Name; + var client = Manager.GetActiveClients().FirstOrDefault(_client => _client.NetworkId == radarUpdate.Guid); - client.SetAdditionalProperty("LiveRadar", radarUpdate); + if (client != null) + { + radarUpdate.Name = client.Name; + var previous = client.GetAdditionalProperty("LiveRadar"); + // this prevents us from creating a never ending linked list + if (previous != null) + { + previous.Previous = null; + } + + radarUpdate.Previous = previous; + client.SetAdditionalProperty("LiveRadar", radarUpdate); + } return Ok(); } diff --git a/Plugins/LiveRadar/Web/Views/LiveRadar/Index.cshtml b/Plugins/LiveRadar/Web/Views/LiveRadar/Index.cshtml index 40454a2a3..87064e414 100644 --- a/Plugins/LiveRadar/Web/Views/LiveRadar/Index.cshtml +++ b/Plugins/LiveRadar/Web/Views/LiveRadar/Index.cshtml @@ -8,8 +8,9 @@ @section scripts { } \ No newline at end of file