public void addEvent(EventScript es) { EMH.insert(es); }
public void addEventVictim(EventScript es) { EMHVictim.insert(es); }
// Update is called once per frame void Update() { if (simulationManager.initialSeekAlgorithmDone) { timer += Time.deltaTime; if (timer > simulationStep) { timer = 0; currentStep++; if (currentStep == simulationManager.stepToFinish && printedToFile == false) { printedToFile = true; EMHAmbulance.writeToFileAmbulance(gameObject.name); } //if(headingToHospital == true) //{ if (hospital.transform.position == transform.position && headingToHospital == true) { if (addedArriveHospitalEvent == false) { EventScript es = new EventScript(currentStep, " ArriveHospital ", gameObject.name, " arrived ", hospital.name); simulationManager.addEvent(es); EventScriptAmbulance eva = new EventScriptAmbulance(currentStep, gameObject.name, " Arriving ", hospital.name); EMHAmbulance.insert(eva); addedArriveHospitalEvent = true; } //If the hospital locations are not full if (!hospitalScript.allLocationsFull) { if (unloadingVictims == false) { unloadingVictims = true; //Take up a spot by incrementing the counter hospitalScript.numberOfSpotsTaken += 1; } } //else //Debug.Log("HOSPITAL FULL"); //} if (unloadingVictims == true) { if (victim2 != null) { unloadStepcounter--; if (unloadStepcounter == 0) { victim1.GetComponent <VictimScript>().isSaved = true; victim1.transform.parent = hospital.transform; EventScript es = new EventScript(currentStep, " UnloadedVictim ", gameObject.name, " unloaded ", victim1.name); simulationManager.addEvent(es); victim1 = null; } if (unloadStepcounter == -1) { victim2.GetComponent <VictimScript>().isSaved = true; victim2.transform.parent = hospital.transform; unloadingVictims = false; EventScript es = new EventScript(currentStep, " UnloadedVictim ", gameObject.name, " unloaded ", victim2.name); simulationManager.addEvent(es); victim2 = null; //decrement the counter; hospitalScript.numberOfSpotsTaken -= 1; addedArriveHospitalEvent = false; headingToHospital = false; seekOnce = false; unloadStepcounter = UNLOAD_VICTIM_STEP; } } else if (victim1 != null) { unloadStepcounter--; if (unloadStepcounter == 0) { victim1.GetComponent <VictimScript>().isSaved = true; victim1.transform.parent = hospital.transform; unloadingVictims = false; EventScript es = new EventScript(currentStep, " UnloadedVictim ", gameObject.name, " unloaded ", victim1.name); simulationManager.addEvent(es); victim1 = null; //decrement the counter; hospitalScript.numberOfSpotsTaken -= 1; addedArriveHospitalEvent = false; headingToHospital = false; seekOnce = false; unloadStepcounter = UNLOAD_VICTIM_STEP; } } } } else if (victim1 != null || victim2 != null) { if (victim1.GetComponent <VictimScript>().isPickedUp == false) { headingToVictim = true; headingToHospital = false; //If the ambulance is on top of the victim, pick up the victim if (victim1.transform.position == transform.position) { loadStepCounter--; if (loadStepCounter == 0) { victim1.GetComponent <VictimScript>().isPickedUp = true; victim1.GetComponent <VictimScript>().timeRescued = currentStep; victim1.transform.parent = gameObject.transform; loadStepCounter = LOAD_VICTIM_STEP; EventScript es = new EventScript(currentStep - LOAD_VICTIM_STEP, " RescuedVictim ", gameObject.name, " rescued ", victim1.name); simulationManager.addEvent(es); //Make an event and add it to the heap es = new EventScript(currentStep, " LoadVictim ", gameObject.name, " loaded ", victim1.name); simulationManager.addEvent(es); } } else if (victim1.transform.position.x > transform.position.x) { transform.position = new Vector3(transform.position.x + 1, transform.position.y, 0); } else if (victim1.transform.position.x < transform.position.x) { transform.position = new Vector3(transform.position.x - 1, transform.position.y, 0); } else if (victim1.transform.position.y > transform.position.y) { transform.position = new Vector3(transform.position.x, transform.position.y + 1, 0); } else if (victim1.transform.position.y < transform.position.y) { transform.position = new Vector3(transform.position.x, transform.position.y - 1, 0); } } else if (victim2 != null) { if (victim2.GetComponent <VictimScript>().isPickedUp == false) { headingToVictim = true; headingToHospital = false; if (victim2.transform.position == transform.position) { loadStepCounter--; if (loadStepCounter == 0) { victim2.GetComponent <VictimScript>().isPickedUp = true; victim2.GetComponent <VictimScript>().timeRescued = currentStep; victim2.transform.parent = gameObject.transform; loadStepCounter = LOAD_VICTIM_STEP; EventScript es = new EventScript(currentStep - LOAD_VICTIM_STEP, " RescuedVictim ", gameObject.name, " rescued ", victim2.name); simulationManager.addEvent(es); es = new EventScript(currentStep, " LoadVictim ", gameObject.name, " loaded ", victim2.name); simulationManager.addEvent(es); } } else if (victim2.transform.position.x > transform.position.x) { transform.position = new Vector3(transform.position.x + 1, transform.position.y, 0); } else if (victim2.transform.position.x < transform.position.x) { transform.position = new Vector3(transform.position.x - 1, transform.position.y, 0); } else if (victim2.transform.position.y > transform.position.y) { transform.position = new Vector3(transform.position.x, transform.position.y + 1, 0); } else if (victim2.transform.position.y < transform.position.y) { transform.position = new Vector3(transform.position.x, transform.position.y - 1, 0); } } else { headingToHospital = true; headingToVictim = false; if (hospital.transform.position.x > transform.position.x) { transform.position = new Vector3(transform.position.x + 1, transform.position.y, 0); } else if (hospital.transform.position.x < transform.position.x) { transform.position = new Vector3(transform.position.x - 1, transform.position.y, 0); } else if (hospital.transform.position.y > transform.position.y) { transform.position = new Vector3(transform.position.x, transform.position.y + 1, 0); } else if (hospital.transform.position.y < transform.position.y) { transform.position = new Vector3(transform.position.x, transform.position.y - 1, 0); } } } //else if both victims are picked up, drive back to the hospital else { headingToHospital = true; headingToVictim = false; if (hospital.transform.position.x > transform.position.x) { transform.position = new Vector3(transform.position.x + 1, transform.position.y, 0); } else if (hospital.transform.position.x < transform.position.x) { transform.position = new Vector3(transform.position.x - 1, transform.position.y, 0); } else if (hospital.transform.position.y > transform.position.y) { transform.position = new Vector3(transform.position.x, transform.position.y + 1, 0); } else if (hospital.transform.position.y < transform.position.y) { transform.position = new Vector3(transform.position.x, transform.position.y - 1, 0); } } } //else seek for more victims else { if (seekOnce == false) { seekOnce = true; seekVictim(); } } } } }