예제 #1
0
        public void SelectTalents(TalentTree wantedTalents, int talentPoints)
        {
            Dictionary <int, Dictionary <int, Talent> > talentTrees       = TalentTree.AsDict();
            Dictionary <int, Dictionary <int, Talent> > wantedTalentTrees = wantedTalents.AsDict();

            List <(int, int, int)> talentsToSpend = new();

            // order the trees to skill the main tree first
            foreach (KeyValuePair <int, Dictionary <int, Talent> > kv in wantedTalentTrees.OrderByDescending(e => e.Value.Count))
            {
                if (CheckTalentTree(ref talentPoints, kv.Key, talentTrees[kv.Key], kv.Value, out List <(int, int, int)> newTalents))
                {
                    talentsToSpend.AddRange(newTalents);
                }
            }

            if (talentsToSpend.Any())
            {
                SpendTalents(talentsToSpend);
            }
        }