Example #1
0
        async private void KillEnemy(IEnemyController controllerToKill)
        {
            if (controllerToKill.GetEnemyType() == EnemyType.DOGS)
            {
                starService.DogsKilled();
            }

            await controllerToKill.PlayAnimation(EnemyStates.DEATH);

            enemyList.Remove(controllerToKill);
            controllerToKill.Reset();
            signalBus.TryFire(new EnemyDeathSignal()
            {
                nodeID = controllerToKill.GetCurrentNodeID()
            });
        }
Example #2
0
        async public void EnemyDead(EnemyKillSignal _killSignal)
        {
            var tempList = enemyList;

            for (int i = 0; i < tempList.Count; i++)
            {
                IEnemyController enemyController = tempList[i];
                if (enemyController.GetCurrentNodeID() == _killSignal.nodeID)
                {
                    if (CheckForKillableEnemy(enemyController, _killSignal.killMode))
                    {
                        enemyList.Remove(enemyController);
                        await enemyController.PlayAnimation(EnemyStates.DEATH);

                        enemyController.Reset();
                    }
                }
            }
            bool allDogsKilled = true;

            foreach (IEnemyController enemyController in enemyList)
            {
                if (enemyController.GetEnemyType() == EnemyType.DOGS)
                {
                    allDogsKilled = false;
                }
            }
            if (allDogsKilled)
            {
                starService.AllDogsKilled();
            }
            if (enemyList.Count == 0)
            {
                starService.AllDogsKilled();
                gameService.ChangeToPlayerState();
            }
            await new WaitForEndOfFrame();
        }
Example #3
0
        async private Task PerformMovement()
        {
            if (enemyList.Count == 0)
            {
                if (!playerService.PlayerDeathStatus())
                {
                    gameService.ChangeToPlayerState();
                }
                return;
            }

            List <IEnemyController> KillableEnemies = new List <IEnemyController>();
            List <Task>             taskToKill      = new List <Task>();

            Task moveTask;

            for (int i = 0; i < enemyList.Count; i++)
            {
                IEnemyController controller = enemyList[i];
                if (!playerService.PlayerDeathStatus())
                {
                    if (CheckForEnemyPresence(controller, playerService.GetPlayerNodeID()) && CheckForKillablePlayer(controller.GetEnemyType()))
                    {
                        KillableEnemies.Add(controller);
                        continue;
                    }
                    else
                    {
                        moveTask = controller.Move();
                        moveTaskList.Add(moveTask);
                    }
                }
            }
            await Task.WhenAll(moveTaskList.ToArray());

            moveTaskList.Clear();

            IEnemyController controllerToKill;

            for (int i = 0; i < KillableEnemies.Count; i++)
            {
                controllerToKill = KillableEnemies[i];
                KillEnemy(controllerToKill);
            }

            if (!playerService.PlayerDeathStatus())
            {
                gameService.ChangeToPlayerState();
            }
        }