예제 #1
0
파일: ERCAgent.cs 프로젝트: ana3A/aasma
 public void EmergencyEnded(Emergency em)
 {
     if (EmergenciesBeingTreated.Contains(em))
     {
         EmergenciesBeingTreated.Remove(em);
         em.SendStatistics();
         Destroy(em.gameObject);
         Destroy(em);
         myArea.atualEmergencies--;
     }
 }
예제 #2
0
파일: ERCAgent.cs 프로젝트: ana3A/aasma
    public void UpdateEmergencies()
    {
        //Delete or re-open emergencies that were being treated
        List <int> emToDestroy = new List <int>();
        List <int> emToRemove  = new List <int>();
        bool       ToRemove;
        int        i = 0;

        while (i < EmergenciesBeingTreated.Count)
        {
            ToRemove = false;
            if (EmergenciesBeingTreated[i].GetEmergencyPeopleEnvolved() < 1 && EmergenciesBeingTreated[i].GetEmergencyDisasterLife() <= 0)
            {
                if (EmergenciesBeingTreated[i].NAmbulances <= 0 && EmergenciesBeingTreated[i].NFiretrucks <= 0)
                {
                    Emergency e = EmergenciesBeingTreated[i];
                    //EmergenciesBeingTreated.RemoveAt(i);
                    //Debug.Log("removed");
                    MedicalEmergenciesWaiting.Remove(e);
                    DisasterEmergenciesWaiting.Remove(e);
                    e.SendStatistics();
                    EmergenciesBeingTreated.Remove(e);
                    Destroy(e.gameObject);
                    Destroy(e);
                    myArea.atualEmergencies--;
                    continue;
                }
            }

            if (EmergenciesBeingTreated[i].GetEmergencyDisasterLife() >= 250)
            {
                if (EmergenciesBeingTreated[i].NAmbulances <= 0 && EmergenciesBeingTreated[i].NFiretrucks <= 0)
                {
                    Emergency e = EmergenciesBeingTreated[i];
                    //EmergenciesBeingTreated.RemoveAt(i);
                    //Debug.Log("removed");
                    MedicalEmergenciesWaiting.Remove(e);
                    DisasterEmergenciesWaiting.Remove(e);
                    e.SendStatistics();
                    EmergenciesBeingTreated.Remove(e);
                    Destroy(e.gameObject);
                    Destroy(e);
                    myArea.atualEmergencies--;
                    myArea.ImpossibleEmergencies += 1;
                    continue;
                }
            }

            if (EmergenciesBeingTreated[i].GetEmergencyPeopleEnvolved() > 0 && EmergenciesBeingTreated[i].NAmbulances <= 0)
            {
                if (!MedicalEmergenciesWaiting.Contains(EmergenciesBeingTreated[i]))
                {
                    MedicalEmergenciesWaiting.Add(EmergenciesBeingTreated[i]);
                }

                if (EmergenciesBeingTreated[i].NFiretrucks < 0)
                {
                    ToRemove = true;
                }
            }

            if (EmergenciesBeingTreated[i].GetEmergencyDisasterLife() > 0 && EmergenciesBeingTreated[i].NFiretrucks <= 0)
            {
                if (!DisasterEmergenciesWaiting.Contains(EmergenciesBeingTreated[i]))
                {
                    DisasterEmergenciesWaiting.Add(EmergenciesBeingTreated[i]);
                }

                if (EmergenciesBeingTreated[i].NAmbulances < 0)
                {
                    ToRemove = true;
                }
            }

            if (ToRemove)
            {
                EmergenciesBeingTreated.RemoveAt(i);
                continue;
            }

            i++;
        }


        foreach (Emergency e in Calls)
        {
            if (!EmergencyDic.ContainsKey(e.gameObject.transform.position))
            {
                EmergencyDic.Add(e.gameObject.transform.position, e);
                AddEmergency(e);
            }
        }
        Calls.Clear();
    }