void RPC_S2C_FCT_AddCompoudList(uLink.BitStream stream, uLink.NetworkMessageInfo info) { CompoudItem data_ci = stream.Read <CompoudItem>(); if (m_Entity == null) { Debug.LogError("entity not ready"); return; } ((CSFactory)m_Entity).SetCompoudItem(data_ci.itemID, data_ci.itemCnt, data_ci.time); }
void RPC_S2C_FCT_SyncItem(uLink.BitStream stream, uLink.NetworkMessageInfo info) { int index = stream.Read <int>(); CompoudItem data_ci = stream.Read <CompoudItem>(); CSFactoryData recordData = (CSFactoryData)_ColonyObj._RecordData; if (recordData.m_CompoudItems.Count > index) { recordData.m_CompoudItems [index] = data_ci; } }
public bool GetTakeAwayCompoundItem(int index, out CompoudItem outCompoudItem) { outCompoudItem = null; List <CompoudItem> ci_list = Data.m_CompoudItems; if (index >= ci_list.Count || index < 0) { return(false); } if (ci_list[index].curTime >= ci_list[index].time) { outCompoudItem = ci_list[index]; return(true); } outCompoudItem = ci_list[index]; return(false); }
public bool SetCompoudItemAuto(int itemID, int count, float time) { if (Data.m_CompoudItems.Count >= c_CompoudItemCount - 2) { return(false); } CompoudItem data_ci = new CompoudItem(); data_ci.curTime = 0; data_ci.time = time; if (Application.isEditor && InTest) { data_ci.time = 5; } data_ci.itemID = itemID; data_ci.itemCnt = count; Data.m_CompoudItems.Add(data_ci); return(true); }
// --------------------------------- // Callback // --------------------------------- void OnCompoudClick(CSUI_CompoundItem ci) { if (!GameConfig.IsMultiMode) { int index = m_CompoudItems.FindIndex(item0 => item0 == ci); if (index != -1) { if (!CSUI_MainWndCtrl.IsWorking()) { return; } if (m_Factory.CompoudItemsCount <= index) { return; } Pathea.PlayerPackageCmpt pkg = Pathea.PeCreature.Instance.mainPlayer.GetCmpt <Pathea.PlayerPackageCmpt>(); if (pkg == null) { Debug.LogError("CSUI_Factory.OnCompoundClick: pkg is null!"); return; } CompoudItem ci_data = null; ItemProto item_data; if (!m_Factory.GetTakeAwayCompoundItem(index, out ci_data)) { if (ci_data != null) { item_data = ItemProto.GetItemData(ci_data.itemID); CSUI_MainWndCtrl.ShowStatusBar(CSUtils.GetNoFormatString(UIMsgBoxInfo.mIsCompounding.GetString(), item_data.GetName()), Color.red); } return; } item_data = ItemProto.GetItemData(ci_data.itemID); int pacakgeEmptyCount = pkg.package.GetSlotList(ci_data.itemID).vacancyCount; if (!pkg.package.CanAdd(m_Factory.Data.m_CompoudItems[index].itemID, ci.Count)) { // Status bar //lz-2016.07.16 背包空间不足这条提示是基地复制器和玩家复制器通用的,在基地用的时候,基地的提示只能显示一行,不能换行 string tip = PELocalization.GetString(8000050).Replace("\\n", " "); CSUI_MainWndCtrl.ShowStatusBar(tip, Color.red); if (item_data.maxStackNum > 1 || pacakgeEmptyCount == 0) { return; } } int originalCount = ci_data.itemCnt; int addCount = originalCount; if (item_data.maxStackNum > 1) { pkg.Add(ci_data.itemID, ci_data.itemCnt); } else { if (originalCount > pacakgeEmptyCount) { addCount = pacakgeEmptyCount; } pkg.Add(ci_data.itemID, addCount); } ci_data.itemCnt = originalCount - addCount; if (ci_data.itemCnt == 0) { m_Factory.TakeAwayCompoudItem(index); CSUI_MainWndCtrl.ShowStatusBar(CSUtils.GetNoFormatString(UIMsgBoxInfo.mTakeAwayCompoundItem.GetString(), item_data.GetName())); } } } else { int index = m_CompoudItems.FindIndex(item0 => item0 == ci); if (index != -1) { if (m_Factory.CompoudItemsCount <= index || m_Factory.Data.m_CompoudItems[index] == null || m_Factory.Data.m_CompoudItems[index].curTime < m_Factory.Data.m_CompoudItems[index].time) { return; } m_Factory._ColonyObj._Network.FCT_Fetch(index); } } }
public void OnCancelCompound(int index) { if (index < Data.m_CompoudItems.Count) { CompoudItem ci = Data.m_CompoudItems[index]; // if(ci.IsFinished) // return; if (PeGameMgr.IsSingle) { //1.storage add materials // 0)get materials List <ItemIdCount> materialList = new List <ItemIdCount> (); Replicator.Formula ms = Replicator.Formula.Mgr.Instance.FindByProductId(ci.itemID); foreach (Replicator.Formula.Material mt in ms.materials) { materialList.Add(new ItemIdCount(mt.itemId, mt.itemCount * ci.itemCnt / ms.m_productItemCount)); } // 1)storage not full if (!CSUtils.AddItemListToStorage(materialList, Assembly)) // 2)storage full, gen object { System.Random rand = new System.Random(); Vector3 pos; if (gameLogic != null) { pos = Position + gameLogic.transform.rotation * (new Vector3(0, 0, 4)); } else { pos = Position + new Vector3(0, 0, 6); } pos = pos + new Vector3((float)rand.NextDouble() * 0.1f, 0, (float)rand.NextDouble() * 0.1f); while (RandomItemMgr.Instance.ContainsPos(pos)) { pos += new Vector3(0, 0.01f, 0); } RandomItemMgr.Instance.GenFactoryCancel(pos, CSUtils.ItemIdCountListToIntArray(materialList)); } if (m_CurCompoundIndex == index) { if (m_Counter != null) { CSMain.Instance.DestoryCounter(m_Counter); m_Counter = null; } } if (m_CurCompoundIndex > index) { m_CurCompoundIndex--; } Data.m_CompoudItems.Remove(ci); } else { _Net.RPCServer(EPacketType.PT_CL_FCT_GenFactoryCancel, index, ci); if (m_CurCompoundIndex == index) { if (m_Counter != null) { CSMain.Instance.DestoryCounter(m_Counter); m_Counter = null; } } if (m_CurCompoundIndex > index) { m_CurCompoundIndex--; } Data.m_CompoudItems.Remove(ci); } } }