示例#1
0
    public virtual void NotifyDie(GameObject enemy, bool killedByPlayer)
    {
        BasicEnnemy e = enemy.GetComponent <BasicEnnemy>();

        e.Died = true;

        soundManager.Play("DeathEnemy", false);
        if (e == cm.lockEnemy)
        {
            cm.lockEnemy = null;
        }

        // GOLD
        if (killedByPlayer)
        {
            Vector3    randomPos = new Vector3();
            GameObject c;
            float      delay;

            for (int i = 1; i <= (e.NbrGold / 5); i++)
            {
                randomPos = UnityEngine.Random.insideUnitCircle * 7;
                c         = Instantiate(FloatingCoins, enemy.transform.position + randomPos, Quaternion.identity);
                delay     = (float)i / 10.0f;
                c.GetComponent <CoinAnimation> ().Play(delay);
            }
        }

        if (WaveManager)
        {
            WaveManager.EnemyDie(enemy);
        }
    }
示例#2
0
        protected void checkComboBoss()
        {
            bool isUsed = false;

            foreach (GameObject genemy in gm.EnemiesOnScreen)
            {
                BasicEnnemy enemy = genemy.GetComponent <BasicEnnemy>();
                Result      res   = checkCombination(enemy);
                if (res == Result.Complete)
                {
                    clearCombination();
                    isUsed = true;
                    break;
                }
                else if (res == Result.Partial)
                {
                    isUsed = true;
                }
            }
            if (!isUsed)
            {
                gm.Combination.Reset();
                gm.ResetComboPoint();
            }
        }
示例#3
0
 // Get the type of button pressed and update the Combination Handler
 public void ButtonPressed(CombinationHandler.Button button)
 {
             #if UNITY_EDITOR
     if (button != CombinationHandler.Button.POWER_UP)
     {
         Combination.AddButtonToCombination(button);
     }
     else
     {
         foreach (GameObject g in EnemiesOnScreen)
         {
             BasicEnnemy e = g.GetComponent <BasicEnnemy>();
             e.DecreaseLifePoint(1);
             if (e.Died)
             {
                 ComboCount += 1;
             }
         }
         // You can change this if you don t like this behaviour or for testing abilities.
         Debug.Log("I changed the ability behaviour in Unity editor. You press the ability to kill every enemy (better for debugging). - Victor -");
     }
             #else
     if (button != CombinationHandler.Button.POWER_UP)
     {
         Combination.AddButtonToCombination(button);
     }
     else if (AbilityEnabled && powerUp)
     {
         powerUp.activate();
         SetAbilityActive(false);
     }
             #endif
 }
示例#4
0
    protected void checkComboBoss()
    {
        bool isUsed = false;

        foreach (GameObject genemy in gm.EnemiesOnScreen)
        {
            BasicEnnemy enemy = genemy.GetComponent <BasicEnnemy>();
            Result      res   = checkCombination(enemy);
            if (res == Result.Complete)
            {
                clearCombination();
                isUsed = true;
                break;
            }
            else if (res == Result.Partial)
            {
                isUsed = true;
            }
        }
        if (!isUsed)
        {
            soundManager.Play("WrongCombo", false);
            if (immunity && error != 0)
            {
                error -= 1;
                gm.Combination.PopButton();
            }
            else
            {
                error = 1;
                gm.Combination.Reset();
                gm.ResetComboPoint();
            }
        }
    }
示例#5
0
 protected void failCombination(BasicEnnemy enemy)
 {
     if (!immunity || error == 0)
     {
         enemy.FeedBackCombination(gm.Combination, true);
     }
 }
示例#6
0
 protected void clearCombination()
 {
     foreach (GameObject genemy in gm.EnemiesOnScreen)
     {
         BasicEnnemy enemy = genemy.GetComponent <BasicEnnemy>();
         enemy.FeedBackCombination(gm.Combination, true);
     }
 }
示例#7
0
 protected void successCombination(BasicEnnemy enemy)
 {
     enemy.DecreaseLifePoint(1);
     gm.AddScore(10, Vector3.zero);     //?
     gm.AddComboPoint(1, Vector3.zero); //?
     gm.Combination.Reset();
     enemy.FeedBackCombination(gm.Combination, true);
 }
