Exemple #1
0
    public EnemyAvatar GetEnemy(Vector2 position, Quaternion rotation, string prefabPath)
    {
        if (!Instance.availableEnemiesByType.ContainsKey(prefabPath))
        {
            Instance.availableEnemiesByType.Add(prefabPath, new Queue <EnemyAvatar>());
        }

        Queue <EnemyAvatar> availableEnemies = Instance.availableEnemiesByType[prefabPath];

        EnemyAvatar enemy = null;

        if (availableEnemies.Count > 0)
        {
            enemy = availableEnemies.Dequeue();
        }

        if (enemy == null)
        {
            GameObject gameObject = null;
            GameObject prefab     = (GameObject)Resources.Load(prefabPath);
            gameObject = Instantiate(prefab, position, rotation);
            gameObject.transform.parent = Instance.gameObject.transform;
            enemy = gameObject.GetComponent <EnemyAvatar>();
        }

        enemy.Position = position;
        enemy.gameObject.SetActive(true);

        return(enemy);
    }
Exemple #2
0
    public static void ReleaseEnemy(EnemyAvatar enemyAvatar)
    {
        Queue <EnemyAvatar> availableEnemies = Instance.availableEnemiesByType[enemyAvatar.PrefabPath];

        enemyAvatar.gameObject.SetActive(false);
        availableEnemies.Enqueue(enemyAvatar);
    }
Exemple #3
0
    public void Release(EnemyAvatar enemy)
    {
        enemy.gameObject.SetActive(false);

        if (enemy.GetEnemyType() == EnemyAvatar.EnemyTypes.Simple)
        {
            enemyCache.Enqueue(enemy);
        } //only one enemy type implemented yet
    }
Exemple #4
0
    private void Start()
    {
        for (int i = 0; i != 20; i++) //cache 20 enemies at first
        {
            EnemyAvatar enemy = Instantiate(enemyPrefab);
            enemy.gameObject.SetActive(false);

            enemyCache.Enqueue(enemy);
        }
    }
    //Constructs both parties and attaches this battle manager to each of them
    void Start()
    {
        //Assign manager
        pParty.SetBattleManager(this, ui, board);
        eParty.SetBattleManager(this, ui, board);

        //Organize EnemyParty
        ea = ow.encounteredParty;
        eParty.OrganizeParty(false, board.enemyCoordinates, board.scaling, ea.GetParty());

        //Assign opposite party
        pParty.otherPartyBody = eParty;
        eParty.otherPartyBody = pParty;
    }
    public EnemyAvatar GetEnemy(string enemyPath, Vector2 startPosition)
    {
        if (!EnemyFactory.Instance.availableEnemiesByType.ContainsKey(enemyPath))
        {
            EnemyFactory.Instance.availableEnemiesByType.Add(enemyPath, new Queue <EnemyAvatar>());
        }

        GameObject enemyObject = null;

        enemyObject = GetAvailableEnemy(enemyPath);
        enemyObject.SetActive(true);
        enemyObject.transform.position = startPosition;
        EnemyAvatar enemy = enemyObject.GetComponent <EnemyAvatar>();

        return(enemy);
    }
Exemple #7
0
    void OnTriggerEnter2D(Collider2D collider)
    {
        EnemyAvatar  enemyAvatar  = collider.gameObject.GetComponent <EnemyAvatar>();
        PlayerAvatar playerAvatar = collider.gameObject.GetComponent <PlayerAvatar>();

        if (type == BulletType.PlayerBullet && enemyAvatar != null)
        {
            enemyAvatar.TakeDamage(Damage);
            Destroy(gameObject);
            Debug.Log("Enemy hit");
        }
        else if (type == BulletType.EnemyBullet && playerAvatar != null)
        {
            playerAvatar.TakeDamage(Damage);
            Destroy(gameObject);
            Debug.Log("Player hit");
        }
    }
Exemple #8
0
    //Constructs both parties and attaches this battle manager to each of them
    void Start()
    {
        //Reset Battle Speed to normal
        gameSpeed = 1;

        //Assign manager
        pParty.SetBattleManager(this, ui, board);
        eParty.SetBattleManager(this, ui, board);

        //Organize EnemyParty
        ea = ow.encounteredParty;
        eParty.OrganizeParty(false, board.enemyCoordinates, board.scaling, ea.GetParty(), ea.addLevel);

        //Assign opposite party
        pParty.otherPartyBody = eParty;
        eParty.otherPartyBody = pParty;

        Destroy(ow.gameObject);
    }
