public static T GetAddonDefaultValue <T>(OptionTarget target, AddonOption addon, T invalidValue = default(T)) { var rules = GetDefaultRules(PawnType.FromTarget(target)); if ((rules == null) || !addon.AllowedInPreset) { return(invalidValue); } return(rules.GetAddonValue(addon, invalidValue)); }
public void ExposeData() { if ((Scribe.mode != LoadSaveMode.Saving) || (Target == null)) { Scribe_References.Look(ref Pawn, "pawn"); } if ((Scribe.mode != LoadSaveMode.Saving) || (Target != null)) { Target = PawnType.FromId(ScribePlus.LookValue(Target?.Id, "target")); } if (Scribe.mode != LoadSaveMode.Saving) { Scribe_References.Look(ref _preset, "preset"); if (Target == null) { Scribe_Deep.Look(ref _individual, "rules"); _individual?.SetPawn(Pawn); } } else if (Rules != null) { if (Rules.IsPreset) { Scribe_References.Look(ref Rules, "preset"); } else { Scribe_Deep.Look(ref Rules, "rules"); } } if (Scribe.mode != LoadSaveMode.PostLoadInit) { return; } if (_preset != null) { Rules = _preset; } else if (_individual != null) { Rules = _individual; } else if (Pawn != null) { Rules = Registry.GetVoidPreset <Rules>(Pawn.GetTargetType()).CloneRulesFor(Pawn); } else { throw new Mod.Exception("Unable to load rules for binding"); } }
private static Rules ChangeTypeOrCreateRules(Pawn pawn, PawnType type) { Instance._rules[pawn] = new Rules(pawn, type ?? pawn.GetTargetType()); return(Instance._rules[pawn]); }
public static void ReplaceDefaultRules(PawnType type, Rules rules) => Instance._defaults[type] = rules;
public static Rules GetDefaultRules(PawnType type) => Instance._defaults[type];
public Binding(PawnType target, Rules rules) : this() { Target = target; Rules = rules; }