public void AttemptBuyZone(RecruitZone zoneData) { if (currentPlayer.GetTreats() >= zoneData.cost) { currentPlayer.UpdateTreats(currentPlayer.GetTreats() - zoneData.cost); StartPlacement(zoneData); } }
public void StartPlacement(RecruitZone zoneData) { uiManager.StartPlacement(); List <Unit> rolled = gachaMachine.Roll(currentTurn, zoneData); UpdateFurthestColumnCanSpawn(); currentPlayer.StartRecruiting(rolled); }
// 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); }