Example #1
0
 public static void SaveEventModStarted(CustomEventMod customEvent)
 {
     if (!HasEventModBeenLoadedBefore(customEvent))
     {
         ModsLoadedBefore.Add(customEvent);
     }
     SaveModProgress();
 }
Example #2
0
 public static bool HasEventModBeenLoadedBefore(CustomEventMod customEvent)
 {
     foreach (CustomEventMod eMod in ModsLoadedBefore)
     {
         if (eMod.Name == customEvent.Name && eMod.Author == customEvent.Author && eMod.Version == customEvent.Version)
         {
             return(true);
         }
     }
     return(false);
 }
Example #3
0
 public static bool EventModLoaded(CustomEventMod mod)
 {
     foreach (CustomEventMod eMod in _customEventMods)
     {
         if (eMod.Name == mod.Name && eMod.Author == mod.Author && eMod.Version == mod.Version)
         {
             return(true);
         }
     }
     return(false);
 }
Example #4
0
        public static void LoadModEndings()
        {
            DirectoryInfo[] directories = new DirectoryInfo(ModConstants.MODS_LOCATION).GetDirectories();
            List <CSecretEndingConditions> modEndingConditions = new List <CSecretEndingConditions>();

            finalScenes.Clear();
            modEndings.Clear();

            foreach (DirectoryInfo directory in directories)
            {
                FileInfo modInfo = directory.GetFiles("*.xml").FirstOrDefault();
                if (modInfo == null)
                {
                    continue;
                }
                CustomEventMod mod = CustomEventMod.Load(modInfo.FullName);
                if (!EventLoader.EventLoader.EventModLoaded(mod))
                {
                    continue;
                }
                string[] files = Directory.GetFiles(directory.FullName + "/EndingConditions", "*.xml");
                foreach (string file in files)
                {
                    GeneralManager.Instance.LogToFileOrConsole("[PromDate] Loading ending conditions from " + file);
                    EndingContainer endingContainer = EndingContainer.Load(file);
                    foreach (Ending ending in endingContainer.Endings)
                    {
                        GeneralManager.Instance.LogToFileOrConsole("\t[PromDate] Loading ending " + ending.SecretEndingName);
                        EventManager.CSecretEndingConditions endCond = EndingContainer.convertEndingConditions(ending, mod);
                        modEndingConditions.Add(endCond);
                        EndingHelper.modEndings.Add(EventManager.Instance.Events[endCond.cSecretEndingIndex]);
                        FinalSceneInfo sceneInfo = new FinalSceneInfo()
                        {
                            FromPromScene = endCond.cSecretEndingIndex, SceneId = endCond.cSecretEndingIndex + 1
                        };
                        if (EventManager.Instance.Events[endCond.cSecretEndingIndex].ArgumentTags.Any(arg => arg.Contains("SFX")))
                        {
                            sceneInfo.AudioClip = EventManager.Instance.Events[endCond.cSecretEndingIndex].ArgumentTags.First(arg => arg.Contains("SFX")).Split('_')[1];
                        }
                        EndingHelper.finalScenes.Add(sceneInfo);
                    }
                }
            }
            EventManager.Instance.SecretEndingsConditions = EventManager.Instance.SecretEndingsConditions.Concat(modEndingConditions.ToArray()).ToArray();
        }
Example #5
0
        public static void LoadNewEvents(DirectoryInfo dir, CustomEventMod mod)
        {
            int num = 0;

            FileInfo[] files = new DirectoryInfo(dir.FullName + "/Events").GetFiles("*.xml");
            foreach (FileInfo file in files)
            {
                EventContainer eventContainer = EventContainer.Load(file.FullName);
                foreach (ModEvent eve in eventContainer.Events)
                {
                    GeneralManager.Instance.LogToFileOrConsole("\t[PromDate] Loading event " + eve.Name, false, false);
                    CEventFlow newCustomEvent = EventContainer.eventToFlow(eve);
                    newCustomEvent.EventName = EventHelper.AppendModName(newCustomEvent.EventName, mod);
                    customEvents.Add(newCustomEvent);
                    num++;
                }
            }
        }
