Esempio n. 1
0
 public void Read(BitStream stream)
 {
     Team       = stream.Read <E_Team>();
     PrimaryKey = stream.ReadString();
     NickName   = stream.ReadString();
     Score      = stream.ReadInt16();
     Deaths     = stream.ReadByte();
     Kills      = stream.ReadByte();
     Platform   = stream.Read <RuntimePlatform>();
 }
Esempio n. 2
0
    // @see StrictCharacterCreator.uLink_OnSerializeNetworkView()
    void uLink_OnSerializeNetworkView(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        MFDebugUtils.Assert(stream.isReading);

        Vector3 pos = stream.ReadVector3();
        Vector3 vel = stream.ReadVector3();

        Vector3 FireDir = stream.ReadVector3();

        byte quantBodyYaw = stream.ReadByte();

        float bodyYaw = NetUtils.DequantizeAngle(quantBodyYaw, 8);

        Quaternion bodyRotation = Quaternion.Euler(0, bodyYaw, 0);

        Owner.BlackBoard.FireDir = Owner.BlackBoard.Desires.FireDirection = FireDir;

        // on proxies, approximate fire place
        Owner.BlackBoard.Desires.FireTargetPlace = pos + FireDir * 10;

        if (Owner.IsAlive)
        {
            if (null != SmoothTransform)
            {
                double timestamp = SmoothTransform.GetTime(info);
                SmoothTransform.AddState(timestamp, pos, vel, bodyRotation);
            }
            else
            {
                SetTransform(pos, bodyRotation, vel);
            }
        }
    }
Esempio n. 3
0
    public void Read(BitStream stream)
    {
        CreateUpgradesIfNotExisting();
        ID           = stream.Read <E_WeaponID>();
        EquipSlotIdx = stream.ReadByte();

        Upgrades.Clear();
        int count = stream.ReadByte();

        for (int i = 0; i < count; i++)
        {
            WeaponUpgrade upg = new WeaponUpgrade();
            upg.ID = stream.Read <E_WeaponUpgradeID>();
            Upgrades.Add(upg);
        }
    }
Esempio n. 4
0
    private void RpcReportUCMD_C2S(uLink.BitStream stream)
    {
        int receiveCount = stream.ReadByte();

        for (int iUCMD = 0; iUCMD < receiveCount; iUCMD++)
        {
            UCMD iterUCMD = new UCMD();
            iterUCMD.ReadFrom(stream);

            if (iterUCMD.UCMDID < m_UCMDs.Count)
            {
                // Client为了防止丢包会冗余发UCMD
                m_UCMDs[iterUCMD.UCMDID] = iterUCMD;
            }
            else if (iterUCMD.UCMDID == m_UCMDs.Count)
            {
                m_UCMDs.Add(iterUCMD);
            }
            else
            {
                UCMD lastUCMD = m_UCMDs[m_UCMDs.Count - 1];
                while (iterUCMD.UCMDID >= m_UCMDs.Count)
                {
                    lastUCMD.UCMDID++;
                    m_UCMDs.Add(lastUCMD);
                }
                m_UCMDs.Add(iterUCMD);
            }
        }

        m_LastReceviedUCMDID = m_UCMDs.Count - 1;
    }
Esempio n. 5
0
    // BitStream Reader
    public static object ReadFromBitStream(uLink.BitStream stream, params object[] args)
    {
        var obj = new WeaponBuild();

        obj.weaponId    = (int)stream.ReadByte();
        obj.attunements = stream.Read <AttunementBuild[]>();

        return(obj);
    }
Esempio n. 6
0
    // BitStream Reader
    public static object ReadFromBitStream(uLink.BitStream stream, params object[] args)
    {
        var obj = new AttunementBuild();

        obj.attunementId = (int)stream.ReadByte();
        obj.skills       = stream.Read <int[]>();

        return(obj);
    }
Esempio n. 7
0
    // BitStream Reader
    public static object ReadFromBitStream(uLink.BitStream stream, params object[] args)
    {
        GuildMember obj = new GuildMember();

        obj.accountId = stream.ReadString();
        obj.name      = stream.ReadString();
        obj.rank      = stream.ReadByte();

        return(obj);
    }