示例#8
0
    void Summon()
    {
        // The wave continue
        if (EnemiesForCurrentWave.Count >= 1)
        {
            Transform BasicEnemy  = EnemiesForCurrentWave [0].prefab.transform;
            int       randomIndex = Random.Range(0, SpawnerPositionList.Count - 1);

            randomIndex = AdjustSpawn(randomIndex, BasicEnemy.gameObject);

            // Summon a BOSS
            if (EnemiesForCurrentWave [0].t == ConfigurationEnemy.Type.Boss)
            {
                GameManager.instance.isBoss = true;
                randomIndex = SpawnerPositionList.Count / 2 - ((SpawnerPositionList.Count % 2 == 0) ? 1 : 0);
                SoundManager.instance.PlayerMusic("MusicBossInGame");
            }
            else
            {
                GameManager.instance.isBoss = false;
            }

            // Instanciate a basic enemy
            Vector3 pos = SpawnerPositionList [randomIndex];

            float ysize   = BasicEnemy.GetComponent <BoxCollider> ().size.y;
            float ycenter = BasicEnemy.GetComponent <BoxCollider> ().center.y;
            float yscale  = BasicEnemy.GetComponent <Transform> ().localScale.y;
            pos.y -= (ysize * (yscale / 2)) + (ycenter * yscale);

            BasicEnnemy enemy = Instantiate(BasicEnemy.gameObject, pos, Quaternion.identity).GetComponent <BasicEnnemy> ();
            SpawnLineInfo [randomIndex] = enemy.gameObject;

            if (!enemy)
            {
                Debug.LogError("[WaveManager]Can't instanciate the enemy !");
            }

            // SETUP the new enemy
            enemy.UpdateWithConfig(EnemiesForCurrentWave [0]);

            combinationGenerator.FixedSize = enemy.CombinationSize;
            enemy.Combination = combinationGenerator.GetListButton();

            enemy.Setup();

            NbrEnemiesOnScreen++;
            GameManager.instance.EnemiesOnScreen.Add(enemy.gameObject);

            if (EnemiesForCurrentWave.Count >= 2)
            {
                TimeLeft = EnemiesForCurrentWave [0].SpawnCoolDown;
            }

            EnemiesForCurrentWave.RemoveAt(0);
        }
    }
示例#9
0
    protected IEnumerator desactivate(float delay)
    {
        yield return(gm.WaitFor(delay));

        foreach (GameObject g in gm.EnemiesOnScreen)
        {
            BasicEnnemy e = g.GetComponent <BasicEnnemy>();
            e.slow = 1;
        }
    }
示例#10
0
    public BasicEnnemy getNearestEnnemy()
    {
        BasicEnnemy Ennemy = gm.EnemiesOnScreen[0].GetComponent <BasicEnnemy>();

        foreach (GameObject e in gm.EnemiesOnScreen)
        {
            if (Ennemy.transform.position.y > e.transform.position.y)
            {
                Ennemy = e.GetComponent <BasicEnnemy>();
            }
        }
        return(Ennemy);
    }
示例#11
0
    protected IEnumerator desactivate(float delay)
    {
        yield return(gm.WaitFor(delay));

        foreach (GameObject g in gm.EnemiesOnScreen)
        {
            BasicEnnemy e = g.GetComponent <BasicEnnemy>();
            e.IsMoving = true;
            if (Level >= 4)
            {
                e.slow *= 0.75f;
            }
        }
    }
示例#12
0
 override public void activate()
 {
     /*    if (Charge < ChargeMax)
      *  {
      *      Debug.Log("Not full");
      *      return;
      *  }*/
     Charge = 0;
     foreach (GameObject g in gm.EnemiesOnScreen)
     {
         BasicEnnemy e = g.GetComponent <BasicEnnemy>();
         e.DecreaseLifePoint(Level > 1 ? 3 : 1);
         if (e.Died)
         {
             gm.ComboCount += 1;
         }
     }
 }
示例#13
0
 protected void checkComboNormal()
 {
     if (lockEnemy == null)
     {
         lockEnemy = gm.EnemiesOnScreen[0].GetComponent <BasicEnnemy>();
         foreach (GameObject enemy in gm.EnemiesOnScreen)
         {
             if (lockEnemy.transform.position.y > enemy.transform.position.y)
             {
                 lockEnemy = enemy.GetComponent <BasicEnnemy>();
             }
         }
     }
     if (checkCombination(lockEnemy) == Result.Failed)
     {
         gm.Combination.Reset();
         gm.ResetComboPoint();
     }
 }
