public void Deserialize(System.IO.BinaryReader r)
        {
            int versionMask = r.ReadInt32();
            int count       = versionMask;

            if (versionMask <= -1)
            {
                count = r.ReadInt32();
            }
            for (int i = 0; i < count; i++)
            {
                int  id   = r.ReadInt32();
                bool flag = r.ReadBoolean();
                mForumlaList.Add(new KnownFormula(id, flag));
            }
            if (versionMask <= -1)
            {
                if (r.ReadBoolean())
                {
                    mRunningReplicate              = new RunningReplicate();
                    mRunningReplicate.formulaID    = r.ReadInt32();
                    mRunningReplicate.requestCount = r.ReadInt32();
                    mRunningReplicate.leftCount    = r.ReadInt32();
                    mRunningReplicate.finishCount  = r.ReadInt32();
                    mRunningReplicate.runningTime  = r.ReadSingle();
                }
            }
        }
 public bool CancelReplicate(int formulaID)
 {
     //lz-2016.09.09 取消合成的时候保证要返还的数量大于0
     if (mRunningReplicate.finishCount > 0)
     {
         if (!HasEnoughPackage(mRunningReplicate.formula.productItemId, mRunningReplicate.formula.m_productItemCount * (mRunningReplicate.finishCount + 1)))
         {
             return(false);
         }
         if (GameConfig.IsMultiMode && MaxProductCount(mRunningReplicate.formula) >= mRunningReplicate.finishCount)
         {
             PlayerNetwork.mainPlayer.RequestMergeSkill(mRunningReplicate.formulaID, mRunningReplicate.finishCount);
         }
         else
         {
             mHandler.CreateItem(mRunningReplicate.formula.productItemId, mRunningReplicate.formula.m_productItemCount * mRunningReplicate.finishCount);
         }
     }
     mRunningReplicate.finishCount    = 0;
     mRunningReplicate.lastReciveTime = Time.time;
     mRunningReplicate = null;
     if (null != onReplicateEnd)
     {
         onReplicateEnd();
     }
     return(true);
 }
        //public int knownFormulaCount
        //{
        //    get
        //    {
        //        return mForumlaList.Count;
        //    }
        //}

        public bool StartReplicate(int formulaID, int count)
        {
            if (null != mRunningReplicate)
            {
                return(false);
            }

            mRunningReplicate                = new RunningReplicate();
            mRunningReplicate.formulaID      = formulaID;
            mRunningReplicate.requestCount   = count;
            mRunningReplicate.leftCount      = count;
            mRunningReplicate.lastReciveTime = Time.time;
            return(true);
        }
        public void UpdateReplicate()
        {
            if (null == mRunningReplicate)
            {
                return;
            }

            mRunningReplicate.runningTime += Time.deltaTime;

            if (mRunningReplicate.runningTime >= mRunningReplicate.formula.timeNeed * needTimeScale)
            {
                if (!HasEnoughPackage(mRunningReplicate.formula.productItemId, mRunningReplicate.formula.m_productItemCount * (mRunningReplicate.finishCount + 1)))
                {
                    mRunningReplicate.runningTime = 0;
                    MessageBox_N.ShowOkBox(PELocalization.GetString(8000050));
                    return;
                }

                int maxCount = MaxProductCount(mRunningReplicate.formula);
                if (GameConfig.IsMultiMode ? maxCount > mRunningReplicate.finishCount : maxCount > 0)
                {
                    mRunningReplicate.runningTime -= mRunningReplicate.formula.timeNeed;
                    --mRunningReplicate.leftCount;
                    ++mRunningReplicate.finishCount;
                    if (!GameConfig.IsMultiMode)
                    {
                        DeleteMaterial(mRunningReplicate.formula, 1);
                    }
//					ItemProto itemProto = ItemProto.GetItemData(mRunningReplicate.formula.productItemId);
                    if (mRunningReplicate.leftCount == 0 || Time.time - mRunningReplicate.lastReciveTime > ReciveInterval)
                    {
                        if (GameConfig.IsMultiMode)
                        {
                            PlayerNetwork.mainPlayer.RequestMergeSkill(mRunningReplicate.formulaID, mRunningReplicate.finishCount);
                        }
                        else
                        {
                            mHandler.CreateItem(mRunningReplicate.formula.productItemId, mRunningReplicate.formula.m_productItemCount * mRunningReplicate.finishCount);
                        }
                        mRunningReplicate.finishCount    = 0;
                        mRunningReplicate.lastReciveTime = Time.time;
                    }
                    if (0 == mRunningReplicate.leftCount)
                    {
                        mRunningReplicate = null;
                        if (null != onReplicateEnd)
                        {
                            onReplicateEnd();
                        }
                    }
                }
                else
                {
                    MessageBox_N.ShowOkBox(PELocalization.GetString(8000689));
                    if (!GameConfig.IsMultiMode)
                    {
                        mHandler.CreateItem(mRunningReplicate.formula.productItemId, mRunningReplicate.formula.m_productItemCount * mRunningReplicate.finishCount);
                    }
                    mRunningReplicate = null;
                    if (null != onReplicateEnd)
                    {
                        onReplicateEnd();
                    }
                }
            }
        }