Пример #1
0
        public void OnOutgoingNetworkMessage(EMsg msgType, byte[] data)
        {
            LastOutgoingMessage = msgType;

            Assert.NotNull(data);
            Assert.NotEmpty(data);
        }
Пример #2
0
        Type GetMessageBodyType(uint realEMsg)
        {
            EMsg eMsg = MsgUtil.GetMsg(realEMsg);

            if (MessageTypeOverrides.BodyMap.ContainsKey(eMsg))
            {
                return(MessageTypeOverrides.BodyMap[eMsg]);
            }

            var protomsgType = typeof(CMClient).Assembly.GetTypes().ToList().Find(type =>
            {
                if (type.GetInterfaces().ToList().Find(inter => inter == typeof(IExtensible)) == null)
                {
                    return(false);
                }

                if (type.Name.EndsWith(eMsg.ToString(), StringComparison.OrdinalIgnoreCase))
                {
                    return(true);
                }

                return(false);
            });

            return(protomsgType);
        }
Пример #3
0
        public void OnOutgoingNetworkMessage(EMsg msgType, byte[] data)
        {
            LastOutgoingMessage = msgType;

            Assert.NotNull(data);
            Assert.NotEmpty(data);
        }
Пример #4
0
 public void Unsubscribe(EMsg id, Action <IPacketMsg> cb)
 {
     if (dispatch_map.TryGetValue(id, out var arr))
     {
         arr.RemoveAll(x => (x == cb));
     }
 }
Пример #5
0
        static IPacketMsg GetPacketMsg(byte[] data)
        {
            uint rawEMsg = BitConverter.ToUInt32(data, 0);
            EMsg eMsg    = MsgUtil.GetMsg(rawEMsg);

            switch (eMsg)
            {
            // certain message types are always MsgHdr
            case EMsg.ChannelEncryptRequest:
            case EMsg.ChannelEncryptResponse:
            case EMsg.ChannelEncryptResult:
                return(new PacketMsg(eMsg, data));
            }

            if (MsgUtil.IsProtoBuf(rawEMsg))
            {
                // if the emsg is flagged, we're a proto message
                return(new PacketClientMsgProtobuf(eMsg, data));
            }
            else
            {
                // otherwise we're a struct message
                return(new PacketClientMsg(eMsg, data));
            }
        }
Пример #6
0
 public void SendMsg(EMsg msg, params object[] args)
 {
     for (int i = 0; i < mMsgListener.Count; ++i)
     {
         mMsgListener[i].OnMsg(msg, args);
     }
 }
Пример #7
0
        public void OnMsg(EMsg msg, params object[] args)
        {
            switch (msg)
            {
            case EMsg.View_Prefab_Build:
                BiologyViewRoot viewRoot = (BiologyViewRoot)args[1];
                m_Barrel    = viewRoot.barrelController;
                m_BillBoard = viewRoot.billBoard;

                if (m_Target != null)
                {
                    m_Barrel.AimTarget = m_Target;
                }

                break;

            case EMsg.View_Model_Destroy:
                if (m_TowerEffect != null && m_TowerEffect.Count > 0)
                {
                    for (int i = 0; i < m_TowerEffect.Count; i++)
                    {
                        m_TowerEffect[i].Destroy();
                    }
                }
                break;

            default:
                break;
            }
        }
Пример #8
0
 public static void On(EMsg msg, Action <Bot, IPacketMsg> callback)
 {
     foreach (var bot in List)
     {
         bot.On(msg, callback);
     }
 }
Пример #9
0
        public void OnMsg(EMsg msg, params object[] args)
        {
            switch (msg)
            {
#if USE_TRIGGER_FOR_SKILL
            case EMsg.View_Model_AttachJoint:
                GameObject injuredBuild = args[0] as GameObject;
                PETrigger.AttachTriggerEvent(injuredBuild, OnColliderEnter, null, null);
                break;

            case EMsg.View_Model_DeatchJoint:
                GameObject injuredDestroy = args[0] as GameObject;
                PETrigger.DetachTriggerEvent(injuredDestroy, OnColliderEnter, null, null);
                break;

            case EMsg.View_Model_Build:
                Profiler.BeginSample("View_Model_Build_SkAlive");
                GameObject modelBuild = args[0] as GameObject;
                PETrigger.AttachTriggerEvent(modelBuild, OnColliderEnter, null, null);
                Profiler.EndSample();
                break;

            case EMsg.View_Model_Destroy:
                GameObject modelDestroy = args[0] as GameObject;
                PETrigger.DetachTriggerEvent(modelDestroy, OnColliderEnter, null, null);
                break;
#endif
            case EMsg.State_Revive:
                DispatchReviveEvent();
                SetAutoBuffActive(true);
                isDead = false;
                break;
            }
        }
