Exemple #1
0
        private List <IEnemyController> SpawnSingleEnemyLocations(EnemyScriptableObject _enemyScriptableObject)
        {
            List <EnemySpawnData>   spawnNodeID         = new List <EnemySpawnData>();
            List <IEnemyController> newEnemyControllers = new List <IEnemyController>();

            spawnNodeID.Clear();
            spawnNodeID = pathService.GetEnemySpawnLocation(_enemyScriptableObject.enemyType);

            switch (_enemyScriptableObject.enemyType)
            {
            case EnemyType.STATIC:
                for (int i = 0; i < spawnNodeID.Count; i++)
                {
                    Vector3 spawnLocation = pathService.GetNodeLocation(spawnNodeID[i].node);

                    IEnemyController newEnemy = new StaticEnemyController(enemyService, pathService, gameService, spawnLocation, _enemyScriptableObject, spawnNodeID[i].node, spawnNodeID[i].dir, spawnNodeID[i].hasShield);
                    newEnemyControllers.Add(newEnemy);
                }
                break;

            case EnemyType.PATROLLING:

                for (int i = 0; i < spawnNodeID.Count; i++)
                {
                    Vector3          spawnLocation = pathService.GetNodeLocation(spawnNodeID[i].node);
                    IEnemyController newEnemy      = new PatrollingEnemyController(enemyService, pathService, gameService, spawnLocation, _enemyScriptableObject, spawnNodeID[i].node, spawnNodeID[i].dir, spawnNodeID[i].hasShield);
                    newEnemyControllers.Add(newEnemy);
                }
                break;

            case EnemyType.ROTATING_KNIFE:
                for (int i = 0; i < spawnNodeID.Count; i++)
                {
                    Vector3          spawnLocation = pathService.GetNodeLocation(spawnNodeID[i].node);
                    IEnemyController newEnemy      = new RotatingKnifeEnemyController(enemyService, pathService, gameService, spawnLocation, _enemyScriptableObject, spawnNodeID[i].node, spawnNodeID[i].dir, spawnNodeID[i].hasShield);
                    newEnemyControllers.Add(newEnemy);
                }
                break;

            case EnemyType.CIRCULAR_COP:

                for (int i = 0; i < spawnNodeID.Count; i++)
                {
                    Vector3          spawnLocation = pathService.GetNodeLocation(spawnNodeID[i].node);
                    IEnemyController newEnemy      = new CircularCopEnemyController(enemyService, pathService, gameService, spawnLocation, _enemyScriptableObject, spawnNodeID[i].node, spawnNodeID[i].dir, spawnNodeID[i].hasShield);
                    newEnemy.SetCircularCopID(cID);
                    newEnemyControllers.Add(newEnemy);
                    cID++;
                }

                break;

            case EnemyType.DOGS:
                for (int i = 0; i < spawnNodeID.Count; i++)
                {
                    Vector3          spawnLocation = pathService.GetNodeLocation(spawnNodeID[i].node);
                    IEnemyController newEnemy      = new DogsEnemyController(enemyService, pathService, gameService, signalBus, spawnLocation, _enemyScriptableObject, spawnNodeID[i].node, spawnNodeID[i].dir, spawnNodeID[i].hasShield);
                    newEnemyControllers.Add(newEnemy);
                }
                break;

            case EnemyType.SNIPER:
                for (int i = 0; i < spawnNodeID.Count; i++)
                {
                    Vector3          spawnLocation = pathService.GetNodeLocation(spawnNodeID[i].node);
                    IEnemyController newEnemy      = new SniperEnemyController(enemyService, pathService, gameService, spawnLocation, _enemyScriptableObject, spawnNodeID[i].node, spawnNodeID[i].dir, spawnNodeID[i].hasShield);
                    newEnemyControllers.Add(newEnemy);
                }
                break;

            case EnemyType.TARGET:
                for (int i = 0; i < spawnNodeID.Count; i++)
                {
                    Vector3          spawnLocation = pathService.GetNodeLocation(spawnNodeID[i].node);
                    IEnemyController newEnemy      = new TargetEnemyController(enemyService, pathService, gameService, spawnLocation, _enemyScriptableObject, spawnNodeID[i].node, spawnNodeID[i].dir, spawnNodeID[i].hasShield);
                    newEnemyControllers.Add(newEnemy);
                }
                break;

            case EnemyType.BIDIRECTIONAL:
                for (int i = 0; i < spawnNodeID.Count; i++)
                {
                    Vector3          spawnLocation = pathService.GetNodeLocation(spawnNodeID[i].node);
                    IEnemyController newEnemy      = new BiDirectionalEnemyController(enemyService, pathService, gameService, spawnLocation, _enemyScriptableObject, spawnNodeID[i].node, spawnNodeID[i].dir, spawnNodeID[i].hasShield);
                    newEnemyControllers.Add(newEnemy);
                }
                break;


            case EnemyType.GUARD_TORCH:
                for (int i = 0; i < spawnNodeID.Count; i++)
                {
                    Vector3          spawnLocation = pathService.GetNodeLocation(spawnNodeID[i].node);
                    IEnemyController newEnemy      = new GuardWithTorchEnemyController(enemyService, pathService, gameService, spawnLocation, _enemyScriptableObject, spawnNodeID[i].node, spawnNodeID[i].dir, spawnNodeID[i].hasShield);
                    newEnemyControllers.Add(newEnemy);
                }
                break;

            default:

                break;
            }

            return(newEnemyControllers);
        }