private static int SortByKey(Player.Skill s1, Player.Skill s2) { if (skillDictionary.TryGetValue(s1, out int s1Key) && skillDictionary.TryGetValue(s2, out int s2Key)) { return(s1Key.CompareTo(s2Key)); } return(0); // assume equal if one doesn't exist }
private void SwitchSkill(List <Player.Skill> skills, Player.Skill skill) { if (!skills.Contains(skill)) { skills.Add(skill); } else { skills.Remove(skill); } }
public static LevelConfig ReadKey(string key) { try { char[] delimiterChars = { 'S', 'I', 'M', 'T', 'P', 'V' }; string[] configVals = key.Split(delimiterChars); int randomSeed = int.Parse(configVals[0]); float speed = float.Parse(configVals[1]) / 100; float maxIntensity = float.Parse(configVals[2]) / 100; int milestoneInterval = int.Parse(configVals[3]); bool includeTutorialChunks = int.Parse(configVals[4]) == 0 ? false : true; string[] includedSkillsKeys = configVals[5].Split('s'); List <Player.Skill> includedSkills = new List <Player.Skill>(); foreach (string skillKey in includedSkillsKeys) { if (int.TryParse(skillKey, out int skillKeyInt)) { Player.Skill skill = skillDictionary.FirstOrDefault(x => x.Value == skillKeyInt).Key; includedSkills.Add(skill); } } includedSkills.Sort(SortByKey); int version = int.Parse(configVals[6]); LevelConfig levelConfig = new LevelConfig(randomSeed, speed, maxIntensity, milestoneInterval, includeTutorialChunks, includedSkills, version); Debug.Log("Level Config generated: " + levelConfig.ToString()); return(levelConfig); } catch (Exception e) { Debug.Log(e.Message); return(null); } }
public bool IsKnownSkill(Player.Skill skill) { return(knownSkills.Contains(skill)); }