Пример #10
0
        void IPeMsg.OnMsg(EMsg msg, params object[] args)
        {
            if (PeGameMgr.IsMulti && null != mCommon && mCommon.Identity == EIdentity.Player)
            {
                switch (msg)
                {
                case EMsg.Net_Instantiate:
                {
                    PeMap.LabelMgr.Instance.Add(this);
                }
                break;

                case EMsg.Net_Destroy:
                {
                    PeMap.LabelMgr.Instance.Remove(this);
                }
                break;
                }
            }
            else
            {
                if (msg == EMsg.Lod_Collider_Created)
                {
                    PeMap.LabelMgr.Instance.Add(this);
                }
                else if (msg == EMsg.View_Prefab_Destroy)
                {
                    PeMap.LabelMgr.Instance.Remove(this);
                }
            }
        }
Пример #11
0
 public void OnMsg(EMsg msg, params object[] args)
 {
     switch (msg)
     {
     case EMsg.View_Prefab_Build:
         if (PeGameMgr.IsSingle)
         {
             RelationshipDataMgr.RecoverRelationship(PeCreature.Instance.mainPlayerId);
         }
         else
         {
             if (Mount)
             {
                 if (Mount.hasView)
                 {
                     RideMount();
                 }
                 else
                 {
                     Mount.biologyViewCmpt.Build();
                     StartCoroutine("RideMountIterator");
                 }
             }
         }
         break;
     }
 }
Пример #12
0
        internal static IPacketMsg GetPacketMsg(byte[] data)
        {
            uint rawEMsg = BitConverter.ToUInt32(data, 0);
            EMsg eMsg    = MsgUtil.GetMsg(rawEMsg);

            switch (eMsg)
            {
            // certain message types are always MsgHdr
            case EMsg.ChannelEncryptRequest:
            case EMsg.ChannelEncryptResponse:
            case EMsg.ChannelEncryptResult:
                return(new PacketMsg(eMsg, data));
            }

            try
            {
                if (MsgUtil.IsProtoBuf(rawEMsg))
                {
                    // if the emsg is flagged, we're a proto message
                    return(new PacketClientMsgProtobuf(eMsg, data));
                }
                else
                {
                    // otherwise we're a struct message
                    return(new PacketClientMsg(eMsg, data));
                }
            }
            catch (Exception ex)
            {
                DebugLog.WriteLine("CMClient", "Exception deserializing emsg {0} ({1}).\n{2}", eMsg, MsgUtil.IsProtoBuf(rawEMsg), ex.ToString());
                return(null);
            }
        }
Пример #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ClientMsgProtobuf&lt;BodyType&gt;"/> class.
        /// This is a client send constructor.
        /// </summary>
        /// <param name="eMsg">The network message type this client message represents.</param>
        /// <param name="payloadReserve">The number of bytes to initialize the payload capacity to.</param>
        public ClientMsgProtobuf(EMsg eMsg, int payloadReserve = 64)
            : base(payloadReserve)
        {
            Body = new BodyType();

            // set our emsg
            Header.Msg = eMsg;
        }
Пример #14
0
 public void SendPacket(EMsg type, byte[] payload)
 {
     SendPacket(new Packet()
     {
         type    = type,
         payload = payload
     });
 }
Пример #15
0
        void IPeMsg.OnMsg(EMsg msg, params object[] args)
        {
            EventArg e = new EventArg();

            e.msg  = msg;
            e.args = args;

            eventor.Dispatch(e, this.Entity);
        }
Пример #16
0
        ClientMsgProtobuf <T> GetProtoMsgFromFile <T>(EMsg eMsg, string fileName)
            where T : IExtensible, new()
        {
            var fileData = File.ReadAllBytes(fileName);
            var msg      = new SteamKit2.PacketClientMsgProtobuf(eMsg, fileData);
            var proto    = new ClientMsgProtobuf <T>(msg);

            return(proto);
        }
