Beispiel #1
0
        public bool AddItemToProcessing(ItemTypes itemType)
        {
            PeriodicManager period = null;

            if (!m_ProcessedItems.ContainsKey(itemType))
            {
                if (m_ProcessedItems.Count == DataManager.Instance.PlayerAccount.WorkersAmount)
                {
                    Debug.LogError("CANNT PROCESS ITEM. MAX ITEMS PROCESSED");
                    return(false);
                }

                //Создать и инициализировать период
                period = gameObject.AddComponent <PeriodicManager>();
                period.Init(TickPeriod, true);

                //Прогресс периода
                period.OnProgress += (float progress) => { OnProgress?.Invoke(itemType, progress); };

                //Окончание периода
                period.OnPeriodFinished += () =>
                {
                    //Если можно скрафтить предмет
                    if (DataManager.Instance.PlayerAccount.Inventory.CanCraftItem(itemType))
                    {
                        //Добавить тик
                        GameManager.Instance.CraftItemFactory.AddTickToItem(itemType);

                        //Вызвать соответствующее событие
                        OnPeriodFinished_Success?.Invoke(itemType);
                    }
                    else //Если нельзя скрафтить предмет - вызвать соответствующее событие
                    {
                        OnPeriodFinished_Error?.Invoke(itemType);
                    }
                };

                //Добавить в список
                m_ProcessedItems.Add(itemType, period);
            }
            else
            {
                period = m_ProcessedItems[itemType];
            }

            period.StartPeriod();

            return(true);
        }
Beispiel #2
0
        public void RemoveItemFromProcessing(ItemTypes itemType)
        {
            if (m_ProcessedItems.ContainsKey(itemType))
            {
                //Получить и остановить период
                PeriodicManager period = m_ProcessedItems[itemType];
                period.StopPeriod();

                //Удалить период и списка
                m_ProcessedItems.Remove(itemType);

                //Удалить период
                Destroy(period);
            }
        }