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(); } } } }