public void AssumeEmergency() { SendFiretruck(myERC.WorstDisasterEmergency()); myERC.SendFiretruck(this); myEmergency.SendResources(0, 1); if (myEmergency.NeededFiretrucks() < 1 || myEmergency.GetEmergencyDisasterLife() > 250) { myERC.DisasterEmergencyControlled(myEmergency); } }
public void AddEmergency(Emergency e) { if (e.GetEmergencyPeopleEnvolved() > 0) { MedicalEmergenciesWaiting.Add(e); } if (e.GetEmergencyDisasterLife() > 0) { DisasterEmergenciesWaiting.Add(e); } }
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); } } }
private void TreatEmergency() { if (Decentralized && myEmergency.NAmbulances == 1 && peopleToTransport == maxPeople && myEmergency.GetEmergencyPeopleEnvolved() > 0) { onEmergency = false; goingToERC = true; myEmergency.NAmbulances -= 1; if (!myERC.MedicalEmergenciesWaiting.Contains(myEmergency)) { myERC.MedicalEmergenciesWaiting.Add(myEmergency); } if (myEmergency.NFiretrucks <= 0) { myERC.EmergenciesBeingTreated.Remove(myEmergency); } return; } if (myEmergency.GetEmergencyPeopleEnvolved() < 1) { onEmergency = false; goingToERC = true; myEmergency.NAmbulances -= 1; if (Decentralized && myEmergency.NAmbulances <= 0 && myEmergency.NFiretrucks <= 0 && myEmergency.GetEmergencyDisasterLife() <= 0) { myERC.MedicalEmergenciesWaiting.Remove(myEmergency); myERC.DisasterEmergenciesWaiting.Remove(myEmergency); myERC.EmergencyEnded(myEmergency); } //else if (Decentralized && myEmergency.NAmbulances <= 0 && myEmergency.NFiretrucks <= 0 && myEmergency.GetEmergencyDisasterLife() >= 250) //{ // myERC.EmergencyImpossible(myEmergency); //} else if (Decentralized && myEmergency.NAmbulances <= 0 && myEmergency.NFiretrucks <= 0) { myERC.EmergenciesBeingTreated.Remove(myEmergency); } return; } if (peopleToTransport == maxPeople) { onEmergency = false; goingToERC = true; myEmergency.NAmbulances -= 1; return; } if (waitTime >= myEmergency.WaitTime) { if (myEmergency.TreatEmergency(this)) { peopleToTransport++; } waitTime = 0; } else { waitTime += Time.deltaTime; } }