예제 #1
0
 public void Write(
     MutagenWriter writer,
     IArmorGetter item,
     TypedWriteParams?translationParams = null)
 {
     using (HeaderExport.Record(
                writer: writer,
                record: translationParams.ConvertToCustom(RecordTypes.ARMO)))
     {
         try
         {
             Fallout4MajorRecordBinaryWriteTranslation.WriteEmbedded(
                 item: item,
                 writer: writer);
             MajorRecordBinaryWriteTranslation.WriteRecordTypes(
                 item: item,
                 writer: writer,
                 translationParams: translationParams);
         }
         catch (Exception ex)
         {
             throw RecordException.Enrich(ex, item);
         }
     }
 }
예제 #2
0
 public void Write(
     MutagenWriter writer,
     IArmorGetter item,
     RecordTypeConverter?recordTypeConverter = null)
 {
     using (HeaderExport.Header(
                writer: writer,
                record: recordTypeConverter.ConvertToCustom(RecordTypes.ARMO),
                type: ObjectType.Record))
     {
         try
         {
             Fallout4MajorRecordBinaryWriteTranslation.WriteEmbedded(
                 item: item,
                 writer: writer);
             MajorRecordBinaryWriteTranslation.WriteRecordTypes(
                 item: item,
                 writer: writer,
                 recordTypeConverter: recordTypeConverter);
         }
         catch (Exception ex)
         {
             throw RecordException.Enrich(ex, item);
         }
     }
 }
예제 #3
0
 static partial void WriteBinaryBodyTemplateCustom(MutagenWriter writer, IArmorGetter item)
 {
     if (item.BodyTemplate.TryGet(out var templ))
     {
         BodyTemplateBinaryWriteTranslation.Write(writer, templ);
     }
 }
예제 #4
0
        public virtual int GetHashCode(IArmorGetter item)
        {
            var hash = new HashCode();

            hash.Add(base.GetHashCode());
            return(hash.ToHashCode());
        }
예제 #5
0
 public IEnumerable <IFormLinkGetter> GetContainedFormLinks(IArmorGetter obj)
 {
     foreach (var item in base.GetContainedFormLinks(obj))
     {
         yield return(item);
     }
     yield break;
 }
예제 #6
0
 public static Armor DeepCopy(
     this IArmorGetter item,
     Armor.TranslationMask?copyMask = null)
 {
     return(((ArmorSetterTranslationCommon)((IArmorGetter)item).CommonSetterTranslationInstance() !).DeepCopy(
                item: item,
                copyMask: copyMask));
 }
예제 #7
0
 ReforgedArmor(this LoadOrder <IModListing <ISkyrimModGetter> > mods, IArmorGetter vanillaArmor)
 {
     return(from cobj in mods.PriorityOrder.ConstructibleObject().WinningOverrides()
            where cobj.Items !.Any(rf => rf.Item.Item.FormKey == vanillaArmor.FormKey)
            from produces in mods.PriorityOrder.Armor().WinningOverrides()
            where cobj.CreatedObject.FormKey == produces.FormKey
            where produces.EditorID !.Contains($"[{SReplica}]")
            select(VanillaArmor: vanillaArmor, Recipe: cobj, Reforged: produces));
 }
예제 #8
0
 public static Armor DeepCopy(
     this IArmorGetter item,
     ErrorMaskBuilder?errorMask,
     TranslationCrystal?copyMask = null)
 {
     return(((ArmorSetterTranslationCommon)((IArmorGetter)item).CommonSetterTranslationInstance() !).DeepCopy(
                item: item,
                copyMask: copyMask,
                errorMask: errorMask));
 }
예제 #9
0
        public Armor Duplicate(
            IArmorGetter item,
            FormKey formKey,
            TranslationCrystal?copyMask)
        {
            var newRec = new Armor(formKey);

            newRec.DeepCopyIn(item, default(ErrorMaskBuilder?), copyMask);
            return(newRec);
        }
예제 #10
0
 public TArmor(IArmorGetter armor, string material)
 {
     FormKey   = armor.FormKey;
     EditorID  = armor.EditorID;
     Material  = material;
     BodySlots = ArmorUtils.GetBodySlots(armor);
     Type      = ArmorUtils.GetArmorType(armor);
     Gender    = ArmorUtils.GetGender(armor);
     Name      = armor.Name == null || armor.Name.String.Length < 1 ? armor.EditorID : armor.Name.ToString();
 }
예제 #11
0
 protected static void ToStringFields(
     IArmorGetter item,
     FileGeneration fg,
     Armor.Mask <bool>?printMask = null)
 {
     Fallout4MajorRecordCommon.ToStringFields(
         item: item,
         fg: fg,
         printMask: printMask);
 }
예제 #12
0
 public static string ToString(
     this IArmorGetter item,
     string?name = null,
     Armor.Mask <bool>?printMask = null)
 {
     return(((ArmorCommon)((IArmorGetter)item).CommonInstance() !).ToString(
                item: item,
                name: name,
                printMask: printMask));
 }
