Exemplo n.º 1
0
        private void RaiseGameEvent(string jsonString)
        {
            TimeOfLastRadarGameEventOrHeartbeat = DateTime.Now;
            bool         isHeartbeat  = jsonString.Contains("heartbeat");
            NflGameEvent nflGameEvent = null;

            if (isHeartbeat)
            {
                // Logger.Info("Radar heartbeat");
            }

            if (!isHeartbeat)
            {
                Logger.Info(jsonString);
                nflGameEvent = NflGameEvent.FromJson(jsonString);
            }

            bool isGameEvent = nflGameEvent != null;

            if (isGameEvent)
            {
                NflGameEventEventArgs nflGameEventEventArgs = new NflGameEventEventArgs
                {
                    GameEvent = nflGameEvent
                };
                OnRadarGameEvent(nflGameEventEventArgs);
            }
        }
Exemplo n.º 2
0
        private void HandleGameEvent(object sender, NflGameEventEventArgs nflGameEventEventArgs)
        {
            NflGameEvent nflGameEvent = nflGameEventEventArgs.GameEvent;
            Guid         gameId       = nflGameEvent.Payload.Game.Id;

            if (gameId == GameId)
            {
                string eventType = nflGameEvent.Metadata.EventType;
                string message   = $"Handling Radar game event: GameId = {gameId}, EventType = {eventType}";
                Logger.Info(message);


                switch (eventType)
                {
                // case "setup":
                // return;
                // break;

                // case "timeout":
                //    return;

                //  case "period_end":
                //  return;

                default:
                    ProcessRadarGameEvent1(nflGameEvent);
                    ModelUpdateRequired = true;
                    break;
                }

                //string message = $"Handling Radar game event: GameId = {gameId}, EventType = {eventType}";
                //Logger.Info(message);
            }
        }
