public static void PresetSave(Maid f_maid, CharacterMgr.PresetType f_type, CharacterMgr.Preset __result)
 {
     if (configEntryUtill["PresetSave", false])
     {
         MyLog.LogMessage("CharacterMgr.PresetSavePost0: " + MyUtill.GetMaidFullName(f_maid) + " , " + __result.strFileName + " , " + __result.ePreType);
     }
 }
Example #2
0
        static bool PluginsSave(ref Maid __0, ref string __1, ref CharacterMgr.PresetType __2)
        {
            if (__2 == CharacterMgr.PresetType.Wear)
            {
                return(false);
            }
            var  xml               = new XmlDocument();
            bool nodeExist         = false;
            var  rootNode          = xml.AppendChild(xml.CreateElement("plugins"));
            var  exsaveNodeNameMap = AccessTools.Field(typeof(ExPreset), "exsaveNodeNameMap").GetValue(null) as HashSet <string>;

            foreach (string pluginName in exsaveNodeNameMap)
            {
                var node = xml.CreateElement("plugin");
                if (ExSaveData.TryGetXml(__0, pluginName, node))
                {
                    rootNode.AppendChild(node);
                    nodeExist = true;
                }
            }

            if (!nodeExist)
            {
                return(false);
            }
            xml.Save(Main.this4.PresetDirectory + "\\" + __1 + ".expreset.xml");
            return(false);
        }
Example #3
0
        public static bool PresetSaveHook(CharacterMgr mgr, out CharacterMgr.Preset preset, Maid maid,
                                          CharacterMgr.PresetType presetType)
        {
            if (!Input.GetKey(KeyCode.LeftControl) && !Input.GetKey(KeyCode.LeftControl))
            {
                preset = null;
                return(false);
            }

            preset = new CharacterMgr.Preset
            {
                ePreType = presetType,
                texThum  = ThumShot.ShotThumPreset(maid)
            };

            var bigThumTex = ThumUtil.MakeMaidThumbnail(maid);

            if (!Directory.Exists(PresetPath))
            {
                Directory.CreateDirectory(PresetPath);
            }

            using (var bw = new BinaryWriter(File.Create(Path.Combine(PresetPath,
                                                                      $"pre_{maid.status.lastName}{maid.status.firstName}_{DateTime.Now:yyyyMMddHHmmss}.png"))))
            {
                // Load our layers and combine them
                // Janky AF, but it works, so /shrug
                Texture2D composedImagePreset;
                var       backgroundLayer = LoadPNG(Path.Combine(LayerPath, "background.png"));
                composedImagePreset = CombineTextures(backgroundLayer, bigThumTex);
                var foregroundLayer = LoadPNG(Path.Combine(LayerPath, "foreground.png"));
                composedImagePreset = CombineTextures(composedImagePreset, foregroundLayer);

                bw.Write(composedImagePreset.EncodeToPNG());
                bw.Write(mgr.PresetSaveNotWriteFile(maid, presetType));

                var exData = ExtPresetSupport.SaveExPresetData(maid);

                if (exData != null)
                {
                    bw.Write(EXT_DATA_BEGIN_MAGIC);
                    bw.Write(exData);
                    bw.Write(EXT_DATA_END_MAGIC);
                }
            }

            GameMain.Instance.SysDlg.Show(
                "Saved image as a preset card\n(If you want to save a normal preset, don't hold [CTRL] while saving)",
                SystemDialog.TYPE.OK);

            return(true);
        }
Example #4
0
        // Token: 0x06000067 RID: 103 RVA: 0x000082D4 File Offset: 0x000064D4
        public CharacterMgr.Preset PresetSave(Maid f_maid, CharacterMgr.PresetType f_type)
        {
            CharacterMgr.Preset preset       = new CharacterMgr.Preset();
            Texture2D           texture2D    = this.ThumShot(GameMain.Instance.MainCamera.camera, f_maid);
            MemoryStream        memoryStream = new MemoryStream();
            BinaryWriter        binaryWriter = new BinaryWriter(memoryStream);

            binaryWriter.Write("CM3D2_PRESET");
            binaryWriter.Write(1160);
            binaryWriter.Write((int)f_type);
            if (texture2D != null)
            {
                byte[] array = texture2D.EncodeToPNG();
                binaryWriter.Write(array.Length);
                binaryWriter.Write(array);
            }
            else
            {
                binaryWriter.Write(0);
            }
            f_maid.SerializeProp(binaryWriter);
            f_maid.SerializeMultiColor(binaryWriter);
            f_maid.SerializeBody(binaryWriter);
            string text = string.Concat(new string[]
            {
                "pre_",
                f_maid.status.lastName,
                f_maid.status.firstName,
                "_",
                DateTime.Now.ToString("yyyyMMddHHmmss")
            });

            text  = UTY.FileNameEscape(text);
            text += ".preset";
            string text2 = Path.GetFullPath(".\\") + "Preset";

            if (!Directory.Exists(text2))
            {
                Directory.CreateDirectory(text2);
            }
            File.WriteAllBytes(text2 + "\\" + text, memoryStream.ToArray());
            memoryStream.Dispose();
            preset.texThum     = texture2D;
            preset.strFileName = text;
            preset.ePreType    = f_type;
            return(preset);
        }
Example #5
0
 public static void PresetSavePostCallRet(CharacterMgr that, Maid f_maid, CharacterMgr.PresetType f_type, CharacterMgr.Preset preset) // 후킹시 원본 클래스도 같이 받도록 돼있음
 //     public Preset PresetSave(Maid f_maid, PresetType f_type)
 {
     Lilly.Log(name + ".PresetSavePostCallRet:" + preset.strFileName);
 }