Пример #17
0
        public void OnMsg(EMsg msg, params object[] args)
        {
            switch (msg)
            {
            case EMsg.Net_Proxy:
//				RequsetProtect();
                break;
            }
        }
Пример #18
0
        /// <summary>
        /// Crafts an EMsg, flagging it if required.
        /// </summary>
        /// <param name="msg">The EMsg to flag.</param>
        /// <param name="protobuf">if set to <c>true</c>, the message is protobuf flagged.</param>
        /// <returns>A crafted EMsg, flagged if requested.</returns>
        public static EMsg MakeMsg(EMsg msg, bool protobuf = false)
        {
            if (protobuf)
            {
                return(( EMsg )(( uint )msg | ProtoMask));
            }

            return(msg);
        }
Пример #19
0
 public void Subscribe <T>(EMsg id, Action <ClientMsgProtobuf <T> > func)
     where T : ProtoBuf.IExtensible, new()
 {
     Subscribe(id, new Action <IPacketMsg>(x =>
     {
         var msg = new ClientMsgProtobuf <T>(x);
         func(msg);
     }));
 }
Пример #20
0
 void IPeMsg.OnMsg(EMsg msg, params object[] args)
 {
     switch (msg)
     {
     case EMsg.View_Prefab_Build:
         BiologyViewCmpt obj = args[0] as BiologyViewCmpt;
         m_Sleep.m_PhyCtrl = obj.monoPhyCtrl;
         break;
     }
 }
Пример #21
0
 string GetFileName(string direction, EMsg msgType)
 {
     return(string.Format(
                "{0:D3}_{1}_{2:D}_k_EMsg{3}.bin",
                Interlocked.Increment(ref MessageNumber),
                direction,
                msgType,
                msgType
                ));
 }
