static bool HealthCardUtility_DrawHediffRow_DestructivePrefix(Rect rect, Pawn pawn, IEnumerable <Hediff> diffs, ref float curY) { if (CompactHediffsMod.settings.Enabled) { CustomHealthCardUtility.DrawHediffRow(rect, pawn, diffs, ref curY); return(false); } else { return(true); } }
static IEnumerable <IGrouping <BodyPartRecord, Hediff> > HealthCardUtility_VisibleHediffGroupsInOrder_Postfix(IEnumerable <IGrouping <BodyPartRecord, Hediff> > returned, Pawn pawn, bool showBloodLoss) { returned = CustomHealthCardUtility.ReorderHediffGroups(returned, pawn, showBloodLoss); foreach (var group in returned) { yield return(group); } /*var method_getListPriority = Traverse.Create(typeof(HealthCardUtility)).Method("GetListPriority", new Type[] { typeof(BodyPartRecord) }); * Func<BodyPartRecord, float> getListPriority = (BodyPartRecord rec) => method_getListPriority.GetValue<float>(rec); * * var method_visibleHediffs = Traverse.Create(typeof(HealthCardUtility)).Method("VisibleHediffs", new Type[] { typeof(Pawn), typeof(bool) }); * Func<Pawn, bool, IEnumerable<Hediff>> visibleHediffs = (Pawn p, bool s) => method_visibleHediffs.GetValue<IEnumerable<Hediff>>(p, s); * * var grouping = visibleHediffs(pawn, showBloodLoss).GroupBy(x => x.Part).OrderByDescending(x => getListPriority(x.First().Part)); * foreach (var group in grouping) * { * yield return group; * }*/ }