Example #1
0
    private void Start()
    {
        _spawner = this;

        GetPersonSpawnCountFromPref();
        SpawnPersons(initialPersonCount);
    }
Example #2
0
    public override void OnInspectorGUI()
    {
        PersonSpawner personSpawnerTarget = (PersonSpawner)target;

        personSpawnerTarget.randomSpawn = EditorGUILayout.Toggle("Random Spawn", personSpawnerTarget.randomSpawn);

        if (personSpawnerTarget.randomSpawn)
        {
            personSpawnerTarget.numPeople = EditorGUILayout.IntField("Number of NPCs", personSpawnerTarget.numPeople);
        }
        else
        {
            personSpawnerTarget.columns = EditorGUILayout.IntField("NPC Columns", personSpawnerTarget.columns);
            personSpawnerTarget.rows    = EditorGUILayout.IntField("NPC Rows", personSpawnerTarget.rows);
        }


        setupFoldout = EditorGUILayout.Foldout(setupFoldout, "Additional Settings", true);
        if (setupFoldout)
        {
            personSpawnerTarget.boundaries = (SpawnBoundaries)EditorGUILayout.ObjectField("Boundaries Script", personSpawnerTarget.boundaries, typeof(SpawnBoundaries), true);

            personSpawnerTarget.peopleParent = (Transform)EditorGUILayout.ObjectField("People Parent", personSpawnerTarget.peopleParent, typeof(Transform), true);

            personSpawnerTarget.personPrefab = (GameObject)EditorGUILayout.ObjectField("Person Prefab", personSpawnerTarget.personPrefab, typeof(GameObject), true);
        }
    }
Example #3
0
    public void ActivatePowerUp()
    {
        switch (type)
        {
        case PowerUpType.PopulationGrowth:
            PersonSpawner.SpawnExtraPersons(1);
            NotificationManager.Notify(NotificationType.PopulationPowerUp);
            break;

        case PowerUpType.ExtraCannon:
            FindObjectOfType <Cannon>().AddExtraCannonBall(1);
            NotificationManager.Notify(NotificationType.ExtraCannonPowerUp);
            break;

        case PowerUpType.SpeedIncrease:
            PersonMovementController.UpdatePersonSpeed();
            NotificationManager.Notify(NotificationType.SpeedPowerUp);
            break;

        default:
            throw new ArgumentOutOfRangeException();
        }

        UpdatePowerUpCost();
    }
 public void ActivateSpawners()
 {
     for (int i = 0; i < transform.childCount; i++)
     {
         PersonSpawner spawner = transform.GetChild(i).GetComponent <PersonSpawner>();
         spawner.gameObject.SetActive(true);
     }
 }
    private void Reset()
    {
        Cannon.Reset();
        PersonSpawner.Reset();
        GameProgressManager.Reset();
        PowerUp.Reset();

        _notifiedAllMonstersEffected = false;
    }
Example #6
0
            public void UnsetPerson()
            {
                if (this.smile != null)
                {
                    ChangeSmile(0);
                }

                this.spawner.RemoveSlot();
                this.spawner = null;
            }
Example #7
0
        private void Awake()
        {
            _patrolPoints = FindObjectsOfType <PatrolPoint>();
            _spawnNext    = FindObjectOfType <PersonSpawner>();

            _target = FindObjectOfType <PlayerController>();
            _nav    = GetComponent <NavMeshAgent>();

            _nav.updateRotation = false;
        }
Example #8
0
            public void SetPerson(PersonSpawner person)
            {
                this.spawner = person;
                this.spawner.SetSlot(this);

                if (this.smile != null)
                {
                    this.smile.color = this.spawner.GetColor();
                    ChangeSmile(1);
                }
            }
    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();
        }
    }
 private void UpdateSpawnPoints()
 {
     for (int i = 0; i < transform.childCount; i++)
     {
         PersonSpawner spawner = transform.GetChild(i).GetComponent <PersonSpawner>();
         spawner.spawnChance   = spawnChances[wantedLevel];
         spawner.robberChance  = robberChances[wantedLevel];
         spawner.policeChance  = policeChances[wantedLevel];
         spawner.soldierChance = soldierChances[wantedLevel];
         spawner.bankerChance  = bankerChance;
     }
 }
Example #11
0
 public static async void LoadAllInto(List <Person> persons, Action action)
 {
     await Task.Run(() =>
     {
         if (!Directory.Exists(DataFilepath))
         {
             Directory.CreateDirectory(DataFilepath);
             persons.AddRange(PersonSpawner.SpawnPersons(50));
             SaveAll(persons);
         }
         else
         {
             persons.AddRange(Directory.EnumerateFiles(DataFilepath).Select(LoadFrom));
         }
         action();
     });
 }
Example #12
0
        public void OnPointerClick(PointerEventData eventData)
        {
            if (IsActionable)
            {
                GameObject    target  = eventData.pointerCurrentRaycast.gameObject;
                PersonSpawner spawner = target.GetComponent <PersonSpawner>();
                PersonSlot    slot    = target.GetComponent <PersonSlot>();

                if (spawner != null)
                {
                    SelectSpawner(spawner);
                }

                if (slot != null)
                {
                    SelectSlot(slot);
                }
            }
        }
Example #13
0
        private void SelectSpawner(PersonSpawner spawner)
        {
            if (this.selected == spawner)
            {
                this.selected.Unselect();
                this.selected = null;
            }
            else
            {
                if (this.selected != null)
                {
                    this.selected.Unselect();
                }

                this.selected = spawner;
                this.selected.Select();
            }

            ShowSlots();
        }
Example #14
0
    public static void UpdateProgress()
    {
        _gameProgressManager.animator.Play("ProgressBarAnimation", -1, 0f);

        _gameProgressManager.gameProgress += 6f / (PersonSpawner.GetPersonCount() * 5f);

        if (_gameProgressManager.gameProgress > _gameProgressManager.progressSlider.maxValue)
        {
            if (!_notifiedProgressMax)
            {
                NotificationManager.Notify(NotificationType.LevelUp);
                _notifiedProgressMax = true;
            }
            _progressState = GameProgressState.Complete;
        }
        else
        {
            _progressState = GameProgressState.NotComplete;
        }

        _gameProgressManager.UpdateUi();
    }
Example #15
0
 public void GameStart()
 {
     people[numberOfPeople - 1].StartMoving();
     spawn = GameObject.FindGameObjectWithTag("Spawner").GetComponent<PersonSpawner>();
 }