public void RemoveOnlineMember(LogicLong avatarId, AllianceSession session) { if (this.m_onlineMembers.TryGetValue(avatarId, out AllianceSession currentSession) && currentSession.Id == session.Id && this.m_onlineMembers.Remove(avatarId)) { this.OnOnlineMemberChanged(); } }
public void AddOnlineMember(LogicLong avatarId, AllianceSession session) { if (!this.m_onlineMembers.TryAdd(avatarId, session)) { this.m_onlineMembers[avatarId] = session; } this.OnOnlineMemberChanged(); }
private static void OnLeaveAllianceMemberMessageReceived(LeaveAllianceMemberMessage message) { if (AllianceManager.TryGet(message.AccountId, out Alliance alliance) && alliance.Members.TryGetValue(message.MemberId, out AllianceMemberEntry memberEntry)) { if (memberEntry.GetAllianceRole() == LogicAvatarAllianceRole.LEADER) { AllianceMemberEntry higherMemberEntry = null; LogicAvatarAllianceRole higherMemberRole = 0; foreach (AllianceMemberEntry member in alliance.Members.Values) { if (member != memberEntry && (higherMemberEntry == null || !member.HasLowerRoleThan(higherMemberRole))) { higherMemberEntry = member; higherMemberRole = member.GetAllianceRole(); } } if (higherMemberEntry != null) { alliance.ChangeMemberRole(higherMemberEntry, LogicAvatarAllianceRole.LEADER, memberEntry.GetAvatarId(), memberEntry.GetName()); } } alliance.RemoveMember(message.MemberId); AllianceSession session = alliance.GetCurrentOnlineMemberSession(message.AccountId); if (session != null) { AllianceSessionManager.Remove(session.Id); } AllianceEventStreamEntry allianceEventStreamEntry = new AllianceEventStreamEntry(); AllianceStreamEntryUtil.SetSenderInfo(allianceEventStreamEntry, memberEntry); allianceEventStreamEntry.SetEventType(AllianceEventStreamEntryType.LEFT); allianceEventStreamEntry.SetEventAvatarId(memberEntry.GetAvatarId()); allianceEventStreamEntry.SetEventAvatarName(memberEntry.GetName()); StreamManager.Create(alliance.Id, allianceEventStreamEntry); alliance.AddStreamEntry(allianceEventStreamEntry); AllianceManager.Save(alliance); } ServerMessageManager.SendMessage(new AllianceLeavedMessage { AccountId = message.MemberId, AllianceId = message.AccountId }, 9); }
private static void OnAllianceUpdateAvatarDataMessageReceived(AllianceAvatarChangesMessage message) { if (AllianceManager.TryGet(message.AccountId, out Alliance alliance) && alliance.Members.TryGetValue(message.MemberId, out AllianceMemberEntry memberEntry)) { bool updateScoring = false; for (int i = 0; i < message.AvatarChanges.Size(); i++) { AvatarChange avatarChange = message.AvatarChanges[i]; avatarChange.ApplyAvatarChange(memberEntry); if (avatarChange.GetAvatarChangeType() == AvatarChangeType.SCORE || avatarChange.GetAvatarChangeType() == AvatarChangeType.DUEL_SCORE) { updateScoring = true; } } AllianceSession currentSession = alliance.GetCurrentOnlineMemberSession(message.MemberId); if (currentSession != null && currentSession.LogicClientAvatar != null) { for (int i = 0; i < message.AvatarChanges.Size(); i++) { message.AvatarChanges[i].ApplyAvatarChange(currentSession.LogicClientAvatar); } } if (updateScoring) { alliance.UpdateScoring(); } AllianceManager.Save(alliance); } }
public LogicMessageManager(AllianceSession session) { this.m_session = session; }