Example #1
0
    //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;
        }
    }
Example #2
0
    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();
        }
    }