Exemplo n.º 3
0
        private void ProcessRadarGameEvent1(NflGameEvent nflGameEvent)
        {
            if (nflGameEvent.Metadata == null)
            {
                Logger.Error("ProcessRadarGameEvent1(): game event metadata was null");
                return;
            }

            //try
            //{
            //    bool newScore = false;

            //    if (nflGameEvent.Payload.Event.Sequence > 0)
            //    {
            //        if (nflGameEvent.Payload.Event.Sequence <= NflGameState.Sequence)
            //        {
            //            newScore = false;
            //            return;
            //        }

            //        newScore = true;
            //        NflGameState.Sequence = nflGameEvent.Payload.Event.Sequence;
            //    }

            //    string eventType = nflGameEvent.Metadata.EventType;

            //    // maybe better not to set the possession to null at this point.
            //    string possession = "N";

            //    // todo create an object from NFL event definition
            //    NflGameState.Status = nflGameEvent.Metadata.Status;
            //    Event payloadEvent = nflGameEvent.Payload.Event;
            //    Game playloadGame = nflGameEvent.Payload.Game;

            //    //drive info
            //    if (payloadEvent.Drive != null && payloadEvent.Drive.StartReason == "kickoff")
            //    {
            //        if (payloadEvent.StartSituation?.Possession != null)
            //        {
            //            if (payloadEvent.StartSituation.Possession.Id == AwayTeam.TeamId)
            //            {
            //                AwayTeam.ReceiveSecondHalf = false;
            //                HomeTeam.ReceiveSecondHalf = true;
            //            }

            //            if (payloadEvent.StartSituation.Possession.Id == HomeTeam.TeamId)
            //            {
            //                AwayTeam.ReceiveSecondHalf = true;
            //                HomeTeam.ReceiveSecondHalf = false;
            //            }
            //        }
            //    }

            //    if (eventType == "period_end")
            //    {
            //        NflGameState.YardsToGo = 10;
            //        NflGameState.Down = 1;
            //        NflGameState.Possession = 0;
            //    }

            //    if (payloadEvent.EndSituation != null)
            //    {
            //        Situation endSituation = payloadEvent.EndSituation;
            //        NflGameState.YardsToGo = endSituation.Yfd;
            //        NflGameState.Down = endSituation.Down;
            //        NflGameState.Clock = endSituation.Clock;
            //        NflGameState.RemainingSeconds = Utils.ConvertPeriodToGameString(playloadGame.Quarter, payloadEvent.EndSituation.Clock, 3600);
            //        NflGameState.Possession = 0;


            //        if (nflGameEvent.Payload.Event.EndSituation.Possession.Id == AwayTeam.TeamId)
            //        {
            //            NflGameState.Possession = 1;
            //            possession = "V";
            //        }

            //        if (nflGameEvent.Payload.Event.EndSituation.Possession.Id == HomeTeam.TeamId)
            //        {
            //            NflGameState.Possession = 2;
            //            possession = "H";
            //        }

            //        if (nflGameEvent.Payload.Event.EndSituation.Possession.Id !=
            //            nflGameEvent.Payload.Event.EndSituation.Location.Id)
            //        {
            //            NflGameState.FieldPosition = 100 - ToInt32(nflGameEvent.Payload.Event.EndSituation.Location.Yardline);
            //        }
            //        else
            //        {
            //            NflGameState.FieldPosition = ToInt32(nflGameEvent.Payload.Event.EndSituation.Location.Yardline);
            //        }

            //        NflGameState.Quarter = nflGameEvent.Payload.Game.Quarter;
            //        ModelData[NflModelDataKeys.Egt] = new Dictionary<string, double>
            //        {
            //            {"S", ToDouble(NflGameState.RemainingSeconds)},
            //            {"FP", ToDouble(NflGameState.FieldPosition)},
            //            {"DN", ToDouble(NflGameState.Down)},
            //            {"YF", ToDouble(NflGameState.YardsToGo)},
            //            {"P", ToDouble(NflGameState.Possession)}
            //        };
            //    }
            //    //ModelData[NflModelDataKeys.Egt] = new Dictionary<string, double>();

            //    int awayScore;      //nflGameEvent.Payload.Game.Summary.Away.Points;
            //    int homeScore;      // nflGameEvent.Payload.Game.Summary.Home.Points;

            //    if (payloadEvent.AwayPoints != null)
            //    {
            //        awayScore = payloadEvent.AwayPoints;
            //        homeScore = payloadEvent.HomePoints;
            //    }
            //    else
            //    {
            //        return;
            //    }

            //    double scoreCounter = 0;
            //    //check to see if there is any current score
            //    foreach (KeyValuePair<string, double> existingScore in ModelData[NflModelDataKeys.Evs])
            //    {
            //        scoreCounter += existingScore.Value;
            //    }

            //    Dictionary<string, double> evsDictionary = ModelData[NflModelDataKeys.Evs];

            //    if (scoreCounter > 0 && awayScore == 0 && homeScore == 0)
            //    {

            //    }
            //    else
            //    {
            //        // todo are the if checks necessary?
            //        if (!evsDictionary.ContainsKey("H,Q1"))
            //        {
            //            evsDictionary["V,Q1"] = 0;
            //            evsDictionary["H,Q1"] = 0;
            //        }

            //        if (!evsDictionary.ContainsKey("H,H1"))
            //        {
            //            evsDictionary["V,H1"] = 0;
            //            evsDictionary["H,H1"] = 0;
            //        }

            //        if (!evsDictionary.ContainsKey("H,Q2"))
            //        {
            //            evsDictionary["V,Q2"] = 0;
            //            evsDictionary["H,Q2"] = 0;
            //        }

            //        if (!evsDictionary.ContainsKey("H,H2"))
            //        {
            //            evsDictionary["V,H2"] = 0;
            //            evsDictionary["H,H2"] = 0;
            //        }

            //        if (!evsDictionary.ContainsKey("H,Q3"))
            //        {
            //            evsDictionary["V,Q3"] = 0;
            //            evsDictionary["H,Q3"] = 0;
            //        }

            //        if (!evsDictionary.ContainsKey("H,Q4"))
            //        {
            //            evsDictionary["V,Q4"] = 0;
            //            evsDictionary["H,Q4"] = 0;
            //        }

            //        evsDictionary["H,CG"] = homeScore;
            //        evsDictionary["V,CG"] = awayScore;

            //        switch (NflGameState.Quarter)
            //        {
            //            case 1:
            //                evsDictionary["V,Q1"] = awayScore;
            //                evsDictionary["H,Q1"] = homeScore;
            //                break;

            //            case 2:
            //                evsDictionary["V,Q2"] = awayScore - evsDictionary["V,Q1"];
            //                evsDictionary["H,Q2"] = homeScore - evsDictionary["H,Q1"];
            //                break;

            //            case 3:
            //                evsDictionary["V,Q3"] = awayScore - (evsDictionary["V,Q1"] + evsDictionary["V,Q2"]);
            //                evsDictionary["H,Q3"] = homeScore - (evsDictionary["H,Q1"] + evsDictionary["H,Q2"]);
            //                break;

            //            case 4:
            //                evsDictionary["V,Q4"] =
            //                    awayScore - (evsDictionary["V,Q1"] + evsDictionary["V,Q2"] + evsDictionary["V,Q3"]);
            //                evsDictionary["H,Q4"] =
            //                    homeScore - (evsDictionary["H,Q1"] + evsDictionary["H,Q2"] + evsDictionary["H,Q3"]);
            //                break;
            //        }

            //        evsDictionary["H,H1"] = evsDictionary["H,Q1"] + evsDictionary["H,Q2"];
            //        evsDictionary["V,H1"] = evsDictionary["V,Q1"] + evsDictionary["V,Q2"];
            //        evsDictionary["H,H2"] = evsDictionary["H,Q3"] + evsDictionary["H,Q4"];
            //        evsDictionary["V,H2"] = evsDictionary["V,Q3"] + evsDictionary["V,Q4"];
            //    }

            //    ModelUpdateRequired = true;
            //    string quarter = $"Q{NflGameState.Quarter}";
            //    string clock = NflGameState.Clock;

            //    if (NflGameState.Status == "halftime")
            //    {
            //        quarter = "HT";
            //        if (AwayTeam.ReceiveSecondHalf)
            //        {
            //            possession = "V";
            //            NflGameState.Possession = 1;
            //            ModelData[NflModelDataKeys.Egt]["P"] = NflGameState.Possession;
            //            ModelData[NflModelDataKeys.Egt]["FP"] = 25;
            //            ModelData[NflModelDataKeys.Egt]["DN"] = 1;
            //            ModelData[NflModelDataKeys.Egt]["YF"] = 10;
            //            ModelData[NflModelDataKeys.Egt]["S"] = 15 * 60 * 2;
            //        }

            //        if (HomeTeam.ReceiveSecondHalf)
            //        {
            //            possession = "H";
            //            NflGameState.Possession = 2;
            //            ModelData[NflModelDataKeys.Egt]["P"] = NflGameState.Possession;
            //            ModelData[NflModelDataKeys.Egt]["FP"] = 25;
            //            ModelData[NflModelDataKeys.Egt]["DN"] = 1;
            //            ModelData[NflModelDataKeys.Egt]["YF"] = 10;
            //            ModelData[NflModelDataKeys.Egt]["S"] = 15 * 60 * 2;
            //        }
            //    }

            //    if (NflGameState.Status == "closed")
            //    {
            //        quarter = "FN";
            //    }

            //    if (eventType == "period_end")
            //    {
            //        int qplus = NflGameState.Quarter + 1;
            //        quarter = $"Q{qplus}";
            //        clock = "15:00";
            //    }

            //    string messageJson = $@"{{
            //                            ""game"":               ""{GameId}"",
            //                            ""Status"":             ""{NflGameState.Status}"",
            //                            ""away_score"":         {awayScore},
            //                            ""home_score"":         {homeScore},
            //                             ""away_q1"":           {evsDictionary["V,Q1"]},
            //                            ""home_q1"":            {evsDictionary["H,Q1"]},
            //                            ""away_q2"":            {evsDictionary["V,Q2"]},
            //                            ""home_q2"":            {evsDictionary["H,Q2"]},
            //                             ""away_q3"":           {evsDictionary["V,Q3"]},
            //                            ""home_q3"":            {evsDictionary["H,Q3"]},
            //                            ""away_q4"":            {evsDictionary["V,Q4"]},
            //                            ""home_q4"":            {evsDictionary["H,Q4"]},
            //                            ""period"":             ""{quarter}"",
            //                            ""clock"":              ""{clock}"",
            //                            ""possession"":         ""{possession}"",
            //                            ""down"":               {NflGameState.Down},
            //                            ""Y2F"":                {NflGameState.YardsToGo},
            //                            ""FP"":                 {NflGameState.FieldPosition}
            //                        }}";

            //    if (!Utils.IsValidJson(messageJson))
            //    {
            //        throw new Exception("JSON is invalid: {jsonString}");
            //    }

            //    string messageKey = GameId + "score";
            //    const string eventName = "NFLTEAM";
            //    Logger.Info(messageJson);

            //    if (newScore)
            //    {
            //        _pusherUtil.SendScoreMessage(messageJson, eventName, messageKey);
            //    }
            //}
            //catch (Exception exception)
            //{
            //    Logger.Error(exception);
            //}
        }