Пример #1
0
 internal static void XMLWritePrefix(Control __instance, ref int __state)
 {
     __state = -1;
     foreach (Data data in __instance.Datas)
     {
         if (data is Config.EtceteraSystem etceteraSystem)
         {
             if (etceteraSystem.rampId >= BaseSlotID)
             {
                 ResolveInfo RampResolveInfo = LoadedResolutionInfo.FirstOrDefault(x => x.Property == "Ramp" && x.LocalSlot == etceteraSystem.rampId);
                 if (RampResolveInfo == null)
                 {
                     //ID is a sideloader ID but no resolve info found, set it to the default
                     __state = 1;
                     etceteraSystem.rampId = 1;
                 }
                 else
                 {
                     //Switch out the resolved ID for the original
                     __state = etceteraSystem.rampId;
                     etceteraSystem.rampId = RampResolveInfo.Slot;
                 }
             }
         }
     }
 }
Пример #2
0
 internal static void XMLReadPostfix(Control __instance)
 {
     foreach (Data data in __instance.Datas)
     {
         if (data is Config.EtceteraSystem etceteraSystem)
         {
             if (etceteraSystem.rampId >= BaseSlotID) //Saved with a resolved ID, reset it to default
             {
                 etceteraSystem.rampId = 1;
             }
             else
             {
                 var    xmlDoc   = XDocument.Load("UserData/config/system.xml");
                 string rampGUID = xmlDoc.Element("System").Element("Etc").Element("rampGUID")?.Value;
                 if (!rampGUID.IsNullOrWhiteSpace())
                 {
                     ResolveInfo RampResolveInfo = LoadedResolutionInfo.FirstOrDefault(x => x.Property == "Ramp" && x.GUID == rampGUID && x.Slot == etceteraSystem.rampId);
                     if (RampResolveInfo == null) //Missing mod, reset ID to default
                     {
                         etceteraSystem.rampId = 1;
                     }
                     else //Restore the resolved ID
                     {
                         etceteraSystem.rampId = RampResolveInfo.LocalSlot;
                     }
                 }
             }
         }
     }
 }
Пример #3
0
        internal static void ResolveStudioRamp(ExtensibleSaveFormat.PluginData extData, ResolveType resolveType)
        {
#if KK
            //Set ramp ID to the resolved ID
            int rampID = Studio.Studio.Instance.sceneInfo.rampG;

            if (extData != null && extData.data.ContainsKey("rampInfoGUID"))
            {
                string rampGUID = (string)extData.data["rampInfoGUID"];

                ResolveInfo intResolve = LoadedResolutionInfo.FirstOrDefault(x => x.Property == "Ramp" && x.GUID == rampGUID && x.Slot == rampID);
                if (intResolve != null)
                {
                    if (resolveType == ResolveType.Load && Sideloader.DebugLogging.Value)
                    {
                        Sideloader.Logger.LogDebug($"Resolving (Studio Ramp) [{rampID}] {rampID}->{intResolve.LocalSlot}");
                    }

                    Studio.Studio.Instance.sceneInfo.rampG = intResolve.LocalSlot;
                }
                else
                {
                    ShowGUIDError(rampGUID);
                }
            }
            else if (resolveType == ResolveType.Load)
            {
                if (!Lists.InternalDataList[ChaListDefine.CategoryNo.mt_ramp].ContainsKey(rampID))
                {
                    //Ramp ID saved to the scene doesn't exist in the items list, try compatibility resolving
                    ResolveInfo intResolve = LoadedResolutionInfo.FirstOrDefault(x => x.Property == "Ramp" && x.Slot == rampID);
                    if (intResolve != null)
                    {
                        //Found a matching sideloader mod
                        if (Sideloader.DebugLogging.Value)
                        {
                            Sideloader.Logger.LogDebug($"Compatibility resolving (Studio Ramp) {rampID}->{intResolve.LocalSlot}");
                        }
                        Studio.Studio.Instance.sceneInfo.rampG = intResolve.LocalSlot;
                    }
                    else
                    {
                        Sideloader.Logger.Log(BepInEx.Logging.LogLevel.Warning | BepInEx.Logging.LogLevel.Message, $"[UAR] Compatibility resolving (Studio Ramp) failed, no match found for ID {rampID}");
                    }
                }
            }
#endif
        }
Пример #4
0
            internal static void SceneInfoInit(SceneInfo __instance)
            {
                var    xmlDoc    = XDocument.Load("UserData/config/system.xml");
                string rampGUID  = xmlDoc.Element("System").Element("Etc").Element("rampGUID")?.Value;
                string rampIDXML = xmlDoc.Element("System").Element("Etc").Element("rampId")?.Value;

                if (!rampGUID.IsNullOrWhiteSpace() && !rampIDXML.IsNullOrWhiteSpace() && int.TryParse(rampIDXML, out int rampID))
                {
                    ResolveInfo RampResolveInfo = LoadedResolutionInfo.FirstOrDefault(x => x.Property == "Ramp" && x.GUID == rampGUID && x.Slot == rampID);
                    if (RampResolveInfo == null) //Missing mod, reset ID to default
                    {
                        __instance.rampG = 1;
                    }
                    else //Restore the resolved ID
                    {
                        __instance.rampG = RampResolveInfo.LocalSlot;
                    }
                }
            }
Пример #5
0
            internal static void XMLWritePostfix(Control __instance, ref int __state)
            {
                int rampId = __state;

                if (rampId >= BaseSlotID)
                {
                    foreach (Data data in __instance.Datas)
                    {
                        if (data is Config.EtceteraSystem etceteraSystem)
                        {
                            ResolveInfo RampResolveInfo = LoadedResolutionInfo.FirstOrDefault(x => x.Property == "Ramp" && x.LocalSlot == rampId);
                            if (RampResolveInfo != null)
                            {
                                //Restore the resolved ID
                                etceteraSystem.rampId = RampResolveInfo.LocalSlot;

                                var xmlDoc = XDocument.Load("UserData/config/system.xml");
                                xmlDoc.Element("System").Element("Etc").Element("rampId").AddAfterSelf(new XElement("rampGUID", RampResolveInfo.GUID));
                                xmlDoc.Save("UserData/config/system.xml");
                            }
                        }
                    }
                }
            }