예제 #1
0
 public void AttemptBuyZone(RecruitZone zoneData)
 {
     if (currentPlayer.GetTreats() >= zoneData.cost)
     {
         currentPlayer.UpdateTreats(currentPlayer.GetTreats() - zoneData.cost);
         StartPlacement(zoneData);
     }
 }
예제 #2
0
    public void StartPlacement(RecruitZone zoneData)
    {
        uiManager.StartPlacement();

        List <Unit> rolled = gachaMachine.Roll(currentTurn, zoneData);

        UpdateFurthestColumnCanSpawn();

        currentPlayer.StartRecruiting(rolled);
    }
예제 #3
0
    // Will roll count units,
    public List <Unit> Roll(PlayerType roller, RecruitZone zoneData)
    {
        float[] currentDist = zoneData.dist;
        int     count       = zoneData.summonCount;

        List <Unit> recruits = new List <Unit>(count);

        for (int rollIndex = 0; rollIndex < count; rollIndex++)
        {
            float random = Random.value;

            float sumRate = 0;

            for (int rarity = 0; rarity < 4; rarity++)
            {
                sumRate += currentDist[rarity];

                if (random <= sumRate)
                {
                    Unit recruit;
                    if (roller == PlayerType.DOG)
                    {
                        recruit            = Utils.RandomFromList(dogUnits[rarity]);
                        recruit.playertype = PlayerType.DOG;
                    }
                    else
                    {
                        recruit            = Utils.RandomFromList(catUnits[rarity]);
                        recruit.playertype = PlayerType.CAT;
                    }
                    recruit.rarity = rarity;
                    recruits.Add(recruit);

                    break;
                }
            }
        }

        return(recruits);
    }