Exemple #1
0
 private void HandleIncomingCarrier(CarrierAnt carrier)
 {
     if (carrier.Target == transform || carrier.Target == null)
     {
         AntDispatcher.ProvideCarrier(carrier);
     }
 }
Exemple #2
0
    private static void CreateCarrierAnt(Transform target)
    {
        GameObject go = new GameObject("Carrier", typeof(CarrierAnt));

        CarrierAnt ant = go.GetComponent <CarrierAnt>();

        ant.Target = target;
    }
Exemple #3
0
    private void HandleIncomingCarrier(CarrierAnt carrier)
    {
        if (carrier.Target != transform)
        {
            return;
        }

        lock (_Sync)
        {
            if (Food > 0)
            {
                carrier.Carry = Bearables.Food;
                Food--;
            }
        }

        carrier.Target = null;
    }
Exemple #4
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        WorkerAnt worker = collision.gameObject.GetComponent <WorkerAnt>();

        if (worker != null)
        {
            HandleIncomingWorker(worker);
            return;
        }

        CarrierAnt carrier = collision.gameObject.GetComponent <CarrierAnt>();

        if (carrier != null)
        {
            HandleIncomingCarrier(carrier);
            return;
        }
    }
Exemple #5
0
    public static void ProvideCarrier(CarrierAnt ant)
    {
        GameObject go;
        int        requests;

        lock (_Sync)
        {
            _CarrierRequester.MaxOrDefault(out go, out requests);

            if (go == null || requests == 0)
            {
                _AvailableCarrierAnts++;

                Destroy(ant);
            }
            else
            {
                _CarrierRequester.SafelyDecrement(go);

                ant.Carry  = Bearables.None;
                ant.Target = go.transform;
            }
        }
    }