/// <summary> /// Create universe directories /// </summary> public static void CheckUniverse() { LunaLog.Debug($"Loading universe... {GetUniverseSize()}{ByteSize.KiloByteSymbol}"); if (!FileHandler.FolderExists(ServerContext.ConfigDirectory)) { FileHandler.FolderCreate(ServerContext.ConfigDirectory); } if (!FileHandler.FileExists(ServerContext.ModFilePath)) { if (FileHandler.FileExists(ServerContext.OldModFilePath)) { FileHandler.MoveFile(ServerContext.OldModFilePath, ServerContext.ModFilePath); } else { ModFileSystem.GenerateNewModFile(); } } else { // Cleanup FileHandler.FileDelete(ServerContext.OldModFilePath); } if (!FileHandler.FolderExists(ServerContext.UniverseDirectory)) { FileHandler.FolderCreate(ServerContext.UniverseDirectory); } if (!FileHandler.FolderExists(CraftLibrarySystem.CraftPath)) { FileHandler.FolderCreate(CraftLibrarySystem.CraftPath); } if (!FileHandler.FolderExists(FlagSystem.FlagPath)) { FileHandler.FolderCreate(FlagSystem.FlagPath); } if (!FileHandler.FolderExists(GroupSystem.GroupsPath)) { FileHandler.FolderCreate(GroupSystem.GroupsPath); } if (!FileHandler.FolderExists(ScreenshotSystem.ScreenshotPath)) { FileHandler.FolderCreate(ScreenshotSystem.ScreenshotPath); } if (!FileHandler.FolderExists(KerbalSystem.KerbalsPath)) { FileHandler.FolderCreate(KerbalSystem.KerbalsPath); KerbalSystem.GenerateDefaultKerbals(); } if (!FileHandler.FolderExists(ScenarioSystem.ScenariosPath)) { FileHandler.FolderCreate(ScenarioSystem.ScenariosPath); } if (!FileHandler.FolderExists(VesselStoreSystem.VesselsPath)) { FileHandler.FolderCreate(VesselStoreSystem.VesselsPath); } }
private void DrawDeleteModal() { if (_deleteIndex == null) { return; } ImGui.OpenPopup(DialogDeleteMod); var _ = true; ImGui.SetNextWindowPos(ImGui.GetMainViewport().GetCenter(), ImGuiCond.Appearing, Vector2.One / 2); var ret = ImGui.BeginPopupModal(DialogDeleteMod, ref _, ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoDecoration); if (!ret) { return; } using var raii = ImGuiRaii.DeferredEnd(ImGui.EndPopup); if (Mod == null) { _deleteIndex = null; ImGui.CloseCurrentPopup(); return; } ImGui.Text("Are you sure you want to delete the following mod:"); var halfLine = new Vector2(ImGui.GetTextLineHeight() / 2); ImGui.Dummy(halfLine); ImGui.TextColored(DeleteModNameColor, Mod.Data.Meta.Name); ImGui.Dummy(halfLine); var buttonSize = ImGuiHelpers.ScaledVector2(120, 0); if (ImGui.Button(ButtonYesDelete, buttonSize)) { ImGui.CloseCurrentPopup(); var mod = Mod; Cache.RemoveMod(mod); _modManager.DeleteMod(mod.Data.BasePath); ModFileSystem.InvokeChange(); ClearSelection(); } ImGui.SameLine(); if (ImGui.Button(ButtonNoDelete, buttonSize)) { ImGui.CloseCurrentPopup(); _deleteIndex = null; } }
private static void LoadSettingsAndGroups() { LunaLog.Debug("Loading groups..."); GroupSystem.LoadGroups(); LunaLog.Debug("Loading settings..."); SettingsHandler.LoadSettings(); if (GeneralSettings.SettingsStore.ModControl) { LunaLog.Debug("Loading mod control..."); ModFileSystem.LoadModFile(); } }
// Create a new ModFileSystem from the currently loaded mods and the current sort order file. public static ModFileSystem Load() { var ret = new ModFileSystem(); ret.Reload(); ret.Changed += ret.OnChange; Penumbra.ModManager.ModDiscoveryFinished += ret.Reload; Penumbra.ModManager.ModMetaChanged += ret.OnMetaChange; Penumbra.ModManager.ModPathChanged += ret.OnModPathChange; return(ret); }
public TestEventDepart() { ModDataVisit.InitVisitMap(typeof(Demon)); ModFileSystem.Clear(); var modFileSystem = ModFileSystem.Generate(nameof(TestEventDepart)); modFileSystem.AddDepartEvent("EVENT_TEST.txt", @"title = EVENT_DIFF_TITLE desc = EVENT_DIFF_DESC trigger = { equal = {depart.data1, 11} } date = every_day occur = 1 option = { desc = EVENT_TEST_OPTION_1_DESC select = { assign = {depart.data2, 101} } } option = { desc = EVENT_TEST_OPTION_2_DESC select = { assign = {depart.data2, 102} } } option = { desc = EVENT_TEST_OPTION_3_DESC select = { assign = {depart.data2, 103} } }"); Mod.Load(ModFileSystem.path); }
//Create universe directories public static void CheckUniverse() { LunaLog.Debug("Loading universe... "); if (!FileHandler.FileExists(ServerContext.ModFilePath)) { ModFileSystem.GenerateNewModFile(); } if (!FileHandler.FolderExists(ServerContext.UniverseDirectory)) { FileHandler.FolderCreate(ServerContext.UniverseDirectory); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Crafts"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Crafts")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Screenshots"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Screenshots")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Flags"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Flags")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Groups"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Groups")); } if (!FileHandler.FolderExists(KerbalSystem.KerbalsPath)) { FileHandler.FolderCreate(KerbalSystem.KerbalsPath); KerbalSystem.GenerateDefaultKerbals(); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Players"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Players")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Relay"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Relay")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Scenarios"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Scenarios")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Vessels"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Vessels")); } }
private void DrawModAddPopup() { if (!ImGui.BeginPopup(LabelAddModPopup)) { return; } using var raii = ImGuiRaii.DeferredEnd(ImGui.EndPopup); if (_modAddKeyboardFocus) { ImGui.SetKeyboardFocusHere(); _modAddKeyboardFocus = false; } var newName = ""; if (ImGui.InputTextWithHint("##AddMod", "New Mod Name...", ref newName, 64, ImGuiInputTextFlags.EnterReturnsTrue)) { try { var newDir = TexToolsImport.CreateModFolder(new DirectoryInfo(Penumbra.Config !.ModDirectory), newName); var modMeta = new ModMeta { Author = "Unknown", Name = newName.Replace('/', '\\'), Description = string.Empty, }; var metaFile = new FileInfo(Path.Combine(newDir.FullName, "meta.json")); modMeta.SaveToFile(metaFile); _modManager.AddMod(newDir); ModFileSystem.InvokeChange(); SelectModOnUpdate(newDir.Name); } catch (Exception e) { PluginLog.Error($"Could not create directory for new Mod {newName}:\n{e}"); } ImGui.CloseCurrentPopup(); } if (ImGui.IsKeyPressed(ImGui.GetKeyIndex(ImGuiKey.Escape))) { ImGui.CloseCurrentPopup(); } }
private static void LoadSettingsAndGroups() { LunaLog.Debug("Loading groups..."); GroupSystem.LoadGroups(); LunaLog.Debug("Loading settings..."); SettingsHandler.LoadSettings(); if (GeneralSettings.SettingsStore.ModControl) { LunaLog.Debug("Loading mod control..."); ModFileSystem.LoadModFile(); } Console.Title += $" ({GeneralSettings.SettingsStore.ServerName})"; #if DEBUG Console.Title += " DEBUG"; #endif }
//Create universe directories public static void CheckUniverse() { LunaLog.Debug("Loading universe... "); if (!FileHandler.FileExists(ServerContext.ModFilePath)) { ModFileSystem.GenerateNewModFile(); } if (!FileHandler.FolderExists(ServerContext.UniverseDirectory)) { FileHandler.FolderCreate(ServerContext.UniverseDirectory); } if (!FileHandler.FolderExists(CraftLibrarySystem.CraftPath)) { FileHandler.FolderCreate(CraftLibrarySystem.CraftPath); } if (!FileHandler.FolderExists(FlagSystem.FlagPath)) { FileHandler.FolderCreate(FlagSystem.FlagPath); } if (!FileHandler.FolderExists(GroupSystem.GroupsPath)) { FileHandler.FolderCreate(GroupSystem.GroupsPath); } if (!FileHandler.FolderExists(ScreenshotSystem.ScreenshotPath)) { FileHandler.FolderCreate(ScreenshotSystem.ScreenshotPath); } if (!FileHandler.FolderExists(KerbalSystem.KerbalsPath)) { FileHandler.FolderCreate(KerbalSystem.KerbalsPath); KerbalSystem.GenerateDefaultKerbals(); } if (!FileHandler.FolderExists(ScenarioSystem.ScenariosPath)) { FileHandler.FolderCreate(ScenarioSystem.ScenariosPath); } if (!FileHandler.FolderExists(VesselStoreSystem.VesselsPath)) { FileHandler.FolderCreate(VesselStoreSystem.VesselsPath); } }
private static void LoadSettingsAndGroups() { LunaLog.Debug("Loading groups..."); GroupSystem.LoadGroups(); LunaLog.Debug("Loading settings..."); GeneralSettings.Singleton.Load(); if (GeneralSettings.SettingsStore.GameDifficulty == GameDifficulty.Custom) { LunaLog.Debug("Loading gameplay settings..."); GameplaySettings.Singleton.Load(); } if (GeneralSettings.SettingsStore.ModControl) { LunaLog.Debug("Loading mod control..."); ModFileSystem.LoadModFile(); } #if DEBUG DebugSettings.Singleton.Load(); LunaTime.SimulatedMsTimeOffset = DebugSettings.SettingsStore.SimulatedMsTimeOffset; #endif }
private static void LoadSettingsAndGroups() { LunaLog.Debug("Loading groups..."); GroupSystem.LoadGroups(); LunaLog.Debug("Loading settings..."); SettingsHandler.LoadSettings(); SettingsHandler.ValidateDifficultySettings(); if (GeneralSettings.SettingsStore.ModControl) { LunaLog.Debug("Loading mod control..."); ModFileSystem.LoadModFile(); } if (Common.PlatformIsWindows()) { Console.Title += $" ({GeneralSettings.SettingsStore.ServerName})"; #if DEBUG Console.Title += " DEBUG"; #endif } }
//Create universe directories public static void CheckUniverse() { if (!FileHandler.FileExists(ServerContext.ModFilePath)) { ModFileSystem.GenerateNewModFile(); } if (!FileHandler.FolderExists(ServerContext.UniverseDirectory)) { FileHandler.FolderCreate(ServerContext.UniverseDirectory); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Crafts"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Crafts")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Flags"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Flags")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Players"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Players")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Kerbals"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Kerbals")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Vessels"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Vessels")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Scenarios"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Scenarios")); } if (!FileHandler.FolderExists(Path.Combine(ServerContext.UniverseDirectory, "Scenarios", "Initial"))) { FileHandler.FolderCreate(Path.Combine(ServerContext.UniverseDirectory, "Scenarios", "Initial")); } }
public ModFileSystemSelector(ModFileSystem fileSystem) : base(fileSystem) { SubscribeRightClickFolder(EnableDescendants, 10); SubscribeRightClickFolder(DisableDescendants, 10); SubscribeRightClickFolder(InheritDescendants, 15); SubscribeRightClickFolder(OwnDescendants, 15); SubscribeRightClickFolder(SetDefaultImportFolder, 100); SubscribeRightClickMain(ClearDefaultImportFolder, 100); AddButton(AddNewModButton, 0); AddButton(AddImportModButton, 1); AddButton(AddHelpButton, 2); AddButton(DeleteModButton, 1000); SetFilterTooltip(); SelectionChanged += OnSelectionChange; Penumbra.CollectionManager.CollectionChanged += OnCollectionChange; Penumbra.CollectionManager.Current.ModSettingChanged += OnSettingChange; Penumbra.CollectionManager.Current.InheritanceChanged += OnInheritanceChange; Penumbra.ModManager.ModMetaChanged += OnModMetaChange; Penumbra.ModManager.ModDiscoveryStarted += StoreCurrentSelection; Penumbra.ModManager.ModDiscoveryFinished += RestoreLastSelection; OnCollectionChange(ModCollection.Type.Current, null, Penumbra.CollectionManager.Current, null); }
public Penumbra(CharacterUtility characterUtility) { CharacterUtility = characterUtility; Framework = new FrameworkManager(); Backup.CreateBackup(PenumbraBackupFiles()); Config = Configuration.Load(); MusicManager = new MusicManager(); if (Config.DisableSoundStreaming) { MusicManager.DisableStreaming(); } ResidentResources = new ResidentResourceManager(); Redirects = new SimpleRedirectManager(); MetaFileManager = new MetaFileManager(); ResourceLoader = new ResourceLoader(this); ResourceLogger = new ResourceLogger(ResourceLoader); ModManager = new Mod.Manager(Config.ModDirectory); ModManager.DiscoverMods(); CollectionManager = new ModCollection.Manager(ModManager); ModFileSystem = ModFileSystem.Load(); ObjectReloader = new ObjectReloader(); PathResolver = new PathResolver(ResourceLoader); Dalamud.Commands.AddHandler(CommandName, new CommandInfo(OnCommand) { HelpMessage = "/penumbra - toggle ui\n/penumbra reload - reload mod file lists & discover any new mods", }); ResidentResources.Reload(); SetupInterface(out _configWindow, out _launchButton, out _windowSystem); if (Config.EnableHttpApi) { CreateWebServer(); } ResourceLoader.EnableHooks(); if (Config.EnableMods) { ResourceLoader.EnableReplacements(); PathResolver.Enable(); } if (Config.DebugMode) { ResourceLoader.EnableDebug(); _configWindow.IsOpen = true; } if (Config.EnableFullResourceLogging) { ResourceLoader.EnableFullLogging(); } ResidentResources.Reload(); Api = new PenumbraApi(this); Ipc = new PenumbraIpc(Dalamud.PluginInterface, Api); SubscribeItemLinks(); if (ImcExceptions > 0) { PluginLog.Error($"{ImcExceptions} IMC Exceptions thrown. Please repair your game files."); } else { PluginLog.Information($"Penumbra Version {Version}, Commit #{CommitHash} successfully Loaded."); } }
internal TestModBase() { modFileSystem = ModFileSystem.Generate(this.GetType().Name); }