Ejemplo n.º 1
0
        private static IEnumerable <ITranslator> CreateTranslators()
        {
            //yield return new DecoratingTranslator(new NullTranslator(), "%%");

            string transDir = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Locales");

            foreach (string file in Directory.GetFiles(transDir, "*.xml"))
            {
                ITranslator t = null;
                try
                {
                    // TODO: english should be fallback!!
                    t = new FallbackTranslator(new XmlTranslator(File.OpenRead(file)), new NullTranslator());
                }
                catch (Exception ex)
                {
                    HtLog.Warn(string.Format("Cannot parse file {0} ({1})", file, ex.ToString()));
                }

                if (t != null)
                {
                    yield return(t);
                }
            }
        }
        public IDictionary <Player, IList <MatchAppearance> > GetMatchesOfPlayers(int teamId, bool addTeamItem = false)
        {
            IDictionary <Player, IList <MatchAppearance> > ret2 = new Dictionary <Player, IList <MatchAppearance> >();

            foreach (MatchDetails md in Matches.SafeEnum())
            {
                Team myTeam;
                if (md.HomeTeam.ID == teamId)
                {
                    myTeam = md.HomeTeam;
                }
                else if (md.AwayTeam.ID == teamId)
                {
                    myTeam = md.AwayTeam;
                }
                else
                {
                    HtLog.Warn("Received a bad match ({0})", md);
                    continue;
                }

                IDictionary <Player, MatchAppearance> thisMatchAppearances = new Dictionary <Player, MatchAppearance>();

                if (addTeamItem)
                {
                    AddTeamDummyPlayer(myTeam, thisMatchAppearances, md);
                    AddTeamDummyGoals(myTeam, thisMatchAppearances, md);
                }

                AddLineupPlayers(myTeam, thisMatchAppearances, md);
                AddDisappearedPlayers(myTeam, thisMatchAppearances, md);
                AddGoals(myTeam, thisMatchAppearances, md);
                AddReplacements(myTeam, thisMatchAppearances, md);
                AddBestPlayer(myTeam, thisMatchAppearances, md);
                AddYellowCards(myTeam, thisMatchAppearances, md);
                AddBruisedAndInjured(myTeam, thisMatchAppearances, md);

                // add items to return value
                foreach (var v in thisMatchAppearances)
                {
                    if (!ret2.ContainsKey(v.Key))
                    {
                        ret2.Add(v.Key, new List <MatchAppearance>());
                    }

                    ret2[v.Key].Add(v.Value);
                }
            }

            return(ret2);
        }
        private static void AddGoals(Team myTeam, IDictionary <Player, MatchAppearance> thisMatchAppearances, MatchDetails md)
        {
            foreach (Goal g in md.Goals)
            {
                if (myTeam.ID != g.Team.ID)
                {
                    continue;                         // ignore opponent goals
                }
                if (g.Scorer.ID == 0)
                {
                    continue;                   // ignore neighbourhood players
                }
                if (!thisMatchAppearances.ContainsKey(g.Scorer))
                {
                    HtLog.Warn("Scorer is not part of lineup. This is very odd.");
                    continue;
                }

                thisMatchAppearances[g.Scorer].Goals.Add(g);
            }
        }
        private static void AddLineupPlayers(Team myTeam, IDictionary <Player, MatchAppearance> ret, MatchDetails md)
        {
            IEnumerable <Lineup.LineupItem> items = null;

            if (md.HomeTeam.ID == myTeam.ID)
            {
                myTeam = md.HomeTeam;
                items  = md.HomeLineup.LineupItems;
            }
            else if (md.AwayTeam.ID == myTeam.ID)
            {
                items = md.AwayLineup.LineupItems;
            }
            else
            {
                HtLog.Warn("Received a bad match ({0})", md);
                return;
            }

            foreach (Lineup.LineupItem item in items.SafeEnum())
            {
                if (!item.Role.IsActive())
                {
                    continue;
                }

                if (item.Player.ID == 0)
                {
                    continue;                      // ignore neighbourhood players
                }
                if (!ret.ContainsKey(item.Player))
                {
                    ret.Add(item.Player, new MatchAppearance(item.Player, myTeam, md, item.Role, item.RatingStars));
                }
                else
                {
                    throw new Exception(string.Format("Tried to add Player {0} twice", item.Player));
                }
            }
        }