/// <summary> /// Get a list of free slots in class roster. New heroines can be added to these slots in saveData.heroineList. /// <example> /// var freeSlot = saveData.GetFreeClassSlots(1).FirstOrDefault(); /// freeSlot.SetCharFile(fairyCard.charFile); /// freeSlot.charFileInitialized = true; /// saveData.heroineList.Add(freeSlot); /// </example> /// </summary> /// <param name="saveData"></param> /// <param name="classNumber">Class to search for free slots. Starts at 0, 1 is player's class, last 'class' is not usable since it's only for NPCs.</param> public static IEnumerable <SaveData.Heroine> GetFreeClassSlots(this SaveData.WorldData saveData, int classNumber) { return(Enumerable.Range(0, GetClassMaxSeatCount(saveData, classNumber)) .Where(index => IsValidClassSeat(saveData, classNumber, index) && GetHeroineAtSeat(saveData, classNumber, index) == null) .Select(index => new SaveData.Heroine(true) { schoolClass = classNumber, schoolClassIndex = index })); }
/// <summary> /// Get heroine at a specified class and seat. /// </summary> public static SaveData.Heroine GetHeroineAtSeat(this SaveData.WorldData saveData, int classNumber, int classIndex) { return(saveData.heroineList.Find(h => h.schoolClass == classNumber && h.schoolClassIndex == classIndex)); }