Ejemplo n.º 1
0
 private static void OnUpdateSocketServerSessionMessageReceived(UpdateSocketServerSessionMessage message)
 {
     if (AllianceSessionManager.TryGet(message.SessionId, out AllianceSession session))
     {
         session.UpdateSocketServerSessionMessageReceived(message);
     }
 }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
                }
            }
        }