Exemple #9
0
 void OnTriggerEnter2D(Collider2D other)
 {
     if ((this.Type == BulletType.SIMPLE) && (other.tag.Equals("Enemy")))
     {
         this.gameObject.SetActive(false);
         EnemyAvatar enemy = other.GetComponent <EnemyAvatar>();
         enemy.TakeDamage(this.damage);
     }
     else if ((this.type == BulletType.ENEMY) && (other.tag.Equals("Player")))
     {
         this.gameObject.SetActive(false);
         PlayerAvatar player = other.GetComponent <PlayerAvatar>();
         player.TakeDamage(this.damage);
     }
     else if (other.tag.Equals("PlayerBullet") || other.tag.Equals("EnemyBullet"))
     {
         this.gameObject.SetActive(false);
         other.gameObject.SetActive(false);
     }
 }
Exemple #10
0
    public EnemyAvatar GetEnemy(EnemyType enemyType, Vector2 initialPosition)
    {
        GameObject gameObject;

        switch (enemyType)
        {
        case EnemyType.SimpleShotEnemy:
            gameObject = EnemyFactory.Instance.SpawnFromPool("SimpleShotEnemy");
            break;

        case EnemyType.DiagonalShotEnemy:
            gameObject = EnemyFactory.Instance.SpawnFromPool("DiagonalShotEnemy");
            break;

        default:
            throw new System.Exception("Unknown enemy type." + enemyType);
        }

        EnemyAvatar enemy = gameObject.GetComponent <EnemyAvatar>();

        enemy.Position = initialPosition;
        return(enemy);
    }
Exemple #11
0
    public static EnemyAvatar GetEnemy(Vector2 position, Quaternion rotation, string prefabPath)
    {
        if (!EnemyFactory.Instance.availableEnemiesByType.ContainsKey(prefabPath))
        {
            EnemyFactory.Instance.availableEnemiesByType.Add(prefabPath, new Queue <EnemyAvatar>());
        }

        Queue <EnemyAvatar> availableEnemies = EnemyFactory.Instance.availableEnemiesByType[prefabPath];

        EnemyAvatar enemy = null;

        if (availableEnemies.Count > 0)
        {
            enemy = availableEnemies.Dequeue();
        }

        if (enemy == null)
        {
            // Instantiate a new bullet.
            GameObject gameObject = null;

            GameObject prefab = (GameObject)Resources.Load(prefabPath);
            gameObject = (GameObject)GameObject.Instantiate(prefab, position, rotation);

            gameObject.transform.parent = EnemyFactory.Instance.gameObject.transform;
            enemy            = gameObject.GetComponent <EnemyAvatar>();
            enemy.PrefabPath = prefabPath;
            EnemyFactory.Instance.enemyCount++;
            Debug.Log("Number of enemies instantiated = " + EnemyFactory.Instance.enemyCount);
        }

        enemy.Reset();
        enemy.Position = position;
        enemy.gameObject.SetActive(true);

        return(enemy);
    }
    private void RandomSpawn()
    {
        if (this.rateOfEnemySpawn <= 0f)
        {
            return;
        }

        float durationBetweenTwoEnemySpawn = 1f / this.rateOfEnemySpawn;

        if (Time.time < this.lastEnemySpawnTime + durationBetweenTwoEnemySpawn)
        {
            // The bullet gun is in cooldown, it can't fire.
            return;
        }

        // Spawn an enemy.
        EnemyType enemyType = EnemyType.SimpleShotEnemy;

        if (UnityEngine.Random.value < 0.2f)
        {
            enemyType = EnemyType.DiagonalShotEnemy;
        }

        float randomY = UnityEngine.Random.Range(-4f, 4f);

        // Instantiate a new enemy.
        Vector2     position = new Vector3(10f, randomY);
        EnemyAvatar enemy    = EnemyFactory.Instance.GetEnemy(enemyType, position);

        enemy.gameObject.transform.rotation = Quaternion.Euler(0f, 0f, 180f);

        this.lastEnemySpawnTime = Time.time;

        // Up the difficulty.
        this.rateOfEnemySpawn += this.rateOfEnemySpawn > this.maximumRateOfEnemySpawn ? 0f : this.rateOfEnemySpawnIncreaseStep;
    }
 // Start is called before the first frame update
 void Awake()
 {
     engines     = GetComponent <Engines>();
     enemyAvatar = GetComponent <EnemyAvatar>();
 }