Esempio n. 8
0
    public void Read(BitStream stream)
    {
        Player     = stream.Read <NetworkPlayer>();
        Team       = stream.Read <E_Team>();
        ZoneIndex  = stream.ReadByte();
        Platform   = (RuntimePlatform)stream.ReadInt16();
        Name       = stream.ReadString();
        PrimaryKey = stream.ReadString();         //TODO: PRIMARY KEY - pridat username?

        PlayerData.Read(stream);
    }
Esempio n. 9
0
    public void Read(BitStream stream)
    {
        Items.Clear();
        Weapons.Clear();

        Outfits = stream.Read <PPIOutfits>();
        Perk    = stream.Read <E_PerkID>();

        while (stream.isEOF == false)
        {
            switch (stream.Read <E_DatatType>())
            {
            case E_DatatType.None:
                return;

            case E_DatatType.Item:
            {
                int count = stream.ReadByte();
                for (int i = 0; i < count; i++)
                {
                    PPIItemData d = new PPIItemData();
                    d.Read(stream);
                    Items.Add(d);
                }
            }
            break;

            case E_DatatType.Weapon:
            {
                int count = stream.ReadByte();
                for (int i = 0; i < count; i++)
                {
                    PPIWeaponData d = new PPIWeaponData();
                    d.Read(stream);
                    Weapons.Add(d);
                }
            }
            break;
            }
        }
    }
Esempio n. 10
0
    protected void Mods(byte[] data)
    {
        this.ClearMods();
        uLink.BitStream stream = new uLink.BitStream(data, false);
        byte            num    = stream.ReadByte();

        if (num > 0)
        {
            CharacterStateFlags characterStateFlags = this.GetCharacterStateFlags();
            for (int i = 0; i < num; i++)
            {
                ItemModDataBlock byUniqueID = (ItemModDataBlock)DatablockDictionary.GetByUniqueID(stream.ReadInt32());
                this._itemMods.InstallMod(i, this, byUniqueID, characterStateFlags);
                this._modFlags |= byUniqueID.modFlag;
            }
        }
    }
