예제 #1
0
 internal void SendEvent(PlayerEventCode eventCode, Dictionary <byte, object> parameters)
 {
     foreach (Device device in player.Devices)
     {
         device.EventManager.SendPlayerEvent(player, eventCode, parameters);
     }
 }
예제 #2
0
        internal void SendPlayerEvent(Player player, PlayerEventCode eventCode, Dictionary <byte, object> parameters)
        {
            Dictionary <byte, object> eventData = new Dictionary <byte, object>
            {
                { (byte)PlayerEventParameterCode.Nickname, player.Nickname },
                { (byte)PlayerEventParameterCode.EventCode, (byte)eventCode },
                { (byte)PlayerEventParameterCode.Parameters, parameters }
            };

            SendEvent(DeviceEventCode.PlayerEvent, eventData);
        }
예제 #3
0
        internal void SendPlayerEvent(Player player, PlayerEventCode eventCode, Dictionary <byte, object> parameters)
        {
            Dictionary <byte, object> eventData = new Dictionary <byte, object>
            {
                { (byte)PlayerEventParameterCode.PlayerID, player.PlayerID },
                { (byte)PlayerEventParameterCode.EventCode, (byte)eventCode },
                { (byte)PlayerEventParameterCode.Parameters, parameters }
            };

            SendEvent(EndPointEventCode.PlayerEvent, eventData);
        }
예제 #4
0
 internal bool Operate(PlayerEventCode eventCode, Dictionary <byte, object> parameters, out string errorMessage)
 {
     if (eventTable.ContainsKey(eventCode))
     {
         if (eventTable[eventCode].Handle(eventCode, parameters, out errorMessage))
         {
             return(true);
         }
         else
         {
             errorMessage = $"Player Event Error: {eventCode} from PlayerID: {player.PlayerID}\nErrorMessage: {errorMessage}";
             return(false);
         }
     }
     else
     {
         errorMessage = $"Unknow Player Event:{eventCode} from PlayerID: {player.PlayerID}";
         return(false);
     }
 }
예제 #5
0
        internal override bool Handle(EndPointEventCode eventCode, Dictionary <byte, object> parameters, out string errorMessage)
        {
            if (base.Handle(eventCode, parameters, out errorMessage))
            {
                int                       playerID           = (int)parameters[(byte)PlayerEventParameterCode.PlayerID];
                PlayerEventCode           resolvedEventCode  = (PlayerEventCode)parameters[(byte)PlayerEventParameterCode.EventCode];
                Dictionary <byte, object> resolvedParameters = (Dictionary <byte, object>)parameters[(byte)PlayerEventParameterCode.Parameters];

                if (subject.Player.PlayerID == playerID)
                {
                    return(subject.Player.EventManager.Operate(resolvedEventCode, resolvedParameters, out errorMessage));
                }
                else
                {
                    errorMessage = $"PlayerEvent Error Player ID: {playerID} Not in EndPoint: {subject.LastConnectedIPAddress}";
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
예제 #6
0
        internal override bool Handle(DeviceEventCode eventCode, Dictionary <byte, object> parameters, out string errorMessage)
        {
            if (base.Handle(eventCode, parameters, out errorMessage))
            {
                string                    nickname           = (string)parameters[(byte)PlayerEventParameterCode.Nickname];
                PlayerEventCode           resolvedEventCode  = (PlayerEventCode)parameters[(byte)PlayerEventParameterCode.EventCode];
                Dictionary <byte, object> resolvedParameters = (Dictionary <byte, object>)parameters[(byte)PlayerEventParameterCode.Parameters];

                if (subject.Player.Nickname == nickname)
                {
                    return(subject.Player.EventManager.Operate(resolvedEventCode, resolvedParameters, out errorMessage));
                }
                else
                {
                    errorMessage = $"PlayerEvent Error Player : {nickname} Not in Device: {subject}";
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
예제 #7
0
 internal void SendEvent(PlayerEventCode eventCode, Dictionary <byte, object> parameters)
 {
     player.EndPoint.EventManager.SendPlayerEvent(player, eventCode, parameters);
 }