diff --git a/.editorconfig b/.editorconfig
index bc29f5d7..e283b2a2 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -1,67 +1,85 @@
-
-[*]
-charset=utf-8
-end_of_line=lf
-trim_trailing_whitespace=false
-insert_final_newline=false
-indent_style=space
-indent_size=4
-
-# Microsoft .NET properties
-csharp_new_line_before_members_in_object_initializers=false
-csharp_preferred_modifier_order=public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion
-csharp_space_after_cast=false
-csharp_space_after_keywords_in_control_flow_statements=false
-csharp_space_between_method_call_parameter_list_parentheses=true
-csharp_space_between_method_declaration_parameter_list_parentheses=true
-csharp_space_between_parentheses=control_flow_statements,expressions,type_casts
-csharp_style_var_elsewhere=true:suggestion
-csharp_style_var_for_built_in_types=true:suggestion
-csharp_style_var_when_type_is_apparent=true:suggestion
-dotnet_style_parentheses_in_arithmetic_binary_operators=never_if_unnecessary:none
-dotnet_style_parentheses_in_other_binary_operators=never_if_unnecessary:none
-dotnet_style_parentheses_in_relational_binary_operators=never_if_unnecessary:none
-dotnet_style_predefined_type_for_locals_parameters_members=true:suggestion
-dotnet_style_predefined_type_for_member_access=true:suggestion
-dotnet_style_qualification_for_event=false:suggestion
-dotnet_style_qualification_for_field=false:suggestion
-dotnet_style_qualification_for_method=false:suggestion
-dotnet_style_qualification_for_property=false:suggestion
-dotnet_style_require_accessibility_modifiers=for_non_interface_members:suggestion
-
-# ReSharper properties
-resharper_autodetect_indent_settings=true
-resharper_csharp_space_within_array_access_brackets=true
-resharper_enforce_line_ending_style=true
-resharper_place_attribute_on_same_line=false
-resharper_space_after_cast=false
-resharper_space_within_checked_parentheses=true
-resharper_space_within_default_parentheses=true
-resharper_space_within_nameof_parentheses=true
-resharper_space_within_single_line_array_initializer_braces=true
-resharper_space_within_sizeof_parentheses=true
-resharper_space_within_typeof_parentheses=true
-resharper_space_within_type_argument_angles=true
-resharper_space_within_type_parameter_angles=true
-resharper_use_indent_from_vs=false
-resharper_wrap_lines=true
-
-# ReSharper inspection severities
-resharper_arrange_redundant_parentheses_highlighting=hint
-resharper_arrange_this_qualifier_highlighting=hint
-resharper_arrange_type_member_modifiers_highlighting=hint
-resharper_arrange_type_modifiers_highlighting=hint
-resharper_built_in_type_reference_style_for_member_access_highlighting=hint
-resharper_built_in_type_reference_style_highlighting=hint
-resharper_redundant_base_qualifier_highlighting=warning
-resharper_suggest_var_or_type_built_in_types_highlighting=hint
-resharper_suggest_var_or_type_elsewhere_highlighting=hint
-resharper_suggest_var_or_type_simple_types_highlighting=hint
-resharper_web_config_module_not_resolved_highlighting=warning
-resharper_web_config_type_not_resolved_highlighting=warning
-resharper_web_config_wrong_module_highlighting=warning
-
-[*.{appxmanifest,asax,ascx,aspx,build,cg,cginc,compute,cs,cshtml,dtd,hlsl,hlsli,hlslinc,master,nuspec,razor,resw,resx,shader,skin,usf,ush,vb,xaml,xamlx,xoml,xsd}]
-indent_style=space
-indent_size=4
-tab_width=4
+
+[*]
+charset=utf-8
+end_of_line=lf
+trim_trailing_whitespace=true
+insert_final_newline=false
+indent_style=space
+indent_size=4
+
+# Microsoft .NET properties
+csharp_new_line_before_members_in_object_initializers=false
+csharp_preferred_modifier_order=public, private, protected, internal, new, abstract, virtual, sealed, override, static, readonly, extern, unsafe, volatile, async:suggestion
+csharp_prefer_braces=true:none
+csharp_space_after_cast=false
+csharp_space_after_keywords_in_control_flow_statements=false
+csharp_space_between_method_call_parameter_list_parentheses=true
+csharp_space_between_method_declaration_parameter_list_parentheses=true
+csharp_space_between_parentheses=control_flow_statements,expressions,type_casts
+csharp_style_var_elsewhere=true:suggestion
+csharp_style_var_for_built_in_types=true:suggestion
+csharp_style_var_when_type_is_apparent=true:suggestion
+dotnet_style_parentheses_in_arithmetic_binary_operators=never_if_unnecessary:none
+dotnet_style_parentheses_in_other_binary_operators=never_if_unnecessary:none
+dotnet_style_parentheses_in_relational_binary_operators=never_if_unnecessary:none
+dotnet_style_predefined_type_for_locals_parameters_members=true:suggestion
+dotnet_style_predefined_type_for_member_access=true:suggestion
+dotnet_style_qualification_for_event=false:suggestion
+dotnet_style_qualification_for_field=false:suggestion
+dotnet_style_qualification_for_method=false:suggestion
+dotnet_style_qualification_for_property=false:suggestion
+dotnet_style_require_accessibility_modifiers=for_non_interface_members:suggestion
+
+# ReSharper properties
+resharper_align_multiline_binary_expressions_chain=false
+resharper_align_multiline_calls_chain=false
+resharper_autodetect_indent_settings=true
+resharper_braces_redundant=true
+resharper_constructor_or_destructor_body=expression_body
+resharper_csharp_empty_block_style=together
+resharper_csharp_max_line_length=144
+resharper_csharp_space_within_array_access_brackets=true
+resharper_enforce_line_ending_style=true
+resharper_int_align_assignments=true
+resharper_int_align_comments=true
+resharper_int_align_fields=true
+resharper_int_align_invocations=false
+resharper_int_align_nested_ternary=true
+resharper_int_align_properties=false
+resharper_int_align_switch_expressions=true
+resharper_int_align_switch_sections=true
+resharper_int_align_variables=true
+resharper_local_function_body=expression_body
+resharper_method_or_operator_body=expression_body
+resharper_place_attribute_on_same_line=false
+resharper_space_after_cast=false
+resharper_space_within_checked_parentheses=true
+resharper_space_within_default_parentheses=true
+resharper_space_within_nameof_parentheses=true
+resharper_space_within_single_line_array_initializer_braces=true
+resharper_space_within_sizeof_parentheses=true
+resharper_space_within_typeof_parentheses=true
+resharper_space_within_type_argument_angles=true
+resharper_space_within_type_parameter_angles=true
+resharper_use_indent_from_vs=false
+resharper_wrap_lines=true
+
+# ReSharper inspection severities
+resharper_arrange_redundant_parentheses_highlighting=hint
+resharper_arrange_this_qualifier_highlighting=hint
+resharper_arrange_type_member_modifiers_highlighting=hint
+resharper_arrange_type_modifiers_highlighting=hint
+resharper_built_in_type_reference_style_for_member_access_highlighting=hint
+resharper_built_in_type_reference_style_highlighting=hint
+resharper_redundant_base_qualifier_highlighting=warning
+resharper_suggest_var_or_type_built_in_types_highlighting=hint
+resharper_suggest_var_or_type_elsewhere_highlighting=hint
+resharper_suggest_var_or_type_simple_types_highlighting=hint
+resharper_web_config_module_not_resolved_highlighting=warning
+resharper_web_config_type_not_resolved_highlighting=warning
+resharper_web_config_wrong_module_highlighting=warning
+
+[*.{appxmanifest,asax,ascx,aspx,build,cg,cginc,compute,cs,cshtml,dtd,hlsl,hlsli,hlslinc,master,nuspec,razor,resw,resx,shader,skin,usf,ush,vb,xaml,xamlx,xoml,xsd}]
+indent_style=space
+indent_size=4
+tab_width=4
diff --git a/Penumbra/API/ModsController.cs b/Penumbra/API/ModsController.cs
index a48bdd12..93e939e8 100644
--- a/Penumbra/API/ModsController.cs
+++ b/Penumbra/API/ModsController.cs
@@ -9,10 +9,7 @@ namespace Penumbra.API
{
private readonly Plugin _plugin;
- public ModsController( Plugin plugin )
- {
- _plugin = plugin;
- }
+ public ModsController( Plugin plugin ) => _plugin = plugin;
[Route( HttpVerbs.Get, "/mods" )]
public object GetMods()
@@ -24,7 +21,7 @@ namespace Penumbra.API
x.FolderName,
x.Mod.Meta,
BasePath = x.Mod.ModBasePath.FullName,
- Files = x.Mod.ModFiles.Select( fi => fi.FullName )
+ Files = x.Mod.ModFiles.Select( fi => fi.FullName )
} );
}
diff --git a/Penumbra/DialogExtensions.cs b/Penumbra/DialogExtensions.cs
index ac48e9f2..31bc3c80 100644
--- a/Penumbra/DialogExtensions.cs
+++ b/Penumbra/DialogExtensions.cs
@@ -18,7 +18,7 @@ namespace Penumbra
public static Task< DialogResult > ShowDialogAsync( this CommonDialog form, IWin32Window owner )
{
var taskSource = new TaskCompletionSource< DialogResult >();
- var th = new Thread( () => DialogThread( form, owner, taskSource ) );
+ var th = new Thread( () => DialogThread( form, owner, taskSource ) );
th.Start();
return taskSource.Task;
}
@@ -38,28 +38,25 @@ namespace Penumbra
{
public IntPtr Handle { get; set; }
- public DialogHandle( IntPtr handle )
- {
- Handle = handle;
- }
+ public DialogHandle( IntPtr handle ) => Handle = handle;
}
public class HiddenForm : Form
{
- private readonly CommonDialog _form;
- private readonly IWin32Window _owner;
+ private readonly CommonDialog _form;
+ private readonly IWin32Window _owner;
private readonly TaskCompletionSource< DialogResult > _taskSource;
public HiddenForm( CommonDialog form, IWin32Window owner, TaskCompletionSource< DialogResult > taskSource )
{
- this._form = form;
- this._owner = owner;
- this._taskSource = taskSource;
+ _form = form;
+ _owner = owner;
+ _taskSource = taskSource;
- Opacity = 0;
+ Opacity = 0;
FormBorderStyle = FormBorderStyle.None;
- ShowInTaskbar = false;
- Size = new Size( 0, 0 );
+ ShowInTaskbar = false;
+ Size = new Size( 0, 0 );
Shown += HiddenForm_Shown;
}
diff --git a/Penumbra/Extensions/FuckedExtensions.cs b/Penumbra/Extensions/FuckedExtensions.cs
index 55720713..f9f41413 100644
--- a/Penumbra/Extensions/FuckedExtensions.cs
+++ b/Penumbra/Extensions/FuckedExtensions.cs
@@ -25,7 +25,8 @@ namespace Penumbra.Extensions
/// The type of the underlying field
/// A delegate that will return a reference to a particular field - zero copy
///
- private static RefGet< TObject, TField > CreateRefGetter< TObject, TField >( string fieldName ) where TField : unmanaged
+ private static RefGet< TObject, TField > CreateRefGetter< TObject, TField >( string fieldName )
+ where TField : unmanaged
{
const BindingFlags flags = BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance;
diff --git a/Penumbra/Game/GameUtils.cs b/Penumbra/Game/GameUtils.cs
index 9396fe11..95eb89fc 100644
--- a/Penumbra/Game/GameUtils.cs
+++ b/Penumbra/Game/GameUtils.cs
@@ -14,8 +14,8 @@ namespace Penumbra.Game
public unsafe delegate void* UnloadPlayerResourcesPrototype( IntPtr pResourceManager );
- public LoadPlayerResourcesPrototype LoadPlayerResources { get; private set; }
- public UnloadPlayerResourcesPrototype UnloadPlayerResources { get; private set; }
+ public LoadPlayerResourcesPrototype LoadPlayerResources { get; }
+ public UnloadPlayerResourcesPrototype UnloadPlayerResources { get; }
// Object addresses
private readonly IntPtr _playerResourceManagerAddress;
@@ -33,7 +33,7 @@ namespace Penumbra.Game
_playerResourceManagerAddress = scanner.GetStaticAddressFromSig( "0F 44 FE 48 8B 0D ?? ?? ?? ?? 48 85 C9 74 05" );
- LoadPlayerResources = Marshal.GetDelegateForFunctionPointer< LoadPlayerResourcesPrototype >( loadPlayerResourcesAddress );
+ LoadPlayerResources = Marshal.GetDelegateForFunctionPointer< LoadPlayerResourcesPrototype >( loadPlayerResourcesAddress );
UnloadPlayerResources = Marshal.GetDelegateForFunctionPointer< UnloadPlayerResourcesPrototype >( unloadPlayerResourcesAddress );
}
diff --git a/Penumbra/Game/RefreshActors.cs b/Penumbra/Game/RefreshActors.cs
index 87193bb6..573f26db 100644
--- a/Penumbra/Game/RefreshActors.cs
+++ b/Penumbra/Game/RefreshActors.cs
@@ -1,9 +1,10 @@
+using System.Linq;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using Dalamud.Game.ClientState.Actors;
using Dalamud.Game.ClientState.Actors.Types;
-namespace Penumbra
+namespace Penumbra.Game
{
public static class RefreshActors
{
@@ -12,43 +13,49 @@ namespace Penumbra
private const int RenderTaskOtherDelay = 25;
private const int ModelInvisibilityFlag = 0b10;
- private static async void Redraw(Actor actor)
+ private static async void Redraw( Actor actor )
{
- var ptr = actor.Address;
+ var ptr = actor.Address;
var renderModePtr = ptr + RenderModeOffset;
- var renderStatus = Marshal.ReadInt32(renderModePtr);
+ var renderStatus = Marshal.ReadInt32( renderModePtr );
- async void DrawObject(int delay)
+ async void DrawObject( int delay )
{
- Marshal.WriteInt32(renderModePtr, renderStatus | ModelInvisibilityFlag);
- await Task.Delay(delay);
- Marshal.WriteInt32(renderModePtr, renderStatus & ~ModelInvisibilityFlag);
+ Marshal.WriteInt32( renderModePtr, renderStatus | ModelInvisibilityFlag );
+ await Task.Delay( delay );
+ Marshal.WriteInt32( renderModePtr, renderStatus & ~ModelInvisibilityFlag );
}
- if (actor.ObjectKind == Dalamud.Game.ClientState.Actors.ObjectKind.Player)
+ if( actor.ObjectKind == ObjectKind.Player )
{
- DrawObject(RenderTaskPlayerDelay);
- await Task.Delay(RenderTaskPlayerDelay);
+ DrawObject( RenderTaskPlayerDelay );
+ await Task.Delay( RenderTaskPlayerDelay );
}
else
- DrawObject(RenderTaskOtherDelay);
-
+ {
+ DrawObject( RenderTaskOtherDelay );
+ }
}
- public static void RedrawSpecific(ActorTable actors, string name)
+ public static void RedrawSpecific( ActorTable actors, string name )
{
- if (name?.Length == 0)
- RedrawAll(actors);
+ if( name?.Length == 0 )
+ {
+ RedrawAll( actors );
+ }
- foreach (var actor in actors)
- if (actor.Name == name)
- Redraw(actor);
+ foreach( var actor in actors.Where( A => A.Name == name ) )
+ {
+ Redraw( actor );
+ }
}
- public static void RedrawAll(ActorTable actors)
+ public static void RedrawAll( ActorTable actors )
{
- foreach (var actor in actors)
- Redraw(actor);
+ foreach( var actor in actors )
+ {
+ Redraw( actor );
+ }
}
}
-}
+}
\ No newline at end of file
diff --git a/Penumbra/Importer/MagicTempFileStreamManagerAndDeleterFuckery.cs b/Penumbra/Importer/MagicTempFileStreamManagerAndDeleterFuckery.cs
index 68f12965..6667f2e0 100644
--- a/Penumbra/Importer/MagicTempFileStreamManagerAndDeleterFuckery.cs
+++ b/Penumbra/Importer/MagicTempFileStreamManagerAndDeleterFuckery.cs
@@ -8,10 +8,7 @@ namespace Penumbra.Importer
{
private readonly FileStream _fileStream;
- public MagicTempFileStreamManagerAndDeleterFuckery( FileStream stream ) : base( stream )
- {
- _fileStream = stream;
- }
+ public MagicTempFileStreamManagerAndDeleterFuckery( FileStream stream ) : base( stream ) => _fileStream = stream;
public new void Dispose()
{
diff --git a/Penumbra/Importer/TexToolsImport.cs b/Penumbra/Importer/TexToolsImport.cs
index c8d85b34..f6b366eb 100644
--- a/Penumbra/Importer/TexToolsImport.cs
+++ b/Penumbra/Importer/TexToolsImport.cs
@@ -16,7 +16,7 @@ namespace Penumbra.Importer
{
private readonly DirectoryInfo _outDirectory;
- private const string TempFileName = "textools-import";
+ private const string TempFileName = "textools-import";
private readonly string _resolvedTempFilePath;
public ImporterState State { get; private set; }
@@ -42,7 +42,7 @@ namespace Penumbra.Importer
public TexToolsImport( DirectoryInfo outDirectory )
{
- _outDirectory = outDirectory;
+ _outDirectory = outDirectory;
_resolvedTempFilePath = Path.Combine( _outDirectory.FullName, TempFileName );
}
@@ -50,7 +50,7 @@ namespace Penumbra.Importer
{
CurrentModPack = modPackFile.Name;
- VerifyVersionAndImport(modPackFile);
+ VerifyVersionAndImport( modPackFile );
State = ImporterState.Done;
}
@@ -67,8 +67,8 @@ namespace Penumbra.Importer
State = ImporterState.WritingPackToDisk;
// write shitty zip garbage to disk
- var entry = file.GetEntry( entryName );
- using var s = file.GetInputStream( entry );
+ var entry = file.GetEntry( entryName );
+ using var s = file.GetInputStream( entry );
WriteZipEntryToTempFile( s );
@@ -76,25 +76,31 @@ namespace Penumbra.Importer
return new MagicTempFileStreamManagerAndDeleterFuckery( fs );
}
- private void VerifyVersionAndImport(FileInfo modPackFile)
+ private void VerifyVersionAndImport( FileInfo modPackFile )
{
- using var zfs = modPackFile.OpenRead();
+ using var zfs = modPackFile.OpenRead();
using var extractedModPack = new ZipFile( zfs );
- var mpl = extractedModPack.GetEntry( "TTMPL.mpl" );
- var modRaw = GetStringFromZipEntry( extractedModPack, mpl, Encoding.UTF8 );
+ var mpl = extractedModPack.GetEntry( "TTMPL.mpl" );
+ var modRaw = GetStringFromZipEntry( extractedModPack, mpl, Encoding.UTF8 );
// At least a better validation than going by the extension.
- if (modRaw.Contains("\"TTMPVersion\":"))
+ if( modRaw.Contains( "\"TTMPVersion\":" ) )
{
- if (modPackFile.Extension != ".ttmp2")
- PluginLog.Warning($"File {modPackFile.FullName} seems to be a V2 TTMP, but has the wrong extension.");
- ImportV2ModPack(modPackFile, extractedModPack, modRaw);
+ if( modPackFile.Extension != ".ttmp2" )
+ {
+ PluginLog.Warning( $"File {modPackFile.FullName} seems to be a V2 TTMP, but has the wrong extension." );
+ }
+
+ ImportV2ModPack( modPackFile, extractedModPack, modRaw );
}
else
{
- if (modPackFile.Extension != ".ttmp")
- PluginLog.Warning($"File {modPackFile.FullName} seems to be a V1 TTMP, but has the wrong extension.");
- ImportV1ModPack(modPackFile, extractedModPack, modRaw);
+ if( modPackFile.Extension != ".ttmp" )
+ {
+ PluginLog.Warning( $"File {modPackFile.FullName} seems to be a V1 TTMP, but has the wrong extension." );
+ }
+
+ ImportV1ModPack( modPackFile, extractedModPack, modRaw );
}
}
@@ -112,8 +118,8 @@ namespace Penumbra.Importer
// Create a new ModMeta from the TTMP modlist info
var modMeta = new ModMeta
{
- Author = "Unknown",
- Name = modPackFile.Name,
+ Author = "Unknown",
+ Name = modPackFile.Name,
Description = "Mod imported from TexTools mod pack"
};
@@ -135,7 +141,7 @@ namespace Penumbra.Importer
ExtractSimpleModList( newModFolder, modList, modData );
}
- private void ImportV2ModPack( FileInfo modPackFile, ZipFile extractedModPack, string modRaw )
+ private void ImportV2ModPack( FileInfo modPackFile, ZipFile extractedModPack, string modRaw )
{
var modList = JsonConvert.DeserializeObject< SimpleModPack >( modRaw );
@@ -159,7 +165,7 @@ namespace Penumbra.Importer
var modMeta = new ModMeta
{
Author = modList.Author,
- Name = modList.Name,
+ Name = modList.Name,
Description = string.IsNullOrEmpty( modList.Description )
? "Mod imported from TexTools mod pack"
: modList.Description
@@ -188,7 +194,7 @@ namespace Penumbra.Importer
var modMeta = new ModMeta
{
Author = modList.Author,
- Name = modList.Name,
+ Name = modList.Name,
Description = string.IsNullOrEmpty( modList.Description )
? "Mod imported from TexTools mod pack"
: modList.Description,
@@ -206,24 +212,26 @@ namespace Penumbra.Importer
newModFolder.Create();
if( modList.SimpleModsList != null )
+ {
ExtractSimpleModList( newModFolder, modList.SimpleModsList, modData );
+ }
if( modList.ModPackPages == null )
+ {
return;
+ }
// Iterate through all pages
- foreach( var page in modList.ModPackPages)
+ foreach( var group in modList.ModPackPages.SelectMany( page => page.ModGroups ) )
{
- foreach(var group in page.ModGroups)
+ var groupFolder = new DirectoryInfo( Path.Combine( newModFolder.FullName, group.GroupName.ReplaceInvalidPathSymbols() ) );
+ foreach( var option in group.OptionList )
{
- var groupFolder = new DirectoryInfo(Path.Combine(newModFolder.FullName, group.GroupName.ReplaceInvalidPathSymbols()));
- foreach(var option in group.OptionList)
- {
- var optionFolder = new DirectoryInfo( Path.Combine( groupFolder.FullName, option.Name.ReplaceInvalidPathSymbols()) );
- ExtractSimpleModList( optionFolder, option.ModsJsons, modData );
- }
- AddMeta(newModFolder, groupFolder, group, modMeta);
+ var optionFolder = new DirectoryInfo( Path.Combine( groupFolder.FullName, option.Name.ReplaceInvalidPathSymbols() ) );
+ ExtractSimpleModList( optionFolder, option.ModsJsons, modData );
}
+
+ AddMeta( newModFolder, groupFolder, group, modMeta );
}
File.WriteAllText(
@@ -232,32 +240,35 @@ namespace Penumbra.Importer
);
}
- private void AddMeta( DirectoryInfo baseFolder, DirectoryInfo groupFolder,ModGroup group, ModMeta meta)
+ private void AddMeta( DirectoryInfo baseFolder, DirectoryInfo groupFolder, ModGroup group, ModMeta meta )
{
var Inf = new InstallerInfo
{
SelectionType = group.SelectionType,
- GroupName = group.GroupName,
- Options = new List