Example #1
0
    public override void TickTask(float time)
    {
        if (m_AssignedWorkers.Count > 0 && m_Resources.Count > 0)
        {
            foreach (var item in m_Resources.Skip(1))
            {
                item.TickDecrementQuality(time);
            }

            FMResource resource = m_Resources.Peek();
            if (resource != null)
            {
                var totalProcessAmount = 0f;
                for (int i = 0; i < m_AssignedWorkers.Count; ++i)
                {
                    var productivity = m_AssignedWorkers[i].GetProductivity();
                    totalProcessAmount += m_ProcessScalar * productivity;
                }

                totalProcessAmount          = Mathf.Min(totalProcessAmount, resource.m_Amount);
                resource.m_ProcessedAmount += totalProcessAmount;
                resource.m_Amount          -= totalProcessAmount;
            }
            base.TickTask(time);
        }
    }
Example #2
0
    public void AddResourceToSink(FMResource resource)
    {
        m_Resources.Enqueue(resource);
        float totalAmount = GetCurrentResourceSum();

        m_SinkLevelDisplay.UpdateLevelDisplay(totalAmount);
        if (totalAmount > 0)
        {
            m_TaskProcessing = true;
        }
    }
Example #3
0
    protected override float GetDisplayProgress()
    {
        if (m_Resources.Count > 0)
        {
            FMResource resource = m_Resources.Peek();
            //Debug.Log("Processing... amount left: " + resource.m_Amount + " amount processed: " + resource.m_ProcessedAmount + " (starting at: " + resource.m_StartProcessingAmount);
            return(resource.m_ProcessedAmount / resource.m_StartProcessingAmount);
        }

        return(0f);
    }
Example #4
0
    public void ProcessNewResource(FMResource resource)
    {
        // todo: animate it to the processing plant?
        m_Resources.Enqueue(resource);
        Vector2 centerOffset = new Vector2(Random.Range(0f, m_StagingAreaRadus), Random.Range(0f, m_StagingAreaRadus));

        resource.gameObject.transform.SetParent(m_ProcessingStagingArea, false);
        resource.gameObject.transform.localPosition = new Vector3(centerOffset.x, 0f, centerOffset.y);
        resource.m_StartProcessingAmount            = resource.m_Amount;
        resource.SetResourceVisible(true);
        resource.m_SmellyFishParticles.SetActive(true);
    }
Example #5
0
    protected override void TriggerTask()
    {
        base.TriggerTask();
        if (m_Resources.Count > 0)
        {
            // done processing
            FMResource processedResource = m_Resources.Dequeue();
            processedResource.SetResourceVisible(false);
            FMBoardReferences.GetOrCreateInstance().m_ResourceSinks[processedResource.m_ResourceIndex].AddResourceToSink(processedResource);
            SetProgress(0f);

            Tutorial.GetOrCreateInstance().HasProcessedFish = true;
        }
    }
Example #6
0
 public void UnassignResource(FMResource resource)
 {
     m_ResourceSlot.m_AssignedObject = null;
 }
Example #7
0
 public void AssignResource(FMResource resource)
 {
     resource.transform.SetParent(m_ResourceSlot.m_Transform, false);
     resource.transform.localPosition = Vector3.zero;
 }
Example #8
0
    public override bool ShouldTriggerTask()
    {
        FMResource resource = m_Resources.Peek();

        return(resource.m_Amount <= 0f);
    }