Esempio n. 11
0
    public void Read(BitStream stream)
    {
        Items.Clear();
        Weapons.Clear();
        Skins.Clear();
        Hats.Clear();
        Perks.Clear();

        while (stream.isEOF == false)
        {
            switch (stream.Read <E_DatatType>())
            {
            case E_DatatType.None:
                return;

            case E_DatatType.Item:
            {
                int count = stream.ReadByte();
                for (int i = 0; i < count; i++)
                {
                    PPIItemData d = new PPIItemData();
                    d.Read(stream);
                    Items.Add(d);
                }
            }
            break;

            case E_DatatType.Weapon:
            {
                int count = stream.ReadByte();
                for (int i = 0; i < count; i++)
                {
                    PPIWeaponData d = new PPIWeaponData();
                    d.Read(stream);
                    Weapons.Add(d);
                }
            }
            break;

            case E_DatatType.Skin:
            {
                int count = stream.ReadByte();
                for (int i = 0; i < count; i++)
                {
                    PPISkinData d = new PPISkinData();
                    d.Read(stream);
                    Skins.Add(d);
                }
            }
            break;

            case E_DatatType.Hat:
            {
                int count = stream.ReadByte();
                for (int i = 0; i < count; i++)
                {
                    PPIHatData d = new PPIHatData();
                    d.Read(stream);
                    Hats.Add(d);
                }
            }
            break;

            case E_DatatType.Perk:
            {
                int count = stream.ReadByte();
                for (int i = 0; i < count; i++)
                {
                    PPIPerkData d = new PPIPerkData();
                    d.Read(stream);
                    Perks.Add(d);
                }
            }
            break;
            }
        }
    }
        public void ExecuteInternal(NetworkBase network)
        {
            // TODO: optimize arg reading!

            switch (internCode)
            {
            case InternalCode.BufferedRPCs: network._RPCBufferedRPCs(stream.ReadSerializedBuffers(), this); break;

            case InternalCode.CellConnectResponse: network._RPCCellConnectResponse(stream.ReadNetworkPlayer(), stream.ReadBoolean(), this); break;

            case InternalCode.ClientConnectRequest: network._RPCClientConnectRequest(stream, this); break;

            case InternalCode.ClientConnectResponse: network._RPCClientConnectResponse(stream.ReadNetworkPlayer(), stream, this); break;

            case InternalCode.ConnectDenied: network._RPCConnectDenied(stream.ReadInt32(), this); break;

            case InternalCode.Create: network._RPCCreate(stream.ReadNetworkPlayer(), stream.ReadNetworkGroup(), (NetworkAuthFlags)stream.ReadByte(), stream.ReadVector3(), stream.ReadQuaternion(), stream.ReadString(), stream.ReadString(), stream.ReadString(), stream.ReadString(), stream.ReadString(), stream, this); break;

            case InternalCode.DestroyByPlayerID: network._RPCDestroyByPlayerID(stream.ReadNetworkPlayer(), this); break;

            case InternalCode.DestroyByViewID: network._RPCDestroyByViewID(this); break;

            case InternalCode.HandoverRequest: network._RPCHandoverRequest(stream.ReadNetworkViewID(), this); break;

            case InternalCode.HandoverResponse: network._RPCHandoverResponse(stream.ReadNetworkViewID(), stream.ReadNetworkPlayer(), stream.ReadNetworkGroup(), (NetworkAuthFlags)stream.ReadByte(), stream.ReadVector3(), stream.ReadQuaternion(), stream.ReadString(), stream.ReadString(), stream.ReadString(), stream.ReadString(), stream.ReadString(), stream.ReadBytes(), stream, this); break;

            case InternalCode.Redirect: network._RPCRedirect(stream.ReadEndPoint(), stream.ReadPassword(), this); break;

            case InternalCode.SecurityRequest: network._RPCSecurityRequest(stream.ReadPublicKey(), this); break;

            case InternalCode.SecurityResponse: network._RPCSecurityResponse(stream.ReadSymmetricKey(), this); break;

            case InternalCode.UnsecurityRequest: network._RPCUnsecurityRequest(stream.ReadSymmetricKey(), this); break;

            case InternalCode.UnsecurityResponse: network._RPCUnsecurityResponse(this); break;

            case InternalCode.StateSyncOwner: network._RPCStateSyncOwner(stream, this); break;

            case InternalCode.StateSyncProxy: network._RPCStateSyncProxy(stream, this); break;

            case InternalCode.PlayerIDConnected: network._RPCPlayerIDConnected(stream.ReadNetworkPlayer(), stream.ReadEndPoint(), stream, this); break;

            case InternalCode.PlayerIDDisconnected: network._RPCPlayerIDDisconnected(stream.ReadNetworkPlayer(), stream.ReadInt32(), this); break;

            case InternalCode.MultiStateSyncProxy: network._RPCMultiStateSyncProxy(this); break;

            case InternalCode.MultiStateSyncOwner: network._RPCMultiStateSyncOwner(stream.ReadStateSyncs(), this); break;

            case InternalCode.DestroyAll: network._RPCDestroyAll(!stream.isEOF && stream.ReadBoolean(), this); break;

            case InternalCode.DestroyInGroup: network._RPCDestroyInGroup(stream.ReadNetworkGroup(), this); break;

            case InternalCode.DestroyInGroupByPlayerID: network._RPCDestroyInGroupByPlayerID(stream.ReadNetworkPlayer(), stream.ReadNetworkGroup(), this); break;

            case InternalCode.LicenseCheck: network._RPCLicenseCheck(this); break;

            case InternalCode.ChangeGroup: network._RPCChangeGroup(stream.ReadNetworkViewID(), stream.ReadNetworkGroup(), this); break;

            case InternalCode.StateSyncCellProxy: network._RPCStateSyncCellProxy(stream, this); break;

            case InternalCode.MultiStateSyncCellProxy: network._RPCMultiStateSyncCellProxy(this); break;

            case InternalCode.RepairAuthFromProxyRequest: network._RPCRepairAuthFromProxyRequest(stream.ReadNetworkViewID(), this); break;

            case InternalCode.MastDebugInfo: network._RPCMastDebugInfo(stream.ReadVector3(), this); break;

            case InternalCode.ChangeAuthFlags: network._RPCChangeAuthFlags(stream.ReadNetworkViewID(), (NetworkAuthFlags)stream.ReadByte(), stream.ReadVector3(), this); break;

            case InternalCode.StateSyncOwnerDeltaCompressed: network._RPCStateSyncOwnerDeltaCompressed(stream, this); break;

            case InternalCode.StateSyncProxyDeltaCompressed: network._RPCStateSyncProxyDeltaCompressed(stream, this); break;

            case InternalCode.StateSyncOwnerDeltaCompressedInit: network._RPCStateSyncOwnerDeltaCompressedInit(stream, this); break;

            case InternalCode.StateSyncProxyDeltaCompressedInit: network._RPCStateSyncProxyDeltaCompressedInit(stream, this); break;

            default:
                Log.Debug(NetworkLogFlags.RPC, "Unknown internal RPC: ", internCode, " from ", connection, " channel ", channel);
                break;
            }
        }
