// Start is called before the first frame update void Start() { i2s = new IMG2Sprite(); Stacks = new List <StackConfig>(); Decks = new List <List <int> >(); string folder = Directory.GetCurrentDirectory() + "\\Cards"; string[] paths = Directory.GetFiles(folder, "*.json"); foreach (string path in paths) { StreamReader reader = new StreamReader(path); string config = reader.ReadToEnd(); StackConfig stack = JsonUtility.FromJson <StackConfig>(config); Stacks.Add(stack); Decks.Add(new List <int>()); } Cards = new List <string>(); string[] pics = Directory.GetFiles(folder, "card_*.jpg"); foreach (string pic in pics) { Match match = Regex.Match(pic, "[0-9]+"); int index = int.Parse(match.Groups[0].Value.ToString()); Cards.Add(pic); for (int i = 0; i < Stacks.Count; i++) { StackConfig stack = Stacks[i]; if (index >= stack.min && index <= stack.max) { Decks[i].Add(Cards.Count - 1); } } } Backsides = new List <Sprite>(); for (int i = 0; i < Stacks.Count; i++) { Backsides.Add(i2s.LoadNewSprite(folder + "\\" + Stacks[i].backside)); } }
/// <summary> /// Get the output stack for a given output config, input and random instance. /// </summary> /// <param name="outputConfig">The output config</param> /// <param name="input">The input used</param> /// <param name="random">The random object that should be used if necessary</param> /// <returns>The stack</returns> public static int GetOutputStack(OutputConfig outputConfig, Object input, Random random) { double chance = random.NextDouble(); StackConfig stackConfig; if (input?.Quality == 4 && chance < outputConfig.IridiumQualityInput.Probability) { stackConfig = outputConfig.IridiumQualityInput; } else if (input?.Quality == 2 && chance < outputConfig.GoldQualityInput.Probability) { stackConfig = outputConfig.GoldQualityInput; } else if (input?.Quality == 1 && chance < outputConfig.SilverQualityInput.Probability) { stackConfig = outputConfig.SilverQualityInput; } else { stackConfig = new StackConfig(outputConfig.OutputStack, outputConfig.OutputMaxStack); } return(random.Next(stackConfig.OutputStack, Math.Max(stackConfig.OutputStack, stackConfig.OutputMaxStack + 1))); }