private void sendRandomResources(Emergency medEm, Emergency disEm) { if ((availableAmbulances > 0 || Multiple) && medEm != null) { int ambulancesNeeded = Random.Range(0, availableAmbulances + 1); ambulancesNeeded = Mathf.Min(ambulancesNeeded, availableAmbulances); for (int i = 0; i < ambulancesNeeded; i++) { Ambulance am = ambulances[0]; // CreateAmbulance(); ambulances.RemoveAt(0); am.SendAmbulance(medEm); availableAmbulances--; } if (ambulancesNeeded > 0) { medEm.SendResources(ambulancesNeeded, 0); MedicalEmergenciesWaiting.Remove(medEm); if (!EmergenciesBeingTreated.Contains(medEm)) { EmergenciesBeingTreated.Add(medEm); } } } if ((availableFiretrucks > 0 || Multiple) && disEm != null) { int firetrucksNeeded = Random.Range(0, availableFiretrucks + 1); firetrucksNeeded = Mathf.Min(firetrucksNeeded, availableFiretrucks); for (int i = 0; i < firetrucksNeeded; i++) { Firetruck am = firetrucks[0]; // CreateFiretruck(); firetrucks.RemoveAt(0); am.SendFiretruck(disEm); availableFiretrucks--; } if (firetrucksNeeded > 0) { disEm.SendResources(0, firetrucksNeeded); DisasterEmergenciesWaiting.Remove(disEm); if (!EmergenciesBeingTreated.Contains(disEm)) { EmergenciesBeingTreated.Add(disEm); } } } }
private void SendHelp(Emergency helpMedEm, Emergency helpDisEm) { if (Multiple) { if (availableAmbulances > (nAmbulances / 2)) { Emergency emh; bool helping; CommunicationSystem.checkMedHelps(this, out helping, out emh); if (helping) { //Debug.Log(this + "borrowed ambulance to" + emh.MyArea); Ambulance am = ambulances[0]; ambulances.RemoveAt(0); am.SendAmbulance(emh); availableAmbulances--; emh.SendResources(1, 0); } } if (availableFiretrucks > (nFiretruck / 2)) { Emergency emh; bool helping; CommunicationSystem.checkFireHelps(this, out helping, out emh); if (helping) { //Debug.Log(this + "borrowed firetruck to" + emh.MyArea); Firetruck am = firetrucks[0]; firetrucks.RemoveAt(0); am.SendFiretruck(emh); availableFiretrucks--; emh.SendResources(0, 1); } } } }
private void SendResources(Emergency medEm, Emergency disEm) { if ((availableAmbulances > 0 || Multiple) && medEm != null) { int ambulancesNeeded = (int)Math.Ceiling((float)medEm.GetEmergencyPeopleEnvolved() / Ambulance.maxPeople); if (Multiple) { int ambulancesRemaining = Mathf.Max(ambulancesNeeded - availableAmbulances, 0); if (ambulancesRemaining > 0) { CommunicationSystem.needMedHelp(medEm, ambulancesRemaining); } } ambulancesNeeded = Mathf.Min(ambulancesNeeded, availableAmbulances); for (int i = 0; i < ambulancesNeeded; i++) { Ambulance am = ambulances[0]; // CreateAmbulance(); ambulances.RemoveAt(0); am.SendAmbulance(medEm); availableAmbulances--; } medEm.SendResources(ambulancesNeeded, 0); MedicalEmergenciesWaiting.Remove(medEm); if (!EmergenciesBeingTreated.Contains(medEm)) { EmergenciesBeingTreated.Add(medEm); } } if ((availableFiretrucks > 0 || Multiple) && disEm != null) { int firetrucksNeeded = (int)Math.Ceiling((float)disEm.GetEmergencyDisasterLife() / Firetruck.waterDeposit); if (Multiple) { int firetrucksRemaining = Mathf.Max(firetrucksNeeded - availableFiretrucks, 0); if (firetrucksRemaining > 0) { CommunicationSystem.needFireHelp(disEm, firetrucksRemaining); } } firetrucksNeeded = Mathf.Min(firetrucksNeeded, availableFiretrucks); for (int i = 0; i < firetrucksNeeded; i++) { Firetruck am = firetrucks[0]; // CreateFiretruck(); firetrucks.RemoveAt(0); am.SendFiretruck(disEm); availableFiretrucks--; } disEm.SendResources(0, firetrucksNeeded); DisasterEmergenciesWaiting.Remove(disEm); if (!EmergenciesBeingTreated.Contains(disEm)) { EmergenciesBeingTreated.Add(disEm); } } }