Пример #22
0
 bool IsExpectedEMsg(EMsg msg)
 {
     return(state switch
     {
         EncryptionState.Disconnected => false,
         EncryptionState.Connected => msg == EMsg.ChannelEncryptRequest,
         EncryptionState.Challenged => msg == EMsg.ChannelEncryptResult,
         EncryptionState.Encrypted => true,
         _ => throw new InvalidOperationException("Unreachable - landed up in undefined state."),
     });
Пример #23
0
        static bool FilterNonProtobufMessageBodyTypes(Type type, EMsg eMsg)
        {
            if (type.GetInterfaces().ToList().Find(@interface => @interface == typeof(ISteamSerializableMessage)) == null)
            {
                return(false);
            }

            var gcMsg = Activator.CreateInstance(type) as ISteamSerializableMessage;

            return(gcMsg.GetEMsg() == eMsg);
        }
Пример #24
0
 void IPeMsg.OnMsg(EMsg msg, params object[] args)
 {
     if (EMsg.View_Prefab_Build == msg)
     {
         mousePickable.CollectColliders();
     }
     else if (EMsg.View_Prefab_Destroy == msg)
     {
         mousePickable.ClearCollider();
     }
 }
Пример #25
0
        public void Subscribe(EMsg id, Action <IPacketMsg> cb)
        {
            dispatch_map.FindOrCreate(id).Add(cb);
            if (dispatch_map.TryGetValue(id, out var arr))
            {
                arr.Add(cb);
                return;
            }

            dispatch_map[id] = new List <Action <IPacketMsg> >();
            dispatch_map[id].Add(cb);
        }
Пример #26
0
        void IPeMsg.OnMsg(EMsg msg, params object[] args)
        {
            switch (msg)
            {
            case EMsg.View_Prefab_Build:
                BiologyViewRoot viewRoot = args[1] as BiologyViewRoot;
                m_AnimEffectCtrl = viewRoot.ikAnimEffectCtrl;
                m_IKAimCtrl      = viewRoot.ikAimCtrl;
                m_IKFlashLight   = viewRoot.ikFlashLight;
                m_FBBIK          = viewRoot.fbbik;
                m_GroundFBBIK    = viewRoot.grounderFBBIK;
                m_IKArray        = viewRoot.ikArray;

                if (null != m_IKAimCtrl)
                {
                    m_IKAimCtrl.SetSmoothMoveState(m_SmoothAim);
                }
                m_AutoCloseFBBIK = (null == m_GroundFBBIK);
                if (null != m_FBBIK)
                {
                    m_FBBIK.Disable();
                    m_FBBIK.solver.iterations = 1;
                    m_DefaultMappingValue     = m_FBBIK.solver.leftArmMapping.weight;
                }
                if (null != m_GroundFBBIK)
                {
                    m_DefaultSpineBend = m_GroundFBBIK.spineBend;
                }

                ikEnable                  = m_IKEnable;
                flashLightActive          = m_FlashLightActive;
                enableArmMap              = m_SpineMask.Count == 0;
                enableGrounderSpineEffect = m_SpineMask.Count == 0;
                break;
//			case EMsg.Battle_EnterShootMode:
//				enableGrounderSpineEffect = false;
//				enableArmMap = false;
//				break;
//			case EMsg.Battle_ExitShootMode:
//				enableGrounderSpineEffect = true;
//				enableArmMap = true;
//				break;
//			case EMsg.Battle_PauseShootMode:
//				if(null != m_IKAimCtrl)
//					m_IKAimCtrl.SetActive(false);
//				break;
//			case EMsg.Battle_ContinueShootMode:
//				if(null != m_IKAimCtrl)
//					m_IKAimCtrl.SetActive(true);
//				break;
            }
        }
Пример #27
0
        public void OnMsg(EMsg msg, params object[] args)
        {
            switch (msg)
            {
            case EMsg.Net_Controller:
                ActivateImpactDamage(true);
                break;

            case EMsg.Net_Proxy:
                ActivateImpactDamage(false);
                break;
            }
        }
Пример #28
0
        public void OnMsg(EMsg msg, params object[] args)
        {
            switch (msg)
            {
            case EMsg.View_Prefab_Build:
                //BiologyViewRoot viewRoot = (BiologyViewRoot)args[1];
                //m_Barrel = viewRoot.barrelController;
                break;

            default:
                break;
            }
        }
Пример #29
0
        public void OnMsg(EMsg msg, params object[] args)
        {
            switch (msg)
            {
            case EMsg.View_Prefab_Build:
                DispatchViewData();
                break;

            case EMsg.View_Prefab_Destroy:
                CollectViewData();
                break;
            }
        }
Пример #30
0
        public static Type GetProtobufMessageBodyType(uint realEMsg)
        {
            EMsg eMsg = MsgUtil.GetMsg(realEMsg);

            if (MessageTypeOverrides.BodyMap.ContainsKey(eMsg))
            {
                return(MessageTypeOverrides.BodyMap[eMsg]);
            }

            var protomsgType = SteamKit2Assembly.GetTypes().ToList().Find(t => FilterProtobufMessageBodyType(t, eMsg));

            return(protomsgType);
        }
Пример #31
0
        public static Type GetProtobufMessageBodyType(uint realEMsg)
        {
            EMsg eMsg = MsgUtil.GetMsg(realEMsg);

            if (MessageTypeOverrides.BodyMap.TryGetValue(eMsg, out var wellKnownType))
            {
                return(wellKnownType);
            }

            var protomsgType = SteamKit2Assembly.GetTypes().ToList().Find(t => FilterProtobufMessageBodyType(t, eMsg));

            return(protomsgType);
        }
Пример #32
0
		public static Type GetNonProtobufMessageBodyType(EMsg eMsg)
		{
			// lets first find the type by checking all EMsgs we have
			var msgType = SteamKit2Assembly.GetTypes().ToList().Find(type =>
			{
				if (type.GetInterfaces().ToList().Find(@interface => @interface == typeof(ISteamSerializableMessage)) == null)
					return false;

				var gcMsg = Activator.CreateInstance(type) as ISteamSerializableMessage;

				return gcMsg.GetEMsg() == eMsg;
			});

			return msgType;
		}
Пример #33
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PacketMsg"/> class.
        /// </summary>
        /// <param name="eMsg">The network message type for this packet message.</param>
        /// <param name="data">The data.</param>
        public PacketMsg( EMsg eMsg, byte[] data )
        {
            MsgType = eMsg;
            payload = data;

            MsgHdr msgHdr = new MsgHdr();

            // deserialize the header to get our hands on the job ids
            using ( MemoryStream ms = new MemoryStream( data ) )
            {
                msgHdr.Deserialize( ms );
            }

            TargetJobID = msgHdr.TargetJobID;
            SourceJobID = msgHdr.SourceJobID;
        }
Пример #34
0
 /// <summary>
 /// Called when a packet is about to be sent to the Steam server.
 /// </summary>
 /// <param name="msgType">Network message type of this packet message.</param>
 /// <param name="data">Raw packet data that will be sent.</param>
 public void OnOutgoingNetworkMessage( EMsg msgType, byte[] data )
 {
     LogNetMessage( "out", msgType, data );
 }
Пример #35
0
 /// <summary>
 /// Called when a packet is received from the Steam server.
 /// </summary>
 /// <param name="msgType">Network message type of this packet message.</param>
 /// <param name="data">Raw packet data that was received.</param>
 public void OnIncomingNetworkMessage( EMsg msgType, byte[] data )
 {
     LogNetMessage( "in", msgType, data );
 }
Пример #36
0
 string GetFileName( string direction, EMsg msgType )
 {
     return string.Format(
         "{0:D3}_{1}_{2:D}_k_EMsg{3}.bin",
         Interlocked.Increment( ref MessageNumber ),
         direction,
         msgType,
         msgType
     );
 }
Пример #37
0
		public void SetEMsg( EMsg msg ) { this.Msg = msg; }
Пример #38
0
		static bool FilterNonProtobufMessageBodyTypes(Type type, EMsg eMsg)
		{
			if (type.GetInterfaces().ToList().Find(@interface => @interface == typeof(ISteamSerializableMessage)) == null)
				return false;

			var gcMsg = Activator.CreateInstance(type) as ISteamSerializableMessage;

			return gcMsg.GetEMsg() == eMsg;
		}
Пример #39
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PacketClientMsg"/> class.
        /// </summary>
        /// <param name="eMsg">The network message type for this packet message.</param>
        /// <param name="data">The data.</param>
        public PacketClientMsg( EMsg eMsg, byte[] data )
        {
            MsgType = eMsg;
            payload = data;

            ExtendedClientMsgHdr extendedHdr = new ExtendedClientMsgHdr();

            // deserialize the extended header to get our hands on the job ids
            using ( MemoryStream ms = new MemoryStream( data ) )
            {
                extendedHdr.Deserialize( ms );
            }

            TargetJobID = extendedHdr.TargetJobID;
            SourceJobID = extendedHdr.SourceJobID;
        }
Пример #40
0
        /// <summary>
        /// Initializes a new instance of the <see cref="PacketClientMsgProtobuf"/> class.
        /// </summary>
        /// <param name="eMsg">The network message type for this packet message.</param>
        /// <param name="data">The data.</param>
        public PacketClientMsgProtobuf( EMsg eMsg, byte[] data )
        {
            MsgType = eMsg;
            payload = data;

            MsgHdrProtoBuf protobufHeader = new MsgHdrProtoBuf();

            // we need to pull out the job ids, so we deserialize the protobuf header
            using ( MemoryStream ms = new MemoryStream( data ) )
            {
                protobufHeader.Deserialize( ms );
            }

            TargetJobID = protobufHeader.Proto.jobid_target;
            SourceJobID = protobufHeader.Proto.jobid_source;
        }
Пример #41
0
        void LogNetMessage( string direction, EMsg msgType, byte[] data )
        {
            var path = Path.Combine( LogDirectory, GetFileName( direction, msgType ) );

            File.WriteAllBytes( path, data );
        }
Пример #42
0
 public void OnIncomingNetworkMessage(EMsg msgType, byte[] data)
 {
     //
 }
Пример #43
0
		static bool FilterProtobufMessageBodyType(Type type, EMsg eMsg)
		{
			if (type.GetInterfaces().ToList().Find(inter => inter == typeof(IExtensible)) == null)
			{
				return false;
			}

			if (type.Namespace != "SteamKit2.Internal")
			{
				return false;
			}

			if (!type.Name.EndsWith(eMsg.ToString(), StringComparison.OrdinalIgnoreCase))
			{
				return false;
			}

			return true;
		}