public static void DrawInterest(InterestDef id, ref Rect root, Listing_Standard ls) { if (!learnRates.ContainsKey(id.defName)) { learnRates.Add(id.defName, (int)Math.Round((id.learnFactor * 100f))); } if (!canAppear.ContainsKey(id.defName)) { canAppear.Add(id.defName, id.canAppear); } int learnRate = learnRates[id.defName]; bool appears = canAppear[id.defName]; Texture2D image = id.GetTexture(); Rect labelRect; Rect rectLine = ls.GetRect(Text.LineHeight); if (image != null) { Rect imageRect = rectLine.LeftPartPixels(Text.LineHeight); labelRect = rectLine.RightPartPixels(rectLine.width - Text.LineHeight - 5); GUI.DrawTexture(imageRect, image); } else { labelRect = rectLine; } TextAnchor buffer = Text.Anchor; Text.Anchor = TextAnchor.MiddleLeft; Widgets.Label(labelRect, id.LabelCap); Text.Anchor = buffer; if (id != InterestBase.interestList.GetDefault()) { ls.CheckboxLabeled("Enabled", ref appears, "Allow this interest to appear on new pawns?"); } Rect learnLine = ls.GetRect(Text.LineHeight); Rect learnLabel = learnLine.LeftHalf(); Rect learnField = learnLine.RightHalf(); buffer = Text.Anchor; string lr = "Learn rate"; if (defaults.ContainsKey(id.defName)) { lr += " (default = " + defaults[id.defName] + ")"; } lr += ": "; Widgets.Label(learnLabel, lr); Text.Anchor = buffer; string stringBuffer = learnRate.ToString(); Widgets.TextFieldNumeric(learnField, ref learnRate, ref stringBuffer, 0, 10000); learnRates[id.defName] = learnRate; canAppear[id.defName] = appears; }
private static bool Prefix(Passion passion, ref Color __result) { int p = (int)passion; InterestDef interest = InterestBase.interestList[p]; float val = interest.GetValue(); if (val < 0) { if (val / 75.0f < 1.0f) { __result = veryNegativeColor; } else { __result = negativeColor; } } else if (val == 0) { __result = neutralColor; } else { if (val / 75.0f > 1.0f) { __result = veryPositiveColor; } else { __result = positiveColor; } } return(false); }
private static void Postfix(Object model, SkillDef def, object __instance) { var r = AccessTools.PropertyGetter(Patch_RimHUDBase.hudPawnModel, "Base"); Pawn b = (Pawn)r.Invoke(model, null); Pawn_SkillTracker st = b.skills; SkillRecord skillRecord = (st != null) ? st.GetSkill(def) : null; if (skillRecord == null) { return; } var label = AccessTools.Field(Patch_RimHUDBase.hudSkillModel, "<Label>k__BackingField"); if (label == null) { return; } InterestDef i = InterestBase.interestList[(int)skillRecord.passion]; string end = ""; float val = i.GetValue(); if (val < 0) { end = new string('-', -(int)Math.Floor(val / 75.0f)); } else if (val > 0) { end = new string('+', (int)Math.Floor(val / 75.0f)); } string l = def.LabelCap + end; label.SetValue(__instance, l); }