示例#14
0
    protected void successCombination(BasicEnnemy enemy)
    {
        enemy.DecreaseLifePoint(1);
        error = 1;
        soundManager.Play("RightCombo", false);

        // Add score
        float   y = enemy.gameObject.GetComponent <BoxCollider>().size.y *enemy.gameObject.transform.localScale.y;
        Vector3 enemyTopPosition = enemy.gameObject.transform.position;

        enemyTopPosition.y += (y / 2);

        gm.AddScore(10, enemyTopPosition);

        gm.AddComboPoint(1, enemy.transform.position);
        gm.Combination.Reset();
        enemy.FeedBackCombination(gm.Combination, true);
        if (gm.powerUp)
        {
            gm.powerUp.ChargePowerUp(ChargeByCombo);
        }
    }
    void MakeBoss()
    {
        string PathToEnemiesPrefab = "Prefabs/Enemies/";
        string type = "BlackPawn";

        GameObject BasicEnemy = Resources.Load <GameObject>(PathToEnemiesPrefab + type);

        if (!BasicEnemy)
        {
            Debug.LogError("Impossible to instantiate " + type + " (Path: " + PathToEnemiesPrefab + type + ")");
        }

        int randomIndex = SpawnerPositionList.Count / 2 - ((SpawnerPositionList.Count % 2 == 0) ? 1 : 0);

        RectTransform TopPos = GameObject.Find("Canvas/TopBackground").GetComponent <RectTransform>();

        Vector3 pos = SpawnerPositionList[randomIndex];

        pos.y = TopPos.position.y;
        float ysize   = BasicEnemy.GetComponent <BoxCollider>().size.y;
        float ycenter = BasicEnemy.GetComponent <BoxCollider>().center.y;
        float yscale  = BasicEnemy.GetComponent <Transform>().localScale.y;

        pos.y -= (ysize * (yscale / 2)) + (ycenter * yscale);

        BasicEnnemy enemy = Instantiate(BasicEnemy.gameObject, pos, Quaternion.identity).GetComponent <BasicEnnemy>();

        enemy.GetComponent <BasicEnnemy>().Init(Random.Range(2, 5), 1, Random.Range(1, 4));
        if (!enemy)
        {
            Debug.LogError("[WaveManager]Can't instanciate the enemy !");
        }

        combinationGenerator.FixedSize = enemy.CombinationSize;
        enemy.Combination = combinationGenerator.GetListButton();
        enemy.Setup();
        NbrEnemiesOnScreen++;
        GameManager.instance.EnemiesOnScreen.Add(enemy.gameObject);
    }
示例#16
0
 protected void checkComboNormal()
 {
     if (lockEnemy == null)
     {
         lockEnemy = getNearestEnnemy();
     }
     if (checkCombination(lockEnemy) == Result.Failed)
     {
         soundManager.Play("WrongCombo", false);
         if (immunity && error != 0)
         {
             error -= 1;
             gm.Combination.PopButton();
         }
         else
         {
             error = 1;
             gm.Combination.Reset();
             gm.ResetComboPoint();
         }
     }
 }
    public override void NotifyDie(GameObject enemy, bool killedByPlayer)
    {
        BasicEnnemy e = enemy.GetComponent <BasicEnnemy>();

        e.Died = true;

        soundManager.Play("DeathEnemy", false);
        if (e == cm.lockEnemy)
        {
            cm.lockEnemy = null;
        }

        // GOLD
        if (killedByPlayer)
        {
            Vector3    randomPos = new Vector3();
            GameObject c;
            float      delay;

            for (int i = 1; i <= (e.NbrGold / 5); i++)
            {
                randomPos = Random.insideUnitCircle * 7;
                c         = Instantiate(FloatingCoins, enemy.transform.position + randomPos, Quaternion.identity);
                delay     = (float)i / 10.0f;
                c.GetComponent <CoinAnimation>().Play(delay);
            }
        }

        NbrEnemiesOnScreen--;

        NumberOfEnemiesDestroyed++;
        if (NumberOfEnemiesDestroyed % 8 == 0)
        {
            Debug.Log("Add difficulty");
            DifficultyLevel++;
        }
    }
示例#18
0
    protected Result checkCombination(BasicEnnemy enemy)
    {
        Result ret = Result.Failed;

        if (gm.Combination.CompareCombination(enemy.getCombination()))
        {
            if (gm.Combination.isSameCombination(enemy.getCombination()))
            {
                successCombination(enemy);
                ret = Result.Complete;
            }
            else
            {
                incompleteCombination(enemy);
                ret = Result.Partial;
            }
        }
        else
        {
            failCombination(enemy);
            ret = Result.Failed;
        }
        return(ret);
    }
