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()); }
public static GuildPlayerStatus CreateNotInGuild(DateTime _DateTime) { GuildPlayerStatus newGuildPlayerStatus = new GuildPlayerStatus(); newGuildPlayerStatus.m_DateTime = _DateTime; newGuildPlayerStatus.m_GuildRankNr = -1337; newGuildPlayerStatus.m_GuildRank = ""; return(newGuildPlayerStatus); }
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)); }
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); } }
public bool IsSame(GuildPlayerStatus _Other) { return(_Other.GuildRank == _Other.GuildRank && _Other.GuildRankNr == _Other.GuildRankNr); }
public PlayerGuildStatusChange(string _Player, GuildPlayerStatus _OldStatus, GuildPlayerStatus _NewStatus) { m_Player = _Player; m_OldStatus = _OldStatus; m_NewStatus = _NewStatus; }