Esempio n. 1
0
 private void ShuffleList(EnemyModifier[] ts)
 {
     for (int i = 0; i < ts.Length; i++)
     {
         EnemyModifier temp        = ts[i];
         int           randomIndex = Random.Range(i, ts.Length);
         ts[i]           = ts[randomIndex];
         ts[randomIndex] = temp;
     }
 }
Esempio n. 2
0
 public void Add(EnemyModifier enemyModifier)
 {
     if (_nextModifier != null)
     {
         _nextModifier.Add(enemyModifier);
     }
     else
     {
         _nextModifier = enemyModifier;
     }
 }
Esempio n. 3
0
    public bool HasModifier(EnemyModifier mod)
    {
        foreach (EnemyModifier em in modifiers)
        {
            if (em == mod)
            {
                return(true);
            }
        }

        return(false);
    }
    IEnumerator SpawnEnemyAfterDelay(float delay)
    {
        yield return(new WaitForSeconds(delay));

        int   runTimeLoopCount = runtimeChoices.runTimeLoopCount;
        Enemy enemy            = runtimeChoices.enemies[runTimeLoopCount - 1];

        Enemy.EnemyType enemyType = enemy.enemyType;

        Vector3 deltaVector = new Vector3(Random.Range(0, 60), 0, 0);

        GameObject     go;
        EnemyBehaviour enemyBehaviour;

        switch (enemyType)
        {
        case Enemy.EnemyType.None:
            go             = Instantiate(enemyPrefab, enemySpawnPos - deltaVector, Quaternion.identity);
            enemyBehaviour = go.GetComponent <EnemyBehaviour>();
            break;

        case Enemy.EnemyType.Agile:
            go             = Instantiate(agileEnemyPrefab, enemySpawnPos - deltaVector, Quaternion.identity);
            enemyBehaviour = go.GetComponent <AgileEnemy>();
            break;

        case Enemy.EnemyType.Orb:
            go             = Instantiate(orbEnemyPrefab, enemySpawnPos - deltaVector, Quaternion.identity);
            enemyBehaviour = go.GetComponent <OrbEnemy>();
            break;

        case Enemy.EnemyType.Splitter:
            //TODO: Make splitter:
            go             = Instantiate(splitterEnemyPrefab, enemySpawnPos - deltaVector, Quaternion.identity);
            enemyBehaviour = go.GetComponent <SplitterEnemy>();
            break;

        default:
            //Default is only here to ensure that enemyBehaviour is always assigned for future use in this method call.
            go             = Instantiate(enemyPrefab, enemySpawnPos - deltaVector, Quaternion.identity);
            enemyBehaviour = go.GetComponent <EnemyBehaviour>();
            break;
        }


        EnemyModifier[] modifiers = new EnemyModifier[] { runtimeChoices.enemyModifiers[runTimeLoopCount - 1] };
        enemyBehaviour.InitalizeEnemy(enemy, modifiers);        //take account for boss-amount of modifiers

        monsterSpawnedEvent.Raise();
    }
    public void Revive(EnemyBehaviour enemyToApplyTo)
    {
        FindObjectOfType <AudioList>().resurrection.Play();
        Enemy agent = enemyToApplyTo.agent;

        Enemy.EnemyType enemyType = agent.enemyType;
        Spawner         spawner   = FindObjectOfType <Spawner>();

        GameObject go;

        switch (enemyType)
        {
        case Enemy.EnemyType.Agile:
            go = Instantiate(spawner.agileEnemyPrefab, enemyToApplyTo.transform.position, Quaternion.identity);
            break;

        case Enemy.EnemyType.Orb:
            go = Instantiate(spawner.orbEnemyPrefab, enemyToApplyTo.transform.position, Quaternion.identity);
            break;

        case Enemy.EnemyType.Splitter:
            go = Instantiate(spawner.splitterEnemyPrefab, enemyToApplyTo.transform.position, Quaternion.identity);
            break;

        default:
            go = Instantiate(spawner.enemyPrefab, enemyToApplyTo.transform.position, Quaternion.identity);
            break;
        }

        EnemyBehaviour newEnemy = go.GetComponent <EnemyBehaviour>();

        newEnemy.name = name;
        newEnemy.spriteRenderer.sprite = agent.sprite;
        newEnemy.nameUI.SetText(enemyToApplyTo.name);

        newEnemy.nameUI = enemyToApplyTo.nameUI;

        newEnemy.currentHealth = agent.health;
        newEnemy.maxHealth     = newEnemy.currentHealth;
        newEnemy.healthBar.UpdateHPValues(newEnemy.currentHealth, newEnemy.maxHealth);

        EnemyModifier[] enemyModifiers = new EnemyModifier[0];

        newEnemy.InitalizeEnemy(agent, enemyModifiers);
    }
Esempio n. 6
0
    private void ApplyModifier(EnemyModifier _modifier)
    {
        switch (_modifier.modifierType)
        {
        case EnemyModifier.ModifierType.ShoulderCannon:
            _modifier.ApplyShoulderCannonVisuals(this);
            hasCannon = true;
            break;

        case EnemyModifier.ModifierType.Blessed:
            _modifier.ApplyHolyVisuals(this);
            isBlessed = true;
            break;

        case EnemyModifier.ModifierType.Angry:
            _modifier.ApplyAngrySprite(this);
            isAngry = true;
            break;
        }
    }
