Esempio n. 1
0
 private void ShuffleList(List <P1Stats> ts)
 {
     for (int i = 0; i < ts.Count; i++)
     {
         P1Stats temp        = ts[i];
         int     randomIndex = Random.Range(i, ts.Count);
         ts[i]           = ts[randomIndex];
         ts[randomIndex] = temp;
     }
 }
Esempio n. 2
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
        }
    }
    public void InitializePlayerStats(P1Stats baselineStats)
    {
        runtimePlayerStats.baseAttackDamage = baselineStats.baseAttackDamage;
        runtimePlayerStats.maxHitPoints     = baselineStats.maxHitPoints;
        runtimePlayerStats.moveSpeed        = baselineStats.moveSpeed;

        runtimePlayerStats.attackRate = baselineStats.attackRate;
        rangedCooldownMaxTime         = runtimePlayerStats.attackRate;

        runtimePlayerStats.jumpForce     = baselineStats.jumpForce;
        runtimePlayerStats.rangedAttacks = baselineStats.rangedAttacks;


        runtimePlayerStats.meleeAttacks = baselineStats.meleeAttacks;
        if (runtimeChoices.chosenHero.characterSprite != null)
        {
            playerSprite = runtimeChoices.chosenHero.characterSprite;
        }
        else
        {
            playerSprite = defaultSprite;
        }
        GetComponent <SpriteRenderer>().sprite = playerSprite;

        BoxCollider2D boxColl2D = GetComponent <BoxCollider2D>();

        boxColl2D.offset = runtimeChoices.chosenHero.colliderOffset;
        boxColl2D.size   = runtimeChoices.chosenHero.colliderSize;

        currentHitPoints = baselineStats.startingHitPoints;
        playerHPEvent.Raise(currentHitPoints);
        //healthBar.VisualiseHealthChange(baselineStats.startingHitPoints);

        runtimeChoices.baselineItem = baselineStats.startItem;

        //Weapontypes addons:
        switch (baselineStats.startItem.weaponType)
        {
        case PlayerItems.WeaponType.None:
            //Do nothing
            break;

        case PlayerItems.WeaponType.ExplodingShots:
            hasExplodingShots   = true;
            shotgunImage.sprite = baselineStats.startItem.itemSprite;
            shotgunImage.gameObject.SetActive(true);
            break;

        case PlayerItems.WeaponType.Gatlinggun:
            hasGatlingGun = true;
            runtimePlayerStats.attackRate = runtimePlayerStats.attackRate * gatlingSpeedMultiplier;
            rangedCooldownMaxTime         = runtimePlayerStats.attackRate;
            shotgunImage.sprite           = baselineStats.startItem.itemSprite;
            shotgunImage.gameObject.SetActive(true);
            break;

        case PlayerItems.WeaponType.Shotgun:
            hasShotgun          = true;
            shotgunImage.sprite = baselineStats.startItem.itemSprite;
            shotgunImage.gameObject.SetActive(true);
            break;
        }
    }