/// <summary> /// Imports seed data from string /// </summary> /// <param name="data">string with "|" separator</param> public void SetValues(string data) { var parameters = data.Split('|'); SeedStats = CSVReader.GetSeedStats(parameters[0]); Name = parameters[0]; GrowTime = int.Parse(parameters[2]); GrowTimeGen = (Gen)int.Parse(parameters[3]); Gabitus = int.Parse(parameters[4]); GabitusGen = (Gen)int.Parse(parameters[5]); Taste = int.Parse(parameters[6]); TasteGen = (Gen)int.Parse(parameters[7]); minAmount = int.Parse(parameters[8]); maxAmount = int.Parse(parameters[9]); NameInRussian = parameters[10]; NameInLatin = parameters[11]; //PlantSprite = Resources.Load<Sprite>("SeedsIcons\\" + parameters[12]); //SproutSprite = Resources.Load<Sprite>("SeedsIcons\\" + parameters[13]); //GrownSprite = Resources.Load<Sprite>("SeedsIcons\\" + parameters[14]); MutationChance = (MutationChance)int.Parse(parameters[12]); }
/// <summary> /// Returns SeedStatistics from file seedName.csv /// </summary> public static SeedStatistics GetSeedStats(string seedName) { var outStats = new SeedStatistics(); var seedData = new string[] { }; try { seedData = Resources .Load <TextAsset>($@"SeedStats\{seedName}") .text .Split('\n'); } catch { try { //Вариант для скрещенных using (var reader = new StreamReader(Path.Combine(Application.persistentDataPath, seedName + ".csv"))) { seedData = reader.ReadToEnd().Split('\n'); } } catch { return(null); } } foreach (var line in seedData) { var splited = line .Split(',') .ToArray(); switch (splited[0]) { case var str when str.Contains("Габитус"): outStats.Gabitus = ConvertToDict <int>(splited .Skip(1) .Select(gab => int.Parse(gab)) .ToArray()); break; case var str when str.Contains("Вкус"): outStats.Taste = ConvertToDict <int>(splited .Skip(1) .Select(taste => int.Parse(taste)) .ToArray()); break; case var str when str.Contains("Кол"): outStats.MinAmount = ConvertToDict <int>(splited .Skip(1) .Select(amount => int.Parse(amount.Split('-')[0])) .ToArray()); outStats.MaxAmount = ConvertToDict <int>(splited .Skip(1) .Select(amount => int.Parse(amount.Split('-')[1])) .ToArray()); break; case var str when str.Contains("Мутац"): outStats.MutationChance = ConvertToDict <MutationChance>(splited .Skip(1) .Select(chance => char.ToLower(chance[0]) switch { 'н' => MutationChance.Low, 'с' => MutationChance.Normal, 'в' => MutationChance.High, 'о' => MutationChance.Ultra, //_ => chance, _ => MutationChance.Low, }) .ToArray()); break;