Some Tutorial updates.

This commit is contained in:
Ottermandias 2022-07-12 16:26:37 +02:00
parent b3ee622396
commit 57b9f60ba3
10 changed files with 101 additions and 53 deletions

@ -1 +1 @@
Subproject commit 70d9f81436c82cc51734f0661d10f461da4f1840
Subproject commit b6c4877cc586f47931e71f284f865833846d9baa

View file

@ -246,22 +246,10 @@ public partial class ModFileSystemSelector
return false;
}
// Add the state filter combo-button to the right of the filter box.
protected override float CustomFilters( float width )
private void DrawFilterCombo( ref bool everything )
{
var pos = ImGui.GetCursorPos();
var remainingWidth = width - ImGui.GetFrameHeight();
var comboPos = new Vector2( pos.X + remainingWidth, pos.Y );
var everything = _stateFilter == ModFilterExtensions.UnfilteredStateMods;
ImGui.SetCursorPos( comboPos );
// Draw combo button
using var color = ImRaii.PushColor( ImGuiCol.Button, Colors.FilterActive, !everything );
using var combo = ImRaii.Combo( "##filterCombo", string.Empty,
ImGuiComboFlags.NoPreview | ImGuiComboFlags.PopupAlignLeft | ImGuiComboFlags.HeightLargest );
color.Pop();
if( combo )
{
using var style = ImRaii.PushStyle( ImGuiStyleVar.ItemSpacing,
@ -285,8 +273,22 @@ public partial class ModFileSystemSelector
}
}
}
}
combo.Dispose();
// Add the state filter combo-button to the right of the filter box.
protected override float CustomFilters( float width )
{
var pos = ImGui.GetCursorPos();
var remainingWidth = width - ImGui.GetFrameHeight();
var comboPos = new Vector2( pos.X + remainingWidth, pos.Y );
var everything = _stateFilter == ModFilterExtensions.UnfilteredStateMods;
ImGui.SetCursorPos( comboPos );
// Draw combo button
using var color = ImRaii.PushColor( ImGuiCol.Button, Colors.FilterActive, !everything );
DrawFilterCombo( ref everything );
ConfigWindow.OpenTutorial( ConfigWindow.BasicTutorialSteps.ModFilters );
if( ImGui.IsItemClicked( ImGuiMouseButton.Right ) )
{
_stateFilter = ModFilterExtensions.UnfilteredStateMods;

View file

@ -201,7 +201,7 @@ public sealed partial class ModFileSystemSelector : FileSystemSelector< Mod, Mod
{
var button = ImGuiUtil.DrawDisabledButton( FontAwesomeIcon.FileImport.ToIconString(), size,
"Import one or multiple mods from Tex Tools Mod Pack Files.", !Penumbra.ModManager.Valid, true );
ConfigWindow.OpenTutorial( 13 );
ConfigWindow.OpenTutorial( ConfigWindow.BasicTutorialSteps.ModImport );
if (!button)
{
return;
@ -312,7 +312,7 @@ public sealed partial class ModFileSystemSelector : FileSystemSelector< Mod, Mod
{
ImGui.OpenPopup( "ExtendedHelp" );
}
ConfigWindow.OpenTutorial( 14 );
ConfigWindow.OpenTutorial( ConfigWindow.BasicTutorialSteps.AdvancedHelp );
}
// Helpers.

View file

@ -23,7 +23,7 @@ public partial class ConfigWindow
public void Draw()
{
using var tab = ImRaii.TabItem( "Collections" );
OpenTutorial( 5 );
OpenTutorial( BasicTutorialSteps.Collections );
if( !tab )
{
return;
@ -194,7 +194,7 @@ public partial class ConfigWindow
{
ImGui.Dummy( _window._defaultSpace );
var open = ImGui.CollapsingHeader( "Active Collections" );
OpenTutorial( 9 );
OpenTutorial( BasicTutorialSteps.ActiveCollections );
if( !open )
{
return;
@ -202,7 +202,7 @@ public partial class ConfigWindow
ImGui.Dummy( _window._defaultSpace );
DrawDefaultCollectionSelector();
OpenTutorial( 10 );
OpenTutorial( BasicTutorialSteps.DefaultCollection );
ImGui.Dummy( _window._defaultSpace );
foreach( var type in CollectionTypeExtensions.Special )
{
@ -248,7 +248,7 @@ public partial class ConfigWindow
DrawNewCharacterCollection();
}
OpenTutorial( 11 );
OpenTutorial( BasicTutorialSteps.SpecialCollections );
ImGui.Dummy( _window._defaultSpace );
}
@ -257,7 +257,7 @@ public partial class ConfigWindow
{
ImGui.Dummy( _window._defaultSpace );
var open = ImGui.CollapsingHeader( "Collection Settings", ImGuiTreeNodeFlags.DefaultOpen );
OpenTutorial( 6 );
OpenTutorial( BasicTutorialSteps.EditingCollections );
if( !open )
{
return;
@ -265,12 +265,12 @@ public partial class ConfigWindow
ImGui.Dummy( _window._defaultSpace );
DrawCurrentCollectionSelector();
OpenTutorial( 7 );
OpenTutorial( BasicTutorialSteps.CurrentCollection );
ImGui.Dummy( _window._defaultSpace );
DrawNewCollectionInput();
ImGui.Dummy( _window._defaultSpace );
DrawInheritanceBlock();
OpenTutorial( 8 );
OpenTutorial( BasicTutorialSteps.Inheritance );
}
}
}

View file

@ -36,7 +36,7 @@ public partial class ConfigWindow
private void DrawSettingsTab()
{
using var tab = DrawTab( SettingsTabHeader, Tabs.Settings );
OpenTutorial( 17 );
OpenTutorial( BasicTutorialSteps.ModOptions );
if( !tab )
{
return;
@ -52,10 +52,10 @@ public partial class ConfigWindow
ImGui.Dummy( _window._defaultSpace );
_window._penumbra.Api.InvokePreSettingsPanel( _mod.ModPath.Name );
DrawEnabledInput();
OpenTutorial( 15 );
OpenTutorial( BasicTutorialSteps.EnablingMods );
ImGui.SameLine();
DrawPriorityInput();
OpenTutorial( 16 );
OpenTutorial( BasicTutorialSteps.Priority );
DrawRemoveSettings();
ImGui.Dummy( _window._defaultSpace );
for( var idx = 0; idx < _mod.Groups.Count; ++idx )

View file

@ -22,7 +22,7 @@ public partial class ConfigWindow
try
{
using var tab = ImRaii.TabItem( "Mods" );
OpenTutorial( 12 );
OpenTutorial( BasicTutorialSteps.Mods );
if( !tab )
{
return;
@ -59,11 +59,17 @@ public partial class ConfigWindow
using var style = ImRaii.PushStyle( ImGuiStyleVar.FrameRounding, 0 ).Push( ImGuiStyleVar.ItemSpacing, Vector2.Zero );
var buttonSize = new Vector2( ImGui.GetContentRegionAvail().X / 8f, 0 );
DrawDefaultCollectionButton( 3 * buttonSize );
ImGui.SameLine();
DrawInheritedCollectionButton( 3 * buttonSize );
ImGui.SameLine();
DrawCollectionSelector( "##collectionSelector", 2 * buttonSize.X, CollectionType.Current, false, null );
using( var group = ImRaii.Group() )
{
DrawDefaultCollectionButton( 3 * buttonSize );
ImGui.SameLine();
DrawInheritedCollectionButton( 3 * buttonSize );
ImGui.SameLine();
DrawCollectionSelector( "##collectionSelector", 2 * buttonSize.X, CollectionType.Current, false, null );
}
OpenTutorial( BasicTutorialSteps.CollectionSelectors );
if( !Penumbra.CollectionManager.CurrentCollectionInUse )
{
ImGuiUtil.DrawTextButton( "The currently selected collection is not used in any way.", -Vector2.UnitX, Colors.PressEnterWarningBg );

View file

@ -31,11 +31,11 @@ public partial class ConfigWindow
{
if( !ImGui.CollapsingHeader( "General" ) )
{
OpenTutorial( 4 );
OpenTutorial( BasicTutorialSteps.GeneralSettings );
return;
}
OpenTutorial( 4 );
OpenTutorial( BasicTutorialSteps.GeneralSettings );
Checkbox( "Hide Config Window when UI is Hidden",
"Hide the penumbra main window when you manually hide the in-game user interface.", Penumbra.Config.HideUiWhenUiHidden,

View file

@ -28,6 +28,10 @@ public partial class ConfigWindow
public void Draw()
{
using var tab = ImRaii.TabItem( "Settings" );
OpenTutorial( BasicTutorialSteps.Fin );
OpenTutorial( BasicTutorialSteps.Faq1 );
OpenTutorial( BasicTutorialSteps.Faq2 );
OpenTutorial( BasicTutorialSteps.Faq3 );
if( !tab )
{
return;
@ -154,7 +158,7 @@ public partial class ConfigWindow
+ "It should also be placed near the root of a logical drive - the shorter the total path to this folder, the better.\n"
+ "Definitely do not place it in your Dalamud directory or any sub-directory thereof." );
group.Dispose();
OpenTutorial( 1 );
OpenTutorial( BasicTutorialSteps.ModDirectory );
ImGui.SameLine();
var pos = ImGui.GetCursorPosX();
ImGui.NewLine();
@ -188,7 +192,7 @@ public partial class ConfigWindow
_window._penumbra.SetEnabled( enabled );
}
OpenTutorial( 2 );
OpenTutorial( BasicTutorialSteps.EnableMods );
}
private static void DrawShowAdvancedBox()
@ -208,13 +212,13 @@ public partial class ConfigWindow
// Manually split due to tutorial.
ImGuiComponents.HelpMarker( tt );
OpenTutorial( 0 );
OpenTutorial( BasicTutorialSteps.GeneralTooltips );
ImGui.SameLine();
ImGui.TextUnformatted( "Show Advanced Settings" );
ImGuiUtil.HoverTooltip( tt );
}
OpenTutorial( 3 );
OpenTutorial( BasicTutorialSteps.AdvancedSettings );
}
private static void DrawColorSettings()

View file

@ -1,3 +1,4 @@
using System;
using OtterGui.Widgets;
using Penumbra.UI.Classes;
@ -15,13 +16,41 @@ public partial class ConfigWindow
}
}
public static void OpenTutorial( int id )
=> Tutorial.Open( id, Penumbra.Config.TutorialStep, v =>
public static void OpenTutorial( BasicTutorialSteps step )
=> Tutorial.Open( ( int )step, Penumbra.Config.TutorialStep, v =>
{
Penumbra.Config.TutorialStep = v;
Penumbra.Config.Save();
} );
public enum BasicTutorialSteps
{
GeneralTooltips,
ModDirectory,
EnableMods,
AdvancedSettings,
GeneralSettings,
Collections,
EditingCollections,
CurrentCollection,
Inheritance,
ActiveCollections,
DefaultCollection,
SpecialCollections,
Mods,
ModImport,
AdvancedHelp,
ModFilters,
CollectionSelectors,
EnablingMods,
Priority,
ModOptions,
Fin,
Faq1,
Faq2,
Faq3,
}
public static readonly Tutorial Tutorial = new Tutorial()
{
BorderColor = Colors.TutorialBorder,
@ -32,23 +61,27 @@ public partial class ConfigWindow
+ "Hover over them when you are unsure what something does or how to do something." )
.Register( "Initial Setup, Step 1: Mod Directory",
"The first step is to set up your mod directory, which is where your mods are extracted to.\n\n"
+ "The mod directory should be a short path - like 'D:\\FFXIVMods', if you want to store your mods on D: - and be on a fast hard drive." )
+ "The mod directory should be a short path - like 'C:\\FFXIVMods' - on your fastest available drive. Faster drives improve performance.\n\n"
+ "The folder should be an empty folder no other applications write to." )
.Register( "Initial Setup, Step 2: Enable Mods", "Do not forget to enable your mods in case they are not." )
.Register( "Advanced Settings", "When you are just starting, you should leave this off.\n\n"
+ "If you need to do any editing of your mods, you will have to turn it on later." )
.Register( "General Settings", "Look through all of these settings before starting, they might help you a lot!\n\n"
+ "If you do not know what some of these do yet, return to this later!" )
.Register( "Initial Setup, Step 3: Collections", "Collections are lists of settings for your installed mods.\n\n"
+ "This is our next stop!" )
+ "This is our next stop!\n\n"
+ "Go here after setting up your root folder to continue the tutorial!" )
.Register( "Initial Setup, Step 4: Editing Collections", "First, we need to open the Collection Settings.\n\n"
+ "In here, we can create new collections, delete collections, or make them inherit from each other." )
.Register( "Initial Setup, Step 5: Current Collection",
"We should already have a Default Collection, and for our simple setup, we do not need to do anything here.\n\n"
+ "The current collection is the one we are currently editing. Any changes we make in our mod settings later will edit this collection." )
+ "The current collection is the one we are currently editing. Any changes we make in our mod settings later in the next tab will edit this collection." )
.Register( "Inheritance",
"This is a more advanced feature. Click the 'What is Inheritance?' button for more information, but we will ignore this for now." )
"This is a more advanced feature. Click the help button for more information, but we will ignore this for now." )
.Register( "Initial Setup, Step 6: Active Collections", "Active Collections are those that are actually in use at the moment.\n\n"
+ "Any collection in use will apply to the game under certain conditions." )
+ "Any collection in use will apply to the game under certain conditions.\n\n"
+ "The Current Collection is also active for technical reasons.\n\n"
+ "Open this now to continue." )
.Register( "Initial Setup, Step 7: Default Collection",
"The Default Collection - which should currently also be set to a collection named Default - is the main one.\n\n"
+ "As long as no more specific collection applies to something, the mods from the Default Collection will be used.\n\n"
@ -56,15 +89,21 @@ public partial class ConfigWindow
.Register( "Special Collections",
"Special Collections are those that are used only for special characters in the game, either by specific conditions, or by name.\n\n"
+ "We will skip this for now, but hovering over the creation buttons should explain how they work." )
.Register( "Initial Setup, Step 8: Mods", "Our last stop is the Mods tab, where you can import and setup your mods." )
.Register( "Initial Setup, Step 8: Mods", "Our last stop is the Mods tab, where you can import and setup your mods.\n\n"
+ "Please go there after verifying that your Current Collection and Default Collection are setup to your liking." )
.Register( "Initial Setup, Step 9: Mod Import",
"Click this button to open a file selector with which to select TTMP mod files. You can select multiple at once.\n\n"
+ "It is not recommended to import huge mod packs of all your TexTools mods, but rather import the mods themselves, otherwise you lose out on a lot of Penumbra features!\n\n"
+ "A feature to import raw texture mods for Tattoos etc. is available under Advanced Editing, but is currently a work in progress." ) // TODO
.Register( "Advanced Help", "Click this button to get detailed information on what you can do in the mod selector.\n\n"
+ "Import and select a mod now to continue." )
.Register( "Mod Filters", "You can filter the available mods by name, author, changed items or various attributes here." )
.Register( "Collection Selectors", "This row provides shortcuts to set your Current Collection.\n\n"
+ "The first button sets it to your Default Collection (if any).\n\n"
+ "The second button sets it to the collection the settings of the currently selected mod are inherited from (if any).\n\n"
+ "The third is a regular collection selector to let you choose among all your collections." )
.Register( "Initial Setup, Step 11: Enabling Mods",
"Enable a mod here. Disabled mods will not apply to anything in the current collection (which can be seen and changed in the top-right corner).\n\n"
"Enable a mod here. Disabled mods will not apply to anything in the current collection.\n\n"
+ "Mods can be enabled or disabled in a collection, or they can be unconfigured, in which case they will use Inheritance." )
.Register( "Initial Setup, Step 12: Priority", "If two enabled mods in one collection change the same files, there is a conflict.\n\n"
+ "Conflicts can be solved by setting a priority. The mod with the higher number will be used for all the conflicting files.\n\n"
@ -76,5 +115,6 @@ public partial class ConfigWindow
.Register( "FAQ 1", "Penumbra can not easily change which items a mod applies to." )
.Register( "FAQ 2",
"It is advised to not use TexTools and Penumbra at the same time. Penumbra may refuse to work if TexTools broke your game indices." )
.Register( "FAQ 3", "Penumbra can change the skin material a mod uses. This is under advanced editing." );
.Register( "FAQ 3", "Penumbra can change the skin material a mod uses. This is under advanced editing." )
.EnsureSize( Enum.GetValues< BasicTutorialSteps >().Length );
}

View file

@ -79,10 +79,6 @@ public sealed partial class ConfigWindow : Window, IDisposable
}
else
{
OpenTutorial( 18 );
OpenTutorial( 19 );
OpenTutorial( 20 );
OpenTutorial( 21 );
using var bar = ImRaii.TabBar( string.Empty, ImGuiTabBarFlags.NoTooltip );
SetupSizes();
_settingsTab.Draw();