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); } }
public void AddResourceToSink(FMResource resource) { m_Resources.Enqueue(resource); float totalAmount = GetCurrentResourceSum(); m_SinkLevelDisplay.UpdateLevelDisplay(totalAmount); if (totalAmount > 0) { m_TaskProcessing = true; } }
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); }
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); }
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; } }
public void UnassignResource(FMResource resource) { m_ResourceSlot.m_AssignedObject = null; }
public void AssignResource(FMResource resource) { resource.transform.SetParent(m_ResourceSlot.m_Transform, false); resource.transform.localPosition = Vector3.zero; }
public override bool ShouldTriggerTask() { FMResource resource = m_Resources.Peek(); return(resource.m_Amount <= 0f); }