Exemple #14
0
    // Update is called once per frame
    void Update()
    {
        //Instantiation des collectables
        if (Time.time > timeOfNextCollectibleInstantiation)
        {
            //On réinitialise le temps d'attente
            timeOfNextCollectibleInstantiation += collectibleApparitionCooldown;
            //On prépare le collectables qu'on va instantier en le choisissant
            Collectibles toInstantiate;
            float        index = Random.Range(0, weaponCollectibleApparitionRatio + healthCollectibleApparitionRatio + energyCollectibleApparitionRatio);
            //Selon le nombre tiré, on initialise tel ou tel collectable
            if (index < weaponCollectibleApparitionRatio)
            {
                toInstantiate = weaponCollectible;
            }
            else if (index < weaponCollectibleApparitionRatio + healthCollectibleApparitionRatio)
            {
                toInstantiate = healthCollectible;
            }
            else
            {
                toInstantiate = energyCollectible;
            }
            //On l'instantie
            Instantiate(toInstantiate, new Vector3(width, Random.Range(-height, height), 0), transform.rotation);
        }


        //Selon le mode de jeu on emploi telle ou telle méthode pour instantier un ennemi
        if (GameModeWithHealth)
        {
            if (levelTextAsset == null)
            {
                //Si il n'y a pas de niveau à chaerger, utiliser les valeurs de l'éditeur Unity
                if (Time.time > timeOfNextEnemyInstantiation && numberOfEnemyInstantiated < numberOfEnemyInLevel)
                {
                    timeOfNextEnemyInstantiation += enemyCooldown;
                    EnemyAvatar temp = EnemyFactory.Instance.GetEnemy();
                    temp.SetPosition(new Vector2(width, Random.Range(-height, height)));
                    //On décide de la nature du mouvement de l'ennemi
                    temp.GetComponent <AIEnemyBasicEngine> ().zigzag = (1 == Random.Range(0, 2));
                    //On prépare l'événement de sa mort
                    temp.OnEnemyDeath += OnEnemyDeath;
                    temp.OnEnemyDeath += UIManager.OnEnemyDeath;
                    //On met à jour le nombre d'ennemis déjà instanciés
                    numberOfEnemyInstantiated++;
                }
            }
            else                 //Sinon utiliser les données du XML donné
            {
                Debug.Log("prout");
                if (Time.time > timeOfNextEnemyInstantiation && numberOfEnemyInstantiated < numberOfEnemyInLevel)
                {
                    timeOfNextEnemyInstantiation += timeBetweenThisAndPreviousEnemy[numberOfEnemyInstantiated];
                    EnemyAvatar temp = EnemyFactory.Instance.GetEnemy();
                    temp.SetPosition(new Vector2(width, enemiesVerticalSpawnPositions[numberOfEnemyInstantiated]));
                    numberOfEnemyInstantiated++;
                    temp.GetComponent <AIEnemyBasicEngine> ().zigzag = (1 == Random.Range(0, 2));
                    temp.OnEnemyDeath += OnEnemyDeath;
                    temp.OnEnemyDeath += UIManager.OnEnemyDeath;
                }
            }
        }
        else if (!GameModeWithHealth)
        {
            if (Time.time > timeOfNextEnemyInstantiation)
            {
                timeOfNextEnemyInstantiation += enemyCooldown;
                //EnemyAvatar temp = Instantiate (enemy, new Vector3 (width, Random.Range (-height, height), 0), transform.rotation);
                EnemyAvatar temp = EnemyFactory.Instance.GetEnemy();
                temp.SetPosition(new Vector2(width, Random.Range(-height, height)));
                temp.GetComponent <AIEnemyBasicEngine>().zigzag = (1 == Random.Range(0, 2));
                temp.OnEnemyDeath += OnEnemyDeath;
                temp.OnEnemyDeath += UIManager.OnEnemyDeath;
            }
        }
    }
Exemple #15
0
 private void Awake()
 {
     encounteredParty = activeEnemies[0]; //Default encountered enemy - avoid NULL errors
 }
Exemple #16
0
 void Start()
 {
     enemy = GetComponent <EnemyAvatar>();
     InvokeRepeating(nameof(FireAtRandomTimes), 1f, 2f);
 }
Exemple #17
0
 public void Relase(EnemyAvatar enemy)
 {
     stackEnnemies.Push(enemy);
     enemy.gameObject.SetActive(false);
 }
Exemple #18
0
 public void FonctionSpawn(Vector2 position, string prefabPath)
 {
     EnemyAvatar enemy = EnemyFactory.Instance.GetEnemy(prefabPath, position);
 }
Exemple #19
0
 public void Release(EnemyAvatar enemy)
 {
     enemy.gameObject.SetActive(false);
 }