예제 #1
0
        public static List <BlueprintUnit> SelectUnits(int cr, UnitTag tag)
        {
            int minCR = cr - 6;
            List <BlueprintUnit> list = BlueprintRoot.Instance.RE.UnitsForRandomEncounters.Where <BlueprintUnit>((Func <BlueprintUnit, bool>)(u => OwlcatRESelector.ContainsTag(u.GetComponent <AddTags>(), tag))).Where <BlueprintUnit>((Func <BlueprintUnit, bool>)(u => OwlcatRESelector.GetCR(u) >= minCR)).ToList <BlueprintUnit>();
            int xp         = OwlcatRESelector.GetXp(cr);
            int maxTotalXp = OwlcatRESelector.GetXp(cr + 1);
            int currentXp  = 0;
            List <BlueprintUnit> blueprintUnitList = new List <BlueprintUnit>();

            while (currentXp < xp)
            {
                list.RemoveAll((Predicate <BlueprintUnit>)(u => OwlcatRESelector.GetXp(u) > maxTotalXp - currentXp));
                if (list.Count != 0)
                {
                    BlueprintUnit unit = list.Random <BlueprintUnit>();
                    currentXp += OwlcatRESelector.GetXp(unit);
                    blueprintUnitList.Add(unit);
                }
                else
                {
                    break;
                }
            }
            return(blueprintUnitList);
        }
예제 #2
0
 public static int GetXp(BlueprintUnit unit)
 {
     return(OwlcatRESelector.GetXp(OwlcatRESelector.GetCR(unit)));
 }