private IEnumerator Gather(ResourceRoot source) { properties.currentResource = source.resource; print("called"); while (!source.IsEmpty) { yield return(StartCoroutine(MoveTo(new Vector3[1] { source.transform.position }))); while (!properties.IsFull) { int unitsThatWillBeGathered = Mathf.Min(properties.unitsGatheredPerSecond, (properties.resourceCapacity - properties.currentResourceAmount)); properties.currentResourceAmount += source.GatherFromHere(unitsThatWillBeGathered); yield return(new WaitForSeconds(1)); } IResourceReceiver resourceReceiver = UnitController.GetClosestResourceReceiver(properties.currentResource, transform.position); if (resourceReceiver != null) { yield return(StartCoroutine(MoveTo(new Vector3[1] { (resourceReceiver as StorageBuilding).transform.position }))); properties.GiveResources(resourceReceiver); } else { StopAllCoroutines(); } } }
public void GiveResources(IResourceReceiver receiver) { receiver.ReceiveResource(currentResourceAmount, currentResource); currentResourceAmount = 0; }
public void GiveResources (IResourceReceiver receiver) { receiver.ReceiveResource (currentResourceAmount, currentResource); currentResourceAmount = 0; }
public void Init(IResourceSender sender, IResourceReceiver receiver) { _reciever = receiver; _sender = sender; _reciever.ResourcesChanged += RecieverOnResourcesChanged; }