From 0303efac1657ffa8c9efdb1968f25d6a0c658274 Mon Sep 17 00:00:00 2001 From: glax Date: Sun, 14 Jan 2024 01:10:36 +0100 Subject: [PATCH] Corrected json parsing for messagehandling --- OpenCS2hock/CS2MessageHandler.cs | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/OpenCS2hock/CS2MessageHandler.cs b/OpenCS2hock/CS2MessageHandler.cs index 63e462d..14a8cc0 100644 --- a/OpenCS2hock/CS2MessageHandler.cs +++ b/OpenCS2hock/CS2MessageHandler.cs @@ -15,30 +15,28 @@ public class CS2MessageHandler public void HandleCS2Message(string message) { JObject messageJson = JObject.Parse(message); - - JToken? previously = messageJson.GetValue("previously"); - RoundState currentRoundState = ParseRoundStateFromString(messageJson["round"]?.Value("phase")); - RoundState previousRoundState = ParseRoundStateFromString(previously?["round"]?.Value("phase")); + RoundState currentRoundState = ParseRoundStateFromString(messageJson.SelectToken("round.phase", false)?.Value()); + RoundState previousRoundState = ParseRoundStateFromString(messageJson.SelectToken("previously.round.phase", false)?.Value()); if(previousRoundState == RoundState.FreezeTime && currentRoundState == RoundState.Live) OnRoundStart?.Invoke(); if(previousRoundState == RoundState.Live && currentRoundState == RoundState.FreezeTime) OnRoundEnd?.Invoke(); - Team playerTeam = ParseTeamFromString(messageJson["player"]?.Value("team")); - Team winnerTeam = ParseTeamFromString(messageJson["round"]?.Value("win_team")); + Team playerTeam = ParseTeamFromString(messageJson.SelectToken("player.team", false)?.Value()); + Team winnerTeam = ParseTeamFromString(messageJson.SelectToken("round.win_team", false)?.Value()); if(winnerTeam != Team.None && playerTeam == winnerTeam) OnRoundWin?.Invoke(); else if(winnerTeam != Team.None && playerTeam != winnerTeam) OnRoundLoss?.Invoke(); - int? previousDeaths = previously?["player"]?["match_stats"]?.Value("deaths"); - int? currentDeaths = messageJson["player"]?["match_stats"]?.Value("deaths"); + int? previousDeaths = messageJson.SelectToken("previously.player.match_stats.deaths", false)?.Value(); + int? currentDeaths = messageJson.SelectToken("player.match_stats.deaths", false)?.Value(); if(currentDeaths > previousDeaths) OnDeath?.Invoke(); - int? previousKills = previously?["player"]?["match_stats"]?.Value("kills"); - int? currentKills = messageJson["player"]?["match_stats"]?.Value("kills"); + int? previousKills = messageJson.SelectToken("previously.player.match_stats.kills", false)?.Value(); + int? currentKills = messageJson.SelectToken("player.match_stats.kills", false)?.Value(); if(currentKills > previousKills) OnKill?.Invoke(); }