Esempio n. 13
0
    protected virtual void ReadHitInfo(uLink.BitStream stream, out GameObject hitObj, out bool hitNetworkObj, out bool hitBodyPart, out BodyPart bodyPart, out IDRemoteBodyPart remoteBodyPart, out NetEntityID hitViewID, out Transform fromTransform, out Vector3 endPos, out Vector3 offset, out bool isHeadshot)
    {
        HitBoxSystem hitBoxSystem;
        bool         flag;
        byte         num = stream.ReadByte();

        if (num >= 255)
        {
            hitNetworkObj = false;
            hitBodyPart   = false;
            bodyPart      = BodyPart.Undefined;
        }
        else
        {
            hitNetworkObj = true;
            if (num >= 120)
            {
                hitBodyPart = false;
                bodyPart    = BodyPart.Undefined;
            }
            else
            {
                hitBodyPart = true;
                bodyPart    = (BodyPart)num;
            }
        }
        if (!hitNetworkObj)
        {
            hitViewID      = NetEntityID.unassigned;
            hitObj         = null;
            remoteBodyPart = null;
        }
        else
        {
            hitViewID = stream.Read <NetEntityID>(new object[0]);
            if (hitViewID.isUnassigned)
            {
                hitObj         = null;
                remoteBodyPart = null;
            }
            else
            {
                hitObj = hitViewID.gameObject;
                if (!hitObj)
                {
                    remoteBodyPart = null;
                }
                else
                {
                    IDBase dBase = IDBase.Get(hitObj);
                    if (!dBase)
                    {
                        remoteBodyPart = null;
                    }
                    else
                    {
                        IDMain dMain = dBase.idMain;
                        if (!dMain)
                        {
                            remoteBodyPart = null;
                        }
                        else
                        {
                            hitBoxSystem = (!(dMain is Character) ? dMain.GetRemote <HitBoxSystem>() : ((Character)dMain).hitBoxSystem);
                            if (!hitBoxSystem)
                            {
                                remoteBodyPart = null;
                            }
                            else
                            {
                                hitBoxSystem.bodyParts.TryGetValue((BodyPart)((int)bodyPart), out remoteBodyPart);
                            }
                        }
                    }
                }
            }
        }
        endPos = stream.ReadVector3();
        offset = Vector3.zero;
        if (remoteBodyPart)
        {
            flag          = false;
            fromTransform = remoteBodyPart.transform;
            BodyPart bodyPart1 = (BodyPart)((int)bodyPart);
            switch (bodyPart1)
            {
            case BodyPart.Brain:
            case BodyPart.L_Eye:
            case BodyPart.R_Eye:
            {
Label0:
                isHeadshot = true;
                break;
            }

            default:
            {
                switch (bodyPart1)
                {
                case BodyPart.Head:
                case BodyPart.Jaw:
                {
                    goto Label0;
                }

                case BodyPart.Scalp:
                case BodyPart.Nostrils:
                {
                    isHeadshot = false;
                    break;
                }

                default:
                {
                    goto case BodyPart.Nostrils;
                }
                }
                break;
            }
            }
        }
        else if (!hitObj)
        {
            fromTransform = null;
            flag          = false;
            isHeadshot    = false;
        }
        else
        {
            fromTransform = hitObj.transform;
            flag          = true;
            isHeadshot    = false;
        }
        if (fromTransform)
        {
            offset = endPos;
            endPos = fromTransform.TransformPoint(endPos);
        }
    }
