// --------------------------------- // Call back // --------------------------------- int OnCountIputChanged(int count) { UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl; int n = count; if (graph_ctrl.rootNode != null) { if (n > 9999) { n = 9999; } int m = n % graph_ctrl.rootNode.ms.m_productItemCount; if (m != 0) { n = n - m + graph_ctrl.rootNode.ms.m_productItemCount; } if (n > 9999) { n = n - graph_ctrl.rootNode.ms.m_productItemCount; } graph_ctrl.SetGraphCount(n); } return(n); }
public void GetItemMaterialFromFactory(CSFactory factory, List <ItemIdCount> itemsNeedToGet, ref bool transferedItem) { foreach (ItemIdCount iic in itemsNeedToGet) { Replicator.KnownFormula[] msList = UIGraphControl.GetReplicator().GetKnowFormulasByProductItemId(iic.protoId); if (msList == null || msList.Length == 0) { continue; } Replicator.Formula ms = Replicator.Formula.Mgr.Instance.Find(msList[0].id); foreach (Replicator.Formula.Material mt in ms.materials) { int itemCount = factory.GetCompoundEndItemCount(mt.itemId); if (itemCount > 0) { if (CSUtils.AddToStorage(mt.itemId, itemCount, core)) { factory.CountDownItem(mt.itemId, itemCount); transferedItem = true; } } } } }
// --------------------------------- // Call back // --------------------------------- // Replicator --- Graph void OnGraphItemClick(int index) { if (index == -1) { return; } UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl; int m_id = graph_ctrl.mGraphItemList[index].GetItemID(); if (ReDrawGraph(m_id)) { _setCompundInfo(m_id); // Add id to graphistory FactoryReplicator.AddGraphHistory(m_id); } else { if (graph_ctrl.mSelectedIndex != -1) { graph_ctrl.mGraphItemList[graph_ctrl.mSelectedIndex].mCtrl.SetSelected(false); } graph_ctrl.mGraphItemList[index].mCtrl.SetSelected(true); graph_ctrl.mSelectedIndex = index; } _updateQueryGridItems(m_id); }
//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(); }
// --------------------------------- // 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.08 通过ItemID找到所有可以合成这个Item的脚本 private void AddScriptItemData(int itemID) { if (!this.m_Formulas.ContainsKey(itemID)) { List <Pathea.Replicator.Formula> formulaList = Pathea.Replicator.Formula.Mgr.Instance.FindAllByProDuctID(itemID); if (null == formulaList || formulaList.Count <= 0) { return; } List <Pathea.Replicator.KnownFormula> knownFormulaList = new List <Replicator.KnownFormula>(); for (int i = 0; i < formulaList.Count; i++) { Pathea.Replicator.KnownFormula knownFormula = UIGraphControl.GetReplicator().GetKnownFormula(formulaList[i].id); if (null != knownFormula) { knownFormulaList.Add(knownFormula); } } ItemProto item = ItemProto.GetItemData(itemID); this.m_ItemDataList.Add(item); this.m_Formulas.Add(itemID, knownFormulaList); } if (this.m_Formulas.ContainsKey(itemID) && itemID != this.m_CurItemID) { this.UpdateCurItemScriptList(itemID); this.SelectFirstScritItem(false); } }
/// <summary> /// Raises the max button click event. /// </summary> void OnMaxBtnClick(GameObject go) { UIGraphControl graph_ctrl = m_MiddleContent.graphCtrl; int count = graph_ctrl.GetMaxCount(); this.UpdateInputCount(count); }
public static List <int> resolveProtoIdToProcess(List <int> protoIds) { List <int> resourceId = new List <int> (); foreach (int protoId in protoIds) { if (CSProcessing.CanProcessItem(protoId)) { resourceId.Add(protoId); continue; } List <int> needReplicate = new List <int> (); needReplicate.Add(protoId); do { List <int> tempNeed = new List <int> (); tempNeed.AddRange(needReplicate); foreach (int tempProtoId in tempNeed) { Replicator.KnownFormula[] msList = UIGraphControl.GetReplicator().GetKnowFormulasByProductItemId(tempProtoId); if (msList == null || msList.Length == 0) { needReplicate.Remove(tempProtoId); //Debug.LogError("can't get "+tempProtoId+" for colony"); continue; } //--to do: temp_ only use script 01 Replicator.Formula ms = Replicator.Formula.Mgr.Instance.Find(msList[0].id); foreach (Replicator.Formula.Material mt in ms.materials) { if (CSProcessing.CanProcessItem(mt.itemId)) { if (!resourceId.Contains(mt.itemId)) { resourceId.Add(mt.itemId); } } else { if (!needReplicate.Contains(mt.itemId)) { needReplicate.Add(mt.itemId); } } } needReplicate.Remove(tempProtoId); } }while(needReplicate.Count > 0); } return(resourceId); }
public void ReplicateItem(ItemIdCount iic, List <int> replicatingItems, out List <ItemIdCount> materialList, out int productItemCount) { Replicator.KnownFormula[] msList = UIGraphControl.GetReplicator().GetKnowFormulasByProductItemId(iic.protoId); materialList = new List <ItemIdCount> (); productItemCount = 0; if (msList == null || msList.Length == 0) { return; } //--to do: temp,only use formula 01? Replicator.Formula ms = Replicator.Formula.Mgr.Instance.Find(msList[0].id); foreach (Replicator.Formula.Material mt in ms.materials) { materialList.Add(new ItemIdCount(mt.itemId, mt.itemCount)); } productItemCount = ms.m_productItemCount; int productCount = Mathf.CeilToInt(iic.count * 1.0f / ms.m_productItemCount); //2.replicate it and count down material in storage int countCanGet = CSUtils.GetMaterialListCount(materialList, Assembly); if (countCanGet == 0) { return; } if (countCanGet >= productCount) { if (SetCompoudItemAuto(iic.protoId, productCount * ms.m_productItemCount, ms.timeNeed * productCount)) { iic.count = 0; foreach (ItemIdCount countDownItem in materialList) { CSUtils.CountDownItemFromFactoryAndAllStorage(countDownItem.protoId, countDownItem.count * productCount, Assembly); } replicatingItems.Add(iic.protoId); } } else { if (SetCompoudItemAuto(iic.protoId, countCanGet * ms.m_productItemCount, ms.timeNeed * countCanGet)) { iic.count -= countCanGet * ms.m_productItemCount; foreach (ItemIdCount countDownItem in materialList) { CSUtils.CountDownItemFromFactoryAndAllStorage(countDownItem.protoId, countDownItem.count * countCanGet, Assembly); } replicatingItems.Add(iic.protoId); } } }
// Update is called once per frame void Update() { //lz-2016.10.14 m_Factory空对象 if (FactoryReplicator == null || null == m_Factory) { return; } UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl; if (graph_ctrl.isCanCreate()) { FactoryReplicator.m_RightContent.compoundBtn.isEnabled = true; } else { FactoryReplicator.m_RightContent.compoundBtn.isEnabled = false; } // Queue for (int i = 0; i < m_CompoudItems.Count; i++) { if (i < m_Factory.CompoudItemsCount) { ItemProto data = ItemProto.GetItemData(m_Factory.Data.m_CompoudItems[i].itemID); string[] iconStr = data.icon; if (iconStr.Length != 0) { m_CompoudItems[i].IcomName = iconStr[0]; } else { m_CompoudItems[i].IcomName = ""; } m_CompoudItems[i].Count = m_Factory.Data.m_CompoudItems[i].itemCnt; m_CompoudItems[i].SliderValue = m_Factory.Data.m_CompoudItems[i].curTime / m_Factory.Data.m_CompoudItems[i].time; m_CompoudItems[i].ShowSlider = true; } else { m_CompoudItems[i].IcomName = "Null"; m_CompoudItems[i].Count = 0; m_CompoudItems[i].SliderValue = 0; m_CompoudItems[i].ShowSlider = false; } } }
/// <summary> /// Raises the substract button click event. /// </summary> void OnSubstractBtnClick(GameObject go) { if (!CSUtils.IsNumber(m_RightContent.countInput.text)) { return; } int count = int.Parse(m_RightContent.countInput.text); UIGraphControl graph_ctrl = m_MiddleContent.graphCtrl; if (graph_ctrl.rootNode == null) { return; } if (count > graph_ctrl.rootNode.ms.m_productItemCount) { count -= graph_ctrl.rootNode.ms.m_productItemCount; } this.UpdateInputCount(count); }
// --------------------------------- // Call Back // --------------------------------- /// <summary> /// Raises the count input changed event. /// </summary> // void OnCountInputSubmit(string text) // { // // } void OnCountInputSelected(GameObject go, bool isSelect) { //lz-2016.08.12 当取消选中的时候更改值 if (isSelect) { return; } int count = 1; if (CSUtils.IsNumber(m_RightContent.countInput.text)) { count = int.Parse(m_RightContent.countInput.text); } UIGraphControl graph_ctrl = m_MiddleContent.graphCtrl; if (graph_ctrl.rootNode == null) { return; } //lz-2016.08.03 输入的数量限制在范围内 count = Mathf.Clamp(count, graph_ctrl.rootNode.ms.m_productItemCount, graph_ctrl.GetMaxCount()); this.UpdateInputCount(count, false); }
public static List <ItemIdCount> ResolveItemsToProcess(List <ItemIdCount> itemsNeedToGet, CSAssembly core = null, CSFactory factory = null) { List <ItemIdCount> resourceItems = new List <ItemIdCount> (); List <ItemIdCount> ItemsOwnRecord = new List <ItemIdCount> (); foreach (ItemIdCount iic in itemsNeedToGet) { if (CSProcessing.CanProcessItem(iic.protoId)) { resourceItems.Add(iic); continue; } List <ItemIdCount> needReplicate = new List <ItemIdCount> (); needReplicate.Add(iic); do { List <ItemIdCount> tempNeed = new List <ItemIdCount> (); tempNeed.AddRange(needReplicate); foreach (ItemIdCount tempIic in tempNeed) { Replicator.KnownFormula[] msList = UIGraphControl.GetReplicator().GetKnowFormulasByProductItemId(tempIic.protoId); if (msList == null || msList.Length == 0) { needReplicate.Remove(tempIic); //Debug.LogError("can't get "+tempIic.protoId+"for colony"); continue; } //--to do: temp_ only use script 01 Replicator.Formula ms = Replicator.Formula.Mgr.Instance.Find(msList[0].id); foreach (Replicator.Formula.Material mt in ms.materials) { int needCount = mt.itemCount * Mathf.CeilToInt(tempIic.count * 1.0f / ms.m_productItemCount); if (core != null) { int ownMaterialCount = CSUtils.GetItemCountFromAllStorage(mt.itemId, core); if (factory != null) { ownMaterialCount += factory.GetAllCompoundItemCount(mt.itemId); } ItemIdCount ownRecord = ItemsOwnRecord.Find(it => it.protoId == mt.itemId); if (ownMaterialCount > 0) { if (ownRecord == null || ownRecord.count < ownMaterialCount) { int leftRecordCount = 0; if (ownRecord == null) { leftRecordCount = ownMaterialCount; } else { leftRecordCount = ownMaterialCount - ownRecord.count; } int addRecordCount = 0; if (needCount > leftRecordCount) { needCount -= leftRecordCount; addRecordCount = leftRecordCount; } else { needCount = 0; addRecordCount = needCount; } if (ownRecord == null) { ItemsOwnRecord.Add(new ItemIdCount(mt.itemId, addRecordCount)); } else { ownRecord.count += addRecordCount; } if (needCount == 0) { continue; } } } } if (CSProcessing.CanProcessItem(mt.itemId)) { CSUtils.AddItemIdCount(resourceItems, mt.itemId, needCount); } else { CSUtils.AddItemIdCount(needReplicate, mt.itemId, needCount); } } needReplicate.Remove(tempIic); } }while(needReplicate.Count > 0); } return(resourceItems); }
// --------------------------------- // Func // --------------------------------- private bool ReDrawGraph(int itemID, int scirptIndex = 0) { if (FactoryReplicator == null) { return(false); } this.AddScriptItemData(itemID); if (!this.m_Formulas.ContainsKey(itemID) || scirptIndex >= this.m_Formulas[itemID].Count || scirptIndex < 0) { return(true); } UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl; if (m_RootType == ItemLabel.Root.ISO) { // Iso } else { if (itemID != -1) { //Pathea.Replicator.Formula ms = Pathea.Replicator.Formula.Mgr.Instance.FindByProductId(m_id); Pathea.Replicator.KnownFormula knownFornula = this.m_Formulas[itemID][scirptIndex]; Pathea.Replicator.Formula ms = knownFornula.Get(); ItemProto item = this.m_ItemDataList.Find(a => a.id == itemID); if (ms == null || item == null) { return(false); } FactoryReplicator.ClearGraph(); int level_v = 0; UIGraphNode root = graph_ctrl.AddGraphItem(level_v, null, ms, item.icon, "Icon"); root.mTipCtrl.SetToolTipInfo(ListItemType.mItem, itemID); root.mCtrl.ItemClick += this.OnGraphItemClick; for (int j = 0; j < ms.materials.Count; j++) { if (ms.materials[j].itemId != 0) { ItemProto item2 = ItemProto.GetItemData(ms.materials[j].itemId); string[] strico2 = item2.icon; UIGraphNode node = graph_ctrl.AddGraphItem(level_v, root, null, strico2, "Icon"); node.mTipCtrl.SetToolTipInfo(ListItemType.mItem, ms.materials[j].itemId); node.mCtrl.ItemClick += this.OnGraphItemClick; } } UpdateItemsTrackState(ms); } } // graph_ctrl.DrawGraph(); FactoryReplicator.DrawGraph(); return(true); }
void OnCompoundBtnClick(GameObject go) { if (!GameConfig.IsMultiMode) { UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl; if (!graph_ctrl.isCanCreate()) { return; } int item_id = graph_ctrl.rootNode.GetItemID(); int item_num = graph_ctrl.rootNode.getCount; //lz-2016.09.26 时间使用份数计算的,所有要除掉productItemCount float time = graph_ctrl.rootNode.ms.timeNeed * item_num / graph_ctrl.rootNode.ms.m_productItemCount; if (RandomMapConfig.useSkillTree) { if (GameUI.Instance.mSkillWndCtrl._SkillMgr != null) { time = GameUI.Instance.mSkillWndCtrl._SkillMgr.CheckReduceTime((float)time); } } if (m_Factory.SetCompoudItem(item_id, item_num, time)) { for (int i = 0; i < graph_ctrl.mGraphItemList.Count; i++) { if (graph_ctrl.mGraphItemList[i].mPartent == graph_ctrl.rootNode) { PeCreature.Instance.mainPlayer.GetCmpt <PlayerPackageCmpt>().package.Destroy(graph_ctrl.mGraphItemList[i].GetItemID(), graph_ctrl.mGraphItemList[i].needCount); } } // Status bar CSUI_MainWndCtrl.ShowStatusBar(CSUtils.GetNoFormatString(UIMsgBoxInfo.mJoinCompoudingQueue.GetString(), ItemProto.GetItemData(item_id).GetName())); //.... if (GameUI.Instance.mItemPackageCtrl != null) { GameUI.Instance.mItemPackageCtrl.ResetItem(); } } } else { UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl; if (!graph_ctrl.isCanCreate()) { return; } int skill_id = graph_ctrl.rootNode.ms.id; //lz-2016.09.26 多人的接口需要的是productCount int productCount = graph_ctrl.rootNode.getCount / graph_ctrl.rootNode.ms.m_productItemCount; //to do--skillid,num if (m_Factory.Data.m_CompoudItems.Count >= CSFactory.c_CompoudItemCount) { return; } //lz-2016.09.26 多人的接口需要的是productCount m_Factory._ColonyObj._Network.FCT_Compoud(skill_id, productCount); } }