private static void OnUpdateSocketServerSessionMessageReceived(UpdateSocketServerSessionMessage message) { if (AllianceSessionManager.TryGet(message.SessionId, out AllianceSession session)) { session.UpdateSocketServerSessionMessageReceived(message); } }
public override void OnReceiveSessionMessage(ServerSessionMessage message) { switch (message.GetMessageType()) { case ServerMessageType.START_SERVER_SESSION: AllianceSessionManager.OnStartServerSessionMessageReceived((StartServerSessionMessage)message); break; case ServerMessageType.STOP_SERVER_SESSION: AllianceSessionManager.OnStopServerSessionMessageReceived((StopServerSessionMessage)message); break; case ServerMessageType.UPDATE_SOCKET_SERVER_SESSION: StreamMessageManager.OnUpdateSocketServerSessionMessageReceived((UpdateSocketServerSessionMessage)message); break; case ServerMessageType.FORWARD_LOGIC_MESSAGE: StreamMessageManager.OnForwardLogicMessageReceived((ForwardLogicMessage)message); break; case ServerMessageType.FORWARD_LOGIC_REQUEST_MESSAGE: StreamMessageManager.OnForwardLogicMessageRequestMessageReceived((ForwardLogicRequestMessage)message); break; case ServerMessageType.SEND_AVATAR_STREAMS_TO_CLIENT: StreamMessageManager.OnSendAvatarStreamsToClientMessageReceived((SendAvatarStreamsToClientMessage)message); break; } }
public static void Init() { ServerStream.AllianceDatabase = new CouchbaseDatabase("magic-alliances", "data"); ServerStream.StreamDatabase = new CouchbaseDatabase("magic-streams", "stream"); AllianceManager.Init(); StreamManager.Init(); AllianceSessionManager.Init(); WordCensorUtil.Init(); }
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 OnForwardLogicMessageReceived(ForwardLogicMessage message) { if (AllianceSessionManager.TryGet(message.SessionId, out AllianceSession session)) { PiranhaMessage logicMessage = LogicMagicMessageFactory.Instance.CreateMessageByType(message.MessageType); if (logicMessage == null) { throw new Exception("logicMessage should not be NULL!"); } logicMessage.GetByteStream().SetByteArray(message.MessageBytes, message.MessageLength); logicMessage.SetMessageVersion(message.MessageVersion); logicMessage.Decode(); if (!logicMessage.IsServerToClientMessage()) { session.LogicMessageManager.ReceiveMessage(logicMessage); } } }