Пример #1
0
    public override void Deserialize(BinaryReader R)
    {
        base.Deserialize(R);
        int version = R.ReadInt32();

        mVersion = version;

        if (version == 11)
        {
            mItemType     = (EItemType)R.ReadInt32();
            mFriendlyName = R.ReadString();
            mFlavourText  = R.ReadString();
            mWidth        = R.ReadInt32();
            mLength       = R.ReadInt32();

            mTiles = new STile[mWidth * 2, mLength * 2];
            for (int iX = 0; iX < mWidth * 2; ++iX)
            {
                for (int iY = 0; iY < mLength * 2; ++iY)
                {
                    mTiles[iX, iY].mSolid = R.ReadBoolean();
                }
            }

            mDurability   = R.ReadInt32();
            mCost         = R.ReadInt32();
            mValue        = R.ReadSingle();
            mStress       = R.ReadSingle();
            mAreaOfEffect = R.ReadSingle();
            mSheetsInMax  = R.ReadInt32();
            mSheetsOutMax = R.ReadInt32();

            string modelName = R.ReadString();
            if (modelName != "")
            {
                mPMAsset = CGame.AssetManager.GetAsset <CModelAsset>(modelName);
            }

            mPMPosition = CUtility.ReadVec3(R);
            mPMRotation = CUtility.ReadVec3(R);

            modelName = R.ReadString();
            if (modelName != "")
            {
                mSMAsset = CGame.AssetManager.GetAsset <CModelAsset>(modelName);
            }

            mSMPosition = CUtility.ReadVec3(R);
            mSMRotation = CUtility.ReadVec3(R);

            int usageSlotCount = R.ReadInt32();
            mUsageSlots.Clear();
            for (int i = 0; i < usageSlotCount; ++i)
            {
                CUsageSlot s = new CUsageSlot();
                s.mEntryPosition = CUtility.ReadVec3(R);
                s.mEntryRotation = CUtility.ReadVec3(R);
                s.mEntrySize     = CUtility.ReadVec3(R);
                s.mUsePosition   = CUtility.ReadVec3(R);
                s.mUseRotation   = CUtility.ReadVec3(R);
                mUsageSlots.Add(s);
            }

            // Desk
            mPaperInPosition  = CUtility.ReadVec3(R);
            mPaperInRotation  = CUtility.ReadVec3(R);
            mPaperOutPosition = CUtility.ReadVec3(R);
            mPaperOutRotation = CUtility.ReadVec3(R);

            // Icon
            mIconCameraPostion = CUtility.ReadVec3(R);
            mIconViewDirection = (EViewDirection)R.ReadInt32();
        }
        else
        {
            Debug.LogError("Can't load item asset '" + mName + "' with version " + version);
        }
    }
Пример #2
0
    public override void Serialize(BinaryWriter W)
    {
        base.Serialize(W);
        W.Write(VERSION);

        W.Write((int)mItemType);
        W.Write(mFriendlyName);
        W.Write(mFlavourText);
        W.Write(mWidth);
        W.Write(mLength);

        for (int iX = 0; iX < mWidth * 2; ++iX)
        {
            for (int iY = 0; iY < mLength * 2; ++iY)
            {
                W.Write(mTiles[iX, iY].mSolid);
            }
        }

        W.Write(mDurability);
        W.Write(mCost);
        W.Write(mValue);
        W.Write(mStress);
        W.Write(mAreaOfEffect);
        W.Write(mSheetsInMax);
        W.Write(mSheetsOutMax);

        if (mPMAsset == null)
        {
            W.Write("");
        }
        else
        {
            W.Write(mPMAsset.mName);
        }

        CUtility.WriteVec3(W, mPMPosition);
        CUtility.WriteVec3(W, mPMRotation);

        if (mSMAsset == null)
        {
            W.Write("");
        }
        else
        {
            W.Write(mSMAsset.mName);
        }

        CUtility.WriteVec3(W, mSMPosition);
        CUtility.WriteVec3(W, mSMRotation);

        W.Write(mUsageSlots.Count);
        for (int i = 0; i < mUsageSlots.Count; ++i)
        {
            CUsageSlot s = mUsageSlots[i];
            CUtility.WriteVec3(W, s.mEntryPosition);
            CUtility.WriteVec3(W, s.mEntryRotation);
            CUtility.WriteVec3(W, s.mEntrySize);
            CUtility.WriteVec3(W, s.mUsePosition);
            CUtility.WriteVec3(W, s.mUseRotation);
        }

        // Desk
        CUtility.WriteVec3(W, mPaperInPosition);
        CUtility.WriteVec3(W, mPaperInRotation);
        CUtility.WriteVec3(W, mPaperOutPosition);
        CUtility.WriteVec3(W, mPaperOutRotation);

        //Icon
        CUtility.WriteVec3(W, mIconCameraPostion);
        W.Write((int)mIconViewDirection);
    }