Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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");
            }
        }
Esempio n. 3
0
 private static Rules ChangeTypeOrCreateRules(Pawn pawn, PawnType type)
 {
     Instance._rules[pawn] = new Rules(pawn, type ?? pawn.GetTargetType());
     return(Instance._rules[pawn]);
 }
Esempio n. 4
0
 public static void ReplaceDefaultRules(PawnType type, Rules rules) => Instance._defaults[type] = rules;
Esempio n. 5
0
 public static Rules GetDefaultRules(PawnType type) => Instance._defaults[type];
Esempio n. 6
0
 public Binding(PawnType target, Rules rules) : this()
 {
     Target = target;
     Rules  = rules;
 }