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