Esempio n. 14
0
 internal static object _ReadByte(BitStream stream, object[] codecOptions)
 {
     return(stream.ReadByte());
 }
Esempio n. 15
0
 public void Read(BitStream stream)
 {
     ID           = stream.Read <E_ItemID>();
     EquipSlotIdx = stream.ReadByte();
     Count        = stream.ReadInt16();
 }
Esempio n. 16
0
    protected virtual void ReadHitInfo(uLink.BitStream stream, out GameObject hitObj, out bool hitNetworkObj, out bool hitBodyPart, out BodyPart bodyPart, out IDRemoteBodyPart remoteBodyPart, out NetEntityID hitViewID, out Transform fromTransform, out Vector3 endPos, out Vector3 offset, out bool isHeadshot)
    {
        bool flag;
        byte num = stream.ReadByte();

        if (num < 0xff)
        {
            hitNetworkObj = true;
            if (num < 120)
            {
                hitBodyPart = true;
                bodyPart    = (BodyPart)num;
            }
            else
            {
                hitBodyPart = false;
                bodyPart    = BodyPart.Undefined;
            }
        }
        else
        {
            hitNetworkObj = false;
            hitBodyPart   = false;
            bodyPart      = BodyPart.Undefined;
        }
        if (hitNetworkObj)
        {
            hitViewID = stream.Read <NetEntityID>(new object[0]);
            if (!hitViewID.isUnassigned)
            {
                hitObj = hitViewID.gameObject;
                if (hitObj != null)
                {
                    IDBase base2 = IDBase.Get(hitObj);
                    if (base2 != null)
                    {
                        IDMain idMain = base2.idMain;
                        if (idMain != null)
                        {
                            HitBoxSystem hitBoxSystem;
                            if (idMain is Character)
                            {
                                hitBoxSystem = ((Character)idMain).hitBoxSystem;
                            }
                            else
                            {
                                hitBoxSystem = idMain.GetRemote <HitBoxSystem>();
                            }
                            if (hitBoxSystem != null)
                            {
                                hitBoxSystem.bodyParts.TryGetValue(bodyPart, out remoteBodyPart);
                            }
                            else
                            {
                                remoteBodyPart = null;
                            }
                        }
                        else
                        {
                            remoteBodyPart = null;
                        }
                    }
                    else
                    {
                        remoteBodyPart = null;
                    }
                }
                else
                {
                    remoteBodyPart = null;
                }
            }
            else
            {
                hitObj         = null;
                remoteBodyPart = null;
            }
        }
        else
        {
            hitViewID      = NetEntityID.unassigned;
            hitObj         = null;
            remoteBodyPart = null;
        }
        endPos = stream.ReadVector3();
        offset = Vector3.zero;
        if (remoteBodyPart == null)
        {
            if (hitObj != null)
            {
                fromTransform = hitObj.transform;
                flag          = true;
                isHeadshot    = false;
            }
            else
            {
                fromTransform = null;
                flag          = false;
                isHeadshot    = false;
            }
        }
        else
        {
            flag          = false;
            fromTransform = remoteBodyPart.transform;
            BodyPart part = bodyPart;
            switch (part)
            {
            case BodyPart.Brain:
            case BodyPart.L_Eye:
            case BodyPart.R_Eye:
                break;

            default:
                switch (part)
                {
                case BodyPart.Head:
                case BodyPart.Jaw:
                    break;

                case BodyPart.Scalp:
                case BodyPart.Nostrils:
                    goto Label_01AC;

                default:
                    goto Label_01AC;
                }
                break;
            }
            isHeadshot = true;
        }
        goto Label_01E7;
Label_01AC:
        isHeadshot = false;
Label_01E7:
        if (fromTransform != null)
        {
            offset = endPos;
            endPos = fromTransform.TransformPoint(endPos);
        }
    }