//private void GetFabricaByResource(ref PortalResourceFabrication resultFabrica, ModelNPC.PortalData p_portal, string p_nameResourceInv) //{ // resultFabrica = ResourcesFabrications[p_portal.TypeBiom].Find(f => f.ResouceInventory.ToString() == p_nameResourceInv); //} //Start Portal process private void StartPortalProcess(TypeResourceProcess workProcess, ModelNPC.PortalData p_portal, int index = -1, PortalResourceFabrication fabrication = null) { switch (workProcess) { case TypeResourceProcess.Incubation: // * Start Action IncubationProcess(p_portal); // * Remove resource if (index != -1) { p_portal.Resources[index].Count -= fabrication.LimitToBeginProcess; if (p_portal.Resources[index].Count < 0) { p_portal.Resources.RemoveAt(index); } } break; } }
private void PortalProcess(ModelNPC.PortalData p_portal) { if (p_portal.ChildrensId == null) { p_portal.ChildrensId = new List <string>(); } int preCountChild = p_portal.ChildrensId.Count; bool isProgress; bool isTimeValid = p_portal.LastTimeFabrication + SettingPortals.PeriodIncubation < Time.time; bool isNotAllLimit = p_portal.ChildrensId.Count < SettingPortals.AllLimitNPC; if (SettingPortals.AllLimitNPC == 0) { SettingPortals.AllLimitNPC = 1; } if (SettingPortals.AllLimitNPC < SettingPortals.StartLimitNPC) { SettingPortals.AllLimitNPC = SettingPortals.StartLimitNPC; } //foreach(DataObjectInventory resource in p_portal.Resources) if (isNotAllLimit && isTimeValid && p_portal.Resources != null && p_portal.Resources.Count > 0) { Storage.EventsUI.ListLogAdd = "PortalWork...."; Storage.EventsUI.SetMessageBox = "PortalWork...."; for (int i = p_portal.Resources.Count() - 1; i >= 0; i--) { m_resourceNext = p_portal.Resources[i]; m_listResourceWork = ResourcesFabrications[p_portal.TypeBiom]; m_workResource = m_listResourceWork.Find(p => p.ResouceInventory == m_resourceNext.TypeInventoryObject); if (m_workResource != null) { if (m_resourceNext.Count >= m_workResource.LimitToBeginProcess) { //isNotProgress = preCountChild == p_portal.ChildrensId.Count && p_portal.CurrentProcess == TypeResourceProcess.None; isProgress = preCountChild != p_portal.ChildrensId.Count && p_portal.CurrentProcess != TypeResourceProcess.None; if (!isProgress) { //Begin portal process incubation on Full resources StartPortalProcess(m_workResource.BeginProcess, p_portal, i, m_workResource); //isIncubationValid = false; } } } } } isProgress = preCountChild != p_portal.ChildrensId.Count;// && isIncubationValid; if (isProgress == false) { //if (p_portal.CurrentProcess == TypeResourceProcess.None) if (p_portal.CurrentProcess == TypeResourceProcess.None || (!p_portal.IsReality && p_portal.CurrentProcess == TypeResourceProcess.Incubation)) //FIX<<>>INCUBATION { bool isNotStartLimit = p_portal.ChildrensId.Count < SettingPortals.StartLimitNPC; //Begin portal process on Time if (isNotStartLimit && isTimeValid) { StartPortalProcess(TypeResourceProcess.Incubation, p_portal); isProgress = true; } } } // - Resources Production if (!isProgress && p_portal.CurrentProcess == TypeResourceProcess.None && isTimeValid && p_portal.Resources != null && p_portal.Resources.Count > 0) { isProgress = FabricationProduction(p_portal); } if (isProgress) { p_portal.EndFabrication(); } }