コード例 #1
0
        public List <PlayerGuildStatusChange> GenerateLatestStatusChanges(DateTime _EarliestChange)
        {
            List <PlayerGuildStatusChange> result = new List <PlayerGuildStatusChange>();

            foreach (var player in m_Players)
            {
                GuildPlayerStatus oldStatus = null;
                foreach (var playerStatus in player.Value.History)
                {
                    if (playerStatus.DateTime < _EarliestChange)
                    {
                        oldStatus = playerStatus;
                        continue;
                    }
                    if (oldStatus == null)
                    {
                        result.Add(new PlayerGuildStatusChange(player.Key, oldStatus, playerStatus));
                        oldStatus = playerStatus;
                    }
                    else if (oldStatus.GuildRank != playerStatus.GuildRank)
                    {
                        result.Add(new PlayerGuildStatusChange(player.Key, oldStatus, playerStatus));
                        oldStatus = playerStatus;
                    }
                }
            }
            return(result.OrderBy((_Value) => _Value.ToStatus.DateTime).ToList());
        }
コード例 #2
0
        public static GuildPlayerStatus CreateNotInGuild(DateTime _DateTime)
        {
            GuildPlayerStatus newGuildPlayerStatus = new GuildPlayerStatus();

            newGuildPlayerStatus.m_DateTime    = _DateTime;
            newGuildPlayerStatus.m_GuildRankNr = -1337;
            newGuildPlayerStatus.m_GuildRank   = "";
            return(newGuildPlayerStatus);
        }
コード例 #3
0
 public void SetNotInGuild(DateTime _DateTime)
 {
     if (m_History.Count > 0)
     {
         if (m_History.First().DateTime > _DateTime && m_History.First().IsInGuild == false)
         {
             return;//Not necessary to add older "not in guild" data
         }
         if (m_History.Last().DateTime < _DateTime && m_History.Last().IsInGuild == false)
         {
             return;//Not necessary to add newer "not in guild" data
         }
     }
     AddGuildPlayerStatus(GuildPlayerStatus.CreateNotInGuild(_DateTime));
 }
コード例 #4
0
 private void AddGuildPlayerStatus(GuildPlayerStatus _GuildPlayerStatus)
 {
     if (m_History.Count > 0)
     {
         if (m_History.Last().DateTime < _GuildPlayerStatus.DateTime)
         {
             //if(m_History.Last().IsSame(_GuildPlayerStatus) == false)
             m_History.Add(_GuildPlayerStatus);
         }
         else if (m_History.First().DateTime > _GuildPlayerStatus.DateTime)
         {
             //if (m_History.First().IsSame(_GuildPlayerStatus) == false)
             m_History.Insert(0, _GuildPlayerStatus);
         }
         else
         {
             for (int i = m_History.Count - 1; i >= 0; --i)
             {
                 if (m_History[i].DateTime == _GuildPlayerStatus.DateTime)
                 {
                     break;//Data with this exact DateTime allready exists, so skip
                 }
                 if (m_History[i].DateTime < _GuildPlayerStatus.DateTime)
                 {
                     //if (m_History[i].IsSame(_GuildPlayerStatus) == false)
                     {
                         if (i + 1 < m_History.Count)//egentligen onödig check
                         {
                             m_History.Insert(i + 1, _GuildPlayerStatus);
                         }
                     }
                     break;
                 }
             }
         }
     }
     else
     {
         m_History.Add(_GuildPlayerStatus);
     }
 }
コード例 #5
0
 public bool IsSame(GuildPlayerStatus _Other)
 {
     return(_Other.GuildRank == _Other.GuildRank && _Other.GuildRankNr == _Other.GuildRankNr);
 }
コード例 #6
0
 public PlayerGuildStatusChange(string _Player, GuildPlayerStatus _OldStatus, GuildPlayerStatus _NewStatus)
 {
     m_Player    = _Player;
     m_OldStatus = _OldStatus;
     m_NewStatus = _NewStatus;
 }