Exemplo n.º 1
0
    public void LoadStats()
    {
        string savedJSON = Utils.ReadTextFromFile(STAT_FILE);

        if (!string.IsNullOrEmpty(savedJSON))
        {
            PlayerStatModel stat = Utils.DeserializeObject <PlayerStatModel>(savedJSON);
            currentStats = stat;
        }
        else
        {
            currentStats = new PlayerStatModel();
        }
    }
Exemplo n.º 2
0
        public static Wrapper GetPlayerStatsFromGuesses(IEnumerable <GuessModel> guesses, List <MatchModel> matches)
        {
            Wrapper wrapper = new Wrapper();

            PlayerStatModel playerStatModel = new PlayerStatModel();

            playerStatModel.Count = guesses.Count();

            PlayerStatModel playerStatModelBefore = new PlayerStatModel();
            //int lastId = matches.Where(m => m.HomeScore.HasValue).OrderBy(m => m.Date).Last().Id;
            IEnumerable <int> matchesTemp = matches.Where(m => m.HomeScore.HasValue).OrderBy(m => m.Date).Select(m => m.Id);
            IEnumerable <int> lastIds     = matchesTemp.Skip(matchesTemp.Count() - 3);

            PlayerMatchesWithGuesses playerMatchesWithGuesses = new PlayerMatchesWithGuesses();

            foreach (var guess in guesses)
            {
                MatchModel match = matches.Where(m => m.Id == guess.MatchId).First();

                if (match.HomeScore.HasValue) //game has been playing
                {
                    if (match.HomeScore.Value == guess.HomeScore && match.AwayScore.Value == guess.AwayScore)
                    {
                        playerStatModel.TT++;
                        playerStatModel.TTPoint += GuessPoint.TTPoint;
                        //if (match.Id != lastId)
                        if (!lastIds.Contains(match.Id))
                        {
                            playerStatModelBefore.TT++;
                            playerStatModelBefore.TTPoint += GuessPoint.TTPoint;
                        }
                        playerMatchesWithGuesses.TTGuessesByMatch.Add(guess.Id, match.Id);
                    }
                    else
                    {
                        bool isGK = false;
                        if (Math.Abs(match.HomeScore.Value - match.AwayScore.Value) == Math.Abs(guess.HomeScore - guess.AwayScore) &&
                            ((match.HomeScore.Value > match.AwayScore.Value && guess.HomeScore > guess.AwayScore) ||
                             (match.HomeScore.Value <= match.AwayScore.Value && guess.HomeScore <= guess.AwayScore)))
                        {
                            //playerStats.GK++;
                            isGK = true;
                        }

                        bool isMK = false;
                        if ((match.HomeScore.Value > match.AwayScore.Value && guess.HomeScore > guess.AwayScore) ||
                            (match.HomeScore.Value < match.AwayScore.Value && guess.HomeScore < guess.AwayScore) ||
                            (match.HomeScore.Value == match.AwayScore.Value && guess.HomeScore == guess.AwayScore))
                        {
                            //playerStats.MK++;
                            isMK = true;
                        }

                        bool isCSG = false;
                        if (match.HomeScore.Value == guess.HomeScore || match.AwayScore.Value == guess.AwayScore)
                        {
                            //playerStats.CSG++;
                            isCSG = true;
                            //if (isMK)
                            //{
                            //    playerStats.Bonus += 2;
                            //}
                        }

                        bool isOG = false;
                        if (match.HomeScore.Value + match.AwayScore.Value == guess.HomeScore + guess.AwayScore)
                        {
                            //playerStats.OG++;
                            isOG = true;
                        }

                        if (isMK && isCSG)
                        {
                            playerStatModel.MKCSGPoint += GuessPoint.MKCSGPoint;
                            playerStatModel.MKCSG++;
                            if (!lastIds.Contains(match.Id))
                            {
                                playerStatModelBefore.MKCSG++;
                                playerStatModelBefore.MKCSGPoint += GuessPoint.MKCSGPoint;
                            }
                            playerMatchesWithGuesses.MKCSGGuessesByMatch.Add(guess.Id, match.Id);
                        }
                        else
                        {
                            if (isMK && isGK)
                            {
                                if (match.HomeScore.Value == match.AwayScore.Value)
                                {
                                    playerStatModel.MKGKPoint += GuessPoint.DrawMKPoint;
                                    playerStatModel.MKGKDraw++;
                                    if (!lastIds.Contains(match.Id))
                                    {
                                        playerStatModelBefore.MKGKPoint += GuessPoint.DrawMKPoint;
                                        playerStatModelBefore.MKGKDraw++;
                                    }
                                    playerMatchesWithGuesses.MKGKDRAWGuessesByMatch.Add(guess.Id, match.Id);
                                }
                                else
                                {
                                    playerStatModel.MKGKPoint += GuessPoint.MKGKPoint;
                                    playerStatModel.MKGK++;
                                    if (!lastIds.Contains(match.Id))
                                    {
                                        playerStatModelBefore.MKGKPoint += GuessPoint.MKGKPoint;
                                        playerStatModelBefore.MKGK++;
                                    }
                                    playerMatchesWithGuesses.MKGKGuessesByMatch.Add(guess.Id, match.Id);
                                }
                            }
                            else
                            {
                                if (isMK && isOG)
                                {
                                    playerStatModel.MKOGPoint += GuessPoint.MKOGPoint;
                                    playerStatModel.MKOG++;
                                    if (!lastIds.Contains(match.Id))
                                    {
                                        playerStatModelBefore.MKOGPoint += GuessPoint.MKOGPoint;
                                        playerStatModelBefore.MKOG++;
                                    }
                                    playerMatchesWithGuesses.MKOGGuessesByMatch.Add(guess.Id, match.Id);
                                }
                                else
                                {
                                    if (isMK)
                                    {
                                        playerStatModel.MKPoint += GuessPoint.MKPoint;
                                        playerStatModel.MK++;
                                        if (!lastIds.Contains(match.Id))
                                        {
                                            playerStatModelBefore.MKPoint += GuessPoint.MKPoint;
                                            playerStatModelBefore.MK++;
                                        }
                                        playerMatchesWithGuesses.MKGuessesByMatch.Add(guess.Id, match.Id);
                                    }
                                    else
                                    {
                                        if (isCSG)
                                        {
                                            playerStatModel.CSGPoint += GuessPoint.CSGPoint;
                                            playerStatModel.CSG++;
                                            if (!lastIds.Contains(match.Id))
                                            {
                                                playerStatModelBefore.CSGPoint += GuessPoint.CSGPoint;
                                                playerStatModelBefore.CSG++;
                                            }
                                            playerMatchesWithGuesses.CSGGuessesByMatch.Add(guess.Id, match.Id);
                                        }
                                        else
                                        {
                                            if (isOG)
                                            {
                                                playerStatModel.OGPoint += GuessPoint.OGPoint;
                                                playerStatModel.OG++;
                                                if (!lastIds.Contains(match.Id))
                                                {
                                                    playerStatModelBefore.OGPoint += GuessPoint.OGPoint;
                                                    playerStatModelBefore.OG++;
                                                }
                                                playerMatchesWithGuesses.OGGuessesByMatch.Add(guess.Id, match.Id);
                                            }
                                            else
                                            {
                                                playerMatchesWithGuesses.NONEGuessesByMatch.Add(guess.Id, match.Id);
                                                playerStatModel.NONE++;
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            wrapper.PlayerStatModel          = playerStatModel;
            wrapper.PlayerStatModelBefore    = playerStatModelBefore;
            wrapper.PlayerMatchesWithGuesses = playerMatchesWithGuesses;

            return(wrapper);
            //return playerStats;
        }