} // TODO: fill using database public SkillTab(Job job) { Id = 0x000032DF995949B9; // temporary hard coded id Name = "Build"; Order = SkillTreeOrdered.GetListOrdered(job); SkillJob = AddOnDictionary(job); SkillLevels = SkillJob.ToDictionary(x => x.Key, x => (int)x.Value.Learned); }
public SkillTab(Job job) { Id = GuidGenerator.Long(); Name = ""; Order = SkillTreeOrdered.GetListOrdered(job); SkillJob = AddOnDictionary(job); SkillLevels = SkillJob.ToDictionary(x => x.Key, x => (int)x.Value.Learned); }
public void AddOrUpdate(int id, short level, bool isLearned) { SkillLevels[id] = isLearned ? level : (short)0; if (!SkillJob.ContainsKey(id)) { return; } foreach (int sub in SkillJob[id].SubSkills) { SkillLevels[sub] = isLearned ? level : (short)0; } }
/// <summary> /// Returns all skills by type. /// </summary> /// <param name="type"><see cref="SkillType"/></param> /// <returns>List of skill id and skill level</returns> public List <(int skillId, short skillLevel)> GetSkillsByType(SkillType type) { List <(int, short)> skills = new(); foreach ((int skillId, SkillMetadata metadata) in SkillJob.Where(x => x.Value.Type == type)) { short level = SkillLevels.GetValueOrDefault(skillId); skills.Add((skillId, level)); skills.AddRange(metadata.SubSkills.Select(metadataSubSkill => (metadataSubSkill, level))); } return(skills); }
public void ResetSkillTree(Job job) { GenerateSkills(job); SkillLevels = SkillJob.ToDictionary(x => x.Key, x => x.Value.CurrentLevel); }