Is it at all possible to make a more efficient version of this function that I've made?
What's written below is my code for distributing randomized stat points, made it over a year ago but abandoned it due to time constraints. I might reuse it but I need some fresh eyes to see how I could improve upon this function.
randomizeBase() This function randomizes base stats, the default base stats are all equal to 5 without the distribution itself. If a point was distributed, 1 should be deducted from the available points, but if it was already allocated there before, it should gradually increase each time a point was allotted. Available point deduction should be 1, 3, 6, 10, 15.
int availablePoints set the number of available points to be distributed.
int[] stat list to randomize stat distribution of primary stats
int[] statCounter list to determine or count number of times it's been distributed.
while (availablePoints > 0) While loop to check if availablePoints is still greater than 0.
switch(statCounter[randomIndex]) I used a switch function to check if a stat was already allocated by a number of times.
stat[randomIndex] += 1; Increases the stat point of a randomized stat.
availablePoints -= 1; Decreases the available points that can be distributed, increases sequentially.
public void randomizeBase()
{
int availablePoints = 20;
int[] stat = {0, 0, 0, 0, 0};
int[] statCounter = {0, 0, 0, 0, 0};
while (availablePoints > 0) {
int randomIndex = UnityEngine.Random.Range(0, 5);
switch(statCounter[randomIndex])
{
case 0:
if(availablePoints > 0)
{
stat[randomIndex] += 1;
availablePoints -= 1;
}
break;
case 1:
if(availablePoints > 2)
{
stat[randomIndex] += 1;
availablePoints -= 3;
}
break;
case 2:
if(availablePoints > 5)
{
stat[randomIndex] += 1;
availablePoints -= 6;
}
break;
case 3:
if(availablePoints > 9)
{
stat[randomIndex] += 1;
availablePoints -= 10;
}
break;
case 4:
if(availablePoints > 14)
{
stat[randomIndex] += 1;
availablePoints -= 15;
}
break;
default:
break;
}
statCounter[randomIndex] += 1;
}
power += stat[0];
constitution += stat[1];
intelligence += stat[2];
agility += stat[3];
sensibility += stat[4];
}
I really hope you guys can help me with this, any new ideas or methods are gladly appreciated. Thank you!