package server;
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
import constants.GameConstants;
public class RandomRewards {
private static List<Integer> compiledGold = null, compiledSilver = null, compiledFishing = null, compiledPeanut = null,
compiledEvent = null, compiledEventC = null, compiledEventB = null, compiledEventA = null,
compiledDrops = null, compiledDropsB = null, compiledDropsA = null, tenPercent = null;
static {
// Gold Box
List<Integer> returnArray = new ArrayList<Integer>();
processRewards(returnArray, GameConstants.goldrewards);
compiledGold = returnArray;
// Silver Box
returnArray = new ArrayList<Integer>();
processRewards(returnArray, GameConstants.silverrewards);
compiledSilver = returnArray;
// Fishing Rewards
returnArray = new ArrayList<Integer>();
processRewards(returnArray, GameConstants.fishingReward);
compiledFishing = returnArray;
// Event Rewards
returnArray = new ArrayList<Integer>();
processRewards(returnArray, GameConstants.eventCommonReward);
compiledEventC = returnArray;
returnArray = new ArrayList<Integer>();
processRewards(returnArray, GameConstants.eventUncommonReward);
compiledEventB = returnArray;
returnArray = new ArrayList<Integer>();
processRewards(returnArray, GameConstants.eventRareReward);
processRewardsSimple(returnArray, GameConstants.tenPercent);
processRewardsSimple(returnArray, GameConstants.tenPercent);//hack: chance = 2
compiledEventA = returnArray;
returnArray = new ArrayList<Integer>();
processRewards(returnArray, GameConstants.eventSuperReward);
compiledEvent = returnArray;
returnArray = new ArrayList<Integer>();
processRewards(returnArray, GameConstants.peanuts);
compiledPeanut = returnArray;
returnArray = new ArrayList<Integer>();
processRewardsSimple(returnArray, GameConstants.normalDrops);
compiledDrops = returnArray;
returnArray = new ArrayList<Integer>();
processRewardsSimple(returnArray, GameConstants.rareDrops);
compiledDropsB = returnArray;
returnArray = new ArrayList<Integer>();
processRewardsSimple(returnArray, GameConstants.superDrops);
compiledDropsA = returnArray;
returnArray = new ArrayList<Integer>();
processRewardsSimple(returnArray, GameConstants.tenPercent);
tenPercent = returnArray;
}
private static void processRewards(final List<Integer> returnArray, final int[] list) {
int lastitem = 0;
for (int i = 0; i < list.length; i++) {
if (i % 2 == 0) { // Even
lastitem = list[i];
} else { // Odd
for (int j = 0; j < list[i]; j++) {
returnArray.add(lastitem);
}
}
}
Collections.shuffle(returnArray);
}
private static void processRewardsSimple(final List<Integer> returnArray, final int[] list) {
for (int i = 0; i < list.length; i++) {
returnArray.add(list[i]);
}
Collections.shuffle(returnArray);
}
public static int getGoldBoxReward() {
return compiledGold.get(Randomizer.nextInt(compiledGold.size()));
}
public static int getSilverBoxReward() {
return compiledSilver.get(Randomizer.nextInt(compiledSilver.size()));
}
public static int getFishingReward() {
return compiledFishing.get(Randomizer.nextInt(compiledFishing.size()));
}
public static int getPeanutReward() {
return compiledPeanut.get(Randomizer.nextInt(compiledPeanut.size()));
}
public static int getEventReward() {
final int chance = Randomizer.nextInt(101);
if (chance < 66) {
return compiledEventC.get(Randomizer.nextInt(compiledEventC.size()));
} else if (chance < 86) {
return compiledEventB.get(Randomizer.nextInt(compiledEventB.size()));
} else if (chance < 96) {
return compiledEventA.get(Randomizer.nextInt(compiledEventA.size()));
} else {
return compiledEvent.get(Randomizer.nextInt(compiledEvent.size()));
}
}
public static int getDropReward() {
final int chance = Randomizer.nextInt(101);
if (chance < 76) {
return compiledDrops.get(Randomizer.nextInt(compiledDrops.size()));
} else if (chance < 96) {
return compiledDropsB.get(Randomizer.nextInt(compiledDropsB.size()));
} else {
return compiledDropsA.get(Randomizer.nextInt(compiledDropsA.size()));
}
}
public static List<Integer> getTenPercent() {
return tenPercent;
}
static void load() {
//Empty method to initialize class.
}
}