Example #6
0
 private void InitCustomEvents()
 {
     DirectoryInfo[] modDirectories = (new DirectoryInfo(ModConstants.MODS_LOCATION)).GetDirectories();
     foreach (DirectoryInfo dir in modDirectories)
     {
         string modPath = dir.GetFiles("*.xml").FirstOrDefault().FullName;
         if (String.IsNullOrEmpty(modPath))
         {
             continue;
         }
         CustomEventMod customEvent = CustomEventMod.Load(modPath);
         AudioHelper.Instance.LoadAudio(dir);
         SpriteHelper.LoadSprites(dir);
         EventLoader.LoadNewEvents(dir, customEvent);
         ShopHelper.LoadItemsFromFile(dir, customEvent);
         ProgressTracker.SaveEventModStarted(customEvent);
         EventLoader.CustomEvents.Add(customEvent);
     }
 }
Example #7
0
 public static void LoadItemsFromFile(DirectoryInfo dir, CustomEventMod customEvent)
 {
     string[] files = Directory.GetFiles(dir.FullName + "/Items", "*.xml");
     foreach (string file in files)
     {
         GeneralManager.Instance.LogToFileOrConsole("[PromDate] Loading items from " + file);
         ItemContainer itemContainer = ItemContainer.Load(file);
         foreach (Item item in itemContainer.Items)
         {
             GeneralManager.Instance.LogToFileOrConsole("[PromDate] Loading item: " + item.Name);
             AddShopItem(item.Name, item.Price, item.DescriptionTitle, item.Description, item.ShopkeeperMood, SpriteHelper.LookupCustomSprite(item.SmallSprite), SpriteHelper.LookupCustomSprite(item.LargeSprite), item.EventItem);
             if (!string.IsNullOrEmpty(item.UnlockDescription))
             {
                 if (ProgressTracker.HasEventModBeenLoadedBefore(customEvent))
                 {
                     return;
                 }
                 GeneralManager.CUnlockableConditions cond = new GeneralManager.CUnlockableConditions(item.Name, NGameConstants.EUnlockableType.Item, "", new GeneralManager.CUnlockableRequirement[0], SpriteHelper.LookupCustomSprite(item.LargeSprite), item.UnlockDescription);
                 (typeof(GeneralManager).GetField("mUnlockedThisRun", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(GeneralManager.Instance) as List <GeneralManager.CUnlockableConditions>).Add(cond);
             }
         }
     }
     GeneralManager.Instance.CheckMoreUnlockablesThisRun();
 }
Example #8
0
 public static string AppendModName(string from, CustomEventMod mod)
 {
     return(from + "_" + mod.Name.Replace(' ', '_'));
 }
Example #9
0
    public static EventManager.CSecretEndingConditions convertEndingConditions(Ending ending, CustomEventMod mod)
    {
        List <int> eventsRequired = new List <int>();

        foreach (string req in ending.EventsRequired)
        {
            string required = EventHelper.AppendModName(req, mod);
            int    evIndex  = EventManager.Instance.Events.TakeWhile(ev => !ev.EventName.Contains(required)).Count();
            eventsRequired.Add(evIndex);
        }
        ending.SecretEndingName = EventHelper.AppendModName(ending.SecretEndingName, mod);
        int secretEndingIndex = EventManager.Instance.Events.TakeWhile(ev => !ev.EventName.Contains(ending.SecretEndingName)).Count();

        EventManager.CSecretEndingConditions endingConditions = new EventManager.CSecretEndingConditions(ending.SecretEndingName, secretEndingIndex, eventsRequired.ToArray(), ending.ChoicesNeeded.Select(a => a.Choices.Select(str => (EEventChoiceSelected)Enum.Parse(typeof(EEventChoiceSelected), str)).ToArray()).ToArray(), ending.NpcsChosenForProm.ToArray(), ending.NpcRestriction, ending.LovePointsNeededWithNpc, ending.ContinuitySuccessNeeded);
        return(endingConditions);
    }