예제 #13
0
 public static bool Equals(
     this IArmorGetter item,
     IArmorGetter rhs,
     Armor.TranslationMask?equalsMask = null)
 {
     return(((ArmorCommon)((IArmorGetter)item).CommonInstance() !).Equals(
                lhs: item,
                rhs: rhs,
                crystal: equalsMask?.GetCrystal()));
 }
예제 #14
0
 public static Armor Duplicate(
     this IArmorGetter item,
     FormKey formKey,
     Armor.TranslationMask?copyMask = null)
 {
     return(((ArmorCommon)((IArmorGetter)item).CommonInstance() !).Duplicate(
                item: item,
                formKey: formKey,
                copyMask: copyMask?.GetCrystal()));
 }
예제 #15
0
 public static Armor.Mask <bool> GetEqualsMask(
     this IArmorGetter item,
     IArmorGetter rhs,
     EqualsMaskHelper.Include include = EqualsMaskHelper.Include.All)
 {
     return(((ArmorCommon)((IArmorGetter)item).CommonInstance() !).GetEqualsMask(
                item: item,
                rhs: rhs,
                include: include));
 }
예제 #16
0
 public static void ToString(
     this IArmorGetter item,
     FileGeneration fg,
     string?name = null,
     Armor.Mask <bool>?printMask = null)
 {
     ((ArmorCommon)((IArmorGetter)item).CommonInstance() !).ToString(
         item: item,
         fg: fg,
         name: name,
         printMask: printMask);
 }
예제 #17
0
 public void FillEqualsMask(
     IArmorGetter item,
     IArmorGetter rhs,
     Armor.Mask <bool> ret,
     EqualsMaskHelper.Include include = EqualsMaskHelper.Include.All)
 {
     if (rhs == null)
     {
         return;
     }
     base.FillEqualsMask(item, rhs, ret, include);
 }
예제 #18
0
 public static void DeepCopyIn(
     this IArmorInternal lhs,
     IArmorGetter rhs,
     ErrorMaskBuilder?errorMask,
     TranslationCrystal?copyMask)
 {
     ((ArmorSetterTranslationCommon)((IArmorGetter)lhs).CommonSetterTranslationInstance() !).DeepCopyIn(
         item: lhs,
         rhs: rhs,
         errorMask: errorMask,
         copyMask: copyMask,
         deepCopy: false);
 }
예제 #19
0
        public Armor DeepCopy(
            IArmorGetter item,
            Armor.TranslationMask?copyMask = null)
        {
            Armor ret = (Armor)((ArmorCommon)((IArmorGetter)item).CommonInstance() !).GetNew();

            ((ArmorSetterTranslationCommon)((IArmorGetter)ret).CommonSetterTranslationInstance() !).DeepCopyIn(
                item: ret,
                rhs: item,
                errorMask: null,
                copyMask: copyMask?.GetCrystal(),
                deepCopy: true);
            return(ret);
        }
예제 #20
0
 public void DeepCopyIn(
     IArmorInternal item,
     IArmorGetter rhs,
     ErrorMaskBuilder?errorMask,
     TranslationCrystal?copyMask,
     bool deepCopy)
 {
     base.DeepCopyIn(
         item,
         rhs,
         errorMask,
         copyMask,
         deepCopy: deepCopy);
 }
예제 #21
0
 public void DeepCopyIn(
     IArmor item,
     IArmorGetter rhs,
     ErrorMaskBuilder?errorMask,
     TranslationCrystal?copyMask,
     bool deepCopy)
 {
     base.DeepCopyIn(
         (IFallout4MajorRecord)item,
         (IFallout4MajorRecordGetter)rhs,
         errorMask,
         copyMask,
         deepCopy: deepCopy);
 }
예제 #22
0
        public static void ProcessAndDistributeJewelary(IPatcherState <ISkyrimMod, ISkyrimModGetter> state)
        {
            Logger.InfoFormat("Creating Leveled list for Jewelary.....");
            ISkyrimMod patchedMod = FileUtils.GetOrAddPatch("ZZZ Jewelry");
            Dictionary <string, HashSet <IArmorGetter> > jewelleries = new Dictionary <string, HashSet <IArmorGetter> >();

            // Adding all the patches to load order
            foreach (IModListing <ISkyrimModGetter> modlist in state.LoadOrder.PriorityOrder
                     .Where(x => Configuration.User.JewelryMods.Contains(x.ModKey.FileName) &&
                            x.Mod.Armors.Count > 0))
            {
                // Getting Jewelary Armors
                ISkyrimModGetter           mod    = modlist.Mod;
                IEnumerable <IArmorGetter> armors = mod.Armors
                                                    .Where(x => ArmorUtils.IsValidArmor(x) &&
                                                           x.Name != null);

                for (int i = 0; i < armors.Count(); i++)
                {
                    IArmorGetter      armor = armors.ElementAtOrDefault(i);
                    IArmorAddonGetter addon = armor.Armature.FirstOrDefault().Resolve(Configuration.Cache);

                    string gender = (addon.WorldModel.Male != null && addon.WorldModel.Female != null
                                    ? "_C_" : addon.WorldModel.Male == null ? "_F_" : "_M_");

                    var bodyFlags = armor.BodyTemplate.FirstPersonFlags;
                    var key       = bodyFlags.ToString() + gender;
                    if (!jewelleries.ContainsKey(key))
                    {
                        jewelleries.Add(key, new HashSet <IArmorGetter>());
                    }
                    jewelleries.GetValueOrDefault(key).Add(armor);
                }
            }

            // Creating leveled list for the jewelleries
            string prefix = Configuration.Patcher.LeveledListPrefix + "_LL_Jewels_";

            jewelleries.Where(x => !Regex.Match(x.Key.ToString(), "Decapitate", RegexOptions.IgnoreCase).Success)
            .ForEach(j =>
            {
                string lvli_eid = prefix + j.Key.ToString().Replace(" ", "_");
                OutfitUtils.CreateLeveledList(patchedMod, j.Value, lvli_eid, 1, LeveledItem.Flag.CalculateForEachItemInCount);
            });
            Logger.InfoFormat("Leveled List created for Jewelary....");

            // Writing patched mod to disk
            DistributeJewelaryUsingSPID(state, patchedMod);
            Logger.InfoFormat("Distribution of Jewelaries is completed...\n\n");
        }