示例#19
0
 override public void activate()
 {
     if (Charge < ChargeMax)
     {
         Debug.Log("Not full");
         return;
     }
     Debug.Log("Activate");
     Charge = 0;
     foreach (GameObject g in gm.EnemiesOnScreen)
     {
         BasicEnnemy e = g.GetComponent <BasicEnnemy>();
         if (Level >= 4)
         {
             e.reverse = true;
         }
         e.slow *= Level >= 2 ? 0.3f : 0.6f;
     }
     if (Level >= 4)
     {
         StartCoroutine(desactivateReverse(2));
     }
     StartCoroutine(desactivate(5));
 }
示例#20
0
 protected void incompleteCombination(BasicEnnemy enemy)
 {
     enemy.FeedBackCombination(gm.Combination);
 }
    void MakeEnemy()
    {
        // Instanciate a basic enemy
        if (!CheckBoss)
        {
            // Find a random kind of enemy
            string PathToEnemiesPrefab = "Prefabs/UnlimitedEnemies/";
            string type = "Robot01";
            switch (Random.Range(0, 3))
            {
            case 0:
                type = "Robot01";
                break;

            case 1:
                type = "Robot02";
                break;

            case 2:
                type = "Robot03";
                break;

            default:
                break;
            }

            // Get enemy prefab
            GameObject BasicEnemy = Resources.Load <GameObject>(PathToEnemiesPrefab + type);

            if (!BasicEnemy)
            {
                Debug.LogError("Impossible to instantiate " + type + " (Path: " + PathToEnemiesPrefab + type + ")");
            }

            // Get enemy spawn position (random)
            int randomIndex = Random.Range(0, SpawnerPositionList.Count - 1);
            randomIndex = AdjustSpawn(randomIndex, BasicEnemy.gameObject);

            RectTransform TopPos = GameObject.Find("Canvas/TopBackground").GetComponent <RectTransform>();

            Vector3 pos = SpawnerPositionList[randomIndex];
            pos.y = TopPos.position.y;

            float ysize   = BasicEnemy.GetComponent <BoxCollider>().size.y;
            float ycenter = BasicEnemy.GetComponent <BoxCollider>().center.y;
            float yscale  = BasicEnemy.GetComponent <Transform>().localScale.y;
            pos.y -= (ysize * (yscale / 2)) + (ycenter * yscale);

            // Instanciate the enemy
            BasicEnnemy enemy = Instantiate(BasicEnemy.gameObject, pos, Quaternion.identity).GetComponent <BasicEnnemy>();
            SpawnLineInfo [randomIndex] = enemy.gameObject;

            // Set up enemy data (random)
            int nbGold = Random.Range(0, 2) * 5;

            int nbLife;
            int nbButton;

            if (DifficultyLevel == 1)
            {
                nbLife   = Random.Range(1, 3);
                nbButton = Random.Range(2, 4);
            }
            else if (DifficultyLevel == 2)
            {
                nbLife   = Random.Range(2, 4);
                nbButton = 3;
            }
            else if (DifficultyLevel == 3)
            {
                nbLife   = Random.Range(2, 4);
                nbButton = Random.Range(3, 5);
            }
            else if (DifficultyLevel == 4)
            {
                nbLife   = Random.Range(3, 5);
                nbButton = 4;
            }
            else
            {
                nbLife   = Random.Range(3, 5);
                nbButton = Random.Range(4, 6);
            }

            enemy.Init(nbLife, nbGold, nbButton);
            if (!enemy)
            {
                Debug.LogError("[WaveManager]Can't instanciate the enemy !");
            }

            combinationGenerator.FixedSize = enemy.CombinationSize;
            enemy.Combination = combinationGenerator.GetListButton();

            enemy.Speed = 0.3f;

            enemy.Setup();
            NbrEnemiesOnScreen++;
            GameManager.instance.EnemiesOnScreen.Add(enemy.gameObject);

            // Update BOSS "timer"
            CheckBossEnergy += 0;

            if (CheckBossEnergy >= 100)
            {
                CheckBoss = true;
            }
        }

        // Instanciate a boss
        else
        {
            if (NbrEnemiesOnScreen == 0)
            {
                MakeBoss();
                CheckBossEnergy = 0;
            }
        }
    }
示例#22
0
 protected void failCombination(BasicEnnemy enemy)
 {
     enemy.FeedBackCombination(gm.Combination, true);
 }