public int GetMaxCount() { //lz-2016.10.13 错误 #3912 空对象 if (null == rootNode || null == rootNode.ms) { return(1); } Pathea.Replicator replicator = GetReplicator(); if (null == replicator) { return(rootNode.ms.m_productItemCount); } //lz-2016.08.10 MaxProductCount材料最多可以支持造多少组Product,这里还要乘上这组Product的数量 int count = replicator.MaxProductCount(rootNode.ms.id) * rootNode.ms.m_productItemCount; int stackNum = ItemAsset.ItemProto.GetStackMax(rootNode.GetItemID()); //lz-2016.08.03 蒲及说如果合成的物品堆叠数为1限制最大数量为一个常数个 if (stackNum == 1) { count = Mathf.Min(count, ColonyConst.FACTORY_COMPOUND_GRID_COUNT); } else { //lz-2016.08.03 堆叠数大于1的限制最多制造数为 一个常数个*堆叠数 count = Mathf.Min(count, ColonyConst.FACTORY_COMPOUND_GRID_COUNT * stackNum); } return(0 == count ? 1 : count); }
public void SetGraphCount(int rootNodecount) { Pathea.Replicator r = GetReplicator(); if (null == r) { return; } int k = rootNodecount / rootNode.ms.m_productItemCount; rootNode.getCount = rootNodecount; int index = 0; for (int i = 0; i < mGraphItemList.Count; i++) { if (mGraphItemList[i].mPartent == rootNode) { mGraphItemList[i].needCount = rootNode.ms.materials[index].itemCount * k; index++; } mGraphItemList[i].bagCount = r.GetItemCount(mGraphItemList[i].GetItemID()); } UpdateGraphCount(); //lz-2018.01.05 如果在道具追踪列表,数量改变的时候更新追踪数量 if (GameUI.Instance && GameUI.Instance.mItemsTrackWnd.ContainsScript(rootNode.ms.id)) { GameUI.Instance.mItemsTrackWnd.UpdateOrAddScript(rootNode.ms, k); } }
// --------------------------------- // Func // --------------------------------- void _updateQueryGridItems(int m_id) { if (FactoryReplicator == null) { return; } Pathea.Replicator r = UIGraphControl.GetReplicator(); if (null == r) { return; } // Clear first FactoryReplicator.DestroyQueryItems(); foreach (Pathea.Replicator.KnownFormula kf in r.knowFormulas) { Pathea.Replicator.Formula ms = kf.Get(); if (null == ms) { continue; } for (int j = 0; j < ms.materials.Count; j++) { if (ms.materials[j].itemId == m_id) { _createQueryItems(ms.productItemId); } } } }
//lz-2016.08.09 点击ScriptItem事件 private void ScriptItemEvent(int itemID, int scriptIndex) { if (!this.m_Formulas.ContainsKey(itemID) || scriptIndex >= this.m_Formulas[itemID].Count || scriptIndex < 0) { return; } //更改new的状态 Pathea.Replicator.KnownFormula knownFornula = this.m_Formulas[itemID][scriptIndex]; Pathea.Replicator r = UIGraphControl.GetReplicator(); if (null != r) { r.SetKnownFormulaFlag(knownFornula.id); } bool ok = ReDrawGraph(itemID, scriptIndex); if (ok) { _updateQueryGridItems(itemID); _setCompundInfo(itemID); // Add id to grap history FactoryReplicator.AddGraphHistory(itemID); } FactoryReplicator.m_MiddleContent.graphScrollBox.Reposition(); }
void UpdateGraphNodeCount() { Pathea.Replicator r = GetReplicator(); if (null == r) { return; } for (int i = 0; i < mGraphItemList.Count; i++) { int bagCount = r.GetItemCount(mGraphItemList[i].GetItemID()); mGraphItemList[i].bagCount = bagCount; mGraphItemList[i].mCtrl.SetCount(mGraphItemList[i].needCount, mGraphItemList[i].bagCount, mGraphItemList[i].getCount); } }
public int GetMinCount() { //lz-2016.10.16 错误 #4460 空对象 if (null == rootNode || null == rootNode.ms) { return(1); } Pathea.Replicator replicator = GetReplicator(); if (null == replicator) { return(rootNode.ms.m_productItemCount); } int count = replicator.MinProductCount(rootNode.ms.id); return((0 == count ? 1 : count) * rootNode.ms.m_productItemCount); }
public bool isCanCreate( ) { if (mGraphItemList.Count == 0) { return(false); } Pathea.Replicator r = GetReplicator(); if (null == r) { return(false); } Pathea.Replicator.Formula formula = Pathea.Replicator.Formula.Mgr.Instance.Find(rootNode.ms.id); if (null == formula) { return(false); } ItemAsset.ItemProto proto = ItemAsset.ItemProto.GetItemData(formula.productItemId); if (proto != null) { if (!GameUI.Instance.mSkillWndCtrl._SkillMgr.CheckUnlockProductItemLevel(proto.level)) { return(false); } if (!GameUI.Instance.mSkillWndCtrl._SkillMgr.CheckUnlockProductItemType(proto.itemClassId)) { return(false); } } else { return(false); } if (r.MaxProductCount(rootNode.ms.id) < (rootNode.getCount / rootNode.ms.m_productItemCount)) { return(false); } return(true); }
void GetCompoundItem() { Pathea.Replicator r = replicator; // add root item and delete need item if (!r.HasEnoughPackage(mGraphCtrl.rootNode.GetItemID(), mGraphCtrl.rootNode.getCount)) { IsCompounding = false; //ProgressCount = 0; CompoundFixedTimeCount = 0; mCompoundSlider.sliderValue = 0; MessageBox_N.ShowOkBox(PELocalization.GetString(8000050)); return; } if (mGraphCtrl.isCanCreate()) { if (GameConfig.IsMultiMode == true) { int num = mGraphCtrl.rootNode.getCount / mGraphCtrl.rootNode.ms.m_productItemCount; PlayerNetwork.mainPlayer.RequestMergeSkill(mGraphCtrl.rootNode.ms.id, num); } else { r.Run(mGraphCtrl.rootNode.ms.id, mGraphCtrl.rootNode.getCount / mGraphCtrl.rootNode.ms.m_productItemCount); } GameUI.Instance.mItemPackageCtrl.ResetItem(); for (int i = 0; i < m_CurScriptMatIDs.Count; i++) { MissionManager.Instance.ProcessCollectMissionByID(m_CurScriptMatIDs[i]); } } IsCompounding = false; //ProgressCount = 0; CompoundFixedTimeCount = 0; mCompoundSlider.sliderValue = 0; }
bool LearnReplicatorFormula(ItemAsset.ReplicatorFormula formula, bool bLearn = true) { if (null == formula || formula.formulaId == null || formula.formulaId.Length <= 0) { return(false); } ReplicatorCmpt replicatorCmpt = Entity.GetCmpt <ReplicatorCmpt>(); if (null == replicatorCmpt) { return(false); } Replicator replicator = replicatorCmpt.replicator; if (null == replicator) { return(false); } if (bLearn) { bool ret = false; for (int i = 0; i < formula.formulaId.Length; i++) { if (replicator.AddFormula(formula.formulaId [i])) { ret = true; } } if (ret == false) { new PeTipMsg(PELocalization.GetString(4000001), PeTipMsg.EMsgLevel.Warning); return(ret); } } LearnEffectAndSound(); return(true); }
private void BtnCompoundOnClick() { if (mGraphCtrl.rootNode == null) { return; } Pathea.Replicator r = replicator; if (null == r) { return; } if (IsCompounding) { //lz-2016.09.09 如果在制造中就取消制造 IsCompounding = !replicator.CancelReplicate(mGraphCtrl.rootNode.ms.id); return; } if (!r.HasEnoughPackage(mGraphCtrl.rootNode.GetItemID(), mGraphCtrl.rootNode.getCount)) { MessageBox_N.ShowOkBox(PELocalization.GetString(8000050)); return; } if (mGraphCtrl.isCanCreate()) { CompoundFixedTimeCount = Convert.ToInt32(mGraphCtrl.rootNode.ms.timeNeed / 0.02); if (RandomMapConfig.useSkillTree) { if (GameUI.Instance.mSkillWndCtrl._SkillMgr != null) { CompoundFixedTimeCount = (int)GameUI.Instance.mSkillWndCtrl._SkillMgr.CheckReduceTime((float)CompoundFixedTimeCount); } } replicator.StartReplicate(mGraphCtrl.rootNode.ms.id, mGraphCtrl.rootNode.getCount / mGraphCtrl.rootNode.ms.m_productItemCount); IsCompounding = true; } }
//lz-2016.08.08 点击ScriptItem事件 private void ScriptItemEvent(int itemID, int scriptIndex) { if (!this.m_Formulas.ContainsKey(itemID) || scriptIndex >= this.m_Formulas[itemID].Count || scriptIndex < 0) { return; } //更改new的状态 Pathea.Replicator.KnownFormula knownFornula = this.m_Formulas[itemID][scriptIndex]; Pathea.Replicator r = replicator; if (null != r) { r.SetKnownFormulaFlag(knownFornula.id); } //颜色根据选的脚本改变 List <GameObject> ListItems = m_LeftList.Gos; if (mListSelectedIndex >= 0 && mListSelectedIndex < ListItems.Count) { Pathea.Replicator.Formula formula = knownFornula.Get(); bool isInColony = (formula.workSpace != 0) ? true : false; Color textColor = isInColony ? Color.red : Color.white; UICompoundWndListItem listItem = ListItems[mListSelectedIndex].GetComponent <UICompoundWndListItem>(); listItem.SetTextColor(textColor); } //绘制当前选择的脚本和Item bool ok = ReDrawGraph(itemID, scriptIndex); if (ok) { AddGraphResetList(itemID); SetBottomInfo(); QueryGridItems(itemID); } }
private void QueryGridItems(int m_id) { mQureGridContentPos_x = 30; mQueryListFristIndex = 0; mQureGridContent.transform.localPosition = mQueryGridPos; m_QueryFormula.Clear(); Pathea.Replicator r = replicator; //lz-2016.10.20 避免数据错误报错 if (null != r) { foreach (Pathea.Replicator.KnownFormula kf in r.knowFormulas) { if (null != kf) { Pathea.Replicator.Formula f = kf.Get(); if (null != f && null != f.materials && f.materials.Count > 0) { for (int j = 0; j < f.materials.Count; j++) { if (f.materials[j].itemId == m_id) { m_QueryFormula.Add(f); break; } } } } } } m_QueryList.UpdateList(m_QueryFormula.Count, SetQueryListContent, ClearQueryListContent); UpdateQueryGridBtnState(); }
public ReplicatorCmpt() { replicator = new Replicator(this); }
public bool _updateLeftList = true;//使更新不过于太频繁 //log:lz-2016.04.12: 这里加一个参数为了搜索和切换类型分开 public void UpdateLeftList(bool useSearch = false) { if (!_updateLeftList) { return; } _updateLeftList = false; mListSelectedIndex = -1; string queryText = mQueryInput.text; // replace some # queryText = queryText.Replace("*", ""); queryText = queryText.Replace("$", ""); queryText = queryText.Replace("(", ""); queryText = queryText.Replace(")", ""); queryText = queryText.Replace("@", ""); queryText = queryText.Replace("^", ""); queryText = queryText.Replace("[", ""); queryText = queryText.Replace("]", ""); //lz-2016.08.12 "\"增加字符过滤 queryText = queryText.Replace("\\", ""); //queryText = queryText.Replace(" ", ""); mQueryInput.text = queryText; m_Formulas.Clear(); m_ItemDataList.Clear(); Pathea.Replicator r = replicator; Dictionary <ItemProto, List <Pathea.Replicator.KnownFormula> > itemDic = new Dictionary <ItemProto, List <Pathea.Replicator.KnownFormula> >(); foreach (Pathea.Replicator.KnownFormula kf in r.knowFormulas) { if (kf == null) { continue; } Pathea.Replicator.Formula f = kf.Get(); if (null == f) { continue; } ItemProto item = ItemProto.GetItemData(f.productItemId); if (item == null) { continue; } bool AddItem = false; if (mRootType == ItemLabel.Root.ISO) { // Iso } else if (mRootType == ItemLabel.Root.all || (mRootType == item.rootItemLabel && (mItemType == 0 || mItemType == item.itemLabel))) { if (useSearch) { if (QueryItem(queryText, item.GetName())) { AddItem = true; } } else { AddItem = true; } } if (AddItem) { //lz-2016.08.09 这里要用Any()不能用Container() if (!itemDic.Keys.Any(a => a.id == item.id)) { itemDic.Add(item, new List <Replicator.KnownFormula>()); } ItemProto itemKey = itemDic.Keys.First(a => a.id == item.id); if (!itemDic[itemKey].Any(a => a.id == kf.id)) { itemDic[itemKey].Add(kf); } } } //lz-2016.08.08根据Item的Sort字段来排序 itemDic = itemDic.OrderBy(a => a.Key.sortLabel).ToDictionary(k => k.Key, v => v.Value); m_Formulas = itemDic.ToDictionary(k => k.Key.id, v => v.Value); m_ItemDataList = itemDic.Keys.ToList(); m_LeftList.UpdateList(m_ItemDataList.Count, SetLeftListContent, ClearLeftListContent); mListScrolBar.scrollValue = 0; }