예제 #23
0
        public string ToString(
            IArmorGetter item,
            string?name = null,
            Armor.Mask <bool>?printMask = null)
        {
            var fg = new FileGeneration();

            ToString(
                item: item,
                fg: fg,
                name: name,
                printMask: printMask);
            return(fg.ToString());
        }
예제 #24
0
        public Armor.Mask <bool> GetEqualsMask(
            IArmorGetter item,
            IArmorGetter rhs,
            EqualsMaskHelper.Include include = EqualsMaskHelper.Include.All)
        {
            var ret = new Armor.Mask <bool>(false);

            ((ArmorCommon)((IArmorGetter)item).CommonInstance() !).FillEqualsMask(
                item: item,
                rhs: rhs,
                ret: ret,
                include: include);
            return(ret);
        }
예제 #25
0
        public Armor DeepCopy(
            IArmorGetter item,
            ErrorMaskBuilder?errorMask,
            TranslationCrystal?copyMask = null)
        {
            Armor ret = (Armor)((ArmorCommon)((IArmorGetter)item).CommonInstance() !).GetNew();

            ((ArmorSetterTranslationCommon)((IArmorGetter)ret).CommonSetterTranslationInstance() !).DeepCopyIn(
                item: ret,
                rhs: item,
                errorMask: errorMask,
                copyMask: copyMask,
                deepCopy: true);
            return(ret);
        }
예제 #26
0
        public static void DeepCopyIn(
            this IArmorInternal lhs,
            IArmorGetter rhs,
            out Armor.ErrorMask errorMask,
            Armor.TranslationMask?copyMask = null)
        {
            var errorMaskBuilder = new ErrorMaskBuilder();

            ((ArmorSetterTranslationCommon)((IArmorGetter)lhs).CommonSetterTranslationInstance() !).DeepCopyIn(
                item: lhs,
                rhs: rhs,
                errorMask: errorMaskBuilder,
                copyMask: copyMask?.GetCrystal(),
                deepCopy: false);
            errorMask = Armor.ErrorMask.Factory(errorMaskBuilder);
        }
예제 #27
0
        public Armor DeepCopy(
            IArmorGetter item,
            out Armor.ErrorMask errorMask,
            Armor.TranslationMask?copyMask = null)
        {
            var   errorMaskBuilder = new ErrorMaskBuilder();
            Armor ret = (Armor)((ArmorCommon)((IArmorGetter)item).CommonInstance() !).GetNew();

            ((ArmorSetterTranslationCommon)((IArmorGetter)ret).CommonSetterTranslationInstance() !).DeepCopyIn(
                ret,
                item,
                errorMask: errorMaskBuilder,
                copyMask: copyMask?.GetCrystal(),
                deepCopy: true);
            errorMask = Armor.ErrorMask.Factory(errorMaskBuilder);
            return(ret);
        }
예제 #28
0
 public void ToString(
     IArmorGetter item,
     FileGeneration fg,
     string?name = null,
     Armor.Mask <bool>?printMask = null)
 {
     if (name == null)
     {
         fg.AppendLine($"Armor =>");
     }
     else
     {
         fg.AppendLine($"{name} (Armor) =>");
     }
     fg.AppendLine("[");
     using (new DepthWrapper(fg))
     {
         ToStringFields(
             item: item,
             fg: fg,
             printMask: printMask);
     }
     fg.AppendLine("]");
 }
예제 #29
0
 public static partial void WriteBinaryBodyTemplateCustom(MutagenWriter writer, IArmorGetter item)
 {
     if (item.BodyTemplate is { } templ)
     {
         BodyTemplateBinaryWriteTranslation.Write(writer, templ);
     }
 }
예제 #30
0
 public TArmor(IArmorGetter armor) :
     this(armor, ArmorUtils.GetMaterial(armor))
 {
 }