private void HandleIncomingCarrier(CarrierAnt carrier) { if (carrier.Target == transform || carrier.Target == null) { AntDispatcher.ProvideCarrier(carrier); } }
private static void CreateCarrierAnt(Transform target) { GameObject go = new GameObject("Carrier", typeof(CarrierAnt)); CarrierAnt ant = go.GetComponent <CarrierAnt>(); ant.Target = target; }
private void HandleIncomingCarrier(CarrierAnt carrier) { if (carrier.Target != transform) { return; } lock (_Sync) { if (Food > 0) { carrier.Carry = Bearables.Food; Food--; } } carrier.Target = null; }
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; } }
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; } } }