Esempio n. 7
0
    private void Awake()
    {
        _musicManager = FindObjectOfType <MusicManager>();

        choice = 4; // the choice is set back to the default value
        try
        {
            customSceneManager = GameObject.Find("SceneManager").GetComponent <CustomSceneManager>();
        }
        catch
        {
        }

        if (choiceType == "Character")
        {
            #region InitializeCharacterSelection
            ShuffleList(characterpool.characterStats);
            for (int i = 0; i < characterChoices.Length; i++)
            {
                P1Stats characterStats = characterpool.characterStats[i];
                characterSprites[i].sprite = characterStats.characterSprite;
                characterNames[i].text     = characterStats.myName;
                characterChoices[i]        = characterStats;
            }
            #endregion InitializeCharacterSelection
        }

        if (choiceType == "Item")
        {
            #region InitializeItemSelection


            int poolLenght = AllPossiblePlayerItems.Length;
            poolLenght -= runtimeChoices.runTimeLoopCount;

            playerItemPool = new PlayerItems[poolLenght];
            AvailableItems = new List <PlayerItems>();

            foreach (PlayerItems item in AllPossiblePlayerItems)
            {
                AvailableItems.Add(item); // add the item to the available items to choose from
                if (item == runtimeChoices.baselineItem)
                {
                    AvailableItems.Remove(item);
                    Debug.Log("Removing this item: " + item.itemName);
                }
                for (int i = 0; i < AllPossiblePlayerItems.Length; i++)
                {
                    try
                    {
                        if (item == runtimeChoices.playerItems[i])
                        {
                            AvailableItems.Remove(item);
                            Debug.Log("Removing this item: " + item.itemName);
                        }
                    }
                    catch
                    {
                    }
                }
            }

            for (int i = 0; i < AvailableItems.Count; i++)
            {
                playerItemPool[i] = AvailableItems[i];
            }

            if (runtimeChoices.runTimeLoopCount != 4)
            {
                int random  = Random.Range(0, playerItemPool.Length);
                int random2 = random;
                if (playerItemPool.Length <= 1)
                {
                    random2 = Random.Range(0, playerItemPool.Length);
                }

                while (random2 == random)
                {
                    Debug.Log("random2 was the same as random, rerolling");
                    random2 = Random.Range(0, playerItemPool.Length);
                }


                playerItemChoices[0]       = playerItemPool[random];
                playerItemChoices[1]       = playerItemPool[random2];
                choiceNameText[0].text     = playerItemChoices[0].name;
                choiceNameText[1].text     = playerItemChoices[1].name;
                itemImageTargets[0].sprite = playerItemChoices[0].itemSprite;
                itemImageTargets[1].sprite = playerItemChoices[1].itemSprite;
            }
            else
            {
                itemImageTargets[0].gameObject.SetActive(false);
                itemImageTargets[1].gameObject.SetActive(false);
                theOnlyButton.SetActive(true);
                theOnlyButton.GetComponent <Image>().sprite = theGrandPrize;
                theOnlyButton.GetComponentInChildren <TextMeshProUGUI>().text = "Sweet Victory";
            }

            #endregion InitializeItemSelection
        }

        if (choiceType == "Minion") // naming inconsistency between Minion and Enemy
        {
            #region InitializeMinionSelection
            ShuffleList(enemyPool);
            for (int i = 0; i < enemyModifierChoices.Length; i++)
            {
                Enemy enemy = enemyPool[i];
                enemySprites[i].sprite = enemy.sprite;
                enemyNames[i].text     = enemy.name;
                enemyChoices[i]        = enemy;
            }
            #endregion InitializeMinionSelection
        }

        if (choiceType == "Modifier")
        {
            #region InitializeModifierSelection
            ShuffleList(modifierPool);
            for (int i = 0; i < enemyModifierChoices.Length; i++)
            {
                EnemyModifier modifier = modifierPool[i];
                modifierSprites[i].sprite = modifier.sprite;
                modifierNames[i].text     = modifier.name;
                enemyModifierChoices[i]   = modifier;
            }
            #endregion InitializeModifierSelection
        }

        if (choiceType == "Theme")
        {
            #region InitializeThemeSelection

            ShuffleList(environmentThemePool.environmentPool);
            for (int i = 0; i < environmentThemeChoices.Length; i++)
            {
                Environments environmentsTheme = environmentThemePool.environmentPool[i];
                themeSprites[i].sprite     = environmentsTheme.environments[0].environmentSprite;
                themeNames[i].text         = environmentsTheme.environments[0].environmentName;
                environmentThemeChoices[i] = environmentsTheme.environments[0];
            }

            #endregion InitializeThemeSelection
        }
    }
Esempio n. 8
0
 public void AddEnemyModifier(EnemyModifier em)
 {
     enemymodifiers.Add(em);
 }
Esempio n. 9
0
 void Start()
 {
     clipManager = GetComponent <EnemyClipManager>();
     modifier    = GetComponent <EnemyModifier>();
 }
Esempio n. 10
0
 private void Start()
 {
     modifier = GetComponent <EnemyModifier>();
     done     = false;
 }