Пример #1
0
    public void TriggerInfection()
    {
        if (!gameObject.CompareTag(GetTag(PersonTags.Healthy)))
        {
            return;
        }

        gameObject.tag = GetTag(PersonTags.Infected);

        GameProgressManager.UpdateProgress();

        gameObject.GetComponent <PersonMovementController>().TriggerChasingMode();
        UpdatePersonModel();

        var notificationObj = Instantiate(personCashNotificationObject, transform.position, transform.rotation);

        notificationObj.GetComponent <PersonCashNotification>().SetCashAmount(_personCash);
        Destroy(notificationObj, 0.5f);

        CashManager.AddOrRemoveCash(_personCash);

        // this starts the death timer, after which the person dies due to the infection
        deathBar.barLifeTime = infectionToDeathDuration;
        deathBar.Start();

        StartCoroutine(TriggerDeathTimer());
    }
Пример #2
0
 void Start()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
Пример #3
0
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
Пример #4
0
 void OnDestroy()
 {
     Clear();
     if (instance == this)
     {
         instance = null;
     }
 }
Пример #5
0
    private void Reset()
    {
        Cannon.Reset();
        PersonSpawner.Reset();
        GameProgressManager.Reset();
        PowerUp.Reset();

        _notifiedAllMonstersEffected = false;
    }
Пример #6
0
    public void IncrementLevel()
    {
        currentLevel++;
        SetLevelToPref();

        GameProgressManager.UpdateProgressPerCash();
        Person.UpdatePersonCash();
        UpdateUi();
    }
Пример #7
0
    private void CheckGameEnding()
    {
        if (GameState != GameState.Playing)
        {
            return;
        }

        var numberOfDeadPersons     = GameObject.FindGameObjectsWithTag(Person.GetTag(PersonTags.Dead)).Length;
        var numberOfInfectedPersons = GameObject.FindGameObjectsWithTag(Person.GetTag(PersonTags.Infected)).Length;

        if (numberOfDeadPersons == PersonSpawner.GetPersonCount())
        {
            GameWon();
            return;
        }

        if (numberOfDeadPersons + numberOfInfectedPersons == PersonSpawner.GetPersonCount() && !_notifiedAllMonstersEffected)
        {
            NotificationManager.Notify(NotificationType.AllMonstersInfected);
            _notifiedAllMonstersEffected = true;
        }

        if (Cannon.CannonBallsRemaining() != 0)
        {
            return;
        }

        var cannonBallsInAir = GameObject.FindGameObjectsWithTag("CannonBall");

        if (cannonBallsInAir.Length != 0)
        {
            return;
        }

        // counting all the infected and contagious persons
        var remainingInfectedPersonsCount =
            GameObject.FindGameObjectsWithTag(Person.GetTag(PersonTags.Infected)).Length;

        if (remainingInfectedPersonsCount != 0)
        {
            return;
        }


        if (GameProgressManager.GetCurrentProgressState() == GameProgressState.Complete)
        {
            GameWon();
        }
        else
        {
            GameOver();
        }
    }
Пример #8
0
 void Awake()
 {
     if (_gameProgressManager == null)
     {
         _gameProgressManager = this;
         DontDestroyOnLoad(this);
     }
     else if (_gameProgressManager != this)
     {
         DestroyImmediate(gameObject);
     }
 }
Пример #9
0
 void Awake()
 {
     instance = this;
 }
Пример #10
0
 public void Start()
 {
     _notifiedProgressMax = false;
     _gameProgressManager = this;
     GetProgressPerCashFromPref();
 }