From 7400533dcbb2453835f194c366887ce2d3628a90 Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Sat, 18 Sep 2021 17:07:26 +0200 Subject: [PATCH 01/16] Preliminary 1.3 update Removed the problematic code fragmend from #53, updated references (Multiplayer API and Harmony) --- Source/MainTabWindow_ResearchTree.cs | 23 ++- Source/ResearchTree.csproj | 203 ++++++++++++++------------- Source/packages.config | 10 +- 3 files changed, 122 insertions(+), 114 deletions(-) diff --git a/Source/MainTabWindow_ResearchTree.cs b/Source/MainTabWindow_ResearchTree.cs index 59dff8b..57aedee 100644 --- a/Source/MainTabWindow_ResearchTree.cs +++ b/Source/MainTabWindow_ResearchTree.cs @@ -150,12 +150,10 @@ private void SetRects() { // tree view rects, have to deal with UIScale and ZoomLevel manually. _baseViewRect = new Rect( - StandardMargin / Prefs.UIScale, - ( TopBarHeight + Constants.Margin + StandardMargin ) / Prefs.UIScale, - ( Screen.width - StandardMargin * 2f ) / Prefs.UIScale, - ( Screen.height - MainButtonDef.ButtonHeight - StandardMargin * 2f - TopBarHeight - Constants.Margin ) / - Prefs.UIScale ); - _baseViewRect_Inner = _baseViewRect.ContractedBy( Constants.Margin / Prefs.UIScale ); + StandardMargin / Prefs.UIScale, + (TopBarHeight + Constants.Margin + StandardMargin), + (Screen.width - StandardMargin * 2f) / Prefs.UIScale, + ((Screen.height - MainButtonDef.ButtonHeight - StandardMargin * 2) / Prefs.UIScale) - TopBarHeight - Constants.Margin); // windowrect, set to topleft (for some reason vanilla alignment overlaps bottom buttons). windowRect.x = 0f; @@ -337,13 +335,12 @@ private void DrawSearchBar( Rect canvas ) foreach ( var result in Tree.Nodes.OfType() .Select( n => new {node = n, match = n.Matches( query )} ) - .Where( result => result.match > 0 ) - .OrderBy( result => result.match ) ) - options.Add( new FloatMenuOption( result.node.Label, () => CenterOn( result.node ), - MenuOptionPriority.Default, () => CenterOn( result.node ) ) ); - - if ( !options.Any() ) - options.Add( new FloatMenuOption( "Fluffy.ResearchTree.NoResearchFound".Translate(), null ) ); + .Where( result => result.match > 0 ) + .OrderBy(result => result.match)) + options.Add(new FloatMenuOption(result.node.Label, () => CenterOn(result.node), MenuOptionPriority.Default)); + + if (!options.Any()) + options.Add(new FloatMenuOption("Fluffy.ResearchTree.NoResearchFound".Translate(), null)); Find.WindowStack.Add( new FloatMenu_Fixed( options, UI.GUIToScreenPoint( diff --git a/Source/ResearchTree.csproj b/Source/ResearchTree.csproj index 02fbea8..ea611f3 100644 --- a/Source/ResearchTree.csproj +++ b/Source/ResearchTree.csproj @@ -1,103 +1,114 @@ - - - - - Debug - AnyCPU - {3EB50A4A-C426-40E5-B682-458B34007336} - Library - Properties - ResearchTree - ResearchTree - v4.7.2 - 512 - - - - false - none - false - ..\Assemblies\ - DEBUG - prompt - 4 - true - false - - - none - true - ..\Assemblies\ - - - prompt - 4 - true - false - - - - packages\Lib.Harmony.2.0.0.8\lib\net472\0Harmony.dll - False - - - C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll - False - - - - - - - - - - C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll - False - - - C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll - False - - - C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.TextRenderingModule.dll - False - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mod update -x - + + + + + Debug + AnyCPU + {3EB50A4A-C426-40E5-B682-458B34007336} + Library + Properties + ResearchTree + ResearchTree + v4.7.2 + 512 + + + + + + false + none + false + ..\Assemblies\ + DEBUG + prompt + 4 + true + false + + + none + true + ..\Assemblies\ + + + prompt + 4 + true + false + + + + packages\Lib.Harmony.2.1.1\lib\net472\0Harmony.dll + + + packages\RimWorld.MultiplayerAPI.0.3.0\lib\net472\0MultiplayerAPI.dll + + + C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll + False + + + + + + + + + + C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.CoreModule.dll + False + + + C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.IMGUIModule.dll + False + + + C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\UnityEngine.TextRenderingModule.dll + False + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + mod update -x + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + --> \ No newline at end of file diff --git a/Source/packages.config b/Source/packages.config index 206f997..734149a 100644 --- a/Source/packages.config +++ b/Source/packages.config @@ -1,6 +1,6 @@ - - - - - + + + + + \ No newline at end of file From f94df8c3cfb0a25eb142449d780d723ee7df514d Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Sat, 18 Sep 2021 17:10:01 +0200 Subject: [PATCH 02/16] Preliminary 1.3 update --- Assemblies/ResearchTree.dll | Bin 62976 -> 69632 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/Assemblies/ResearchTree.dll b/Assemblies/ResearchTree.dll index 582301967b73fba84933f46d81a4edb06ef9c647..71ad6bafd286baff12939410edea0f24cfbdbace 100644 GIT binary patch literal 69632 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 z zF!Q$K>BZ9bWCJ!Qgv^e6KDv4BMaNmNLS7E9e^2YZlg~$?XQ_ zSZIPFYc(=mfK5pZbhxn{zcMpQWhx4DWF0IkVBFTu@|%OQc|Vh*9`+0z<5E>AwdM!Nj2aI@R*;`^x>U^uhR0Up20Erie#+Ybe9)9-Fed!Z{OGQscm zgj$sD0*~A8luFp8%I)_EAyk)C~ z{;_0-bSs#kX??%zuyu<#4{P|r4o}rI%0A5pN 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 From 6cb7f62de26647f713607f75ab6dfe9ab4676cac Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Sat, 18 Sep 2021 17:16:56 +0200 Subject: [PATCH 03/16] Preliminary 1.3 update added 1.3 tag --- About/About.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/About/About.xml b/About/About.xml index a756de2..bb8e892 100644 --- a/About/About.xml +++ b/About/About.xml @@ -64,6 +64,7 @@ This is version 3.17.534, for RimWorld 1.1.2654.
  • 1.1
  • +
  • 1.3
  • fluffy.researchtree From bef39036cc1aa7610f59f9a6e7aff046cf2bf0fc Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Tue, 21 Sep 2021 15:30:49 +0200 Subject: [PATCH 04/16] Update Tree.cs Begining of research tree parallelization (the step of reducing crossings is now instant) --- Source/Graph/Tree.cs | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/Source/Graph/Tree.cs b/Source/Graph/Tree.cs index 81465d0..46ac041 100644 --- a/Source/Graph/Tree.cs +++ b/Source/Graph/Tree.cs @@ -7,6 +7,7 @@ using System.Diagnostics; using System.Linq; using System.Text; +using System.Threading.Tasks; using RimWorld; using UnityEngine; using Verse; @@ -230,6 +231,7 @@ private static void EdgeLengthSweep_Global_Layer( int l, bool @in ) return; var layer = Layer( l, true ); + //Couldn't parallelize foreach ( var node in layer ) { // we only need to loop over positions that might be better for this node. @@ -699,18 +701,23 @@ private static Node NodeAt( int X, int Y ) return Nodes.FirstOrDefault( n => n.X == X && n.Y == Y ); } - public static void MinimizeCrossings() - { + public static void MinimizeCrossings() + { // initialize each layer by putting nodes with the most (recursive!) children on bottom + //shown in-game as "reducing crossings" Log.Debug( "Minimize crossings." ); Profiler.Start(); - for ( var X = 1; X <= Size.x; X++ ) + int X = Size.x; + var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; + Parallel.For (1, X, options, i => { var nodes = Layer( X ).OrderBy( n => n.Descendants.Count ).ToList(); - for ( var i = 0; i < nodes.Count; i++ ) - nodes[i].Y = i + 1; - } + for( var z = 0; z < nodes.Count; z++) + { + nodes[i].Y = i + 1; + } + }); // up-down sweeps of mean reordering var progress = false; @@ -915,12 +922,14 @@ private static int Crossings( int layer, bool @in ) // count number of inversions var inversions = 0; - for ( var i = 0; i < edges.Count - 1; i++ ) + int X = edges.Count; + var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; + Parallel.For(0, X - 1, options, i => { - for ( var j = i + 1; j < edges.Count; j++ ) - if ( edges[j].Out.Y < edges[i].Out.Y ) - inversions++; - } + for (var j = i + 1; j < edges.Count; j++) + if (edges[j].Out.Y < edges[i].Out.Y) + inversions++; + }); return inversions; } @@ -956,6 +965,7 @@ public static List Row( int Y ) return Nodes.Where( n => n.Y == Y ).ToList(); } + //This one is probably unsafe to execute in parallel public new static string ToString() { var text = new StringBuilder(); @@ -991,4 +1001,4 @@ public static void DebugStatus() Log.Trace( ToString() ); } } -} \ No newline at end of file +} From 1da67d18b9af3ff26f71ed117b165de326a41b5c Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Tue, 21 Sep 2021 18:05:55 +0200 Subject: [PATCH 05/16] Update Queue_HarmonyPatches.cs Prefix was spaming the in-game debug log with useless infromation. Removed it since it didn't do anything else. --- Source/Queue/Queue_HarmonyPatches.cs | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/Source/Queue/Queue_HarmonyPatches.cs b/Source/Queue/Queue_HarmonyPatches.cs index 8588792..4d0aded 100644 --- a/Source/Queue/Queue_HarmonyPatches.cs +++ b/Source/Queue/Queue_HarmonyPatches.cs @@ -15,12 +15,6 @@ public class ResearchPerformed // check if last active project was finished. If so, try start the next project. // Thanks to NotFood for this nice simplification, I've adapted his/her code; // https://github.com/notfood/RimWorld-ResearchPal/blob/master/Source/Injectors/ResearchManagerPatch.cs - private static void Prefix( ResearchManager __instance, ref ResearchProjectDef __state ) - { - __state = __instance.currentProj; - Log.Debug( "{0} progress: {1}", __state.LabelCap, __state.ProgressPercent ); - } - private static void Postfix( ResearchProjectDef __state ) { Log.Debug( "{0} finished?: {1}", __state, __state?.IsFinished ); @@ -42,4 +36,4 @@ private static void Prefix( ref bool doCompletionDialog ) } } } -} \ No newline at end of file +} From 8b4c460b8a2fd542d4bd6b1f5bcdb20ccaf08df5 Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Tue, 21 Sep 2021 18:13:23 +0200 Subject: [PATCH 06/16] Update Tree.cs Further parallelization of research display loading process (speed up the "finalizing layout" part), commenting out unnecessary debug lines. --- Source/Graph/Tree.cs | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/Source/Graph/Tree.cs b/Source/Graph/Tree.cs index 46ac041..0f82292 100644 --- a/Source/Graph/Tree.cs +++ b/Source/Graph/Tree.cs @@ -190,9 +190,13 @@ private static bool EdgeLengthSweep_Global( int iteration ) var after = EdgeLength(); // return progress + /* Log.Debug( $"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}" ); Profiler.End(); return after < before; + */ + Profiler.End(); + return after < before; } @@ -214,7 +218,11 @@ private static bool EdgeLengthSweep_Local( int iteration ) var after = EdgeLength(); // return progress - Log.Debug( $"EdgeLengthSweep_Local, iteration {iteration}: {before} -> {after}" ); + /* + Log.Debug( $"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}" ); + Profiler.End(); + return after < before; + */ Profiler.End(); return after < before; } @@ -471,19 +479,20 @@ private static void NormalizeEdges() var yOffset = ( edge.Out.Yf - edge.In.Yf ) / edge.Span; // create and hook up dummy chain - for ( var x = edge.In.X + 1; x < edge.Out.X; x++ ) + var x = edge.In.X; + Parallel.For(x + 1, Convert.ToInt32(x < edge.Out.X), i => { - var dummy = new DummyNode(); - dummy.X = x; - dummy.Yf = edge.In.Yf + yOffset * ( x - edge.In.X ); - var dummyEdge = new Edge( cur, dummy ); - cur.OutEdges.Add( dummyEdge ); - dummy.InEdges.Add( dummyEdge ); - _nodes.Add( dummy ); - Edges.Add( dummyEdge ); - cur = dummy; - Log.Trace( "\t\tCreated dummy {0}", dummy ); - } + var dummy = new DummyNode(); + dummy.X = x; + dummy.Yf = edge.In.Yf + yOffset * (x - edge.In.X); + var dummyEdge = new Edge(cur, dummy); + cur.OutEdges.Add(dummyEdge); + dummy.InEdges.Add(dummyEdge); + _nodes.Add(dummy); + Edges.Add(dummyEdge); + cur = dummy; + Log.Trace("\t\tCreated dummy {0}", dummy); + }); // hook up final dummy to out node var finalEdge = new Edge( cur, edge.Out ); From a15bc26c794db8d102c951256145baebd5cc5395 Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Wed, 29 Sep 2021 21:37:55 +0200 Subject: [PATCH 07/16] Update Tree.cs Added further code parallelization (finalizing layout step should be much faster now), code cleanup --- Source/Graph/Tree.cs | 38 +++++++++++--------------------------- 1 file changed, 11 insertions(+), 27 deletions(-) diff --git a/Source/Graph/Tree.cs b/Source/Graph/Tree.cs index 0f82292..5569afb 100644 --- a/Source/Graph/Tree.cs +++ b/Source/Graph/Tree.cs @@ -1,7 +1,7 @@ // Tree.cs // Copyright Karel Kroeze, 2020-2020 -//using Multiplayer.API; +using Multiplayer.API; using System; using System.Collections.Generic; using System.Diagnostics; @@ -190,13 +190,9 @@ private static bool EdgeLengthSweep_Global( int iteration ) var after = EdgeLength(); // return progress - /* Log.Debug( $"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}" ); Profiler.End(); return after < before; - */ - Profiler.End(); - return after < before; } @@ -218,11 +214,7 @@ private static bool EdgeLengthSweep_Local( int iteration ) var after = EdgeLength(); // return progress - /* - Log.Debug( $"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}" ); - Profiler.End(); - return after < before; - */ + Log.Debug( $"EdgeLengthSweep_Local, iteration {iteration}: {before} -> {after}" ); Profiler.End(); return after < before; } @@ -479,20 +471,22 @@ private static void NormalizeEdges() var yOffset = ( edge.Out.Yf - edge.In.Yf ) / edge.Span; // create and hook up dummy chain - var x = edge.In.X; + int x = edge.In.X; Parallel.For(x + 1, Convert.ToInt32(x < edge.Out.X), i => { - var dummy = new DummyNode(); - dummy.X = x; - dummy.Yf = edge.In.Yf + yOffset * (x - edge.In.X); - var dummyEdge = new Edge(cur, dummy); + var dummy = new DummyNode + { + X = x, + Yf = edge.In.Yf + yOffset * (x - edge.In.X) + }; + var dummyEdge = new Edge(cur, dummy); cur.OutEdges.Add(dummyEdge); dummy.InEdges.Add(dummyEdge); _nodes.Add(dummy); Edges.Add(dummyEdge); cur = dummy; Log.Trace("\t\tCreated dummy {0}", dummy); - }); + }); // hook up final dummy to out node var finalEdge = new Edge( cur, edge.Out ); @@ -907,17 +901,7 @@ private static int Crossings( int layer ) return Crossings( layer, true ) + Crossings( layer, false ); } - private static float EdgeLength( int layer ) - { - if ( layer == 0 ) - return EdgeLength( layer, false ); - if ( layer == Size.x ) - return EdgeLength( layer, true ); - return EdgeLength( layer, true ) * - EdgeLength( layer, false ); // multply to favor moving nodes closer to one endpoint - } - - private static int Crossings( int layer, bool @in ) + private static int Crossings( int layer, bool @in ) { // get in/out edges for layer var edges = Layer( layer ) From b28be1914aa31c82c8c78fa0c4197e7793f436fd Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Wed, 29 Sep 2021 21:44:22 +0200 Subject: [PATCH 08/16] Update Queue_HarmonyPatches.cs Trying to fix the queue not working (research is finished but does not activate the next research in queue) --- Source/Queue/Queue_HarmonyPatches.cs | 35 ++++++++++++---------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/Source/Queue/Queue_HarmonyPatches.cs b/Source/Queue/Queue_HarmonyPatches.cs index 4d0aded..887de81 100644 --- a/Source/Queue/Queue_HarmonyPatches.cs +++ b/Source/Queue/Queue_HarmonyPatches.cs @@ -1,4 +1,4 @@ -// Queue_HarmonyPatches.cs +// Queue_HarmonyPatches.cs // Copyright Karel Kroeze, 2020-2020 using HarmonyLib; @@ -9,31 +9,26 @@ namespace FluffyResearchTree { public class HarmonyPatches_Queue { - [HarmonyPatch( typeof( ResearchManager ), "ResearchPerformed", typeof( float ), typeof( Pawn ) )] - public class ResearchPerformed - { - // check if last active project was finished. If so, try start the next project. - // Thanks to NotFood for this nice simplification, I've adapted his/her code; - // https://github.com/notfood/RimWorld-ResearchPal/blob/master/Source/Injectors/ResearchManagerPatch.cs - private static void Postfix( ResearchProjectDef __state ) - { - Log.Debug( "{0} finished?: {1}", __state, __state?.IsFinished ); - if ( __state?.IsFinished ?? false ) - { - Log.Debug( "{0} finished", __state.LabelCap ); - Queue.TryStartNext( __state ); - } - } - } - - [HarmonyPatch( typeof( ResearchManager ), "FinishProject" )] + [HarmonyPatch(typeof(ResearchManager), "FinishProject")] public class DoCompletionDialog { // suppress vanilla completion dialog, we never want to show it. - private static void Prefix( ref bool doCompletionDialog ) + [System.Diagnostics.CodeAnalysis.SuppressMessage("CodeQuality", "IDE0051:Remove unused private members", Justification = "It is used, ignore compiler messages")] + private static void Prefix(ref bool doCompletionDialog) { doCompletionDialog = false; } + + + [System.Diagnostics.CodeAnalysis.SuppressMessage("CodeQuality", "IDE0051:Remove unused private members", Justification = "It is used, ignore compiler messages")] + private static void Postfix(ResearchProjectDef proj) + { + if (proj.IsFinished) + { + Log.Debug("Patch of FinishProject: {0} finished", proj.label); + Queue.TryStartNext(proj); + } + } } } } From 7cf45af8ddd99ab21008f804b5a4e7599e33e7dc Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Wed, 29 Sep 2021 22:09:11 +0200 Subject: [PATCH 09/16] Update ResearchTree.csproj removal of the useless mod line that generatet errors despite the mod compiling successfuly --- Source/ResearchTree.csproj | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/Source/ResearchTree.csproj b/Source/ResearchTree.csproj index ea611f3..533a051 100644 --- a/Source/ResearchTree.csproj +++ b/Source/ResearchTree.csproj @@ -1,4 +1,4 @@ - + @@ -94,9 +94,6 @@ - - mod update -x - @@ -104,11 +101,11 @@ - - \ No newline at end of file +
    From 79f1095e9773b6b5d081c18b6920327b0eaf8597 Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Wed, 22 Dec 2021 21:43:39 +0100 Subject: [PATCH 10/16] Attempting to fix exception in MinimizeCrossings --- Source/Graph/Tree.cs | 2003 +++++++++++++++++++++--------------------- 1 file changed, 1006 insertions(+), 997 deletions(-) diff --git a/Source/Graph/Tree.cs b/Source/Graph/Tree.cs index 5569afb..1076544 100644 --- a/Source/Graph/Tree.cs +++ b/Source/Graph/Tree.cs @@ -1,997 +1,1006 @@ -// Tree.cs -// Copyright Karel Kroeze, 2020-2020 - -using Multiplayer.API; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using UnityEngine; -using Verse; -using static FluffyResearchTree.Constants; - -namespace FluffyResearchTree -{ - public static class Tree - { - public static bool Initialized; - public static IntVec2 Size = IntVec2.Zero; - private static List _nodes; - private static List> _edges; - private static List _relevantTechLevels; - private static Dictionary _techLevelBounds; - - private static bool _initializing; - - public static bool OrderDirty; - - public static Dictionary TechLevelBounds - { - get - { - if ( _techLevelBounds == null ) - throw new Exception( "TechLevelBounds called before they are set." ); - return _techLevelBounds; - } - } - - public static List RelevantTechLevels - { - get - { - if ( _relevantTechLevels == null ) - _relevantTechLevels = Enum.GetValues( typeof( TechLevel ) ) - .Cast() - // filter down to relevant tech levels only. - .Where( - tl => DefDatabase.AllDefsListForReading.Any( - rp => rp.techLevel == - tl ) ) - .ToList(); - return _relevantTechLevels; - } - } - - public static List Nodes - { - get - { - if ( _nodes == null ) - PopulateNodes(); - - return _nodes; - } - } - - public static List> Edges - { - get - { - if ( _edges == null ) - throw new Exception( "Trying to access edges before they are initialized." ); - - return _edges; - } - } - -// [SyncMethod] - public static void Initialize() - { - if ( Initialized ) return; - - // make sure we only have one initializer running - if ( _initializing ) - return; - _initializing = true; - - // setup - LongEventHandler.QueueLongEvent( CheckPrerequisites, "Fluffy.ResearchTree.PreparingTree.Setup", false, - null ); - LongEventHandler.QueueLongEvent( CreateEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); - LongEventHandler.QueueLongEvent( HorizontalPositions, "Fluffy.ResearchTree.PreparingTree.Setup", false, - null ); - LongEventHandler.QueueLongEvent( NormalizeEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); -#if DEBUG - LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); -#endif - - // crossing reduction - LongEventHandler.QueueLongEvent( Collapse, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, - null ); - LongEventHandler.QueueLongEvent( MinimizeCrossings, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", - false, null ); -#if DEBUG - LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, - null ); -#endif - - // layout - LongEventHandler.QueueLongEvent( MinimizeEdgeLength, "Fluffy.ResearchTree.PreparingTree.Layout", false, - null ); - LongEventHandler.QueueLongEvent( RemoveEmptyRows, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); -#if DEBUG - LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); -#endif - - // done! - LongEventHandler.QueueLongEvent( () => { Initialized = true; }, "Fluffy.ResearchTree.PreparingTree.Layout", - false, null ); - - // tell research tab we're ready - LongEventHandler.QueueLongEvent( MainTabWindow_ResearchTree.Instance.Notify_TreeInitialized, - "Fluffy.ResearchTree.RestoreQueue", false, null ); - } - - private static void RemoveEmptyRows() - { - Log.Debug( "Removing empty rows" ); - Profiler.Start(); - var y = 1; - while ( y <= Size.z ) - { - var row = Row( y ); - if ( row.NullOrEmpty() ) - foreach ( var node in Nodes.Where( n => n.Y > y ) ) - node.Y--; - else - y++; - } - - Profiler.End(); - } - - private static void MinimizeEdgeLength() - { - Log.Debug( "Minimize edge length." ); - Profiler.Start(); - - // move and/or swap nodes to reduce the total edge length - // perform sweeps of adjacent node reorderings - var progress = false; - int iteration = 0, burnout = 2, max_iterations = 50; - while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) - { - progress = EdgeLengthSweep_Local( iteration++ ); - if ( !progress ) - burnout--; - } - - // sweep until we had no progress 2 times, then keep sweeping until we had progress - iteration = 0; - burnout = 2; - while ( burnout > 0 && iteration < max_iterations ) - { - progress = EdgeLengthSweep_Global( iteration++ ); - if ( !progress ) - burnout--; - } - - Profiler.End(); - } - - private static bool EdgeLengthSweep_Global( int iteration ) - { - Profiler.Start( "iteration" + iteration ); - // calculate edge length before sweep - var before = EdgeLength(); - - // do left/right sweep, align with left/right nodes for 4 different iterations. - //if (iteration % 2 == 0) - for ( var l = 2; l <= Size.x; l++ ) - EdgeLengthSweep_Global_Layer( l, true ); - //else - // for (var l = 1; l < Size.x; l++) - // EdgeLengthSweep_Global_Layer(l, false); - - // calculate edge length after sweep - var after = EdgeLength(); - - // return progress - Log.Debug( $"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}" ); - Profiler.End(); - return after < before; - } - - - private static bool EdgeLengthSweep_Local( int iteration ) - { - Profiler.Start( "iteration" + iteration ); - // calculate edge length before sweep - var before = EdgeLength(); - - // do left/right sweep, align with left/right nodes for 4 different iterations. - if ( iteration % 2 == 0 ) - for ( var l = 2; l <= Size.x; l++ ) - EdgeLengthSweep_Local_Layer( l, true ); - else - for ( var l = Size.x - 1; l >= 0; l-- ) - EdgeLengthSweep_Local_Layer( l, false ); - - // calculate edge length after sweep - var after = EdgeLength(); - - // return progress - Log.Debug( $"EdgeLengthSweep_Local, iteration {iteration}: {before} -> {after}" ); - Profiler.End(); - return after < before; - } - - private static void EdgeLengthSweep_Global_Layer( int l, bool @in ) - { - // The objective here is to; - // (1) move and/or swap nodes to reduce total edge length - // (2) not increase the number of crossings - - var length = EdgeLength( l, @in ); - var crossings = Crossings( l ); - if ( Math.Abs( length ) < Epsilon ) - return; - - var layer = Layer( l, true ); - //Couldn't parallelize - foreach ( var node in layer ) - { - // we only need to loop over positions that might be better for this node. - // min = minimum of current position, minimum of any connected nodes current position - var neighbours = node.Nodes; - if ( !neighbours.Any() ) - continue; - - var min = Mathf.Min( node.Y, neighbours.Min( n => n.Y ) ); - var max = Mathf.Max( node.Y, neighbours.Max( n => n.Y ) ); - if ( min == max && min == node.Y ) - continue; - - for ( var y = min; y <= max; y++ ) - { - if ( y == node.Y ) - continue; - - // is this spot occupied? - var otherNode = NodeAt( l, y ); - - // occupied, try swapping - if ( otherNode != null ) - { - Swap( node, otherNode ); - var candidateCrossings = Crossings( l ); - if ( candidateCrossings > crossings ) - { - // abort - Swap( otherNode, node ); - } - else - { - var candidateLength = EdgeLength( l, @in ); - if ( length - candidateLength < Epsilon ) - { - // abort - Swap( otherNode, node ); - } - else - { - Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", node, otherNode, length, - candidateLength ); - length = candidateLength; - } - } - } - - // not occupied, try moving - else - { - var oldY = node.Y; - node.Y = y; - var candidateCrossings = Crossings( l ); - if ( candidateCrossings > crossings ) - { - // abort - node.Y = oldY; - } - else - { - var candidateLength = EdgeLength( l, @in ); - if ( length - candidateLength < Epsilon ) - { - // abort - node.Y = oldY; - } - else - { - Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", node, new Vector2( node.X, oldY ), length, - candidateLength ); - length = candidateLength; - } - } - } - } - } - } - - - private static void EdgeLengthSweep_Local_Layer( int l, bool @in ) - { - // The objective here is to; - // (1) move and/or swap nodes to reduce local edge length - // (2) not increase the number of crossings - var x = @in ? l - 1 : l + 1; - var crossings = Crossings( x ); - - var layer = Layer( l, true ); - foreach ( var node in layer ) - { - foreach ( var edge in @in ? node.InEdges : node.OutEdges ) - { - // current length - var length = edge.Length; - var neighbour = @in ? edge.In : edge.Out; - if ( neighbour.X != x ) - Log.Warning( "{0} is not at layer {1}", neighbour, x ); - - // we only need to loop over positions that might be better for this node. - // min = minimum of current position, node position - var min = Mathf.Min( node.Y, neighbour.Y ); - var max = Mathf.Max( node.Y, neighbour.Y ); - - // already at only possible position - if ( min == max && min == node.Y ) - continue; - - for ( var y = min; y <= max; y++ ) - { - if ( y == neighbour.Y ) - continue; - - // is this spot occupied? - var otherNode = NodeAt( x, y ); - - // occupied, try swapping - if ( otherNode != null ) - { - Swap( neighbour, otherNode ); - var candidateCrossings = Crossings( x ); - if ( candidateCrossings > crossings ) - { - // abort - Swap( otherNode, neighbour ); - } - else - { - var candidateLength = edge.Length; - if ( length - candidateLength < Epsilon ) - { - // abort - Swap( otherNode, neighbour ); - } - else - { - Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", neighbour, otherNode, length, - candidateLength ); - length = candidateLength; - } - } - } - - // not occupied, try moving - else - { - var oldY = neighbour.Y; - neighbour.Y = y; - var candidateCrossings = Crossings( x ); - if ( candidateCrossings > crossings ) - { - // abort - neighbour.Y = oldY; - } - else - { - var candidateLength = edge.Length; - if ( length - candidateLength < Epsilon ) - { - // abort - neighbour.Y = oldY; - } - else - { - Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", neighbour, - new Vector2( neighbour.X, oldY ), length, candidateLength ); - length = candidateLength; - } - } - } - } - } - } - } - - public static void HorizontalPositions() - { - // get list of techlevels - var techlevels = RelevantTechLevels; - bool anyChange; - var iteration = 1; - var maxIterations = 50; - - Log.Debug( "Assigning horizontal positions." ); - Profiler.Start(); - - // assign horizontal positions based on tech levels and prerequisites - do - { - Profiler.Start( "iteration " + iteration ); - var min = 1; - anyChange = false; - - foreach ( var techlevel in techlevels ) - { - // enforce minimum x position based on techlevels - var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); - if ( !nodes.Any() ) - continue; - - foreach ( var node in nodes ) - anyChange = node.SetDepth( min ) || anyChange; - - min = nodes.Max( n => n.X ) + 1; - - Log.Trace( "\t{0}, change: {1}", techlevel, anyChange ); - } - - Profiler.End(); - } while ( anyChange && iteration++ < maxIterations ); - - - // store tech level boundaries - _techLevelBounds = new Dictionary(); - foreach ( var techlevel in techlevels ) - { - var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); - _techLevelBounds[techlevel] = new IntRange( nodes.Min( n => n.X ) - 1, nodes.Max( n => n.X ) ); - } - - Profiler.End(); - } - - private static void NormalizeEdges() - { - Log.Debug( "Normalizing edges." ); - Profiler.Start(); - foreach ( var edge in new List>( Edges.Where( e => e.Span > 1 ) ) ) - { - Log.Trace( "\tCreating dummy chain for {0}", edge ); - - // remove and decouple long edge - Edges.Remove( edge ); - edge.In.OutEdges.Remove( edge ); - edge.Out.InEdges.Remove( edge ); - var cur = edge.In; - var yOffset = ( edge.Out.Yf - edge.In.Yf ) / edge.Span; - - // create and hook up dummy chain - int x = edge.In.X; - Parallel.For(x + 1, Convert.ToInt32(x < edge.Out.X), i => - { - var dummy = new DummyNode - { - X = x, - Yf = edge.In.Yf + yOffset * (x - edge.In.X) - }; - var dummyEdge = new Edge(cur, dummy); - cur.OutEdges.Add(dummyEdge); - dummy.InEdges.Add(dummyEdge); - _nodes.Add(dummy); - Edges.Add(dummyEdge); - cur = dummy; - Log.Trace("\t\tCreated dummy {0}", dummy); - }); - - // hook up final dummy to out node - var finalEdge = new Edge( cur, edge.Out ); - cur.OutEdges.Add( finalEdge ); - edge.Out.InEdges.Add( finalEdge ); - Edges.Add( finalEdge ); - } - - Profiler.End(); - } - - private static void CreateEdges() - { - Log.Debug( "Creating edges." ); - Profiler.Start(); - // create links between nodes - if ( _edges.NullOrEmpty() ) _edges = new List>(); - - foreach ( var node in Nodes.OfType() ) - { - if ( node.Research.prerequisites.NullOrEmpty() ) - continue; - foreach ( var prerequisite in node.Research.prerequisites ) - { - ResearchNode prerequisiteNode = prerequisite; - if ( prerequisiteNode == null ) - continue; - var edge = new Edge( prerequisiteNode, node ); - Edges.Add( edge ); - node.InEdges.Add( edge ); - prerequisiteNode.OutEdges.Add( edge ); - Log.Trace( "\tCreated edge {0}", edge ); - } - } - - Profiler.End(); - } - - private static void CheckPrerequisites() - { - // check prerequisites - Log.Debug( "Checking prerequisites." ); - Profiler.Start(); - - var nodes = new Queue( Nodes.OfType() ); - // remove redundant prerequisites - while ( nodes.Count > 0 ) - { - var node = nodes.Dequeue(); - if ( node.Research.prerequisites.NullOrEmpty() ) - continue; - - var ancestors = node.Research.prerequisites?.SelectMany( r => r.Ancestors() ).ToList(); - var redundant = ancestors.Intersect( node.Research.prerequisites ); - if ( redundant.Any() ) - { - Log.Warning( "\tredundant prerequisites for {0}: {1}", node.Research.LabelCap, - string.Join( ", ", redundant.Select( r => r.LabelCap ).ToArray() ) ); - foreach ( var redundantPrerequisite in redundant ) - node.Research.prerequisites.Remove( redundantPrerequisite ); - } - } - - // fix bad techlevels - nodes = new Queue( Nodes.OfType() ); - while ( nodes.Count > 0 ) - { - var node = nodes.Dequeue(); - if ( !node.Research.prerequisites.NullOrEmpty() ) - // warn and fix badly configured techlevels - if ( node.Research.prerequisites.Any( r => r.techLevel > node.Research.techLevel ) ) - { - Log.Warning( "\t{0} has a lower techlevel than (one of) it's prerequisites", - node.Research.defName ); - node.Research.techLevel = node.Research.prerequisites.Max( r => r.techLevel ); - - // re-enqeue all descendants - foreach ( var descendant in node.Descendants.OfType() ) - nodes.Enqueue( descendant ); - } - } - - Profiler.End(); - } - - private static void PopulateNodes() - { - Log.Debug( "Populating nodes." ); - Profiler.Start(); - - var projects = DefDatabase.AllDefsListForReading; - - // find hidden nodes (nodes that have themselves as a prerequisite) - var hidden = projects.Where( p => p.prerequisites?.Contains( p ) ?? false ); - - // find locked nodes (nodes that have a hidden node as a prerequisite) - var locked = projects.Where( p => p.Ancestors().Intersect( hidden ).Any() ); - - // populate all nodes - _nodes = new List( DefDatabase.AllDefsListForReading - .Except( hidden ) - .Except( locked ) - .Select( def => new ResearchNode( def ) as Node ) ); - Log.Debug( "\t{0} nodes", _nodes.Count ); - Profiler.End(); - } - - private static void Collapse() - { - Log.Debug( "Collapsing nodes." ); - Profiler.Start(); - var pre = Size; - for ( var l = 1; l <= Size.x; l++ ) - { - var nodes = Layer( l, true ); - var Y = 1; - foreach ( var node in nodes ) - node.Y = Y++; - } - - Log.Debug( "{0} -> {1}", pre, Size ); - Profiler.End(); - } - - [Conditional( "DEBUG" )] - internal static void DebugDraw() - { - foreach ( var v in Nodes ) - { - foreach ( var w in v.OutNodes ) Widgets.DrawLine( v.Right, w.Left, Color.white, 1 ); - } - } - - - public static void Draw( Rect visibleRect ) - { - Profiler.Start( "Tree.Draw" ); - Profiler.Start( "techlevels" ); - foreach ( var techlevel in RelevantTechLevels ) - DrawTechLevel( techlevel, visibleRect ); - Profiler.End(); - - Profiler.Start( "edges" ); - foreach ( var edge in Edges.OrderBy( e => e.DrawOrder ) ) - edge.Draw( visibleRect ); - Profiler.End(); - - Profiler.Start( "nodes" ); - foreach ( var node in Nodes ) - node.Draw( visibleRect ); - Profiler.End(); - } - - public static void DrawTechLevel( TechLevel techlevel, Rect visibleRect ) - { - // determine positions - var xMin = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].min - NodeMargins.x / 2f; - var xMax = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].max - NodeMargins.x / 2f; - - GUI.color = Assets.TechLevelColor; - Text.Anchor = TextAnchor.MiddleCenter; - - // lower bound - if ( TechLevelBounds[techlevel].min > 0 && xMin > visibleRect.xMin && xMin < visibleRect.xMax ) - { - // line - Widgets.DrawLine( new Vector2( xMin, visibleRect.yMin ), new Vector2( xMin, visibleRect.yMax ), - Assets.TechLevelColor, 1f ); - - // label - var labelRect = new Rect( - xMin + TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, - visibleRect.center.y - TechLevelLabelSize.y / 2f, - TechLevelLabelSize.x, - TechLevelLabelSize.y ); - - VerticalLabel( labelRect, techlevel.ToStringHuman() ); - } - - // upper bound - if ( TechLevelBounds[techlevel].max < Size.x && xMax > visibleRect.xMin && xMax < visibleRect.xMax ) - { - // label - var labelRect = new Rect( - xMax - TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, - visibleRect.center.y - TechLevelLabelSize.y / 2f, - TechLevelLabelSize.x, - TechLevelLabelSize.y ); - - VerticalLabel( labelRect, techlevel.ToStringHuman() ); - } - - GUI.color = Color.white; - Text.Anchor = TextAnchor.UpperLeft; - } - - private static void VerticalLabel( Rect rect, string text ) - { - // store the scaling matrix - var matrix = GUI.matrix; - - // rotate and then apply the scaling - GUI.matrix = Matrix4x4.identity; - GUIUtility.RotateAroundPivot( -90f, rect.center ); - GUI.matrix = matrix * GUI.matrix; - - Widgets.Label( rect, text ); - - // restore the original scaling matrix - GUI.matrix = matrix; - } - - private static Node NodeAt( int X, int Y ) - { - return Nodes.FirstOrDefault( n => n.X == X && n.Y == Y ); - } - - public static void MinimizeCrossings() - { - // initialize each layer by putting nodes with the most (recursive!) children on bottom - //shown in-game as "reducing crossings" - Log.Debug( "Minimize crossings." ); - Profiler.Start(); - - int X = Size.x; - var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; - Parallel.For (1, X, options, i => - { - var nodes = Layer( X ).OrderBy( n => n.Descendants.Count ).ToList(); - for( var z = 0; z < nodes.Count; z++) - { - nodes[i].Y = i + 1; - } - }); - - // up-down sweeps of mean reordering - var progress = false; - int iteration = 0, burnout = 2, max_iterations = 50; - while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) - { - progress = BarymetricSweep( iteration++ ); - if ( !progress ) - burnout--; - } - - // greedy sweep for local optima - iteration = 0; - burnout = 2; - while ( burnout > 0 && iteration < max_iterations ) - { - progress = GreedySweep( iteration++ ); - if ( !progress ) - burnout--; - } - - Profiler.End(); - } - - private static bool GreedySweep( int iteration ) - { - Profiler.Start( "iteration " + iteration ); - - // count number of crossings before sweep - var before = Crossings(); - - // do up/down sweep on aternating iterations - if ( iteration % 2 == 0 ) - for ( var l = 1; l <= Size.x; l++ ) - GreedySweep_Layer( l ); - else - for ( var l = Size.x; l >= 1; l-- ) - GreedySweep_Layer( l ); - - // count number of crossings after sweep - var after = Crossings(); - - Log.Debug( $"GreedySweep: {before} -> {after}" ); - Profiler.End(); - - // return progress - return after < before; - } - - private static void GreedySweep_Layer( int l ) - { - // The objective here is twofold; - // 1: Swap nodes to reduce the number of crossings - // 2: Swap nodes so that inner edges (edges between dummies) - // avoid crossings at all costs. - // - // If I'm reasoning this out right, both objectives should be served by - // minimizing the amount of crossings between each pair of nodes. - var crossings = Crossings( l ); - if ( crossings == 0 ) - return; - - var layer = Layer( l, true ); - for ( var i = 0; i < layer.Count - 1; i++ ) - { - for ( var j = i + 1; j < layer.Count; j++ ) - { - // swap, then count crossings again. If lower, leave it. If higher, revert. - Swap( layer[i], layer[j] ); - var candidateCrossings = Crossings( l ); - if ( candidateCrossings < crossings ) - // update current crossings - crossings = candidateCrossings; - else - // revert change - Swap( layer[j], layer[i] ); - } - } - } - - private static void Swap( Node A, Node B ) - { - if ( A.X != B.X ) - throw new Exception( "Can't swap nodes on different layers" ); - - // swap Y positions of adjacent nodes - var tmp = A.Y; - A.Y = B.Y; - B.Y = tmp; - } - - private static bool BarymetricSweep( int iteration ) - { - Profiler.Start( "iteration " + iteration ); - - // count number of crossings before sweep - var before = Crossings(); - - // do up/down sweep on alternating iterations - if ( iteration % 2 == 0 ) - for ( var i = 2; i <= Size.x; i++ ) - BarymetricSweep_Layer( i, true ); - else - for ( var i = Size.x - 1; i > 0; i-- ) - BarymetricSweep_Layer( i, false ); - - // count number of crossings after sweep - var after = Crossings(); - - // did we make progress? please? - Log.Debug( - $"BarymetricSweep {iteration} ({( iteration % 2 == 0 ? "left" : "right" )}): {before} -> {after}" ); - Profiler.End(); - return after < before; - } - - private static void BarymetricSweep_Layer( int layer, bool left ) - { - var means = Layer( layer ) - .ToDictionary( n => n, n => GetBarycentre( n, left ? n.InNodes : n.OutNodes ) ) - .OrderBy( n => n.Value ); - - // create groups of nodes at similar means - var cur = float.MinValue; - var groups = new Dictionary>(); - foreach ( var mean in means ) - { - if ( Math.Abs( mean.Value - cur ) > Epsilon ) - { - cur = mean.Value; - groups[cur] = new List(); - } - - groups[cur].Add( mean.Key ); - } - - // position nodes as close to their desired mean as possible - var Y = 1; - foreach ( var group in groups ) - { - var mean = group.Key; - var N = group.Value.Count; - Y = (int) Mathf.Max( Y, mean - ( N - 1 ) / 2 ); - - foreach ( var node in group.Value ) - node.Y = Y++; - } - } - - private static float GetBarycentre( Node node, List neighbours ) - { - if ( neighbours.NullOrEmpty() ) - return node.Yf; - - return neighbours.Sum( n => n.Yf ) / neighbours.Count; - } - - private static int Crossings() - { - var crossings = 0; - for ( var layer = 1; layer < Size.x; layer++ ) crossings += Crossings( layer, true ); - return crossings; - } - - private static float EdgeLength() - { - var length = 0f; - for ( var layer = 1; layer < Size.x; layer++ ) length += EdgeLength( layer, true ); - return length; - } - - private static int Crossings( int layer ) - { - if ( layer == 0 ) - return Crossings( layer, false ); - if ( layer == Size.x ) - return Crossings( layer, true ); - return Crossings( layer, true ) + Crossings( layer, false ); - } - - private static int Crossings( int layer, bool @in ) - { - // get in/out edges for layer - var edges = Layer( layer ) - .SelectMany( n => @in ? n.InEdges : n.OutEdges ) - .OrderBy( e => e.In.Y ) - .ThenBy( e => e.Out.Y ) - .ToList(); - - if ( edges.Count < 2 ) - return 0; - - // count number of inversions - var inversions = 0; - int X = edges.Count; - var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; - Parallel.For(0, X - 1, options, i => - { - for (var j = i + 1; j < edges.Count; j++) - if (edges[j].Out.Y < edges[i].Out.Y) - inversions++; - }); - - return inversions; - } - - private static float EdgeLength( int layer, bool @in ) - { - // get in/out edges for layer - var edges = Layer( layer ) - .SelectMany( n => @in ? n.InEdges : n.OutEdges ) - .OrderBy( e => e.In.Y ) - .ThenBy( e => e.Out.Y ) - .ToList(); - - if ( edges.NullOrEmpty() ) - return 0f; - - return edges.Sum( e => e.Length ) * ( @in ? 2 : 1 ); - } - - public static List Layer( int depth, bool ordered = false ) - { - if ( ordered && OrderDirty ) - { - _nodes = Nodes.OrderBy( n => n.X ).ThenBy( n => n.Y ).ToList(); - OrderDirty = false; - } - - return Nodes.Where( n => n.X == depth ).ToList(); - } - - public static List Row( int Y ) - { - return Nodes.Where( n => n.Y == Y ).ToList(); - } - - //This one is probably unsafe to execute in parallel - public new static string ToString() - { - var text = new StringBuilder(); - - for ( var l = 1; l <= Nodes.Max( n => n.X ); l++ ) - { - text.AppendLine( $"Layer {l}:" ); - var layer = Layer( l, true ); - - foreach ( var n in layer ) - { - text.AppendLine( $"\t{n}" ); - text.AppendLine( "\t\tAbove: " + - string.Join( ", ", n.InNodes.Select( a => a.ToString() ).ToArray() ) ); - text.AppendLine( "\t\tBelow: " + - string.Join( ", ", n.OutNodes.Select( b => b.ToString() ).ToArray() ) ); - } - } - - return text.ToString(); - } - - public static void DebugStatus() - { - Log.Message( "duplicated positions:\n " + - string.Join( - "\n", - Nodes.Where( n => Nodes.Any( n2 => n != n2 && n.X == n2.X && n.Y == n2.Y ) ) - .Select( n => n.X + ", " + n.Y + ": " + n.Label ).ToArray() ) ); - Log.Message( "out-of-bounds nodes:\n" + - string.Join( - "\n", Nodes.Where( n => n.X < 1 || n.Y < 1 ).Select( n => n.ToString() ).ToArray() ) ); - Log.Trace( ToString() ); - } - } -} +// Tree.cs +// Copyright Karel Kroeze, 2020-2020 + +using Multiplayer.API; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RimWorld; +using UnityEngine; +using Verse; +using static FluffyResearchTree.Constants; + +namespace FluffyResearchTree +{ + public static class Tree + { + public static bool Initialized; + public static IntVec2 Size = IntVec2.Zero; + private static List _nodes; + private static List> _edges; + private static List _relevantTechLevels; + private static Dictionary _techLevelBounds; + + private static bool _initializing; + + public static bool OrderDirty; + + public static Dictionary TechLevelBounds + { + get + { + if ( _techLevelBounds == null ) + throw new Exception( "TechLevelBounds called before they are set." ); + return _techLevelBounds; + } + } + + public static List RelevantTechLevels + { + get + { + if ( _relevantTechLevels == null ) + _relevantTechLevels = Enum.GetValues( typeof( TechLevel ) ) + .Cast() + // filter down to relevant tech levels only. + .Where( + tl => DefDatabase.AllDefsListForReading.Any( + rp => rp.techLevel == + tl ) ) + .ToList(); + return _relevantTechLevels; + } + } + + public static List Nodes + { + get + { + if ( _nodes == null ) + PopulateNodes(); + + return _nodes; + } + } + + public static List> Edges + { + get + { + if ( _edges == null ) + throw new Exception( "Trying to access edges before they are initialized." ); + + return _edges; + } + } + +// [SyncMethod] + public static void Initialize() + { + if ( Initialized ) return; + + // make sure we only have one initializer running + if ( _initializing ) + return; + _initializing = true; + + // setup + LongEventHandler.QueueLongEvent( CheckPrerequisites, "Fluffy.ResearchTree.PreparingTree.Setup", false, + null ); + LongEventHandler.QueueLongEvent( CreateEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); + LongEventHandler.QueueLongEvent( HorizontalPositions, "Fluffy.ResearchTree.PreparingTree.Setup", false, + null ); + LongEventHandler.QueueLongEvent( NormalizeEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); +#if DEBUG + LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); +#endif + + // crossing reduction + LongEventHandler.QueueLongEvent( Collapse, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, + null ); + LongEventHandler.QueueLongEvent( MinimizeCrossings, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", + false, null ); +#if DEBUG + LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, + null ); +#endif + + // layout + LongEventHandler.QueueLongEvent( MinimizeEdgeLength, "Fluffy.ResearchTree.PreparingTree.Layout", false, + null ); + LongEventHandler.QueueLongEvent( RemoveEmptyRows, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); +#if DEBUG + LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); +#endif + + // done! + LongEventHandler.QueueLongEvent( () => { Initialized = true; }, "Fluffy.ResearchTree.PreparingTree.Layout", + false, null ); + + // tell research tab we're ready + LongEventHandler.QueueLongEvent( MainTabWindow_ResearchTree.Instance.Notify_TreeInitialized, + "Fluffy.ResearchTree.RestoreQueue", false, null ); + } + + private static void RemoveEmptyRows() + { + Log.Debug( "Removing empty rows" ); + Profiler.Start(); + var y = 1; + while ( y <= Size.z ) + { + var row = Row( y ); + if ( row.NullOrEmpty() ) + foreach ( var node in Nodes.Where( n => n.Y > y ) ) + node.Y--; + else + y++; + } + + Profiler.End(); + } + + private static void MinimizeEdgeLength() + { + Log.Debug( "Minimize edge length." ); + Profiler.Start(); + + // move and/or swap nodes to reduce the total edge length + // perform sweeps of adjacent node reorderings + var progress = false; + int iteration = 0, burnout = 2, max_iterations = 50; + while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) + { + progress = EdgeLengthSweep_Local( iteration++ ); + if ( !progress ) + burnout--; + } + + // sweep until we had no progress 2 times, then keep sweeping until we had progress + iteration = 0; + burnout = 2; + while ( burnout > 0 && iteration < max_iterations ) + { + progress = EdgeLengthSweep_Global( iteration++ ); + if ( !progress ) + burnout--; + } + + Profiler.End(); + } + + private static bool EdgeLengthSweep_Global( int iteration ) + { + Profiler.Start( "iteration" + iteration ); + // calculate edge length before sweep + var before = EdgeLength(); + + // do left/right sweep, align with left/right nodes for 4 different iterations. + //if (iteration % 2 == 0) + for ( var l = 2; l <= Size.x; l++ ) + EdgeLengthSweep_Global_Layer( l, true ); + //else + // for (var l = 1; l < Size.x; l++) + // EdgeLengthSweep_Global_Layer(l, false); + + // calculate edge length after sweep + var after = EdgeLength(); + + // return progress + Log.Debug( $"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}" ); + Profiler.End(); + return after < before; + } + + + private static bool EdgeLengthSweep_Local( int iteration ) + { + Profiler.Start( "iteration" + iteration ); + // calculate edge length before sweep + var before = EdgeLength(); + + // do left/right sweep, align with left/right nodes for 4 different iterations. + if ( iteration % 2 == 0 ) + for ( var l = 2; l <= Size.x; l++ ) + EdgeLengthSweep_Local_Layer( l, true ); + else + for ( var l = Size.x - 1; l >= 0; l-- ) + EdgeLengthSweep_Local_Layer( l, false ); + + // calculate edge length after sweep + var after = EdgeLength(); + + // return progress + Log.Debug( $"EdgeLengthSweep_Local, iteration {iteration}: {before} -> {after}" ); + Profiler.End(); + return after < before; + } + + private static void EdgeLengthSweep_Global_Layer( int l, bool @in ) + { + // The objective here is to; + // (1) move and/or swap nodes to reduce total edge length + // (2) not increase the number of crossings + + var length = EdgeLength( l, @in ); + var crossings = Crossings( l ); + if ( Math.Abs( length ) < Epsilon ) + return; + + var layer = Layer( l, true ); + //Couldn't parallelize + foreach ( var node in layer ) + { + // we only need to loop over positions that might be better for this node. + // min = minimum of current position, minimum of any connected nodes current position + var neighbours = node.Nodes; + if ( !neighbours.Any() ) + continue; + + var min = Mathf.Min( node.Y, neighbours.Min( n => n.Y ) ); + var max = Mathf.Max( node.Y, neighbours.Max( n => n.Y ) ); + if ( min == max && min == node.Y ) + continue; + + for ( var y = min; y <= max; y++ ) + { + if ( y == node.Y ) + continue; + + // is this spot occupied? + var otherNode = NodeAt( l, y ); + + // occupied, try swapping + if ( otherNode != null ) + { + Swap( node, otherNode ); + var candidateCrossings = Crossings( l ); + if ( candidateCrossings > crossings ) + { + // abort + Swap( otherNode, node ); + } + else + { + var candidateLength = EdgeLength( l, @in ); + if ( length - candidateLength < Epsilon ) + { + // abort + Swap( otherNode, node ); + } + else + { + Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", node, otherNode, length, + candidateLength ); + length = candidateLength; + } + } + } + + // not occupied, try moving + else + { + var oldY = node.Y; + node.Y = y; + var candidateCrossings = Crossings( l ); + if ( candidateCrossings > crossings ) + { + // abort + node.Y = oldY; + } + else + { + var candidateLength = EdgeLength( l, @in ); + if ( length - candidateLength < Epsilon ) + { + // abort + node.Y = oldY; + } + else + { + Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", node, new Vector2( node.X, oldY ), length, + candidateLength ); + length = candidateLength; + } + } + } + } + } + } + + + private static void EdgeLengthSweep_Local_Layer( int l, bool @in ) + { + // The objective here is to; + // (1) move and/or swap nodes to reduce local edge length + // (2) not increase the number of crossings + var x = @in ? l - 1 : l + 1; + var crossings = Crossings( x ); + + var layer = Layer( l, true ); + foreach ( var node in layer ) + { + foreach ( var edge in @in ? node.InEdges : node.OutEdges ) + { + // current length + var length = edge.Length; + var neighbour = @in ? edge.In : edge.Out; + if ( neighbour.X != x ) + Log.Warning( "{0} is not at layer {1}", neighbour, x ); + + // we only need to loop over positions that might be better for this node. + // min = minimum of current position, node position + var min = Mathf.Min( node.Y, neighbour.Y ); + var max = Mathf.Max( node.Y, neighbour.Y ); + + // already at only possible position + if ( min == max && min == node.Y ) + continue; + + for ( var y = min; y <= max; y++ ) + { + if ( y == neighbour.Y ) + continue; + + // is this spot occupied? + var otherNode = NodeAt( x, y ); + + // occupied, try swapping + if ( otherNode != null ) + { + Swap( neighbour, otherNode ); + var candidateCrossings = Crossings( x ); + if ( candidateCrossings > crossings ) + { + // abort + Swap( otherNode, neighbour ); + } + else + { + var candidateLength = edge.Length; + if ( length - candidateLength < Epsilon ) + { + // abort + Swap( otherNode, neighbour ); + } + else + { + Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", neighbour, otherNode, length, + candidateLength ); + length = candidateLength; + } + } + } + + // not occupied, try moving + else + { + var oldY = neighbour.Y; + neighbour.Y = y; + var candidateCrossings = Crossings( x ); + if ( candidateCrossings > crossings ) + { + // abort + neighbour.Y = oldY; + } + else + { + var candidateLength = edge.Length; + if ( length - candidateLength < Epsilon ) + { + // abort + neighbour.Y = oldY; + } + else + { + Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", neighbour, + new Vector2( neighbour.X, oldY ), length, candidateLength ); + length = candidateLength; + } + } + } + } + } + } + } + + public static void HorizontalPositions() + { + // get list of techlevels + var techlevels = RelevantTechLevels; + bool anyChange; + var iteration = 1; + var maxIterations = 50; + + Log.Debug( "Assigning horizontal positions." ); + Profiler.Start(); + + // assign horizontal positions based on tech levels and prerequisites + do + { + Profiler.Start( "iteration " + iteration ); + var min = 1; + anyChange = false; + + foreach ( var techlevel in techlevels ) + { + // enforce minimum x position based on techlevels + var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); + if ( !nodes.Any() ) + continue; + + foreach ( var node in nodes ) + anyChange = node.SetDepth( min ) || anyChange; + + min = nodes.Max( n => n.X ) + 1; + + Log.Trace( "\t{0}, change: {1}", techlevel, anyChange ); + } + + Profiler.End(); + } while ( anyChange && iteration++ < maxIterations ); + + + // store tech level boundaries + _techLevelBounds = new Dictionary(); + foreach ( var techlevel in techlevels ) + { + var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); + _techLevelBounds[techlevel] = new IntRange( nodes.Min( n => n.X ) - 1, nodes.Max( n => n.X ) ); + } + + Profiler.End(); + } + + private static void NormalizeEdges() + { + Log.Debug( "Normalizing edges." ); + Profiler.Start(); + foreach ( var edge in new List>( Edges.Where( e => e.Span > 1 ) ) ) + { + Log.Trace( "\tCreating dummy chain for {0}", edge ); + + // remove and decouple long edge + Edges.Remove( edge ); + edge.In.OutEdges.Remove( edge ); + edge.Out.InEdges.Remove( edge ); + var cur = edge.In; + var yOffset = ( edge.Out.Yf - edge.In.Yf ) / edge.Span; + + // create and hook up dummy chain + int x = edge.In.X; + Parallel.For(x + 1, Convert.ToInt32(x < edge.Out.X), i => + { + var dummy = new DummyNode + { + X = x, + Yf = edge.In.Yf + yOffset * (x - edge.In.X) + }; + var dummyEdge = new Edge(cur, dummy); + cur.OutEdges.Add(dummyEdge); + dummy.InEdges.Add(dummyEdge); + _nodes.Add(dummy); + Edges.Add(dummyEdge); + cur = dummy; + Log.Trace("\t\tCreated dummy {0}", dummy); + }); + + // hook up final dummy to out node + var finalEdge = new Edge( cur, edge.Out ); + cur.OutEdges.Add( finalEdge ); + edge.Out.InEdges.Add( finalEdge ); + Edges.Add( finalEdge ); + } + + Profiler.End(); + } + + private static void CreateEdges() + { + Log.Debug( "Creating edges." ); + Profiler.Start(); + // create links between nodes + if ( _edges.NullOrEmpty() ) _edges = new List>(); + + foreach ( var node in Nodes.OfType() ) + { + if ( node.Research.prerequisites.NullOrEmpty() ) + continue; + foreach ( var prerequisite in node.Research.prerequisites ) + { + ResearchNode prerequisiteNode = prerequisite; + if ( prerequisiteNode == null ) + continue; + var edge = new Edge( prerequisiteNode, node ); + Edges.Add( edge ); + node.InEdges.Add( edge ); + prerequisiteNode.OutEdges.Add( edge ); + Log.Trace( "\tCreated edge {0}", edge ); + } + } + + Profiler.End(); + } + + private static void CheckPrerequisites() + { + // check prerequisites + Log.Debug( "Checking prerequisites." ); + Profiler.Start(); + + var nodes = new Queue( Nodes.OfType() ); + // remove redundant prerequisites + while ( nodes.Count > 0 ) + { + var node = nodes.Dequeue(); + if ( node.Research.prerequisites.NullOrEmpty() ) + continue; + + var ancestors = node.Research.prerequisites?.SelectMany( r => r.Ancestors() ).ToList(); + var redundant = ancestors.Intersect( node.Research.prerequisites ); + if ( redundant.Any() ) + { + Log.Warning( "\tredundant prerequisites for {0}: {1}", node.Research.LabelCap, + string.Join( ", ", redundant.Select( r => r.LabelCap ).ToArray() ) ); + foreach ( var redundantPrerequisite in redundant ) + node.Research.prerequisites.Remove( redundantPrerequisite ); + } + } + + // fix bad techlevels + nodes = new Queue( Nodes.OfType() ); + while ( nodes.Count > 0 ) + { + var node = nodes.Dequeue(); + if ( !node.Research.prerequisites.NullOrEmpty() ) + // warn and fix badly configured techlevels + if ( node.Research.prerequisites.Any( r => r.techLevel > node.Research.techLevel ) ) + { + Log.Warning( "\t{0} has a lower techlevel than (one of) it's prerequisites", + node.Research.defName ); + node.Research.techLevel = node.Research.prerequisites.Max( r => r.techLevel ); + + // re-enqeue all descendants + foreach ( var descendant in node.Descendants.OfType() ) + nodes.Enqueue( descendant ); + } + } + + Profiler.End(); + } + + private static void PopulateNodes() + { + Log.Debug( "Populating nodes." ); + Profiler.Start(); + + var projects = DefDatabase.AllDefsListForReading; + + // find hidden nodes (nodes that have themselves as a prerequisite) + var hidden = projects.Where( p => p.prerequisites?.Contains( p ) ?? false ); + + // find locked nodes (nodes that have a hidden node as a prerequisite) + var locked = projects.Where( p => p.Ancestors().Intersect( hidden ).Any() ); + + // populate all nodes + _nodes = new List( DefDatabase.AllDefsListForReading + .Except( hidden ) + .Except( locked ) + .Select( def => new ResearchNode( def ) as Node ) ); + Log.Debug( "\t{0} nodes", _nodes.Count ); + Profiler.End(); + } + + private static void Collapse() + { + Log.Debug( "Collapsing nodes." ); + Profiler.Start(); + var pre = Size; + for ( var l = 1; l <= Size.x; l++ ) + { + var nodes = Layer( l, true ); + var Y = 1; + foreach ( var node in nodes ) + node.Y = Y++; + } + + Log.Debug( "{0} -> {1}", pre, Size ); + Profiler.End(); + } + + [Conditional( "DEBUG" )] + internal static void DebugDraw() + { + foreach ( var v in Nodes ) + { + foreach ( var w in v.OutNodes ) Widgets.DrawLine( v.Right, w.Left, Color.white, 1 ); + } + } + + + public static void Draw( Rect visibleRect ) + { + Profiler.Start( "Tree.Draw" ); + Profiler.Start( "techlevels" ); + foreach ( var techlevel in RelevantTechLevels ) + DrawTechLevel( techlevel, visibleRect ); + Profiler.End(); + + Profiler.Start( "edges" ); + foreach ( var edge in Edges.OrderBy( e => e.DrawOrder ) ) + edge.Draw( visibleRect ); + Profiler.End(); + + Profiler.Start( "nodes" ); + foreach ( var node in Nodes ) + node.Draw( visibleRect ); + Profiler.End(); + } + + public static void DrawTechLevel( TechLevel techlevel, Rect visibleRect ) + { + // determine positions + var xMin = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].min - NodeMargins.x / 2f; + var xMax = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].max - NodeMargins.x / 2f; + + GUI.color = Assets.TechLevelColor; + Text.Anchor = TextAnchor.MiddleCenter; + + // lower bound + if ( TechLevelBounds[techlevel].min > 0 && xMin > visibleRect.xMin && xMin < visibleRect.xMax ) + { + // line + Widgets.DrawLine( new Vector2( xMin, visibleRect.yMin ), new Vector2( xMin, visibleRect.yMax ), + Assets.TechLevelColor, 1f ); + + // label + var labelRect = new Rect( + xMin + TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, + visibleRect.center.y - TechLevelLabelSize.y / 2f, + TechLevelLabelSize.x, + TechLevelLabelSize.y ); + + VerticalLabel( labelRect, techlevel.ToStringHuman() ); + } + + // upper bound + if ( TechLevelBounds[techlevel].max < Size.x && xMax > visibleRect.xMin && xMax < visibleRect.xMax ) + { + // label + var labelRect = new Rect( + xMax - TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, + visibleRect.center.y - TechLevelLabelSize.y / 2f, + TechLevelLabelSize.x, + TechLevelLabelSize.y ); + + VerticalLabel( labelRect, techlevel.ToStringHuman() ); + } + + GUI.color = Color.white; + Text.Anchor = TextAnchor.UpperLeft; + } + + private static void VerticalLabel( Rect rect, string text ) + { + // store the scaling matrix + var matrix = GUI.matrix; + + // rotate and then apply the scaling + GUI.matrix = Matrix4x4.identity; + GUIUtility.RotateAroundPivot( -90f, rect.center ); + GUI.matrix = matrix * GUI.matrix; + + Widgets.Label( rect, text ); + + // restore the original scaling matrix + GUI.matrix = matrix; + } + + private static Node NodeAt( int X, int Y ) + { + return Nodes.FirstOrDefault( n => n.X == X && n.Y == Y ); + } + + public static void MinimizeCrossings() + { + // initialize each layer by putting nodes with the most (recursive!) children on bottom + //shown in-game as "reducing crossings" + Log.Debug( "Minimize crossings." ); + Profiler.Start(); + + int X = Size.x; + var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; + object exceptionRemover = new object(); //prevent the "Index was out of range. Must be non-negative and less than the size of the collection." error + Parallel.For (1, X, options, i => + { + var nodes = Layer( X ).OrderBy( n => n.Descendants.Count ).ToList(); + lock(exceptionRemover) + { + for (var z = 0; z < nodes.Count; z++) + { + nodes[i].Y = i + 1; + } + } + }); + + // up-down sweeps of mean reordering + var progress = false; + int iteration = 0, burnout = 2, max_iterations = 50; + while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) + { + progress = BarymetricSweep( iteration++ ); + if ( !progress ) + burnout--; + } + + // greedy sweep for local optima + iteration = 0; + burnout = 2; + while ( burnout > 0 && iteration < max_iterations ) + { + progress = GreedySweep( iteration++ ); + if ( !progress ) + burnout--; + } + + Profiler.End(); + } + + private static bool GreedySweep( int iteration ) + { + Profiler.Start( "iteration " + iteration ); + + // count number of crossings before sweep + var before = Crossings(); + + // do up/down sweep on aternating iterations + if ( iteration % 2 == 0 ) + for ( var l = 1; l <= Size.x; l++ ) + GreedySweep_Layer( l ); + else + for ( var l = Size.x; l >= 1; l-- ) + GreedySweep_Layer( l ); + + // count number of crossings after sweep + var after = Crossings(); + + Log.Debug( $"GreedySweep: {before} -> {after}" ); + Profiler.End(); + + // return progress + return after < before; + } + + private static void GreedySweep_Layer( int l ) + { + // The objective here is twofold; + // 1: Swap nodes to reduce the number of crossings + // 2: Swap nodes so that inner edges (edges between dummies) + // avoid crossings at all costs. + // + // If I'm reasoning this out right, both objectives should be served by + // minimizing the amount of crossings between each pair of nodes. + var crossings = Crossings( l ); + if ( crossings == 0 ) + return; + + var layer = Layer( l, true ); + for ( var i = 0; i < layer.Count - 1; i++ ) + { + for ( var j = i + 1; j < layer.Count; j++ ) + { + // swap, then count crossings again. If lower, leave it. If higher, revert. + Swap( layer[i], layer[j] ); + var candidateCrossings = Crossings( l ); + if ( candidateCrossings < crossings ) + // update current crossings + crossings = candidateCrossings; + else + // revert change + Swap( layer[j], layer[i] ); + } + } + } + + private static void Swap( Node A, Node B ) + { + //checks if the adjacent nodes have the same X cords, throws exception if no. Not sure if needed. + /* + if ( A.X != B.X) + { + throw new Exception("Can't swap nodes on different layers"); + } + */ + // swap Y positions of adjacent nodes + var tmp = A.Y; + A.Y = B.Y; + B.Y = tmp; + } + + private static bool BarymetricSweep( int iteration ) + { + Profiler.Start( "iteration " + iteration ); + + // count number of crossings before sweep + var before = Crossings(); + + // do up/down sweep on alternating iterations + if ( iteration % 2 == 0 ) + for ( var i = 2; i <= Size.x; i++ ) + BarymetricSweep_Layer( i, true ); + else + for ( var i = Size.x - 1; i > 0; i-- ) + BarymetricSweep_Layer( i, false ); + + // count number of crossings after sweep + var after = Crossings(); + + // did we make progress? please? + Log.Debug( + $"BarymetricSweep {iteration} ({( iteration % 2 == 0 ? "left" : "right" )}): {before} -> {after}" ); + Profiler.End(); + return after < before; + } + + private static void BarymetricSweep_Layer( int layer, bool left ) + { + var means = Layer( layer ) + .ToDictionary( n => n, n => GetBarycentre( n, left ? n.InNodes : n.OutNodes ) ) + .OrderBy( n => n.Value ); + + // create groups of nodes at similar means + var cur = float.MinValue; + var groups = new Dictionary>(); + foreach ( var mean in means ) + { + if ( Math.Abs( mean.Value - cur ) > Epsilon ) + { + cur = mean.Value; + groups[cur] = new List(); + } + + groups[cur].Add( mean.Key ); + } + + // position nodes as close to their desired mean as possible + var Y = 1; + foreach ( var group in groups ) + { + var mean = group.Key; + var N = group.Value.Count; + Y = (int) Mathf.Max( Y, mean - ( N - 1 ) / 2 ); + + foreach ( var node in group.Value ) + node.Y = Y++; + } + } + + private static float GetBarycentre( Node node, List neighbours ) + { + if ( neighbours.NullOrEmpty() ) + return node.Yf; + + return neighbours.Sum( n => n.Yf ) / neighbours.Count; + } + + private static int Crossings() + { + var crossings = 0; + for ( var layer = 1; layer < Size.x; layer++ ) crossings += Crossings( layer, true ); + return crossings; + } + + private static float EdgeLength() + { + var length = 0f; + for ( var layer = 1; layer < Size.x; layer++ ) length += EdgeLength( layer, true ); + return length; + } + + private static int Crossings( int layer ) + { + if ( layer == 0 ) + return Crossings( layer, false ); + if ( layer == Size.x ) + return Crossings( layer, true ); + return Crossings( layer, true ) + Crossings( layer, false ); + } + + private static int Crossings( int layer, bool @in ) + { + // get in/out edges for layer + var edges = Layer( layer ) + .SelectMany( n => @in ? n.InEdges : n.OutEdges ) + .OrderBy( e => e.In.Y ) + .ThenBy( e => e.Out.Y ) + .ToList(); + + if ( edges.Count < 2 ) + return 0; + + // count number of inversions + var inversions = 0; + int X = edges.Count; + var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; + Parallel.For(0, X - 1, options, i => + { + for (var j = i + 1; j < edges.Count; j++) + if (edges[j].Out.Y < edges[i].Out.Y) + inversions++; + }); + + return inversions; + } + + private static float EdgeLength( int layer, bool @in ) + { + // get in/out edges for layer + var edges = Layer( layer ) + .SelectMany( n => @in ? n.InEdges : n.OutEdges ) + .OrderBy( e => e.In.Y ) + .ThenBy( e => e.Out.Y ) + .ToList(); + + if ( edges.NullOrEmpty() ) + return 0f; + + return edges.Sum( e => e.Length ) * ( @in ? 2 : 1 ); + } + + + public static List Layer( int depth, bool ordered = false ) + { + if ( ordered && OrderDirty ) + { + _nodes = Nodes.OrderBy( n => n.X ).ThenBy( n => n.Y ).ToList(); + OrderDirty = false; + } + + return Nodes.Where( n => n.X == depth ).ToList(); + } + + public static List Row( int Y ) + { + return Nodes.Where( n => n.Y == Y ).ToList(); + } + + //This one is probably unsafe to execute in parallel + public new static string ToString() + { + var text = new StringBuilder(); + + for ( var l = 1; l <= Nodes.Max( n => n.X ); l++ ) + { + text.AppendLine( $"Layer {l}:" ); + var layer = Layer( l, true ); + + foreach ( var n in layer ) + { + text.AppendLine( $"\t{n}" ); + text.AppendLine( "\t\tAbove: " + + string.Join( ", ", n.InNodes.Select( a => a.ToString() ).ToArray() ) ); + text.AppendLine( "\t\tBelow: " + + string.Join( ", ", n.OutNodes.Select( b => b.ToString() ).ToArray() ) ); + } + } + + return text.ToString(); + } + + public static void DebugStatus() + { + Log.Message( "duplicated positions:\n " + + string.Join( + "\n", + Nodes.Where( n => Nodes.Any( n2 => n != n2 && n.X == n2.X && n.Y == n2.Y ) ) + .Select( n => n.X + ", " + n.Y + ": " + n.Label ).ToArray() ) ); + Log.Message( "out-of-bounds nodes:\n" + + string.Join( + "\n", Nodes.Where( n => n.X < 1 || n.Y < 1 ).Select( n => n.ToString() ).ToArray() ) ); + Log.Trace( ToString() ); + } + } +} From d4fea3e558dbc8066f2cd2447007ae41425b0836 Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Wed, 22 Dec 2021 22:12:01 +0100 Subject: [PATCH 11/16] Revert "Attempting to fix exception in MinimizeCrossings" This reverts commit 79f1095e9773b6b5d081c18b6920327b0eaf8597. --- Source/Graph/Tree.cs | 2003 +++++++++++++++++++++--------------------- 1 file changed, 997 insertions(+), 1006 deletions(-) diff --git a/Source/Graph/Tree.cs b/Source/Graph/Tree.cs index 1076544..5569afb 100644 --- a/Source/Graph/Tree.cs +++ b/Source/Graph/Tree.cs @@ -1,1006 +1,997 @@ -// Tree.cs -// Copyright Karel Kroeze, 2020-2020 - -using Multiplayer.API; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using RimWorld; -using UnityEngine; -using Verse; -using static FluffyResearchTree.Constants; - -namespace FluffyResearchTree -{ - public static class Tree - { - public static bool Initialized; - public static IntVec2 Size = IntVec2.Zero; - private static List _nodes; - private static List> _edges; - private static List _relevantTechLevels; - private static Dictionary _techLevelBounds; - - private static bool _initializing; - - public static bool OrderDirty; - - public static Dictionary TechLevelBounds - { - get - { - if ( _techLevelBounds == null ) - throw new Exception( "TechLevelBounds called before they are set." ); - return _techLevelBounds; - } - } - - public static List RelevantTechLevels - { - get - { - if ( _relevantTechLevels == null ) - _relevantTechLevels = Enum.GetValues( typeof( TechLevel ) ) - .Cast() - // filter down to relevant tech levels only. - .Where( - tl => DefDatabase.AllDefsListForReading.Any( - rp => rp.techLevel == - tl ) ) - .ToList(); - return _relevantTechLevels; - } - } - - public static List Nodes - { - get - { - if ( _nodes == null ) - PopulateNodes(); - - return _nodes; - } - } - - public static List> Edges - { - get - { - if ( _edges == null ) - throw new Exception( "Trying to access edges before they are initialized." ); - - return _edges; - } - } - -// [SyncMethod] - public static void Initialize() - { - if ( Initialized ) return; - - // make sure we only have one initializer running - if ( _initializing ) - return; - _initializing = true; - - // setup - LongEventHandler.QueueLongEvent( CheckPrerequisites, "Fluffy.ResearchTree.PreparingTree.Setup", false, - null ); - LongEventHandler.QueueLongEvent( CreateEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); - LongEventHandler.QueueLongEvent( HorizontalPositions, "Fluffy.ResearchTree.PreparingTree.Setup", false, - null ); - LongEventHandler.QueueLongEvent( NormalizeEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); -#if DEBUG - LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); -#endif - - // crossing reduction - LongEventHandler.QueueLongEvent( Collapse, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, - null ); - LongEventHandler.QueueLongEvent( MinimizeCrossings, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", - false, null ); -#if DEBUG - LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, - null ); -#endif - - // layout - LongEventHandler.QueueLongEvent( MinimizeEdgeLength, "Fluffy.ResearchTree.PreparingTree.Layout", false, - null ); - LongEventHandler.QueueLongEvent( RemoveEmptyRows, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); -#if DEBUG - LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); -#endif - - // done! - LongEventHandler.QueueLongEvent( () => { Initialized = true; }, "Fluffy.ResearchTree.PreparingTree.Layout", - false, null ); - - // tell research tab we're ready - LongEventHandler.QueueLongEvent( MainTabWindow_ResearchTree.Instance.Notify_TreeInitialized, - "Fluffy.ResearchTree.RestoreQueue", false, null ); - } - - private static void RemoveEmptyRows() - { - Log.Debug( "Removing empty rows" ); - Profiler.Start(); - var y = 1; - while ( y <= Size.z ) - { - var row = Row( y ); - if ( row.NullOrEmpty() ) - foreach ( var node in Nodes.Where( n => n.Y > y ) ) - node.Y--; - else - y++; - } - - Profiler.End(); - } - - private static void MinimizeEdgeLength() - { - Log.Debug( "Minimize edge length." ); - Profiler.Start(); - - // move and/or swap nodes to reduce the total edge length - // perform sweeps of adjacent node reorderings - var progress = false; - int iteration = 0, burnout = 2, max_iterations = 50; - while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) - { - progress = EdgeLengthSweep_Local( iteration++ ); - if ( !progress ) - burnout--; - } - - // sweep until we had no progress 2 times, then keep sweeping until we had progress - iteration = 0; - burnout = 2; - while ( burnout > 0 && iteration < max_iterations ) - { - progress = EdgeLengthSweep_Global( iteration++ ); - if ( !progress ) - burnout--; - } - - Profiler.End(); - } - - private static bool EdgeLengthSweep_Global( int iteration ) - { - Profiler.Start( "iteration" + iteration ); - // calculate edge length before sweep - var before = EdgeLength(); - - // do left/right sweep, align with left/right nodes for 4 different iterations. - //if (iteration % 2 == 0) - for ( var l = 2; l <= Size.x; l++ ) - EdgeLengthSweep_Global_Layer( l, true ); - //else - // for (var l = 1; l < Size.x; l++) - // EdgeLengthSweep_Global_Layer(l, false); - - // calculate edge length after sweep - var after = EdgeLength(); - - // return progress - Log.Debug( $"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}" ); - Profiler.End(); - return after < before; - } - - - private static bool EdgeLengthSweep_Local( int iteration ) - { - Profiler.Start( "iteration" + iteration ); - // calculate edge length before sweep - var before = EdgeLength(); - - // do left/right sweep, align with left/right nodes for 4 different iterations. - if ( iteration % 2 == 0 ) - for ( var l = 2; l <= Size.x; l++ ) - EdgeLengthSweep_Local_Layer( l, true ); - else - for ( var l = Size.x - 1; l >= 0; l-- ) - EdgeLengthSweep_Local_Layer( l, false ); - - // calculate edge length after sweep - var after = EdgeLength(); - - // return progress - Log.Debug( $"EdgeLengthSweep_Local, iteration {iteration}: {before} -> {after}" ); - Profiler.End(); - return after < before; - } - - private static void EdgeLengthSweep_Global_Layer( int l, bool @in ) - { - // The objective here is to; - // (1) move and/or swap nodes to reduce total edge length - // (2) not increase the number of crossings - - var length = EdgeLength( l, @in ); - var crossings = Crossings( l ); - if ( Math.Abs( length ) < Epsilon ) - return; - - var layer = Layer( l, true ); - //Couldn't parallelize - foreach ( var node in layer ) - { - // we only need to loop over positions that might be better for this node. - // min = minimum of current position, minimum of any connected nodes current position - var neighbours = node.Nodes; - if ( !neighbours.Any() ) - continue; - - var min = Mathf.Min( node.Y, neighbours.Min( n => n.Y ) ); - var max = Mathf.Max( node.Y, neighbours.Max( n => n.Y ) ); - if ( min == max && min == node.Y ) - continue; - - for ( var y = min; y <= max; y++ ) - { - if ( y == node.Y ) - continue; - - // is this spot occupied? - var otherNode = NodeAt( l, y ); - - // occupied, try swapping - if ( otherNode != null ) - { - Swap( node, otherNode ); - var candidateCrossings = Crossings( l ); - if ( candidateCrossings > crossings ) - { - // abort - Swap( otherNode, node ); - } - else - { - var candidateLength = EdgeLength( l, @in ); - if ( length - candidateLength < Epsilon ) - { - // abort - Swap( otherNode, node ); - } - else - { - Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", node, otherNode, length, - candidateLength ); - length = candidateLength; - } - } - } - - // not occupied, try moving - else - { - var oldY = node.Y; - node.Y = y; - var candidateCrossings = Crossings( l ); - if ( candidateCrossings > crossings ) - { - // abort - node.Y = oldY; - } - else - { - var candidateLength = EdgeLength( l, @in ); - if ( length - candidateLength < Epsilon ) - { - // abort - node.Y = oldY; - } - else - { - Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", node, new Vector2( node.X, oldY ), length, - candidateLength ); - length = candidateLength; - } - } - } - } - } - } - - - private static void EdgeLengthSweep_Local_Layer( int l, bool @in ) - { - // The objective here is to; - // (1) move and/or swap nodes to reduce local edge length - // (2) not increase the number of crossings - var x = @in ? l - 1 : l + 1; - var crossings = Crossings( x ); - - var layer = Layer( l, true ); - foreach ( var node in layer ) - { - foreach ( var edge in @in ? node.InEdges : node.OutEdges ) - { - // current length - var length = edge.Length; - var neighbour = @in ? edge.In : edge.Out; - if ( neighbour.X != x ) - Log.Warning( "{0} is not at layer {1}", neighbour, x ); - - // we only need to loop over positions that might be better for this node. - // min = minimum of current position, node position - var min = Mathf.Min( node.Y, neighbour.Y ); - var max = Mathf.Max( node.Y, neighbour.Y ); - - // already at only possible position - if ( min == max && min == node.Y ) - continue; - - for ( var y = min; y <= max; y++ ) - { - if ( y == neighbour.Y ) - continue; - - // is this spot occupied? - var otherNode = NodeAt( x, y ); - - // occupied, try swapping - if ( otherNode != null ) - { - Swap( neighbour, otherNode ); - var candidateCrossings = Crossings( x ); - if ( candidateCrossings > crossings ) - { - // abort - Swap( otherNode, neighbour ); - } - else - { - var candidateLength = edge.Length; - if ( length - candidateLength < Epsilon ) - { - // abort - Swap( otherNode, neighbour ); - } - else - { - Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", neighbour, otherNode, length, - candidateLength ); - length = candidateLength; - } - } - } - - // not occupied, try moving - else - { - var oldY = neighbour.Y; - neighbour.Y = y; - var candidateCrossings = Crossings( x ); - if ( candidateCrossings > crossings ) - { - // abort - neighbour.Y = oldY; - } - else - { - var candidateLength = edge.Length; - if ( length - candidateLength < Epsilon ) - { - // abort - neighbour.Y = oldY; - } - else - { - Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", neighbour, - new Vector2( neighbour.X, oldY ), length, candidateLength ); - length = candidateLength; - } - } - } - } - } - } - } - - public static void HorizontalPositions() - { - // get list of techlevels - var techlevels = RelevantTechLevels; - bool anyChange; - var iteration = 1; - var maxIterations = 50; - - Log.Debug( "Assigning horizontal positions." ); - Profiler.Start(); - - // assign horizontal positions based on tech levels and prerequisites - do - { - Profiler.Start( "iteration " + iteration ); - var min = 1; - anyChange = false; - - foreach ( var techlevel in techlevels ) - { - // enforce minimum x position based on techlevels - var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); - if ( !nodes.Any() ) - continue; - - foreach ( var node in nodes ) - anyChange = node.SetDepth( min ) || anyChange; - - min = nodes.Max( n => n.X ) + 1; - - Log.Trace( "\t{0}, change: {1}", techlevel, anyChange ); - } - - Profiler.End(); - } while ( anyChange && iteration++ < maxIterations ); - - - // store tech level boundaries - _techLevelBounds = new Dictionary(); - foreach ( var techlevel in techlevels ) - { - var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); - _techLevelBounds[techlevel] = new IntRange( nodes.Min( n => n.X ) - 1, nodes.Max( n => n.X ) ); - } - - Profiler.End(); - } - - private static void NormalizeEdges() - { - Log.Debug( "Normalizing edges." ); - Profiler.Start(); - foreach ( var edge in new List>( Edges.Where( e => e.Span > 1 ) ) ) - { - Log.Trace( "\tCreating dummy chain for {0}", edge ); - - // remove and decouple long edge - Edges.Remove( edge ); - edge.In.OutEdges.Remove( edge ); - edge.Out.InEdges.Remove( edge ); - var cur = edge.In; - var yOffset = ( edge.Out.Yf - edge.In.Yf ) / edge.Span; - - // create and hook up dummy chain - int x = edge.In.X; - Parallel.For(x + 1, Convert.ToInt32(x < edge.Out.X), i => - { - var dummy = new DummyNode - { - X = x, - Yf = edge.In.Yf + yOffset * (x - edge.In.X) - }; - var dummyEdge = new Edge(cur, dummy); - cur.OutEdges.Add(dummyEdge); - dummy.InEdges.Add(dummyEdge); - _nodes.Add(dummy); - Edges.Add(dummyEdge); - cur = dummy; - Log.Trace("\t\tCreated dummy {0}", dummy); - }); - - // hook up final dummy to out node - var finalEdge = new Edge( cur, edge.Out ); - cur.OutEdges.Add( finalEdge ); - edge.Out.InEdges.Add( finalEdge ); - Edges.Add( finalEdge ); - } - - Profiler.End(); - } - - private static void CreateEdges() - { - Log.Debug( "Creating edges." ); - Profiler.Start(); - // create links between nodes - if ( _edges.NullOrEmpty() ) _edges = new List>(); - - foreach ( var node in Nodes.OfType() ) - { - if ( node.Research.prerequisites.NullOrEmpty() ) - continue; - foreach ( var prerequisite in node.Research.prerequisites ) - { - ResearchNode prerequisiteNode = prerequisite; - if ( prerequisiteNode == null ) - continue; - var edge = new Edge( prerequisiteNode, node ); - Edges.Add( edge ); - node.InEdges.Add( edge ); - prerequisiteNode.OutEdges.Add( edge ); - Log.Trace( "\tCreated edge {0}", edge ); - } - } - - Profiler.End(); - } - - private static void CheckPrerequisites() - { - // check prerequisites - Log.Debug( "Checking prerequisites." ); - Profiler.Start(); - - var nodes = new Queue( Nodes.OfType() ); - // remove redundant prerequisites - while ( nodes.Count > 0 ) - { - var node = nodes.Dequeue(); - if ( node.Research.prerequisites.NullOrEmpty() ) - continue; - - var ancestors = node.Research.prerequisites?.SelectMany( r => r.Ancestors() ).ToList(); - var redundant = ancestors.Intersect( node.Research.prerequisites ); - if ( redundant.Any() ) - { - Log.Warning( "\tredundant prerequisites for {0}: {1}", node.Research.LabelCap, - string.Join( ", ", redundant.Select( r => r.LabelCap ).ToArray() ) ); - foreach ( var redundantPrerequisite in redundant ) - node.Research.prerequisites.Remove( redundantPrerequisite ); - } - } - - // fix bad techlevels - nodes = new Queue( Nodes.OfType() ); - while ( nodes.Count > 0 ) - { - var node = nodes.Dequeue(); - if ( !node.Research.prerequisites.NullOrEmpty() ) - // warn and fix badly configured techlevels - if ( node.Research.prerequisites.Any( r => r.techLevel > node.Research.techLevel ) ) - { - Log.Warning( "\t{0} has a lower techlevel than (one of) it's prerequisites", - node.Research.defName ); - node.Research.techLevel = node.Research.prerequisites.Max( r => r.techLevel ); - - // re-enqeue all descendants - foreach ( var descendant in node.Descendants.OfType() ) - nodes.Enqueue( descendant ); - } - } - - Profiler.End(); - } - - private static void PopulateNodes() - { - Log.Debug( "Populating nodes." ); - Profiler.Start(); - - var projects = DefDatabase.AllDefsListForReading; - - // find hidden nodes (nodes that have themselves as a prerequisite) - var hidden = projects.Where( p => p.prerequisites?.Contains( p ) ?? false ); - - // find locked nodes (nodes that have a hidden node as a prerequisite) - var locked = projects.Where( p => p.Ancestors().Intersect( hidden ).Any() ); - - // populate all nodes - _nodes = new List( DefDatabase.AllDefsListForReading - .Except( hidden ) - .Except( locked ) - .Select( def => new ResearchNode( def ) as Node ) ); - Log.Debug( "\t{0} nodes", _nodes.Count ); - Profiler.End(); - } - - private static void Collapse() - { - Log.Debug( "Collapsing nodes." ); - Profiler.Start(); - var pre = Size; - for ( var l = 1; l <= Size.x; l++ ) - { - var nodes = Layer( l, true ); - var Y = 1; - foreach ( var node in nodes ) - node.Y = Y++; - } - - Log.Debug( "{0} -> {1}", pre, Size ); - Profiler.End(); - } - - [Conditional( "DEBUG" )] - internal static void DebugDraw() - { - foreach ( var v in Nodes ) - { - foreach ( var w in v.OutNodes ) Widgets.DrawLine( v.Right, w.Left, Color.white, 1 ); - } - } - - - public static void Draw( Rect visibleRect ) - { - Profiler.Start( "Tree.Draw" ); - Profiler.Start( "techlevels" ); - foreach ( var techlevel in RelevantTechLevels ) - DrawTechLevel( techlevel, visibleRect ); - Profiler.End(); - - Profiler.Start( "edges" ); - foreach ( var edge in Edges.OrderBy( e => e.DrawOrder ) ) - edge.Draw( visibleRect ); - Profiler.End(); - - Profiler.Start( "nodes" ); - foreach ( var node in Nodes ) - node.Draw( visibleRect ); - Profiler.End(); - } - - public static void DrawTechLevel( TechLevel techlevel, Rect visibleRect ) - { - // determine positions - var xMin = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].min - NodeMargins.x / 2f; - var xMax = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].max - NodeMargins.x / 2f; - - GUI.color = Assets.TechLevelColor; - Text.Anchor = TextAnchor.MiddleCenter; - - // lower bound - if ( TechLevelBounds[techlevel].min > 0 && xMin > visibleRect.xMin && xMin < visibleRect.xMax ) - { - // line - Widgets.DrawLine( new Vector2( xMin, visibleRect.yMin ), new Vector2( xMin, visibleRect.yMax ), - Assets.TechLevelColor, 1f ); - - // label - var labelRect = new Rect( - xMin + TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, - visibleRect.center.y - TechLevelLabelSize.y / 2f, - TechLevelLabelSize.x, - TechLevelLabelSize.y ); - - VerticalLabel( labelRect, techlevel.ToStringHuman() ); - } - - // upper bound - if ( TechLevelBounds[techlevel].max < Size.x && xMax > visibleRect.xMin && xMax < visibleRect.xMax ) - { - // label - var labelRect = new Rect( - xMax - TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, - visibleRect.center.y - TechLevelLabelSize.y / 2f, - TechLevelLabelSize.x, - TechLevelLabelSize.y ); - - VerticalLabel( labelRect, techlevel.ToStringHuman() ); - } - - GUI.color = Color.white; - Text.Anchor = TextAnchor.UpperLeft; - } - - private static void VerticalLabel( Rect rect, string text ) - { - // store the scaling matrix - var matrix = GUI.matrix; - - // rotate and then apply the scaling - GUI.matrix = Matrix4x4.identity; - GUIUtility.RotateAroundPivot( -90f, rect.center ); - GUI.matrix = matrix * GUI.matrix; - - Widgets.Label( rect, text ); - - // restore the original scaling matrix - GUI.matrix = matrix; - } - - private static Node NodeAt( int X, int Y ) - { - return Nodes.FirstOrDefault( n => n.X == X && n.Y == Y ); - } - - public static void MinimizeCrossings() - { - // initialize each layer by putting nodes with the most (recursive!) children on bottom - //shown in-game as "reducing crossings" - Log.Debug( "Minimize crossings." ); - Profiler.Start(); - - int X = Size.x; - var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; - object exceptionRemover = new object(); //prevent the "Index was out of range. Must be non-negative and less than the size of the collection." error - Parallel.For (1, X, options, i => - { - var nodes = Layer( X ).OrderBy( n => n.Descendants.Count ).ToList(); - lock(exceptionRemover) - { - for (var z = 0; z < nodes.Count; z++) - { - nodes[i].Y = i + 1; - } - } - }); - - // up-down sweeps of mean reordering - var progress = false; - int iteration = 0, burnout = 2, max_iterations = 50; - while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) - { - progress = BarymetricSweep( iteration++ ); - if ( !progress ) - burnout--; - } - - // greedy sweep for local optima - iteration = 0; - burnout = 2; - while ( burnout > 0 && iteration < max_iterations ) - { - progress = GreedySweep( iteration++ ); - if ( !progress ) - burnout--; - } - - Profiler.End(); - } - - private static bool GreedySweep( int iteration ) - { - Profiler.Start( "iteration " + iteration ); - - // count number of crossings before sweep - var before = Crossings(); - - // do up/down sweep on aternating iterations - if ( iteration % 2 == 0 ) - for ( var l = 1; l <= Size.x; l++ ) - GreedySweep_Layer( l ); - else - for ( var l = Size.x; l >= 1; l-- ) - GreedySweep_Layer( l ); - - // count number of crossings after sweep - var after = Crossings(); - - Log.Debug( $"GreedySweep: {before} -> {after}" ); - Profiler.End(); - - // return progress - return after < before; - } - - private static void GreedySweep_Layer( int l ) - { - // The objective here is twofold; - // 1: Swap nodes to reduce the number of crossings - // 2: Swap nodes so that inner edges (edges between dummies) - // avoid crossings at all costs. - // - // If I'm reasoning this out right, both objectives should be served by - // minimizing the amount of crossings between each pair of nodes. - var crossings = Crossings( l ); - if ( crossings == 0 ) - return; - - var layer = Layer( l, true ); - for ( var i = 0; i < layer.Count - 1; i++ ) - { - for ( var j = i + 1; j < layer.Count; j++ ) - { - // swap, then count crossings again. If lower, leave it. If higher, revert. - Swap( layer[i], layer[j] ); - var candidateCrossings = Crossings( l ); - if ( candidateCrossings < crossings ) - // update current crossings - crossings = candidateCrossings; - else - // revert change - Swap( layer[j], layer[i] ); - } - } - } - - private static void Swap( Node A, Node B ) - { - //checks if the adjacent nodes have the same X cords, throws exception if no. Not sure if needed. - /* - if ( A.X != B.X) - { - throw new Exception("Can't swap nodes on different layers"); - } - */ - // swap Y positions of adjacent nodes - var tmp = A.Y; - A.Y = B.Y; - B.Y = tmp; - } - - private static bool BarymetricSweep( int iteration ) - { - Profiler.Start( "iteration " + iteration ); - - // count number of crossings before sweep - var before = Crossings(); - - // do up/down sweep on alternating iterations - if ( iteration % 2 == 0 ) - for ( var i = 2; i <= Size.x; i++ ) - BarymetricSweep_Layer( i, true ); - else - for ( var i = Size.x - 1; i > 0; i-- ) - BarymetricSweep_Layer( i, false ); - - // count number of crossings after sweep - var after = Crossings(); - - // did we make progress? please? - Log.Debug( - $"BarymetricSweep {iteration} ({( iteration % 2 == 0 ? "left" : "right" )}): {before} -> {after}" ); - Profiler.End(); - return after < before; - } - - private static void BarymetricSweep_Layer( int layer, bool left ) - { - var means = Layer( layer ) - .ToDictionary( n => n, n => GetBarycentre( n, left ? n.InNodes : n.OutNodes ) ) - .OrderBy( n => n.Value ); - - // create groups of nodes at similar means - var cur = float.MinValue; - var groups = new Dictionary>(); - foreach ( var mean in means ) - { - if ( Math.Abs( mean.Value - cur ) > Epsilon ) - { - cur = mean.Value; - groups[cur] = new List(); - } - - groups[cur].Add( mean.Key ); - } - - // position nodes as close to their desired mean as possible - var Y = 1; - foreach ( var group in groups ) - { - var mean = group.Key; - var N = group.Value.Count; - Y = (int) Mathf.Max( Y, mean - ( N - 1 ) / 2 ); - - foreach ( var node in group.Value ) - node.Y = Y++; - } - } - - private static float GetBarycentre( Node node, List neighbours ) - { - if ( neighbours.NullOrEmpty() ) - return node.Yf; - - return neighbours.Sum( n => n.Yf ) / neighbours.Count; - } - - private static int Crossings() - { - var crossings = 0; - for ( var layer = 1; layer < Size.x; layer++ ) crossings += Crossings( layer, true ); - return crossings; - } - - private static float EdgeLength() - { - var length = 0f; - for ( var layer = 1; layer < Size.x; layer++ ) length += EdgeLength( layer, true ); - return length; - } - - private static int Crossings( int layer ) - { - if ( layer == 0 ) - return Crossings( layer, false ); - if ( layer == Size.x ) - return Crossings( layer, true ); - return Crossings( layer, true ) + Crossings( layer, false ); - } - - private static int Crossings( int layer, bool @in ) - { - // get in/out edges for layer - var edges = Layer( layer ) - .SelectMany( n => @in ? n.InEdges : n.OutEdges ) - .OrderBy( e => e.In.Y ) - .ThenBy( e => e.Out.Y ) - .ToList(); - - if ( edges.Count < 2 ) - return 0; - - // count number of inversions - var inversions = 0; - int X = edges.Count; - var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; - Parallel.For(0, X - 1, options, i => - { - for (var j = i + 1; j < edges.Count; j++) - if (edges[j].Out.Y < edges[i].Out.Y) - inversions++; - }); - - return inversions; - } - - private static float EdgeLength( int layer, bool @in ) - { - // get in/out edges for layer - var edges = Layer( layer ) - .SelectMany( n => @in ? n.InEdges : n.OutEdges ) - .OrderBy( e => e.In.Y ) - .ThenBy( e => e.Out.Y ) - .ToList(); - - if ( edges.NullOrEmpty() ) - return 0f; - - return edges.Sum( e => e.Length ) * ( @in ? 2 : 1 ); - } - - - public static List Layer( int depth, bool ordered = false ) - { - if ( ordered && OrderDirty ) - { - _nodes = Nodes.OrderBy( n => n.X ).ThenBy( n => n.Y ).ToList(); - OrderDirty = false; - } - - return Nodes.Where( n => n.X == depth ).ToList(); - } - - public static List Row( int Y ) - { - return Nodes.Where( n => n.Y == Y ).ToList(); - } - - //This one is probably unsafe to execute in parallel - public new static string ToString() - { - var text = new StringBuilder(); - - for ( var l = 1; l <= Nodes.Max( n => n.X ); l++ ) - { - text.AppendLine( $"Layer {l}:" ); - var layer = Layer( l, true ); - - foreach ( var n in layer ) - { - text.AppendLine( $"\t{n}" ); - text.AppendLine( "\t\tAbove: " + - string.Join( ", ", n.InNodes.Select( a => a.ToString() ).ToArray() ) ); - text.AppendLine( "\t\tBelow: " + - string.Join( ", ", n.OutNodes.Select( b => b.ToString() ).ToArray() ) ); - } - } - - return text.ToString(); - } - - public static void DebugStatus() - { - Log.Message( "duplicated positions:\n " + - string.Join( - "\n", - Nodes.Where( n => Nodes.Any( n2 => n != n2 && n.X == n2.X && n.Y == n2.Y ) ) - .Select( n => n.X + ", " + n.Y + ": " + n.Label ).ToArray() ) ); - Log.Message( "out-of-bounds nodes:\n" + - string.Join( - "\n", Nodes.Where( n => n.X < 1 || n.Y < 1 ).Select( n => n.ToString() ).ToArray() ) ); - Log.Trace( ToString() ); - } - } -} +// Tree.cs +// Copyright Karel Kroeze, 2020-2020 + +using Multiplayer.API; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using RimWorld; +using UnityEngine; +using Verse; +using static FluffyResearchTree.Constants; + +namespace FluffyResearchTree +{ + public static class Tree + { + public static bool Initialized; + public static IntVec2 Size = IntVec2.Zero; + private static List _nodes; + private static List> _edges; + private static List _relevantTechLevels; + private static Dictionary _techLevelBounds; + + private static bool _initializing; + + public static bool OrderDirty; + + public static Dictionary TechLevelBounds + { + get + { + if ( _techLevelBounds == null ) + throw new Exception( "TechLevelBounds called before they are set." ); + return _techLevelBounds; + } + } + + public static List RelevantTechLevels + { + get + { + if ( _relevantTechLevels == null ) + _relevantTechLevels = Enum.GetValues( typeof( TechLevel ) ) + .Cast() + // filter down to relevant tech levels only. + .Where( + tl => DefDatabase.AllDefsListForReading.Any( + rp => rp.techLevel == + tl ) ) + .ToList(); + return _relevantTechLevels; + } + } + + public static List Nodes + { + get + { + if ( _nodes == null ) + PopulateNodes(); + + return _nodes; + } + } + + public static List> Edges + { + get + { + if ( _edges == null ) + throw new Exception( "Trying to access edges before they are initialized." ); + + return _edges; + } + } + +// [SyncMethod] + public static void Initialize() + { + if ( Initialized ) return; + + // make sure we only have one initializer running + if ( _initializing ) + return; + _initializing = true; + + // setup + LongEventHandler.QueueLongEvent( CheckPrerequisites, "Fluffy.ResearchTree.PreparingTree.Setup", false, + null ); + LongEventHandler.QueueLongEvent( CreateEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); + LongEventHandler.QueueLongEvent( HorizontalPositions, "Fluffy.ResearchTree.PreparingTree.Setup", false, + null ); + LongEventHandler.QueueLongEvent( NormalizeEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); +#if DEBUG + LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); +#endif + + // crossing reduction + LongEventHandler.QueueLongEvent( Collapse, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, + null ); + LongEventHandler.QueueLongEvent( MinimizeCrossings, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", + false, null ); +#if DEBUG + LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, + null ); +#endif + + // layout + LongEventHandler.QueueLongEvent( MinimizeEdgeLength, "Fluffy.ResearchTree.PreparingTree.Layout", false, + null ); + LongEventHandler.QueueLongEvent( RemoveEmptyRows, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); +#if DEBUG + LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); +#endif + + // done! + LongEventHandler.QueueLongEvent( () => { Initialized = true; }, "Fluffy.ResearchTree.PreparingTree.Layout", + false, null ); + + // tell research tab we're ready + LongEventHandler.QueueLongEvent( MainTabWindow_ResearchTree.Instance.Notify_TreeInitialized, + "Fluffy.ResearchTree.RestoreQueue", false, null ); + } + + private static void RemoveEmptyRows() + { + Log.Debug( "Removing empty rows" ); + Profiler.Start(); + var y = 1; + while ( y <= Size.z ) + { + var row = Row( y ); + if ( row.NullOrEmpty() ) + foreach ( var node in Nodes.Where( n => n.Y > y ) ) + node.Y--; + else + y++; + } + + Profiler.End(); + } + + private static void MinimizeEdgeLength() + { + Log.Debug( "Minimize edge length." ); + Profiler.Start(); + + // move and/or swap nodes to reduce the total edge length + // perform sweeps of adjacent node reorderings + var progress = false; + int iteration = 0, burnout = 2, max_iterations = 50; + while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) + { + progress = EdgeLengthSweep_Local( iteration++ ); + if ( !progress ) + burnout--; + } + + // sweep until we had no progress 2 times, then keep sweeping until we had progress + iteration = 0; + burnout = 2; + while ( burnout > 0 && iteration < max_iterations ) + { + progress = EdgeLengthSweep_Global( iteration++ ); + if ( !progress ) + burnout--; + } + + Profiler.End(); + } + + private static bool EdgeLengthSweep_Global( int iteration ) + { + Profiler.Start( "iteration" + iteration ); + // calculate edge length before sweep + var before = EdgeLength(); + + // do left/right sweep, align with left/right nodes for 4 different iterations. + //if (iteration % 2 == 0) + for ( var l = 2; l <= Size.x; l++ ) + EdgeLengthSweep_Global_Layer( l, true ); + //else + // for (var l = 1; l < Size.x; l++) + // EdgeLengthSweep_Global_Layer(l, false); + + // calculate edge length after sweep + var after = EdgeLength(); + + // return progress + Log.Debug( $"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}" ); + Profiler.End(); + return after < before; + } + + + private static bool EdgeLengthSweep_Local( int iteration ) + { + Profiler.Start( "iteration" + iteration ); + // calculate edge length before sweep + var before = EdgeLength(); + + // do left/right sweep, align with left/right nodes for 4 different iterations. + if ( iteration % 2 == 0 ) + for ( var l = 2; l <= Size.x; l++ ) + EdgeLengthSweep_Local_Layer( l, true ); + else + for ( var l = Size.x - 1; l >= 0; l-- ) + EdgeLengthSweep_Local_Layer( l, false ); + + // calculate edge length after sweep + var after = EdgeLength(); + + // return progress + Log.Debug( $"EdgeLengthSweep_Local, iteration {iteration}: {before} -> {after}" ); + Profiler.End(); + return after < before; + } + + private static void EdgeLengthSweep_Global_Layer( int l, bool @in ) + { + // The objective here is to; + // (1) move and/or swap nodes to reduce total edge length + // (2) not increase the number of crossings + + var length = EdgeLength( l, @in ); + var crossings = Crossings( l ); + if ( Math.Abs( length ) < Epsilon ) + return; + + var layer = Layer( l, true ); + //Couldn't parallelize + foreach ( var node in layer ) + { + // we only need to loop over positions that might be better for this node. + // min = minimum of current position, minimum of any connected nodes current position + var neighbours = node.Nodes; + if ( !neighbours.Any() ) + continue; + + var min = Mathf.Min( node.Y, neighbours.Min( n => n.Y ) ); + var max = Mathf.Max( node.Y, neighbours.Max( n => n.Y ) ); + if ( min == max && min == node.Y ) + continue; + + for ( var y = min; y <= max; y++ ) + { + if ( y == node.Y ) + continue; + + // is this spot occupied? + var otherNode = NodeAt( l, y ); + + // occupied, try swapping + if ( otherNode != null ) + { + Swap( node, otherNode ); + var candidateCrossings = Crossings( l ); + if ( candidateCrossings > crossings ) + { + // abort + Swap( otherNode, node ); + } + else + { + var candidateLength = EdgeLength( l, @in ); + if ( length - candidateLength < Epsilon ) + { + // abort + Swap( otherNode, node ); + } + else + { + Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", node, otherNode, length, + candidateLength ); + length = candidateLength; + } + } + } + + // not occupied, try moving + else + { + var oldY = node.Y; + node.Y = y; + var candidateCrossings = Crossings( l ); + if ( candidateCrossings > crossings ) + { + // abort + node.Y = oldY; + } + else + { + var candidateLength = EdgeLength( l, @in ); + if ( length - candidateLength < Epsilon ) + { + // abort + node.Y = oldY; + } + else + { + Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", node, new Vector2( node.X, oldY ), length, + candidateLength ); + length = candidateLength; + } + } + } + } + } + } + + + private static void EdgeLengthSweep_Local_Layer( int l, bool @in ) + { + // The objective here is to; + // (1) move and/or swap nodes to reduce local edge length + // (2) not increase the number of crossings + var x = @in ? l - 1 : l + 1; + var crossings = Crossings( x ); + + var layer = Layer( l, true ); + foreach ( var node in layer ) + { + foreach ( var edge in @in ? node.InEdges : node.OutEdges ) + { + // current length + var length = edge.Length; + var neighbour = @in ? edge.In : edge.Out; + if ( neighbour.X != x ) + Log.Warning( "{0} is not at layer {1}", neighbour, x ); + + // we only need to loop over positions that might be better for this node. + // min = minimum of current position, node position + var min = Mathf.Min( node.Y, neighbour.Y ); + var max = Mathf.Max( node.Y, neighbour.Y ); + + // already at only possible position + if ( min == max && min == node.Y ) + continue; + + for ( var y = min; y <= max; y++ ) + { + if ( y == neighbour.Y ) + continue; + + // is this spot occupied? + var otherNode = NodeAt( x, y ); + + // occupied, try swapping + if ( otherNode != null ) + { + Swap( neighbour, otherNode ); + var candidateCrossings = Crossings( x ); + if ( candidateCrossings > crossings ) + { + // abort + Swap( otherNode, neighbour ); + } + else + { + var candidateLength = edge.Length; + if ( length - candidateLength < Epsilon ) + { + // abort + Swap( otherNode, neighbour ); + } + else + { + Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", neighbour, otherNode, length, + candidateLength ); + length = candidateLength; + } + } + } + + // not occupied, try moving + else + { + var oldY = neighbour.Y; + neighbour.Y = y; + var candidateCrossings = Crossings( x ); + if ( candidateCrossings > crossings ) + { + // abort + neighbour.Y = oldY; + } + else + { + var candidateLength = edge.Length; + if ( length - candidateLength < Epsilon ) + { + // abort + neighbour.Y = oldY; + } + else + { + Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", neighbour, + new Vector2( neighbour.X, oldY ), length, candidateLength ); + length = candidateLength; + } + } + } + } + } + } + } + + public static void HorizontalPositions() + { + // get list of techlevels + var techlevels = RelevantTechLevels; + bool anyChange; + var iteration = 1; + var maxIterations = 50; + + Log.Debug( "Assigning horizontal positions." ); + Profiler.Start(); + + // assign horizontal positions based on tech levels and prerequisites + do + { + Profiler.Start( "iteration " + iteration ); + var min = 1; + anyChange = false; + + foreach ( var techlevel in techlevels ) + { + // enforce minimum x position based on techlevels + var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); + if ( !nodes.Any() ) + continue; + + foreach ( var node in nodes ) + anyChange = node.SetDepth( min ) || anyChange; + + min = nodes.Max( n => n.X ) + 1; + + Log.Trace( "\t{0}, change: {1}", techlevel, anyChange ); + } + + Profiler.End(); + } while ( anyChange && iteration++ < maxIterations ); + + + // store tech level boundaries + _techLevelBounds = new Dictionary(); + foreach ( var techlevel in techlevels ) + { + var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); + _techLevelBounds[techlevel] = new IntRange( nodes.Min( n => n.X ) - 1, nodes.Max( n => n.X ) ); + } + + Profiler.End(); + } + + private static void NormalizeEdges() + { + Log.Debug( "Normalizing edges." ); + Profiler.Start(); + foreach ( var edge in new List>( Edges.Where( e => e.Span > 1 ) ) ) + { + Log.Trace( "\tCreating dummy chain for {0}", edge ); + + // remove and decouple long edge + Edges.Remove( edge ); + edge.In.OutEdges.Remove( edge ); + edge.Out.InEdges.Remove( edge ); + var cur = edge.In; + var yOffset = ( edge.Out.Yf - edge.In.Yf ) / edge.Span; + + // create and hook up dummy chain + int x = edge.In.X; + Parallel.For(x + 1, Convert.ToInt32(x < edge.Out.X), i => + { + var dummy = new DummyNode + { + X = x, + Yf = edge.In.Yf + yOffset * (x - edge.In.X) + }; + var dummyEdge = new Edge(cur, dummy); + cur.OutEdges.Add(dummyEdge); + dummy.InEdges.Add(dummyEdge); + _nodes.Add(dummy); + Edges.Add(dummyEdge); + cur = dummy; + Log.Trace("\t\tCreated dummy {0}", dummy); + }); + + // hook up final dummy to out node + var finalEdge = new Edge( cur, edge.Out ); + cur.OutEdges.Add( finalEdge ); + edge.Out.InEdges.Add( finalEdge ); + Edges.Add( finalEdge ); + } + + Profiler.End(); + } + + private static void CreateEdges() + { + Log.Debug( "Creating edges." ); + Profiler.Start(); + // create links between nodes + if ( _edges.NullOrEmpty() ) _edges = new List>(); + + foreach ( var node in Nodes.OfType() ) + { + if ( node.Research.prerequisites.NullOrEmpty() ) + continue; + foreach ( var prerequisite in node.Research.prerequisites ) + { + ResearchNode prerequisiteNode = prerequisite; + if ( prerequisiteNode == null ) + continue; + var edge = new Edge( prerequisiteNode, node ); + Edges.Add( edge ); + node.InEdges.Add( edge ); + prerequisiteNode.OutEdges.Add( edge ); + Log.Trace( "\tCreated edge {0}", edge ); + } + } + + Profiler.End(); + } + + private static void CheckPrerequisites() + { + // check prerequisites + Log.Debug( "Checking prerequisites." ); + Profiler.Start(); + + var nodes = new Queue( Nodes.OfType() ); + // remove redundant prerequisites + while ( nodes.Count > 0 ) + { + var node = nodes.Dequeue(); + if ( node.Research.prerequisites.NullOrEmpty() ) + continue; + + var ancestors = node.Research.prerequisites?.SelectMany( r => r.Ancestors() ).ToList(); + var redundant = ancestors.Intersect( node.Research.prerequisites ); + if ( redundant.Any() ) + { + Log.Warning( "\tredundant prerequisites for {0}: {1}", node.Research.LabelCap, + string.Join( ", ", redundant.Select( r => r.LabelCap ).ToArray() ) ); + foreach ( var redundantPrerequisite in redundant ) + node.Research.prerequisites.Remove( redundantPrerequisite ); + } + } + + // fix bad techlevels + nodes = new Queue( Nodes.OfType() ); + while ( nodes.Count > 0 ) + { + var node = nodes.Dequeue(); + if ( !node.Research.prerequisites.NullOrEmpty() ) + // warn and fix badly configured techlevels + if ( node.Research.prerequisites.Any( r => r.techLevel > node.Research.techLevel ) ) + { + Log.Warning( "\t{0} has a lower techlevel than (one of) it's prerequisites", + node.Research.defName ); + node.Research.techLevel = node.Research.prerequisites.Max( r => r.techLevel ); + + // re-enqeue all descendants + foreach ( var descendant in node.Descendants.OfType() ) + nodes.Enqueue( descendant ); + } + } + + Profiler.End(); + } + + private static void PopulateNodes() + { + Log.Debug( "Populating nodes." ); + Profiler.Start(); + + var projects = DefDatabase.AllDefsListForReading; + + // find hidden nodes (nodes that have themselves as a prerequisite) + var hidden = projects.Where( p => p.prerequisites?.Contains( p ) ?? false ); + + // find locked nodes (nodes that have a hidden node as a prerequisite) + var locked = projects.Where( p => p.Ancestors().Intersect( hidden ).Any() ); + + // populate all nodes + _nodes = new List( DefDatabase.AllDefsListForReading + .Except( hidden ) + .Except( locked ) + .Select( def => new ResearchNode( def ) as Node ) ); + Log.Debug( "\t{0} nodes", _nodes.Count ); + Profiler.End(); + } + + private static void Collapse() + { + Log.Debug( "Collapsing nodes." ); + Profiler.Start(); + var pre = Size; + for ( var l = 1; l <= Size.x; l++ ) + { + var nodes = Layer( l, true ); + var Y = 1; + foreach ( var node in nodes ) + node.Y = Y++; + } + + Log.Debug( "{0} -> {1}", pre, Size ); + Profiler.End(); + } + + [Conditional( "DEBUG" )] + internal static void DebugDraw() + { + foreach ( var v in Nodes ) + { + foreach ( var w in v.OutNodes ) Widgets.DrawLine( v.Right, w.Left, Color.white, 1 ); + } + } + + + public static void Draw( Rect visibleRect ) + { + Profiler.Start( "Tree.Draw" ); + Profiler.Start( "techlevels" ); + foreach ( var techlevel in RelevantTechLevels ) + DrawTechLevel( techlevel, visibleRect ); + Profiler.End(); + + Profiler.Start( "edges" ); + foreach ( var edge in Edges.OrderBy( e => e.DrawOrder ) ) + edge.Draw( visibleRect ); + Profiler.End(); + + Profiler.Start( "nodes" ); + foreach ( var node in Nodes ) + node.Draw( visibleRect ); + Profiler.End(); + } + + public static void DrawTechLevel( TechLevel techlevel, Rect visibleRect ) + { + // determine positions + var xMin = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].min - NodeMargins.x / 2f; + var xMax = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].max - NodeMargins.x / 2f; + + GUI.color = Assets.TechLevelColor; + Text.Anchor = TextAnchor.MiddleCenter; + + // lower bound + if ( TechLevelBounds[techlevel].min > 0 && xMin > visibleRect.xMin && xMin < visibleRect.xMax ) + { + // line + Widgets.DrawLine( new Vector2( xMin, visibleRect.yMin ), new Vector2( xMin, visibleRect.yMax ), + Assets.TechLevelColor, 1f ); + + // label + var labelRect = new Rect( + xMin + TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, + visibleRect.center.y - TechLevelLabelSize.y / 2f, + TechLevelLabelSize.x, + TechLevelLabelSize.y ); + + VerticalLabel( labelRect, techlevel.ToStringHuman() ); + } + + // upper bound + if ( TechLevelBounds[techlevel].max < Size.x && xMax > visibleRect.xMin && xMax < visibleRect.xMax ) + { + // label + var labelRect = new Rect( + xMax - TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, + visibleRect.center.y - TechLevelLabelSize.y / 2f, + TechLevelLabelSize.x, + TechLevelLabelSize.y ); + + VerticalLabel( labelRect, techlevel.ToStringHuman() ); + } + + GUI.color = Color.white; + Text.Anchor = TextAnchor.UpperLeft; + } + + private static void VerticalLabel( Rect rect, string text ) + { + // store the scaling matrix + var matrix = GUI.matrix; + + // rotate and then apply the scaling + GUI.matrix = Matrix4x4.identity; + GUIUtility.RotateAroundPivot( -90f, rect.center ); + GUI.matrix = matrix * GUI.matrix; + + Widgets.Label( rect, text ); + + // restore the original scaling matrix + GUI.matrix = matrix; + } + + private static Node NodeAt( int X, int Y ) + { + return Nodes.FirstOrDefault( n => n.X == X && n.Y == Y ); + } + + public static void MinimizeCrossings() + { + // initialize each layer by putting nodes with the most (recursive!) children on bottom + //shown in-game as "reducing crossings" + Log.Debug( "Minimize crossings." ); + Profiler.Start(); + + int X = Size.x; + var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; + Parallel.For (1, X, options, i => + { + var nodes = Layer( X ).OrderBy( n => n.Descendants.Count ).ToList(); + for( var z = 0; z < nodes.Count; z++) + { + nodes[i].Y = i + 1; + } + }); + + // up-down sweeps of mean reordering + var progress = false; + int iteration = 0, burnout = 2, max_iterations = 50; + while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) + { + progress = BarymetricSweep( iteration++ ); + if ( !progress ) + burnout--; + } + + // greedy sweep for local optima + iteration = 0; + burnout = 2; + while ( burnout > 0 && iteration < max_iterations ) + { + progress = GreedySweep( iteration++ ); + if ( !progress ) + burnout--; + } + + Profiler.End(); + } + + private static bool GreedySweep( int iteration ) + { + Profiler.Start( "iteration " + iteration ); + + // count number of crossings before sweep + var before = Crossings(); + + // do up/down sweep on aternating iterations + if ( iteration % 2 == 0 ) + for ( var l = 1; l <= Size.x; l++ ) + GreedySweep_Layer( l ); + else + for ( var l = Size.x; l >= 1; l-- ) + GreedySweep_Layer( l ); + + // count number of crossings after sweep + var after = Crossings(); + + Log.Debug( $"GreedySweep: {before} -> {after}" ); + Profiler.End(); + + // return progress + return after < before; + } + + private static void GreedySweep_Layer( int l ) + { + // The objective here is twofold; + // 1: Swap nodes to reduce the number of crossings + // 2: Swap nodes so that inner edges (edges between dummies) + // avoid crossings at all costs. + // + // If I'm reasoning this out right, both objectives should be served by + // minimizing the amount of crossings between each pair of nodes. + var crossings = Crossings( l ); + if ( crossings == 0 ) + return; + + var layer = Layer( l, true ); + for ( var i = 0; i < layer.Count - 1; i++ ) + { + for ( var j = i + 1; j < layer.Count; j++ ) + { + // swap, then count crossings again. If lower, leave it. If higher, revert. + Swap( layer[i], layer[j] ); + var candidateCrossings = Crossings( l ); + if ( candidateCrossings < crossings ) + // update current crossings + crossings = candidateCrossings; + else + // revert change + Swap( layer[j], layer[i] ); + } + } + } + + private static void Swap( Node A, Node B ) + { + if ( A.X != B.X ) + throw new Exception( "Can't swap nodes on different layers" ); + + // swap Y positions of adjacent nodes + var tmp = A.Y; + A.Y = B.Y; + B.Y = tmp; + } + + private static bool BarymetricSweep( int iteration ) + { + Profiler.Start( "iteration " + iteration ); + + // count number of crossings before sweep + var before = Crossings(); + + // do up/down sweep on alternating iterations + if ( iteration % 2 == 0 ) + for ( var i = 2; i <= Size.x; i++ ) + BarymetricSweep_Layer( i, true ); + else + for ( var i = Size.x - 1; i > 0; i-- ) + BarymetricSweep_Layer( i, false ); + + // count number of crossings after sweep + var after = Crossings(); + + // did we make progress? please? + Log.Debug( + $"BarymetricSweep {iteration} ({( iteration % 2 == 0 ? "left" : "right" )}): {before} -> {after}" ); + Profiler.End(); + return after < before; + } + + private static void BarymetricSweep_Layer( int layer, bool left ) + { + var means = Layer( layer ) + .ToDictionary( n => n, n => GetBarycentre( n, left ? n.InNodes : n.OutNodes ) ) + .OrderBy( n => n.Value ); + + // create groups of nodes at similar means + var cur = float.MinValue; + var groups = new Dictionary>(); + foreach ( var mean in means ) + { + if ( Math.Abs( mean.Value - cur ) > Epsilon ) + { + cur = mean.Value; + groups[cur] = new List(); + } + + groups[cur].Add( mean.Key ); + } + + // position nodes as close to their desired mean as possible + var Y = 1; + foreach ( var group in groups ) + { + var mean = group.Key; + var N = group.Value.Count; + Y = (int) Mathf.Max( Y, mean - ( N - 1 ) / 2 ); + + foreach ( var node in group.Value ) + node.Y = Y++; + } + } + + private static float GetBarycentre( Node node, List neighbours ) + { + if ( neighbours.NullOrEmpty() ) + return node.Yf; + + return neighbours.Sum( n => n.Yf ) / neighbours.Count; + } + + private static int Crossings() + { + var crossings = 0; + for ( var layer = 1; layer < Size.x; layer++ ) crossings += Crossings( layer, true ); + return crossings; + } + + private static float EdgeLength() + { + var length = 0f; + for ( var layer = 1; layer < Size.x; layer++ ) length += EdgeLength( layer, true ); + return length; + } + + private static int Crossings( int layer ) + { + if ( layer == 0 ) + return Crossings( layer, false ); + if ( layer == Size.x ) + return Crossings( layer, true ); + return Crossings( layer, true ) + Crossings( layer, false ); + } + + private static int Crossings( int layer, bool @in ) + { + // get in/out edges for layer + var edges = Layer( layer ) + .SelectMany( n => @in ? n.InEdges : n.OutEdges ) + .OrderBy( e => e.In.Y ) + .ThenBy( e => e.Out.Y ) + .ToList(); + + if ( edges.Count < 2 ) + return 0; + + // count number of inversions + var inversions = 0; + int X = edges.Count; + var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; + Parallel.For(0, X - 1, options, i => + { + for (var j = i + 1; j < edges.Count; j++) + if (edges[j].Out.Y < edges[i].Out.Y) + inversions++; + }); + + return inversions; + } + + private static float EdgeLength( int layer, bool @in ) + { + // get in/out edges for layer + var edges = Layer( layer ) + .SelectMany( n => @in ? n.InEdges : n.OutEdges ) + .OrderBy( e => e.In.Y ) + .ThenBy( e => e.Out.Y ) + .ToList(); + + if ( edges.NullOrEmpty() ) + return 0f; + + return edges.Sum( e => e.Length ) * ( @in ? 2 : 1 ); + } + + public static List Layer( int depth, bool ordered = false ) + { + if ( ordered && OrderDirty ) + { + _nodes = Nodes.OrderBy( n => n.X ).ThenBy( n => n.Y ).ToList(); + OrderDirty = false; + } + + return Nodes.Where( n => n.X == depth ).ToList(); + } + + public static List Row( int Y ) + { + return Nodes.Where( n => n.Y == Y ).ToList(); + } + + //This one is probably unsafe to execute in parallel + public new static string ToString() + { + var text = new StringBuilder(); + + for ( var l = 1; l <= Nodes.Max( n => n.X ); l++ ) + { + text.AppendLine( $"Layer {l}:" ); + var layer = Layer( l, true ); + + foreach ( var n in layer ) + { + text.AppendLine( $"\t{n}" ); + text.AppendLine( "\t\tAbove: " + + string.Join( ", ", n.InNodes.Select( a => a.ToString() ).ToArray() ) ); + text.AppendLine( "\t\tBelow: " + + string.Join( ", ", n.OutNodes.Select( b => b.ToString() ).ToArray() ) ); + } + } + + return text.ToString(); + } + + public static void DebugStatus() + { + Log.Message( "duplicated positions:\n " + + string.Join( + "\n", + Nodes.Where( n => Nodes.Any( n2 => n != n2 && n.X == n2.X && n.Y == n2.Y ) ) + .Select( n => n.X + ", " + n.Y + ": " + n.Label ).ToArray() ) ); + Log.Message( "out-of-bounds nodes:\n" + + string.Join( + "\n", Nodes.Where( n => n.X < 1 || n.Y < 1 ).Select( n => n.ToString() ).ToArray() ) ); + Log.Trace( ToString() ); + } + } +} From 03573673659007bf8c8093981a5348feb2889984 Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Sat, 5 Feb 2022 23:25:27 +0100 Subject: [PATCH 12/16] 2nd attempt at removing the debug log errors --- About/About.xml | 62 +- Assemblies/0Harmony.dll | Bin 0 -> 807424 bytes Assemblies/0Harmony.xml | 3130 ++++++++++++++++++++++++++ Assemblies/0MultiplayerAPI.dll | Bin 0 -> 12288 bytes Assemblies/ResearchTree.dll | Bin 69632 -> 70144 bytes Source/Graph/Tree.cs | 703 +++--- Source/MainTabWindow_ResearchTree.cs | 728 +++--- Source/Queue/Queue.cs | 19 +- Source/Queue/Queue_HarmonyPatches.cs | 9 +- Source/ResearchTree.cs | 8 +- Source/ResearchTree.csproj | 16 +- 11 files changed, 3874 insertions(+), 801 deletions(-) create mode 100644 Assemblies/0Harmony.dll create mode 100644 Assemblies/0Harmony.xml create mode 100644 Assemblies/0MultiplayerAPI.dll diff --git a/About/About.xml b/About/About.xml index bb8e892..4e7c503 100644 --- a/About/About.xml +++ b/About/About.xml @@ -3,63 +3,13 @@ Research Tree Fluffy https://ludeon.com/forums/index.php?topic=16120 - A better research tree. + This is a unofficial update of Fluffy's Research Tree to make it work with Rimworld 1.3 and speed up the research display loading process. Will get removed upon Fluffy's request or when the original mod gets updated. +My fork of this mod: +https://github.com/Zemogiter/ResearchTree/tree/1.3 +Original mod: +https://steamcommunity.com/sharedfiles/filedetails/?id=1266570759 -<size=24>Features</size> - -automatically generated to maximize readability*. -shows research projects, buildings, plants and recipes unlocked by each research project. -projects can be queued, and colonists will automatically start the next project when the current research project completes. -search functionality to quickly find research projects. - -<size=24>FAQ</size> -<i>Can I add/remove this from an existing save?</i> -You can add it to existing saves without problems. Removing this mod will lead to some errors when loading, but these should not affect gameplay - and will go away after saving. - -<i>Why is research X in position Y?</i> -Honestly, I have no idea. The placement of projects (nodes) is automated to minimize the number of crossings between dependancies (edges), and reduce the total length of these edges. There are many possible scenarios in which this can lead to placements that may appear non-optimal. Sometimes they really are non-optimal, sometimes they just appear to be so. See also the <i>technical</i> section below for more information. - -<i>Can I use this with mod X</i> -Most likely, yes. Added researches and their requirements are automatically parsed and the tree layout will be updated accordingly. ResearchPal implements a lot of the same functionality as this mod, and the research queue will likely not work correctly if both mods are loaded. - -<i>This looks very similar to ResearchPal</i> -Yep. ResearchPal is based on a legacy version of this mod that was kept up-to-date by SkyArkAngel in the HCSK modpack. I haven’t worked on this mod in a long time, but I recently had some spare time and decided to give it another go. Feel free to use whichever you like better (ResearchPal has an entirely different layout algorithm). You can run both mods side by side to check out the different tree layouts, but be aware that the research queue will not work correctly if both mods are loaded. - -<size=24>Known Issues</size> - -Layouts are not perfect, if you have experience with graph layouts - please do feel free to look at the source code, and/or implement a Sugiyama layout algorithm for me that runs in C# .NET 3.5 (Mono 2.0). - -<size=24>Technical</size> -So how does this all work? - -Creating an optimal layout is a known problem in the area of <i>Graph Theory</i>. There’s serious mathematicians who’ve spent years of their live trying to figure out this problem, and numerous solutions exist. The group of solutions most relevant to our research tree (a <i>directed acyclic graph</i>, or <i>DAG</i>) is that derived from Sugiyama’s work. Generally speaking, these algorithms have four steps; - - -layering (set the <i>x</i> coordinates of nodes, enforcing that follow-up research is always at a higher x position than any of its prerequisites, this is a fairly straightforward heuristic) -crossing reduction (set the <i>y</i> coordinates of nodes such that there is a minimal amount of intersections of connections between nodes) -edge length reduction (set the <i>y</i> coordinates of nodes such that the length of connections between nodes is minimal) -horizontal alignment (set the <i>y</i> coordinates of nodes such that the connections between nodes are straight as much as possible) - -The final step is the hardest, but also the most important to create a visually pleasing tree. Sadly, I’ve been unable to implement two of the most well known algorithms for this purpose; - - -Brandes, U., & Köpf, B. (2001, September). Fast and simple horizontal coordinate assignment. -Eiglsperger M., Siebenhaller M., Kaufmann M. (2005) An Efficient Implementation of Sugiyama’s Algorithm for Layered Graph Drawing. -Luckily, the crossing reduction and edge length reduction steps partially achieve the goals of the final step. The final graph is not as pretty as it could be, but it’s still pretty good - in most scenarios. - -<size=24>Contributors</size> - -Templarr: Russian translation -Suh. Junmin: Korean translation -rw-chaos: German translation -53N4: Spanish translation -Silverside: Fix UI scaling bug for vertical text -shiuanyue: Chinese (traditional) translation -notfood: Implement techprint requirements -HanYaodong: Add simplified Chinese translation - -<size=24>Version</size> -This is version 3.17.534, for RimWorld 1.1.2654. +Please give me feedback on how to further improve this mod. diff --git a/Assemblies/0Harmony.dll b/Assemblies/0Harmony.dll new file mode 100644 index 0000000000000000000000000000000000000000..779798cfa0001886fcd12f133dc4f33f7cc037a8 GIT binary patch literal 807424 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

    V9ac6$g8B=f#I}YwM;K!W>re8XBn@mk8 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¹VOcDMv#)# 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 X^a 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 + + + 0Harmony + + + +

    A factory to create delegate types + + + Default constructor + + + Creates a delegate type for a method + The method + The new delegate type + + + + A getter delegate type + Type that getter gets field/property value from + Type of the value that getter gets + The instance get getter uses + An delegate + + + + A setter delegate type + Type that setter sets field/property value for + Type of the value that setter sets + The instance the setter uses + The value the setter uses + An delegate + + + + A constructor delegate type + Type that constructor creates + An delegate + + + + A helper class for fast access to getters and setters + + + Creates an instantiation delegate + Type that constructor creates + The new instantiation delegate + + + + Creates an getter delegate for a property + Type that getter reads property from + Type of the property that gets accessed + The property + The new getter delegate + + + + Creates an getter delegate for a field + Type that getter reads field from + Type of the field that gets accessed + The field + The new getter delegate + + + + Creates an getter delegate for a field (with a list of possible field names) + Type that getter reads field/property from + Type of the field/property that gets accessed + A list of possible field names + The new getter delegate + + + + Creates an setter delegate + Type that setter assigns property value to + Type of the property that gets assigned + The property + The new setter delegate + + + + Creates an setter delegate for a field + Type that setter assigns field value to + Type of the field that gets assigned + The field + The new getter delegate + + + + A delegate to invoke a method + The instance + The method parameters + The method result + + + A helper class to invoke method with delegates + + + Creates a fast invocation handler from a method + The method to invoke + Controls if boxed value object is accessed/updated directly + The + + + The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array + passed to the fast invocation handler. + Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object. + Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array. + For example, + + var val = 5; + var box = (object)val; + var arr = new object[] { box }; + handler(arr); // for a method with parameter signature: ref/out/in int + + + + + If directBoxValueAccess is true, the boxed value object is accessed (and potentially updated) directly when the handler is called, + such that all references to the boxed object reflect the potentially updated value. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0] + now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object. + + + If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object, + such that potential updates to the value are reflected only in the arguments array. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10. + + + + + A low level memory helper + + + + Mark method for no inlining (currently only works on Mono) + The method/constructor to change + + + + Detours a method + The original method/constructor + The replacement method/constructor + An error string + + + + Writes a jump to memory + The memory address + Jump destination + An error string + + + + Gets the start of a method in memory + The method/constructor + [out] Details of the exception + The method start address + + + + special parameter names that can be used in prefix and postfix methods + + + Patch function helpers + + + Sorts patch methods by their priority rules + The original method + Patches to sort + Use debug mode + The sorted patch methods + + + + Creates new replacement method with the latest patches and detours the original method + The original method + Information describing the patches + The newly created replacement method + + + + Creates a patch sorter + Array of patches that will be sorted + Use debugging + + + Sorts internal PatchSortingWrapper collection and caches the results. + After first run the result is provided from the cache. + The original method + The sorted patch methods + + + Checks if the sorter was created with the same patch list and as a result can be reused to + get the sorted order of the patches. + List of patches to check against + true if equal + + + Removes one unresolved dependency from the least important patch. + + + Outputs all unblocked patches from the waiting list to results list + + + Adds patch to both results list and handled patches set + Patch to add + + + Wrapper used over the Patch object to allow faster dependency access and + dependency removal in case of cyclic dependencies + + + Create patch wrapper object used for sorting + Patch to wrap + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + Determines whether patches are equal + The other patch + true if equal + + + Hash function + A hash code + + + Bidirectionally registers Patches as after dependencies + List of dependencies to register + + + Bidirectionally registers Patches as before dependencies + List of dependencies to register + + + Bidirectionally removes Patch from after dependencies + Patch to remove + + + Bidirectionally removes Patch from before dependencies + Patch to remove + + + Specifies the type of method + + + + This is a normal method + + + This is a getter + + + This is a setter + + + This is a constructor + + + This is a static constructor + + + Specifies the type of argument + + + + This is a normal argument + + + This is a reference argument (ref) + + + This is an out argument (out) + + + This is a pointer argument (&) + + + Specifies the type of patch + + + + Any patch + + + A prefix patch + + + A postfix patch + + + A transpiler + + + A finalizer + + + A reverse patch + + + Specifies the type of reverse patch + + + + Use the unmodified original method (directly from IL) + + + Use the original as it is right now including previous patches but excluding future ones + + + Specifies the type of method call dispatching mechanics + + + + Call the method using dynamic dispatching if method is virtual (including overriden) + + + This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#. + This directly corresponds with the instruction. + + + For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called. + For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called. + + + Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually. + A fully dynamic dispatch in C# involves using + the dynamic type + (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support. + + + + + Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static) + + + a.k.a. non-virtual dispatching, early binding, or static binding. + This directly corresponds with the instruction. + + + For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics. + + + + + The base class for all Harmony annotations (not meant to be used directly) + + + + The common information for all attributes + + + Annotation to define your Harmony patch methods + + + + An empty annotation can be used together with TargetMethod(s) + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + Annotation to define the original method for delegate injection + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies call dispatching mechanics for the delegate + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + Annotation to define your standin methods for reverse patching + + + + An annotation that specifies the type of reverse patching + The of the reverse patch + + + + A Harmony annotation to define that all methods in a class are to be patched + + + + A Harmony annotation + + + + A Harmony annotation to define patch priority + The priority + + + + A Harmony annotation + + + + A Harmony annotation to define that a patch comes before another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to define that a patch comes after another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to debug a patch (output uses to log to your Desktop) + + + + Specifies the Prepare function in a patch class + + + + Specifies the Cleanup function in a patch class + + + + Specifies the TargetMethod function in a patch class + + + + Specifies the TargetMethods function in a patch class + + + + Specifies the Prefix function in a patch class + + + + Specifies the Postfix function in a patch class + + + + Specifies the Transpiler function in a patch class + + + + Specifies the Finalizer function in a patch class + + + + A Harmony annotation + + + + The name of the original argument + + + + The index of the original argument + + + + The new name of the original argument + + + + An annotation to declare injected arguments by name + + + + An annotation to declare injected arguments by index + Zero-based index + + + + An annotation to declare injected arguments by renaming them + Name of the original argument + New name + + + + An annotation to declare injected arguments by index and renaming them + Zero-based index + New name + + + + An abstract wrapper around OpCode and their operands. Used by transpilers + + + + The opcode + + + + The operand + + + + All labels defined on this instruction + + + + All exception block boundaries defined on this instruction + + + + Creates a new CodeInstruction with a given opcode and optional operand + The opcode + The operand + + + + Create a full copy (including labels and exception blocks) of a CodeInstruction + The to copy + + + + Clones a CodeInstruction and resets its labels and exception blocks + A lightweight copy of this code instruction + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its opcode + The opcode + A copy of this CodeInstruction with a new opcode + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its operand + The operand + A copy of this CodeInstruction with a new operand + + + + Creates a CodeInstruction calling a method (CALL) + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The target method in the form TypeFullName:MethodName, where the type name matches a form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction loading a field (LD[S]FLD[A]) + The class/type where the field is defined + The name of the field (case sensitive) + Use address of field + + + + Creates a CodeInstruction storing to a field (ST[S]FLD) + The class/type where the field is defined + The name of the field (case sensitive) + + + + Returns a string representation of the code instruction + A string representation of the code instruction + + + + Exception block types + + + + The beginning of an exception block + + + + The beginning of a catch block + + + + The beginning of an except filter block + + + + The beginning of a fault block + + + + The beginning of a finally block + + + + The end of an exception block + + + + An exception block + + + + Block type + + + + Catch type + + + + Creates an exception block + The + The catch type + + + + The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain + + + + The unique identifier + + + + Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe" + This is for full debugging. To debug only specific patches, use the attribute + + + + Creates a new Harmony instance + A unique identifier (you choose your own) + A Harmony instance + + + + Searches the current assembly for Harmony annotations and uses them to create patches + This method can fail to use the correct assembly when being inlined. It calls StackTrace.GetFrame(1) which can point to the wrong method/assembly. If you are unsure or run into problems, use PatchAll(Assembly.GetExecutingAssembly()) instead. + + + + Creates a empty patch processor for an original method + The original method/constructor + A new instance + + + + Creates a patch class processor from an annotated class + The class/type + A new instance + + + + Creates a reverse patcher for one of your stub methods + The original method/constructor + The stand-in stub method as + A new instance + + + + Searches an assembly for Harmony annotations and uses them to create patches + The assembly + + + + Creates patches by manually specifying the methods + The original method/constructor + An optional prefix method wrapped in a object + An optional postfix method wrapped in a object + An optional transpiler method wrapped in a object + An optional finalizer method wrapped in a object + The replacement method that was created to patch the original method + + + + Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process + The original method/constructor you want to duplicate + Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates) + An optional transpiler as method that will be applied during the process + The replacement method that was created to patch the stub method + + + + Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The optional Harmony ID to restrict unpatching to a specific Harmony instance + This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The + The optional Harmony ID to restrict unpatching to a specific Harmony instance + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The patch method as method to remove + + + + Test for patches from a specific Harmony ID + The Harmony ID + True if patches for this ID exist + + + + Gets patch information for a given original method + The original method/constructor + The patch information as + + + + Gets the methods this instance has patched + An enumeration of original methods/constructors + + + + Gets all patched original methods in the appdomain + An enumeration of patched original methods/constructors + + + + Gets the original method from a given replacement method + A replacement method, for example from a stacktrace + The original method/constructor or null if not found + + + + Tries to get the method from a stackframe including dynamic replacement methods + The + For normal frames, frame.GetMethod() is returned. For frames containing patched methods, the replacement method is returned or null if no method can be found + + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly versions keyed by Harmony IDs + + + + Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure + + + + Default serialization constructor (not implemented) + The info + The context + + + + Get a list of IL instructions in pairs of offset+code + A list of key/value pairs which represent an offset and the code at that offset + + + + Get a list of IL instructions without offsets + A list of + + + + Get the error offset of the errornous IL instruction + The offset + + + + Get the index of the errornous IL instruction + The index into the list of instructions or -1 if not found + + + + A wrapper around a method to use it as a patch (for example a Prefix) + + + + The original method + + + + Class/type declaring this patch + + + + Patch method name + + + + Optional patch + + + + Array of argument types of the patch method + + + + of the patch + + + + Install this patch before patches with these Harmony IDs + + + + Install this patch after patches with these Harmony IDs + + + + Reverse patch type, see + + + + Create debug output for this patch + + + + Whether to use (true) or (false) mechanics + for -attributed delegate + + + + Default constructor + + + + Creates a patch from a given method + The original method + + + + Creates a patch from a given method + The original method + The patch + A list of harmony IDs that should come after this patch + A list of harmony IDs that should come before this patch + Set to true to generate debug output + + + + Creates a patch from a given method + The patch class/type + The patch method name + The optional argument types of the patch method (for overloaded methods) + + + + Gets the names of all internal patch info fields + A list of field names + + + + Merges annotations + The list of to merge + The merged + + + + Returns a string that represents the annotation + A string representation + + + + Annotation extensions + + + + Copies annotation information + The source + The destination + + + + Clones an annotation + The to clone + A copied + + + + Merges annotations + The master + The detail + A new, merged + + + + Gets all annotations on a class/type + The class/type + A list of all + + + + Gets merged annotations on a class/type + The class/type + The merged + + + + Gets all annotations on a method + The method/constructor + A list of + + + + Gets merged annotations on a method + The method/constructor + The merged + + + + + A mutable representation of an inline signature, similar to Mono.Cecil's CallSite. + Used by the calli instruction, can be used by transpilers + + + + + See + + + + See + + + + See + + + + The list of all parameter types or function pointer signatures received by the call site + + + + The return type or function pointer signature returned by the call site + + + + Returns a string representation of the inline signature + A string representation of the inline signature + + + + + A mutable representation of a parameter type with an attached type modifier, + similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq + + + + + Whether this is a modopt (optional modifier type) or a modreq (required modifier type) + + + + The modifier type attached to the parameter type + + + + The modified parameter type + + + + Returns a string representation of the modifier type + A string representation of the modifier type + + + + Patch serialization + + + + Control the binding of a serialized object to a type + Specifies the assembly name of the serialized object + Specifies the type name of the serialized object + The type of the object the formatter creates a new instance of + + + + Serializes a patch info + The + The serialized data + + + + Deserialize a patch info + The serialized data + A + + + + Compare function to sort patch priorities + The patch + Zero-based index + The priority + A standard sort integer (-1, 0, 1) + + + + Serializable patch information + + + + Prefixes as an array of + + + + Postfixes as an array of + + + + Transpilers as an array of + + + + Finalizers as an array of + + + + Returns if any of the patches wants debugging turned on + + + + Adds prefixes + An owner (Harmony ID) + The patch methods + + + + Adds a prefix + + + Removes prefixes + The owner of the prefixes, or * for all + + + + Adds postfixes + An owner (Harmony ID) + The patch methods + + + + Adds a postfix + + + Removes postfixes + The owner of the postfixes, or * for all + + + + Adds transpilers + An owner (Harmony ID) + The patch methods + + + + Adds a transpiler + + + Removes transpilers + The owner of the transpilers, or * for all + + + + Adds finalizers + An owner (Harmony ID) + The patch methods + + + + Adds a finalizer + + + Removes finalizers + The owner of the finalizers, or * for all + + + + Removes a patch using its method + The method of the patch to remove + + + + Gets a concatenated list of patches + The Harmony instance ID adding the new patches + The patches to add + The current patches + + + + Gets a list of patches with any from the given owner removed + The owner of the methods, or * for all + The current patches + + + + A serializable patch + + + + Zero-based index + + + + The owner (Harmony ID) + + + + The priority, see + + + + Keep this patch before the patches indicated in the list of Harmony IDs + + + + Keep this patch after the patches indicated in the list of Harmony IDs + + + + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + The method of the static patch method + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for patches that should run after this patch + A list of Harmony IDs for patches that should run before this patch + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + + + Get the patch method or a DynamicMethod if original patch method is a patch factory + The original method/constructor + The method of the patch + + + + Determines whether patches are equal + The other patch + true if equal + + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + + Hash function + A hash code + + + + A PatchClassProcessor used to turn on a class/type into patches + + + + Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes. + The Harmony instance + The class to process (need to have at least a [HarmonyPatch] attribute) + + + + Applies the patches + A list of all created replacement methods or null if patch class is not annotated + + + + A group of patches + + + + A collection of prefix + + + + A collection of postfix + + + + A collection of transpiler + + + + A collection of finalizer + + + + Gets all owners (Harmony IDs) or all known patches + The patch owners + + + + Creates a group of patches + An array of prefixes as + An array of postfixes as + An array of transpileres as + An array of finalizeres as + + + + A PatchProcessor handles patches on a method/constructor + + + + Creates an empty patch processor + The Harmony instance + The original method/constructor + + + + Adds a prefix + The prefix as a + A for chaining calls + + + + Adds a prefix + The prefix method + A for chaining calls + + + + Adds a postfix + The postfix as a + A for chaining calls + + + + Adds a postfix + The postfix method + A for chaining calls + + + + Adds a transpiler + The transpiler as a + A for chaining calls + + + + Adds a transpiler + The transpiler method + A for chaining calls + + + + Adds a finalizer + The finalizer as a + A for chaining calls + + + + Adds a finalizer + The finalizer method + A for chaining calls + + + + Gets all patched original methods in the appdomain + An enumeration of patched method/constructor + + + + Applies all registered patches + The generated replacement method + + + + Unpatches patches of a given type and/or Harmony ID + The patch type + Harmony ID or * for any + A for chaining calls + + + + Unpatches a specific patch + The method of the patch + A for chaining calls + + + + Gets patch information on an original + The original method/constructor + The patch information as + + + + Sort patch methods by their priority rules + The original method + Patches to sort + The sorted patch methods + + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly version keyed by Harmony ID + + + + Creates a new empty generator to use when reading method bodies + A new + + + + Creates a new generator matching the method/constructor to use when reading method bodies + The original method/constructor to copy method information from + A new + + + + Returns the methods unmodified list of code instructions + The original method/constructor + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list containing all the original + + + + Returns the methods unmodified list of code instructions + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + A list containing all the original + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + Apply only the first count of transpilers + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list of + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + Apply only the first count of transpilers + A list of + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + All instructions as opcode/operand pairs + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + An existing generator that will be used to create all local variables and labels contained in the result + All instructions as opcode/operand pairs + + + + A patch priority + + + + Patch last + + + + Patch with very low priority + + + + Patch with low priority + + + + Patch with lower than normal priority + + + + Patch with normal priority + + + + Patch with higher than normal priority + + + + Patch with high priority + + + + Patch with very high priority + + + + Patch first + + + + A reverse patcher + + + + Creates a reverse patcher + The Harmony instance + The original method/constructor + Your stand-in stub method as + + + + Applies the patch + The type of patch, see + The generated replacement method + + + + A collection of commonly used transpilers + + + + A transpiler that replaces all occurrences of a given method with another one using the same signature + The enumeration of to act on + Method or constructor to search for + Method or constructor to replace with + Modified enumeration of + + + + A transpiler that alters instructions that match a predicate by calling an action + The enumeration of to act on + A predicate selecting the instructions to change + An action to apply to matching instructions + Modified enumeration of + + + + A transpiler that logs a text at the beginning of the method + The instructions to act on + The log text + Modified enumeration of + + + + A helper class for reflection related functions + + + + Shortcut for to simplify the use of reflections and make it work for any access level + + + + Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type + + + + Enumerates all assemblies in the current app domain, excluding visual studio assemblies + An enumeration of + + + Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise + The name + A type or null if not found + + + + Gets all successfully loaded types from a given assembly + The assembly + An array of types + + This calls and returns , while catching any thrown . + If such an exception is thrown, returns the successfully loaded types (, + filtered for non-null values). + + + + + Enumerates all successfully loaded types in the current app domain, excluding visual studio assemblies + An enumeration of all in all assemblies, excluding visual studio assemblies + + + Applies a function going up the type hierarchy and stops at the first non-null result + Result type of func() + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + The type hierarchy of a class or value type (including struct) does NOT include implemented interfaces, + and the type hierarchy of an interface is only itself (regardless of whether that interface implements other interfaces). + The top-most type in the type hierarchy of all non-interface types (including value types) is . + + + + + Applies a function going into inner types and stops at the first non-null result + Generic type parameter + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + + + Gets the reflection information for a directly declared field + The class/type where the field is defined + The name of the field + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The class/type where the field is defined + The name of the field (case sensitive) + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a field + The class/type where the field is declared + The zero-based index of the field inside the class definition + A field or null when type is null or when the field cannot be found + + + + Gets the reflection information for a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The class/type + The name + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared method + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The target method in the form TypeFullName:MethodName, where the type name matches a form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the names of all method that are declared in a type + The declaring class/type + A list of method names + + + + Gets the names of all method that are declared in the type of the instance + An instance of the type to search in + A list of method names + + + + Gets the names of all fields that are declared in a type + The declaring class/type + A list of field names + + + + Gets the names of all fields that are declared in the type of the instance + An instance of the type to search in + A list of field names + + + + Gets the names of all properties that are declared in a type + The declaring class/type + A list of property names + + + + Gets the names of all properties that are declared in the type of the instance + An instance of the type to search in + A list of property names + + + + Gets the type of any class member of + A member + The class/type of this member + + + + Test if a class member is actually an concrete implementation + A member + True if the member is a declared + + + + Gets the real implementation of a class member + A member + The member itself if its declared. Otherwise the member that is actually implemented in some base type + + + + Gets the reflection information for a directly declared constructor + The class/type where the constructor is declared + Optional parameters to target a specific overload of the constructor + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the constructor cannot be found + + + + Gets the reflection information for a constructor by searching the type and all its super types + The class/type where the constructor is declared + Optional parameters to target a specific overload of the method + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the method cannot be found + + + + Gets reflection information for all declared constructors + The class/type where the constructors are declared + Optional parameters to only consider static constructors + A list of constructor infos + + + + Gets reflection information for all declared methods + The class/type where the methods are declared + A list of methods + + + + Gets reflection information for all declared properties + The class/type where the properties are declared + A list of properties + + + + Gets reflection information for all declared fields + The class/type where the fields are declared + A list of fields + + + + Gets the return type of a method or constructor + The method/constructor + The return type + + + + Given a type, returns the first inner type matching a recursive search by name + The class/type to start searching at + The name of the inner type (case sensitive) + The inner type or null if type/name is null or if a type with that name cannot be found + + + + Given a type, returns the first inner type matching a recursive search with a predicate + The class/type to start searching at + The predicate to search with + The inner type or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first method matching a predicate + The class/type to start searching at + The predicate to search with + The method or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first constructor matching a predicate + The class/type to start searching at + The predicate to search with + The constructor info or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first property matching a predicate + The class/type to start searching at + The predicate to search with + The property or null if type/predicate is null or if a type with that name cannot be found + + + + Returns an array containing the type of each object in the given array + An array of objects + An array of types or an empty array if parameters is null (if an object is null, the type for it will be object) + + + + Creates an array of input parameters for a given method and a given set of potential inputs + The method/constructor you are planing to call + The possible input parameters in any order + An object array matching the method signature + + + + A readable/assignable reference delegate to an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The runtime instance to access the field (ignored and can be omitted for static fields) + A readable/assignable reference to the field + Null instance passed to a non-static field ref delegate + + Instance of invalid type passed to a non-static field ref delegate + (this can happen if is a parent class or interface of the field's declaring type) + + + + This delegate cannot be used for instance fields of structs, since a struct instance passed to the delegate would be passed by + value and thus would be a copy that only exists within the delegate's invocation. This is fine for a readonly reference, + but makes assignment futile. Use instead. + + + Note that is not required to be the field's declaring type. It can be a parent class (including ), + implemented interface, or a derived class of the field's declaring type ("instanceOfT is FieldDeclaringType" must be possible). + Specifically, must be assignable from OR to the field's declaring type. + Technically, this allows Nullable, although Nullable is only relevant for structs, and since only static fields of structs + are allowed for this delegate, and the instance passed to such a delegate is ignored, this hardly matters. + + + Similarly, is not required to be the field's field type, unless that type is a non-enum value type. + It can be a parent class (including object) or implemented interface of the field's field type. It cannot be a derived class. + This variance is not allowed for value types, since that would require boxing/unboxing, which is not allowed for ref values. + Special case for enum types: can also be the underlying integral type of the enum type. + Specifically, for reference types, must be assignable from + the field's field type; for non-enum value types, must be exactly the field's field type; for enum types, + must be either the field's field type or the underyling integral type of that field type. + + + This delegate supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and StaticFieldRefAccess methods that return it) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates an instance field reference for a specific instance of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldName) is functionally equivalent to FieldRefAccess<T, F>(fieldName)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + + The type that defines the field, or derived class of this type; must not be a struct type unless the field is static + + The name of the field + + A readable/assignable delegate with T=object + (for static fields, the instance delegate parameter is ignored) + + + + This method is meant for cases where the given type is only known at runtime and thus can't be used as a type parameter T + in e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + Consider using (and other overloads) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and other overloads) instead for static fields. + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference for an instance field of a class + + The type that defines the field; or a parent class (including ), implemented interface, or derived class of this type + ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldInfo) is functionally equivalent to FieldRefAccess<T, F>(fieldInfo)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + A readable/assignable reference delegate to an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A reference to the runtime instance to access the field + A readable/assignable reference to the field + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + + Creates an instance field reference for a specific instance of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldName) is functionally equivalent to StructFieldRefAccess<T, F>(fieldName)(ref instance). + + + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + + + + Creates a field reference for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldInfo) is functionally equivalent to StructFieldRefAccess<T, F>(fieldInfo)(ref instance). + + + + + + A readable/assignable reference delegate to a static field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A readable/assignable reference to the field + + + + Creates a static field reference + The type (can be class or struct) the field is defined in + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The type (can be class or struct) the field is defined in + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + An arbitrary type (by convention, the type the field is defined in) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable reference to the field + + The type parameter is only used in exception messaging and to distinguish between this method overload + and the overload (which returns a rather than a reference). + + + + + Creates a static field reference delegate + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + + Creates a delegate to a given method + The delegate Type + The method to create a delegate from. + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + + Only applies for instance methods. If true (default) and is virtual, invocation of the delegate + calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); + else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) + Note: if false and is an interface method, an ArgumentException is thrown. + + A delegate of given to given + + + Delegate invocation is more performant and more convenient to use than + at a one-time setup cost. + + + Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, + and both class and struct methods. + + + + + + Creates a delegate for a given delegate definition, attributed with [] + The delegate Type, attributed with [] + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + A delegate of given to the method specified via [] + attributes on + + This calls with the method and virtualCall arguments + determined from the [] attributes on , + and the given (for closed instance delegates). + + + + + Returns who called the current method + The calling method/constructor (excluding the caller) + + + + Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces) + The exception to rethrow + + + + True if the current runtime is based on Mono, false otherwise (.NET) + + + + True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed) + + + + True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework) + + + + Throws a missing member runtime exception + The type that is involved + A list of names + + + + Gets default value for a specific type + The class/type + The default value + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + + A cache for the or similar Add methods for different types. + + + + Makes a deep copy of any object + The type of the instance that should be created; for legacy reasons, this must be a class or interface + The original object + A copy of the original object but of type T + + + + Makes a deep copy of any object + The type of the instance that should be created + The original object + [out] The copy of the original object + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + + + + Makes a deep copy of any object + The original object + The type of the instance that should be created + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + The copy of the original object + + + + Tests if a type is a struct + The type + True if the type is a struct + + + + Tests if a type is a class + The type + True if the type is a class + + + + Tests if a type is a value type + The type + True if the type is a value type + + + + Tests if a type is an integer type + The type + True if the type represents some integer + + + + Tests if a type is a floating point type + The type + True if the type represents some floating point + + + + Tests if a type is a numerical type + The type + True if the type represents some number + + + + Tests if a type is void + The type + True if the type is void + + + + Test whether an instance is of a nullable type + Type of instance + An instance to test + True if instance is of nullable type, false if not + + + + Tests whether a type or member is static, as defined in C# + The type or member + True if the type or member is static + + + + Tests whether a type is static, as defined in C# + The type + True if the type is static + + + + Tests whether a property is static, as defined in C# + The property + True if the property is static + + + + Tests whether an event is static, as defined in C# + The event + True if the event is static + + + + Calculates a combined hash code for an enumeration of objects + The objects + The hash code + + + + General extensions for common cases + + + + Joins an enumeration with a value converter and a delimiter to a string + The inner type of the enumeration + The enumeration + An optional value converter (from T to string) + An optional delimiter + The values joined into a string + + + + Converts an array of types (for example methods arguments) into a human readable form + The array of types + A human readable description including brackets + + + + A full description of a type + The type + A human readable description + + + + A a full description of a method or a constructor without assembly details but with generics + The method/constructor + A human readable description + + + + A helper converting parameter infos to types + The array of parameter infos + An array of types + + + + A helper to access a value via key from a dictionary + The key type + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist + + + + A helper to access a value via key from a dictionary with extra casting + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist or cannot be cast to T + + + + Escapes Unicode and ASCII non printable characters + The string to convert + The string to convert + A string literal surrounded by + + + + Extensions for + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand has the same type and is equal to the value + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand is equal to the value + This is an optimized version of for + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand is equal to the given operand + This is an optimized version of for + + + + Tests for any form of Ldarg* + The + The (optional) index + True if it matches one of the variations + + + + Tests for Ldarga/Ldarga_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for Starg/Starg_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for any form of Ldloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests for any form of Stloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests if the code instruction branches + The + The label if the instruction is a branch operation or if not + True if the instruction branches + + + + Tests if the code instruction calls the method/constructor + The + The method + True if the instruction calls the method or constructor + + + + Tests if the code instruction loads a constant + The + True if the instruction loads a constant + + + + Tests if the code instruction loads an integer constant + The + The integer constant + True if the instruction loads the constant + + + + Tests if the code instruction loads a floating point constant + The + The floating point constant + True if the instruction loads the constant + + + + Tests if the code instruction loads an enum constant + The + The enum + True if the instruction loads the constant + + + + Tests if the code instruction loads a field + The + The field + Set to true if the address of the field is loaded + True if the instruction loads the field + + + + Tests if the code instruction stores a field + The + The field + True if the instruction stores this field + + + + Adds labels to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds labels to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all labels from the code instruction and returns them + The + A list of + + + Moves all labels from the code instruction to a different one + The to move the labels from + The to move the labels to + The code instruction labels were moved from (now empty) + + + Moves all labels from a different code instruction to the current one + The to move the labels from + The to move the labels to + The code instruction that received the labels + + + Adds ExceptionBlocks to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds ExceptionBlocks to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all ExceptionBlocks from the code instruction and returns them + The + A list of + + + Moves all ExceptionBlocks from the code instruction to a different one + The to move the ExceptionBlocks from + The to move the ExceptionBlocks to + The code instruction blocks were moved from (now empty) + + + Moves all ExceptionBlocks from a different code instruction to the current one + The to move the ExceptionBlocks from + The to move the ExceptionBlocks to + The code instruction that received the blocks + + + General extensions for collections + + + + A simple way to execute code for every element in a collection + The inner type of the collection + The collection + The action to execute + + + + A simple way to execute code for elements in a collection matching a condition + The inner type of the collection + The collection + The predicate + The action to execute + + + + A helper to add an item to a collection + The inner type of the collection + The collection + The item to add + The collection containing the item + + + + A helper to add an item to an array + The inner type of the collection + The array + The item to add + The array containing the item + + + + A helper to add items to an array + The inner type of the collection + The array + The items to add + The array containing the items + + + + General extensions for collections + + + + Tests a class member if it has an IL method body (external methods for example don't have a body) + The member to test + Returns true if the member has an IL body or false if not + + + A file log for debugging + + + + Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop + + + + The indent character. The default is tab + + + + The current indent level + + + + Changes the indentation level + The value to add to the indentation level + + + + Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + The string to log + + + + Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + A list of strings to log (they will not be re-indented) + + + + Returns the log buffer and optionally empties it + True to empty the buffer + The buffer. + + + + Replaces the buffer with new lines + The lines to store + + + + Flushes the log buffer to disk (use in combination with LogBuffered) + + + + Log a string directly to disk. Slower method that prevents missing information in case of a crash + The string to log. + + + + Resets and deletes the log + + + + Logs some bytes as hex values + The pointer to some memory + The length of bytes to log + + + + A helper class to retrieve reflection info for non-private methods + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The generic result type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + A reflection helper to read and write private elements + The result type defined by GetValue() + + + + Creates a traverse instance from an existing instance + The existing instance + + + + Gets/Sets the current value + The value to read or write + + + + A reflection helper to read and write private elements + + + + Creates a new traverse instance from a class/type + The class/type + A instance + + + + Creates a new traverse instance from a class T + The class + A instance + + + + Creates a new traverse instance from an instance + The object + A instance + + + + Creates a new traverse instance from a named type + The type name, for format see + A instance + + + + Creates a new and empty traverse instance + + + + Creates a new traverse instance from a class/type + The class/type + + + + Creates a new traverse instance from an instance + The object + + + + Gets the current value + The value + + + + Gets the current value + The type of the value + The value + + + + Invokes the current method with arguments and returns the result + The method arguments + The value returned by the method + + + + Invokes the current method with arguments and returns the result + The type of the value + The method arguments + The value returned by the method + + + + Sets a value of the current field or property + The value + The same traverse instance + + + + Gets the type of the current field or property + The type + + + + Moves the current traverse instance to a inner type + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type of the field + The type name + A traverse instance + + + + Gets all fields of the current type + A list of field names + + + + Moves the current traverse instance to a property + The type name + Optional property index + A traverse instance + + + + Moves the current traverse instance to a field + The type of the property + The type name + Optional property index + A traverse instance + + + + Gets all properties of the current type + A list of property names + + + + Moves the current traverse instance to a method + The name of the method + The arguments defining the argument types of the method overload + A traverse instance + + + + Moves the current traverse instance to a method + The name of the method + The argument types of the method + The arguments for the method + A traverse instance + + + + Gets all methods of the current type + A list of method names + + + + Checks if the current traverse instance is for a field + True if its a field + + + + Checks if the current traverse instance is for a property + True if its a property + + + + Checks if the current traverse instance is for a method + True if its a method + + + + Checks if the current traverse instance is for a type + True if its a type + + + + Iterates over all fields of the current type and executes a traverse action + Original object + The action receiving a instance for each field + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each field pair + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the field pair and the instances + + + + Iterates over all properties of the current type and executes a traverse action + Original object + The action receiving a instance for each property + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each property pair + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the property pair and the instances + + + + A default field action that copies fields to fields + + + + Returns a string that represents the current traverse + A string representation + + + + diff --git a/Assemblies/0MultiplayerAPI.dll b/Assemblies/0MultiplayerAPI.dll new file mode 100644 index 0000000000000000000000000000000000000000..38b8a0e0b48c73d0d7a85764258f9e1e10749a1f GIT binary patch literal 12288 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 literal 0 HcmV?d00001 diff --git a/Assemblies/ResearchTree.dll b/Assemblies/ResearchTree.dll index 71ad6bafd286baff12939410edea0f24cfbdbace..ba43fd8447163944644c45f240c7378f96164fca 100644 GIT binary patch literal 70144 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 YxBSe&t6+#}od4hb|C1E>-+DYS%K!iX literal 69632 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 _nodes; - private static List> _edges; - private static List _relevantTechLevels; + public static bool Initialized; + public static IntVec2 Size = IntVec2.Zero; + private static List _nodes; + private static List> _edges; + private static List _relevantTechLevels; private static Dictionary _techLevelBounds; private static bool _initializing; @@ -32,8 +31,8 @@ public static Dictionary TechLevelBounds { get { - if ( _techLevelBounds == null ) - throw new Exception( "TechLevelBounds called before they are set." ); + if (_techLevelBounds == null) + throw new Exception("TechLevelBounds called before they are set."); return _techLevelBounds; } } @@ -42,14 +41,14 @@ public static List RelevantTechLevels { get { - if ( _relevantTechLevels == null ) - _relevantTechLevels = Enum.GetValues( typeof( TechLevel ) ) + if (_relevantTechLevels == null) + _relevantTechLevels = Enum.GetValues(typeof(TechLevel)) .Cast() - // filter down to relevant tech levels only. + // filter down to relevant tech levels only. .Where( tl => DefDatabase.AllDefsListForReading.Any( rp => rp.techLevel == - tl ) ) + tl)) .ToList(); return _relevantTechLevels; } @@ -59,7 +58,7 @@ public static List Nodes { get { - if ( _nodes == null ) + if (_nodes == null) PopulateNodes(); return _nodes; @@ -70,71 +69,71 @@ public static List> Edges { get { - if ( _edges == null ) - throw new Exception( "Trying to access edges before they are initialized." ); + if (_edges == null) + throw new Exception("Trying to access edges before they are initialized."); return _edges; } } -// [SyncMethod] + // [SyncMethod] public static void Initialize() { - if ( Initialized ) return; + if (Initialized) return; // make sure we only have one initializer running - if ( _initializing ) + if (_initializing) return; _initializing = true; // setup - LongEventHandler.QueueLongEvent( CheckPrerequisites, "Fluffy.ResearchTree.PreparingTree.Setup", false, - null ); - LongEventHandler.QueueLongEvent( CreateEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); - LongEventHandler.QueueLongEvent( HorizontalPositions, "Fluffy.ResearchTree.PreparingTree.Setup", false, - null ); - LongEventHandler.QueueLongEvent( NormalizeEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); + LongEventHandler.QueueLongEvent(CheckPrerequisites, "Fluffy.ResearchTree.PreparingTree.Setup", false, + null); + LongEventHandler.QueueLongEvent(CreateEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null); + LongEventHandler.QueueLongEvent(HorizontalPositions, "Fluffy.ResearchTree.PreparingTree.Setup", false, + null); + LongEventHandler.QueueLongEvent(NormalizeEdges, "Fluffy.ResearchTree.PreparingTree.Setup", false, null); #if DEBUG - LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Setup", false, null ); + LongEventHandler.QueueLongEvent(DebugStatus, "Fluffy.ResearchTree.PreparingTree.Setup", false, null); #endif // crossing reduction - LongEventHandler.QueueLongEvent( Collapse, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, - null ); - LongEventHandler.QueueLongEvent( MinimizeCrossings, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", - false, null ); + LongEventHandler.QueueLongEvent(Collapse, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, + null); + LongEventHandler.QueueLongEvent(MinimizeCrossings, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", + false, null); #if DEBUG - LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, - null ); + LongEventHandler.QueueLongEvent(DebugStatus, "Fluffy.ResearchTree.PreparingTree.CrossingReduction", false, + null); #endif // layout - LongEventHandler.QueueLongEvent( MinimizeEdgeLength, "Fluffy.ResearchTree.PreparingTree.Layout", false, - null ); - LongEventHandler.QueueLongEvent( RemoveEmptyRows, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); + LongEventHandler.QueueLongEvent(MinimizeEdgeLength, "Fluffy.ResearchTree.PreparingTree.Layout", false, + null); + LongEventHandler.QueueLongEvent(RemoveEmptyRows, "Fluffy.ResearchTree.PreparingTree.Layout", false, null); #if DEBUG - LongEventHandler.QueueLongEvent( DebugStatus, "Fluffy.ResearchTree.PreparingTree.Layout", false, null ); + LongEventHandler.QueueLongEvent(DebugStatus, "Fluffy.ResearchTree.PreparingTree.Layout", false, null); #endif // done! - LongEventHandler.QueueLongEvent( () => { Initialized = true; }, "Fluffy.ResearchTree.PreparingTree.Layout", - false, null ); + LongEventHandler.QueueLongEvent(() => { Initialized = true; }, "Fluffy.ResearchTree.PreparingTree.Layout", + false, null); // tell research tab we're ready - LongEventHandler.QueueLongEvent( MainTabWindow_ResearchTree.Instance.Notify_TreeInitialized, - "Fluffy.ResearchTree.RestoreQueue", false, null ); + LongEventHandler.QueueLongEvent(MainTabWindow_ResearchTree.Instance.Notify_TreeInitialized, + "Fluffy.ResearchTree.RestoreQueue", false, null); } private static void RemoveEmptyRows() { - Log.Debug( "Removing empty rows" ); + Log.Debug("Removing empty rows"); Profiler.Start(); var y = 1; - while ( y <= Size.z ) + while (y <= Size.z) { - var row = Row( y ); - if ( row.NullOrEmpty() ) - foreach ( var node in Nodes.Where( n => n.Y > y ) ) + var row = Row(y); + if (row.NullOrEmpty()) + foreach (var node in Nodes.Where(n => n.Y > y)) node.Y--; else y++; @@ -145,43 +144,43 @@ private static void RemoveEmptyRows() private static void MinimizeEdgeLength() { - Log.Debug( "Minimize edge length." ); + Log.Debug("Minimize edge length."); Profiler.Start(); // move and/or swap nodes to reduce the total edge length // perform sweeps of adjacent node reorderings - var progress = false; + var progress = false; int iteration = 0, burnout = 2, max_iterations = 50; - while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) + while ((!progress || burnout > 0) && iteration < max_iterations) { - progress = EdgeLengthSweep_Local( iteration++ ); - if ( !progress ) + progress = EdgeLengthSweep_Local(iteration++); + if (!progress) burnout--; } // sweep until we had no progress 2 times, then keep sweeping until we had progress iteration = 0; - burnout = 2; - while ( burnout > 0 && iteration < max_iterations ) + burnout = 2; + while (burnout > 0 && iteration < max_iterations) { - progress = EdgeLengthSweep_Global( iteration++ ); - if ( !progress ) + progress = EdgeLengthSweep_Global(iteration++); + if (!progress) burnout--; } Profiler.End(); } - private static bool EdgeLengthSweep_Global( int iteration ) + private static bool EdgeLengthSweep_Global(int iteration) { - Profiler.Start( "iteration" + iteration ); + Profiler.Start("iteration" + iteration); // calculate edge length before sweep var before = EdgeLength(); // do left/right sweep, align with left/right nodes for 4 different iterations. //if (iteration % 2 == 0) - for ( var l = 2; l <= Size.x; l++ ) - EdgeLengthSweep_Global_Layer( l, true ); + for (var l = 2; l <= Size.x; l++) + EdgeLengthSweep_Global_Layer(l, true); //else // for (var l = 1; l < Size.x; l++) // EdgeLengthSweep_Global_Layer(l, false); @@ -190,91 +189,91 @@ private static bool EdgeLengthSweep_Global( int iteration ) var after = EdgeLength(); // return progress - Log.Debug( $"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}" ); + Log.Debug($"EdgeLengthSweep_Global, iteration {iteration}: {before} -> {after}"); Profiler.End(); return after < before; } - private static bool EdgeLengthSweep_Local( int iteration ) + private static bool EdgeLengthSweep_Local(int iteration) { - Profiler.Start( "iteration" + iteration ); + Profiler.Start("iteration" + iteration); // calculate edge length before sweep var before = EdgeLength(); // do left/right sweep, align with left/right nodes for 4 different iterations. - if ( iteration % 2 == 0 ) - for ( var l = 2; l <= Size.x; l++ ) - EdgeLengthSweep_Local_Layer( l, true ); + if (iteration % 2 == 0) + for (var l = 2; l <= Size.x; l++) + EdgeLengthSweep_Local_Layer(l, true); else - for ( var l = Size.x - 1; l >= 0; l-- ) - EdgeLengthSweep_Local_Layer( l, false ); + for (var l = Size.x - 1; l >= 0; l--) + EdgeLengthSweep_Local_Layer(l, false); // calculate edge length after sweep var after = EdgeLength(); // return progress - Log.Debug( $"EdgeLengthSweep_Local, iteration {iteration}: {before} -> {after}" ); + Log.Debug($"EdgeLengthSweep_Local, iteration {iteration}: {before} -> {after}"); Profiler.End(); return after < before; } - private static void EdgeLengthSweep_Global_Layer( int l, bool @in ) + private static void EdgeLengthSweep_Global_Layer(int l, bool @in) { // The objective here is to; // (1) move and/or swap nodes to reduce total edge length // (2) not increase the number of crossings - var length = EdgeLength( l, @in ); - var crossings = Crossings( l ); - if ( Math.Abs( length ) < Epsilon ) + var length = EdgeLength(l, @in); + var crossings = Crossings(l); + if (Math.Abs(length) < Epsilon) return; - var layer = Layer( l, true ); + var layer = Layer(l, true); //Couldn't parallelize - foreach ( var node in layer ) + foreach (var node in layer) { // we only need to loop over positions that might be better for this node. // min = minimum of current position, minimum of any connected nodes current position var neighbours = node.Nodes; - if ( !neighbours.Any() ) + if (!neighbours.Any()) continue; - var min = Mathf.Min( node.Y, neighbours.Min( n => n.Y ) ); - var max = Mathf.Max( node.Y, neighbours.Max( n => n.Y ) ); - if ( min == max && min == node.Y ) + var min = Mathf.Min(node.Y, neighbours.Min(n => n.Y)); + var max = Mathf.Max(node.Y, neighbours.Max(n => n.Y)); + if (min == max && min == node.Y) continue; - for ( var y = min; y <= max; y++ ) + for (var y = min; y <= max; y++) { - if ( y == node.Y ) + if (y == node.Y) continue; // is this spot occupied? - var otherNode = NodeAt( l, y ); + var otherNode = NodeAt(l, y); // occupied, try swapping - if ( otherNode != null ) + if (otherNode != null) { - Swap( node, otherNode ); - var candidateCrossings = Crossings( l ); - if ( candidateCrossings > crossings ) + Swap(node, otherNode); + var candidateCrossings = Crossings(l); + if (candidateCrossings > crossings) { // abort - Swap( otherNode, node ); + Swap(otherNode, node); } else { - var candidateLength = EdgeLength( l, @in ); - if ( length - candidateLength < Epsilon ) + var candidateLength = EdgeLength(l, @in); + if (length - candidateLength < Epsilon) { // abort - Swap( otherNode, node ); + Swap(otherNode, node); } else { - Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", node, otherNode, length, - candidateLength ); + Log.Trace("\tSwapping {0} and {1}: {2} -> {3}", node, otherNode, length, + candidateLength); length = candidateLength; } } @@ -285,24 +284,24 @@ private static void EdgeLengthSweep_Global_Layer( int l, bool @in ) { var oldY = node.Y; node.Y = y; - var candidateCrossings = Crossings( l ); - if ( candidateCrossings > crossings ) + var candidateCrossings = Crossings(l); + if (candidateCrossings > crossings) { // abort node.Y = oldY; } else { - var candidateLength = EdgeLength( l, @in ); - if ( length - candidateLength < Epsilon ) + var candidateLength = EdgeLength(l, @in); + if (length - candidateLength < Epsilon) { // abort node.Y = oldY; } else { - Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", node, new Vector2( node.X, oldY ), length, - candidateLength ); + Log.Trace("\tMoving {0} -> {1}: {2} -> {3}", node, new Vector2(node.X, oldY), length, + candidateLength); length = candidateLength; } } @@ -312,64 +311,64 @@ private static void EdgeLengthSweep_Global_Layer( int l, bool @in ) } - private static void EdgeLengthSweep_Local_Layer( int l, bool @in ) + private static void EdgeLengthSweep_Local_Layer(int l, bool @in) { // The objective here is to; // (1) move and/or swap nodes to reduce local edge length // (2) not increase the number of crossings - var x = @in ? l - 1 : l + 1; - var crossings = Crossings( x ); + var x = @in ? l - 1 : l + 1; + var crossings = Crossings(x); - var layer = Layer( l, true ); - foreach ( var node in layer ) + var layer = Layer(l, true); + foreach (var node in layer) { - foreach ( var edge in @in ? node.InEdges : node.OutEdges ) + foreach (var edge in @in ? node.InEdges : node.OutEdges) { // current length - var length = edge.Length; + var length = edge.Length; var neighbour = @in ? edge.In : edge.Out; - if ( neighbour.X != x ) - Log.Warning( "{0} is not at layer {1}", neighbour, x ); + if (neighbour.X != x) + Log.Warning("{0} is not at layer {1}", neighbour, x); // we only need to loop over positions that might be better for this node. // min = minimum of current position, node position - var min = Mathf.Min( node.Y, neighbour.Y ); - var max = Mathf.Max( node.Y, neighbour.Y ); + var min = Mathf.Min(node.Y, neighbour.Y); + var max = Mathf.Max(node.Y, neighbour.Y); // already at only possible position - if ( min == max && min == node.Y ) + if (min == max && min == node.Y) continue; - for ( var y = min; y <= max; y++ ) + for (var y = min; y <= max; y++) { - if ( y == neighbour.Y ) + if (y == neighbour.Y) continue; // is this spot occupied? - var otherNode = NodeAt( x, y ); + var otherNode = NodeAt(x, y); // occupied, try swapping - if ( otherNode != null ) + if (otherNode != null) { - Swap( neighbour, otherNode ); - var candidateCrossings = Crossings( x ); - if ( candidateCrossings > crossings ) + Swap(neighbour, otherNode); + var candidateCrossings = Crossings(x); + if (candidateCrossings > crossings) { // abort - Swap( otherNode, neighbour ); + Swap(otherNode, neighbour); } else { var candidateLength = edge.Length; - if ( length - candidateLength < Epsilon ) + if (length - candidateLength < Epsilon) { // abort - Swap( otherNode, neighbour ); + Swap(otherNode, neighbour); } else { - Log.Trace( "\tSwapping {0} and {1}: {2} -> {3}", neighbour, otherNode, length, - candidateLength ); + Log.Trace("\tSwapping {0} and {1}: {2} -> {3}", neighbour, otherNode, length, + candidateLength); length = candidateLength; } } @@ -380,8 +379,8 @@ private static void EdgeLengthSweep_Local_Layer( int l, bool @in ) { var oldY = neighbour.Y; neighbour.Y = y; - var candidateCrossings = Crossings( x ); - if ( candidateCrossings > crossings ) + var candidateCrossings = Crossings(x); + if (candidateCrossings > crossings) { // abort neighbour.Y = oldY; @@ -389,15 +388,15 @@ private static void EdgeLengthSweep_Local_Layer( int l, bool @in ) else { var candidateLength = edge.Length; - if ( length - candidateLength < Epsilon ) + if (length - candidateLength < Epsilon) { // abort neighbour.Y = oldY; } else { - Log.Trace( "\tMoving {0} -> {1}: {2} -> {3}", neighbour, - new Vector2( neighbour.X, oldY ), length, candidateLength ); + Log.Trace("\tMoving {0} -> {1}: {2} -> {3}", neighbour, + new Vector2(neighbour.X, oldY), length, candidateLength); length = candidateLength; } } @@ -410,46 +409,46 @@ private static void EdgeLengthSweep_Local_Layer( int l, bool @in ) public static void HorizontalPositions() { // get list of techlevels - var techlevels = RelevantTechLevels; + var techlevels = RelevantTechLevels; bool anyChange; - var iteration = 1; - var maxIterations = 50; + var iteration = 1; + var maxIterations = 50; - Log.Debug( "Assigning horizontal positions." ); + Log.Debug("Assigning horizontal positions."); Profiler.Start(); // assign horizontal positions based on tech levels and prerequisites do { - Profiler.Start( "iteration " + iteration ); + Profiler.Start("iteration " + iteration); var min = 1; anyChange = false; - foreach ( var techlevel in techlevels ) + foreach (var techlevel in techlevels) { // enforce minimum x position based on techlevels - var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); - if ( !nodes.Any() ) + var nodes = Nodes.OfType().Where(n => n.Research.techLevel == techlevel); + if (!nodes.Any()) continue; - foreach ( var node in nodes ) - anyChange = node.SetDepth( min ) || anyChange; + foreach (var node in nodes) + anyChange = node.SetDepth(min) || anyChange; - min = nodes.Max( n => n.X ) + 1; + min = nodes.Max(n => n.X) + 1; - Log.Trace( "\t{0}, change: {1}", techlevel, anyChange ); + Log.Trace("\t{0}, change: {1}", techlevel, anyChange); } Profiler.End(); - } while ( anyChange && iteration++ < maxIterations ); + } while (anyChange && iteration++ < maxIterations); // store tech level boundaries _techLevelBounds = new Dictionary(); - foreach ( var techlevel in techlevels ) + foreach (var techlevel in techlevels) { - var nodes = Nodes.OfType().Where( n => n.Research.techLevel == techlevel ); - _techLevelBounds[techlevel] = new IntRange( nodes.Min( n => n.X ) - 1, nodes.Max( n => n.X ) ); + var nodes = Nodes.OfType().Where(n => n.Research.techLevel == techlevel); + _techLevelBounds[techlevel] = new IntRange(nodes.Min(n => n.X) - 1, nodes.Max(n => n.X)); } Profiler.End(); @@ -457,42 +456,42 @@ public static void HorizontalPositions() private static void NormalizeEdges() { - Log.Debug( "Normalizing edges." ); + Log.Debug("Normalizing edges."); Profiler.Start(); - foreach ( var edge in new List>( Edges.Where( e => e.Span > 1 ) ) ) + foreach (var edge in new List>(Edges.Where(e => e.Span > 1))) { - Log.Trace( "\tCreating dummy chain for {0}", edge ); + Log.Trace("\tCreating dummy chain for {0}", edge); // remove and decouple long edge - Edges.Remove( edge ); - edge.In.OutEdges.Remove( edge ); - edge.Out.InEdges.Remove( edge ); - var cur = edge.In; - var yOffset = ( edge.Out.Yf - edge.In.Yf ) / edge.Span; + Edges.Remove(edge); + edge.In.OutEdges.Remove(edge); + edge.Out.InEdges.Remove(edge); + var cur = edge.In; + var yOffset = (edge.Out.Yf - edge.In.Yf) / edge.Span; // create and hook up dummy chain int x = edge.In.X; Parallel.For(x + 1, Convert.ToInt32(x < edge.Out.X), i => { - var dummy = new DummyNode - { - X = x, - Yf = edge.In.Yf + yOffset * (x - edge.In.X) - }; - var dummyEdge = new Edge(cur, dummy); - cur.OutEdges.Add(dummyEdge); - dummy.InEdges.Add(dummyEdge); - _nodes.Add(dummy); - Edges.Add(dummyEdge); - cur = dummy; - Log.Trace("\t\tCreated dummy {0}", dummy); + var dummy = new DummyNode + { + X = x, + Yf = edge.In.Yf + yOffset * (x - edge.In.X) + }; + var dummyEdge = new Edge(cur, dummy); + cur.OutEdges.Add(dummyEdge); + dummy.InEdges.Add(dummyEdge); + _nodes.Add(dummy); + Edges.Add(dummyEdge); + cur = dummy; + Log.Trace("\t\tCreated dummy {0}", dummy); }); // hook up final dummy to out node - var finalEdge = new Edge( cur, edge.Out ); - cur.OutEdges.Add( finalEdge ); - edge.Out.InEdges.Add( finalEdge ); - Edges.Add( finalEdge ); + var finalEdge = new Edge(cur, edge.Out); + cur.OutEdges.Add(finalEdge); + edge.Out.InEdges.Add(finalEdge); + Edges.Add(finalEdge); } Profiler.End(); @@ -500,25 +499,25 @@ private static void NormalizeEdges() private static void CreateEdges() { - Log.Debug( "Creating edges." ); + Log.Debug("Creating edges."); Profiler.Start(); // create links between nodes - if ( _edges.NullOrEmpty() ) _edges = new List>(); + if (_edges.NullOrEmpty()) _edges = new List>(); - foreach ( var node in Nodes.OfType() ) + foreach (var node in Nodes.OfType()) { - if ( node.Research.prerequisites.NullOrEmpty() ) + if (node.Research.prerequisites.NullOrEmpty()) continue; - foreach ( var prerequisite in node.Research.prerequisites ) + foreach (var prerequisite in node.Research.prerequisites) { ResearchNode prerequisiteNode = prerequisite; - if ( prerequisiteNode == null ) + if (prerequisiteNode == null) continue; - var edge = new Edge( prerequisiteNode, node ); - Edges.Add( edge ); - node.InEdges.Add( edge ); - prerequisiteNode.OutEdges.Add( edge ); - Log.Trace( "\tCreated edge {0}", edge ); + var edge = new Edge(prerequisiteNode, node); + Edges.Add(edge); + node.InEdges.Add(edge); + prerequisiteNode.OutEdges.Add(edge); + Log.Trace("\tCreated edge {0}", edge); } } @@ -528,44 +527,44 @@ private static void CreateEdges() private static void CheckPrerequisites() { // check prerequisites - Log.Debug( "Checking prerequisites." ); + Log.Debug("Checking prerequisites."); Profiler.Start(); - var nodes = new Queue( Nodes.OfType() ); + var nodes = new Queue(Nodes.OfType()); // remove redundant prerequisites - while ( nodes.Count > 0 ) + while (nodes.Count > 0) { var node = nodes.Dequeue(); - if ( node.Research.prerequisites.NullOrEmpty() ) + if (node.Research.prerequisites.NullOrEmpty()) continue; - var ancestors = node.Research.prerequisites?.SelectMany( r => r.Ancestors() ).ToList(); - var redundant = ancestors.Intersect( node.Research.prerequisites ); - if ( redundant.Any() ) + var ancestors = node.Research.prerequisites?.SelectMany(r => r.Ancestors()).ToList(); + var redundant = ancestors.Intersect(node.Research.prerequisites); + if (redundant.Any()) { - Log.Warning( "\tredundant prerequisites for {0}: {1}", node.Research.LabelCap, - string.Join( ", ", redundant.Select( r => r.LabelCap ).ToArray() ) ); - foreach ( var redundantPrerequisite in redundant ) - node.Research.prerequisites.Remove( redundantPrerequisite ); + Log.Warning("\tredundant prerequisites for {0}: {1}", node.Research.LabelCap, + string.Join(", ", redundant.Select(r => r.LabelCap).ToArray())); + foreach (var redundantPrerequisite in redundant) + node.Research.prerequisites.Remove(redundantPrerequisite); } } // fix bad techlevels - nodes = new Queue( Nodes.OfType() ); - while ( nodes.Count > 0 ) + nodes = new Queue(Nodes.OfType()); + while (nodes.Count > 0) { var node = nodes.Dequeue(); - if ( !node.Research.prerequisites.NullOrEmpty() ) + if (!node.Research.prerequisites.NullOrEmpty()) // warn and fix badly configured techlevels - if ( node.Research.prerequisites.Any( r => r.techLevel > node.Research.techLevel ) ) + if (node.Research.prerequisites.Any(r => r.techLevel > node.Research.techLevel)) { - Log.Warning( "\t{0} has a lower techlevel than (one of) it's prerequisites", - node.Research.defName ); - node.Research.techLevel = node.Research.prerequisites.Max( r => r.techLevel ); + Log.Warning("\t{0} has a lower techlevel than (one of) it's prerequisites", + node.Research.defName); + node.Research.techLevel = node.Research.prerequisites.Max(r => r.techLevel); // re-enqeue all descendants - foreach ( var descendant in node.Descendants.OfType() ) - nodes.Enqueue( descendant ); + foreach (var descendant in node.Descendants.OfType()) + nodes.Enqueue(descendant); } } @@ -574,203 +573,205 @@ private static void CheckPrerequisites() private static void PopulateNodes() { - Log.Debug( "Populating nodes." ); + Log.Debug("Populating nodes."); Profiler.Start(); var projects = DefDatabase.AllDefsListForReading; // find hidden nodes (nodes that have themselves as a prerequisite) - var hidden = projects.Where( p => p.prerequisites?.Contains( p ) ?? false ); + var hidden = projects.Where(p => p.prerequisites?.Contains(p) ?? false); // find locked nodes (nodes that have a hidden node as a prerequisite) - var locked = projects.Where( p => p.Ancestors().Intersect( hidden ).Any() ); + var locked = projects.Where(p => p.Ancestors().Intersect(hidden).Any()); // populate all nodes - _nodes = new List( DefDatabase.AllDefsListForReading - .Except( hidden ) - .Except( locked ) - .Select( def => new ResearchNode( def ) as Node ) ); - Log.Debug( "\t{0} nodes", _nodes.Count ); + _nodes = new List(DefDatabase.AllDefsListForReading + .Except(hidden) + .Except(locked) + .Select(def => new ResearchNode(def) as Node)); + Log.Debug("\t{0} nodes", _nodes.Count); Profiler.End(); } private static void Collapse() { - Log.Debug( "Collapsing nodes." ); + Log.Debug("Collapsing nodes."); Profiler.Start(); var pre = Size; - for ( var l = 1; l <= Size.x; l++ ) + for (var l = 1; l <= Size.x; l++) { - var nodes = Layer( l, true ); - var Y = 1; - foreach ( var node in nodes ) + var nodes = Layer(l, true); + var Y = 1; + foreach (var node in nodes) node.Y = Y++; } - Log.Debug( "{0} -> {1}", pre, Size ); + Log.Debug("{0} -> {1}", pre, Size); Profiler.End(); } - [Conditional( "DEBUG" )] + [Conditional("DEBUG")] internal static void DebugDraw() { - foreach ( var v in Nodes ) + foreach (var v in Nodes) { - foreach ( var w in v.OutNodes ) Widgets.DrawLine( v.Right, w.Left, Color.white, 1 ); + foreach (var w in v.OutNodes) Widgets.DrawLine(v.Right, w.Left, Color.white, 1); } } - public static void Draw( Rect visibleRect ) + public static void Draw(Rect visibleRect) { - Profiler.Start( "Tree.Draw" ); - Profiler.Start( "techlevels" ); - foreach ( var techlevel in RelevantTechLevels ) - DrawTechLevel( techlevel, visibleRect ); + Profiler.Start("Tree.Draw"); + Profiler.Start("techlevels"); + foreach (var techlevel in RelevantTechLevels) + DrawTechLevel(techlevel, visibleRect); Profiler.End(); - Profiler.Start( "edges" ); - foreach ( var edge in Edges.OrderBy( e => e.DrawOrder ) ) - edge.Draw( visibleRect ); + Profiler.Start("edges"); + foreach (var edge in Edges.OrderBy(e => e.DrawOrder)) + edge.Draw(visibleRect); Profiler.End(); - Profiler.Start( "nodes" ); - foreach ( var node in Nodes ) - node.Draw( visibleRect ); + Profiler.Start("nodes"); + foreach (var node in Nodes) + node.Draw(visibleRect); Profiler.End(); } - public static void DrawTechLevel( TechLevel techlevel, Rect visibleRect ) + public static void DrawTechLevel(TechLevel techlevel, Rect visibleRect) { // determine positions - var xMin = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].min - NodeMargins.x / 2f; - var xMax = ( NodeSize.x + NodeMargins.x ) * TechLevelBounds[techlevel].max - NodeMargins.x / 2f; + var xMin = (NodeSize.x + NodeMargins.x) * TechLevelBounds[techlevel].min - NodeMargins.x / 2f; + var xMax = (NodeSize.x + NodeMargins.x) * TechLevelBounds[techlevel].max - NodeMargins.x / 2f; - GUI.color = Assets.TechLevelColor; + GUI.color = Assets.TechLevelColor; Text.Anchor = TextAnchor.MiddleCenter; // lower bound - if ( TechLevelBounds[techlevel].min > 0 && xMin > visibleRect.xMin && xMin < visibleRect.xMax ) + if (TechLevelBounds[techlevel].min > 0 && xMin > visibleRect.xMin && xMin < visibleRect.xMax) { // line - Widgets.DrawLine( new Vector2( xMin, visibleRect.yMin ), new Vector2( xMin, visibleRect.yMax ), - Assets.TechLevelColor, 1f ); + Widgets.DrawLine(new Vector2(xMin, visibleRect.yMin), new Vector2(xMin, visibleRect.yMax), + Assets.TechLevelColor, 1f); // label var labelRect = new Rect( xMin + TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, - visibleRect.center.y - TechLevelLabelSize.y / 2f, + visibleRect.center.y - TechLevelLabelSize.y / 2f, TechLevelLabelSize.x, - TechLevelLabelSize.y ); + TechLevelLabelSize.y); - VerticalLabel( labelRect, techlevel.ToStringHuman() ); + VerticalLabel(labelRect, techlevel.ToStringHuman()); } // upper bound - if ( TechLevelBounds[techlevel].max < Size.x && xMax > visibleRect.xMin && xMax < visibleRect.xMax ) + if (TechLevelBounds[techlevel].max < Size.x && xMax > visibleRect.xMin && xMax < visibleRect.xMax) { // label var labelRect = new Rect( xMax - TechLevelLabelSize.y / 2f - TechLevelLabelSize.x / 2f, - visibleRect.center.y - TechLevelLabelSize.y / 2f, + visibleRect.center.y - TechLevelLabelSize.y / 2f, TechLevelLabelSize.x, - TechLevelLabelSize.y ); + TechLevelLabelSize.y); - VerticalLabel( labelRect, techlevel.ToStringHuman() ); + VerticalLabel(labelRect, techlevel.ToStringHuman()); } - GUI.color = Color.white; + GUI.color = Color.white; Text.Anchor = TextAnchor.UpperLeft; } - private static void VerticalLabel( Rect rect, string text ) + private static void VerticalLabel(Rect rect, string text) { // store the scaling matrix var matrix = GUI.matrix; // rotate and then apply the scaling GUI.matrix = Matrix4x4.identity; - GUIUtility.RotateAroundPivot( -90f, rect.center ); + GUIUtility.RotateAroundPivot(-90f, rect.center); GUI.matrix = matrix * GUI.matrix; - Widgets.Label( rect, text ); + Widgets.Label(rect, text); // restore the original scaling matrix GUI.matrix = matrix; } - private static Node NodeAt( int X, int Y ) + private static Node NodeAt(int X, int Y) { - return Nodes.FirstOrDefault( n => n.X == X && n.Y == Y ); + return Nodes.FirstOrDefault(n => n.X == X && n.Y == Y); } - public static void MinimizeCrossings() - { + public static void MinimizeCrossings() + { // initialize each layer by putting nodes with the most (recursive!) children on bottom //shown in-game as "reducing crossings" - Log.Debug( "Minimize crossings." ); + Log.Debug("Minimize crossings."); Profiler.Start(); int X = Size.x; var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; - Parallel.For (1, X, options, i => + var nodes = Layer(X).OrderBy(n => n.Descendants.Count).ToList(); + int start = 0; + int end = nodes.Count; + Parallel.For(1, X, options, i => { - var nodes = Layer( X ).OrderBy( n => n.Descendants.Count ).ToList(); - for( var z = 0; z < nodes.Count; z++) + for (var z = start; z < end; z++) { - nodes[i].Y = i + 1; + nodes[z].Y = z + 1; } }); // up-down sweeps of mean reordering - var progress = false; + var progress = false; int iteration = 0, burnout = 2, max_iterations = 50; - while ( ( !progress || burnout > 0 ) && iteration < max_iterations ) + while ((!progress || burnout > 0) && iteration < max_iterations) { - progress = BarymetricSweep( iteration++ ); - if ( !progress ) + progress = BarymetricSweep(iteration++); + if (!progress) burnout--; } // greedy sweep for local optima iteration = 0; - burnout = 2; - while ( burnout > 0 && iteration < max_iterations ) + burnout = 2; + while (burnout > 0 && iteration < max_iterations) { - progress = GreedySweep( iteration++ ); - if ( !progress ) + progress = GreedySweep(iteration++); + if (!progress) burnout--; } Profiler.End(); } - private static bool GreedySweep( int iteration ) + private static bool GreedySweep(int iteration) { - Profiler.Start( "iteration " + iteration ); + Profiler.Start("iteration " + iteration); // count number of crossings before sweep var before = Crossings(); // do up/down sweep on aternating iterations - if ( iteration % 2 == 0 ) - for ( var l = 1; l <= Size.x; l++ ) - GreedySweep_Layer( l ); + if (iteration % 2 == 0) + for (var l = 1; l <= Size.x; l++) + GreedySweep_Layer(l); else - for ( var l = Size.x; l >= 1; l-- ) - GreedySweep_Layer( l ); + for (var l = Size.x; l >= 1; l--) + GreedySweep_Layer(l); // count number of crossings after sweep var after = Crossings(); - Log.Debug( $"GreedySweep: {before} -> {after}" ); + Log.Debug($"GreedySweep: {before} -> {after}"); Profiler.End(); // return progress return after < before; } - private static void GreedySweep_Layer( int l ) + private static void GreedySweep_Layer(int l) { // The objective here is twofold; // 1: Swap nodes to reduce the number of crossings @@ -779,32 +780,32 @@ private static void GreedySweep_Layer( int l ) // // If I'm reasoning this out right, both objectives should be served by // minimizing the amount of crossings between each pair of nodes. - var crossings = Crossings( l ); - if ( crossings == 0 ) + var crossings = Crossings(l); + if (crossings == 0) return; - var layer = Layer( l, true ); - for ( var i = 0; i < layer.Count - 1; i++ ) + var layer = Layer(l, true); + for (var i = 0; i < layer.Count - 1; i++) { - for ( var j = i + 1; j < layer.Count; j++ ) + for (var j = i + 1; j < layer.Count; j++) { // swap, then count crossings again. If lower, leave it. If higher, revert. - Swap( layer[i], layer[j] ); - var candidateCrossings = Crossings( l ); - if ( candidateCrossings < crossings ) + Swap(layer[i], layer[j]); + var candidateCrossings = Crossings(l); + if (candidateCrossings < crossings) // update current crossings crossings = candidateCrossings; else // revert change - Swap( layer[j], layer[i] ); + Swap(layer[j], layer[i]); } } } - private static void Swap( Node A, Node B ) + private static void Swap(Node A, Node B) { - if ( A.X != B.X ) - throw new Exception( "Can't swap nodes on different layers" ); + if (A.X != B.X) + throw new Exception("Can't swap nodes on different layers"); // swap Y positions of adjacent nodes var tmp = A.Y; @@ -812,105 +813,105 @@ private static void Swap( Node A, Node B ) B.Y = tmp; } - private static bool BarymetricSweep( int iteration ) + private static bool BarymetricSweep(int iteration) { - Profiler.Start( "iteration " + iteration ); + Profiler.Start("iteration " + iteration); // count number of crossings before sweep var before = Crossings(); // do up/down sweep on alternating iterations - if ( iteration % 2 == 0 ) - for ( var i = 2; i <= Size.x; i++ ) - BarymetricSweep_Layer( i, true ); + if (iteration % 2 == 0) + for (var i = 2; i <= Size.x; i++) + BarymetricSweep_Layer(i, true); else - for ( var i = Size.x - 1; i > 0; i-- ) - BarymetricSweep_Layer( i, false ); + for (var i = Size.x - 1; i > 0; i--) + BarymetricSweep_Layer(i, false); // count number of crossings after sweep var after = Crossings(); // did we make progress? please? Log.Debug( - $"BarymetricSweep {iteration} ({( iteration % 2 == 0 ? "left" : "right" )}): {before} -> {after}" ); + $"BarymetricSweep {iteration} ({(iteration % 2 == 0 ? "left" : "right")}): {before} -> {after}"); Profiler.End(); return after < before; } - private static void BarymetricSweep_Layer( int layer, bool left ) + private static void BarymetricSweep_Layer(int layer, bool left) { - var means = Layer( layer ) - .ToDictionary( n => n, n => GetBarycentre( n, left ? n.InNodes : n.OutNodes ) ) - .OrderBy( n => n.Value ); + var means = Layer(layer) + .ToDictionary(n => n, n => GetBarycentre(n, left ? n.InNodes : n.OutNodes)) + .OrderBy(n => n.Value); // create groups of nodes at similar means - var cur = float.MinValue; + var cur = float.MinValue; var groups = new Dictionary>(); - foreach ( var mean in means ) + foreach (var mean in means) { - if ( Math.Abs( mean.Value - cur ) > Epsilon ) + if (Math.Abs(mean.Value - cur) > Epsilon) { - cur = mean.Value; + cur = mean.Value; groups[cur] = new List(); } - groups[cur].Add( mean.Key ); + groups[cur].Add(mean.Key); } // position nodes as close to their desired mean as possible var Y = 1; - foreach ( var group in groups ) + foreach (var group in groups) { var mean = group.Key; - var N = group.Value.Count; - Y = (int) Mathf.Max( Y, mean - ( N - 1 ) / 2 ); + var N = group.Value.Count; + Y = (int)Mathf.Max(Y, mean - (N - 1) / 2); - foreach ( var node in group.Value ) + foreach (var node in group.Value) node.Y = Y++; } } - private static float GetBarycentre( Node node, List neighbours ) + private static float GetBarycentre(Node node, List neighbours) { - if ( neighbours.NullOrEmpty() ) + if (neighbours.NullOrEmpty()) return node.Yf; - return neighbours.Sum( n => n.Yf ) / neighbours.Count; + return neighbours.Sum(n => n.Yf) / neighbours.Count; } private static int Crossings() { - var crossings = 0; - for ( var layer = 1; layer < Size.x; layer++ ) crossings += Crossings( layer, true ); + var crossings = 0; + for (var layer = 1; layer < Size.x; layer++) crossings += Crossings(layer, true); return crossings; } private static float EdgeLength() { - var length = 0f; - for ( var layer = 1; layer < Size.x; layer++ ) length += EdgeLength( layer, true ); + var length = 0f; + for (var layer = 1; layer < Size.x; layer++) length += EdgeLength(layer, true); return length; } - private static int Crossings( int layer ) + private static int Crossings(int layer) { - if ( layer == 0 ) - return Crossings( layer, false ); - if ( layer == Size.x ) - return Crossings( layer, true ); - return Crossings( layer, true ) + Crossings( layer, false ); + if (layer == 0) + return Crossings(layer, false); + if (layer == Size.x) + return Crossings(layer, true); + return Crossings(layer, true) + Crossings(layer, false); } - private static int Crossings( int layer, bool @in ) + private static int Crossings(int layer, bool @in) { // get in/out edges for layer - var edges = Layer( layer ) - .SelectMany( n => @in ? n.InEdges : n.OutEdges ) - .OrderBy( e => e.In.Y ) - .ThenBy( e => e.Out.Y ) + var edges = Layer(layer) + .SelectMany(n => @in ? n.InEdges : n.OutEdges) + .OrderBy(e => e.In.Y) + .ThenBy(e => e.Out.Y) .ToList(); - if ( edges.Count < 2 ) + if (edges.Count < 2) return 0; // count number of inversions @@ -919,43 +920,43 @@ private static int Crossings( int layer, bool @in ) var options = new ParallelOptions() { MaxDegreeOfParallelism = Convert.ToInt32(Math.Ceiling((Environment.ProcessorCount * 0.75) * 2.0)) }; Parallel.For(0, X - 1, options, i => { - for (var j = i + 1; j < edges.Count; j++) - if (edges[j].Out.Y < edges[i].Out.Y) - inversions++; + for (var j = i + 1; j < edges.Count; j++) + if (edges[j].Out.Y < edges[i].Out.Y) + inversions++; }); return inversions; } - private static float EdgeLength( int layer, bool @in ) + private static float EdgeLength(int layer, bool @in) { // get in/out edges for layer - var edges = Layer( layer ) - .SelectMany( n => @in ? n.InEdges : n.OutEdges ) - .OrderBy( e => e.In.Y ) - .ThenBy( e => e.Out.Y ) + var edges = Layer(layer) + .SelectMany(n => @in ? n.InEdges : n.OutEdges) + .OrderBy(e => e.In.Y) + .ThenBy(e => e.Out.Y) .ToList(); - if ( edges.NullOrEmpty() ) + if (edges.NullOrEmpty()) return 0f; - return edges.Sum( e => e.Length ) * ( @in ? 2 : 1 ); + return edges.Sum(e => e.Length) * (@in ? 2 : 1); } - public static List Layer( int depth, bool ordered = false ) + public static List Layer(int depth, bool ordered = false) { - if ( ordered && OrderDirty ) + if (ordered && OrderDirty) { - _nodes = Nodes.OrderBy( n => n.X ).ThenBy( n => n.Y ).ToList(); + _nodes = Nodes.OrderBy(n => n.X).ThenBy(n => n.Y).ToList(); OrderDirty = false; } - return Nodes.Where( n => n.X == depth ).ToList(); + return Nodes.Where(n => n.X == depth).ToList(); } - public static List Row( int Y ) + public static List Row(int Y) { - return Nodes.Where( n => n.Y == Y ).ToList(); + return Nodes.Where(n => n.Y == Y).ToList(); } //This one is probably unsafe to execute in parallel @@ -963,18 +964,18 @@ public static List Row( int Y ) { var text = new StringBuilder(); - for ( var l = 1; l <= Nodes.Max( n => n.X ); l++ ) + for (var l = 1; l <= Nodes.Max(n => n.X); l++) { - text.AppendLine( $"Layer {l}:" ); - var layer = Layer( l, true ); + text.AppendLine($"Layer {l}:"); + var layer = Layer(l, true); - foreach ( var n in layer ) + foreach (var n in layer) { - text.AppendLine( $"\t{n}" ); - text.AppendLine( "\t\tAbove: " + - string.Join( ", ", n.InNodes.Select( a => a.ToString() ).ToArray() ) ); - text.AppendLine( "\t\tBelow: " + - string.Join( ", ", n.OutNodes.Select( b => b.ToString() ).ToArray() ) ); + text.AppendLine($"\t{n}"); + text.AppendLine("\t\tAbove: " + + string.Join(", ", n.InNodes.Select(a => a.ToString()).ToArray())); + text.AppendLine("\t\tBelow: " + + string.Join(", ", n.OutNodes.Select(b => b.ToString()).ToArray())); } } @@ -983,15 +984,15 @@ public static List Row( int Y ) public static void DebugStatus() { - Log.Message( "duplicated positions:\n " + + Log.Message("duplicated positions:\n " + string.Join( "\n", - Nodes.Where( n => Nodes.Any( n2 => n != n2 && n.X == n2.X && n.Y == n2.Y ) ) - .Select( n => n.X + ", " + n.Y + ": " + n.Label ).ToArray() ) ); - Log.Message( "out-of-bounds nodes:\n" + + Nodes.Where(n => Nodes.Any(n2 => n != n2 && n.X == n2.X && n.Y == n2.Y)) + .Select(n => n.X + ", " + n.Y + ": " + n.Label).ToArray())); + Log.Message("out-of-bounds nodes:\n" + string.Join( - "\n", Nodes.Where( n => n.X < 1 || n.Y < 1 ).Select( n => n.ToString() ).ToArray() ) ); - Log.Trace( ToString() ); + "\n", Nodes.Where(n => n.X < 1 || n.Y < 1).Select(n => n.ToString()).ToArray())); + Log.Trace(ToString()); } } -} +} \ No newline at end of file diff --git a/Source/MainTabWindow_ResearchTree.cs b/Source/MainTabWindow_ResearchTree.cs index 57aedee..74812c9 100644 --- a/Source/MainTabWindow_ResearchTree.cs +++ b/Source/MainTabWindow_ResearchTree.cs @@ -1,370 +1,370 @@ -// MainTabWindow_ResearchTree.cs -// Copyright Karel Kroeze, 2020-2020 - -using System.Collections.Generic; -using System.Linq; -using RimWorld; -using UnityEngine; -using Verse; -using static FluffyResearchTree.Constants; - -namespace FluffyResearchTree -{ - public class MainTabWindow_ResearchTree : MainTabWindow - { - internal static Vector2 _scrollPosition = Vector2.zero; - - private static Rect _treeRect; - - private Rect _baseViewRect; - private Rect _baseViewRect_Inner; - - private bool _dragging; - private Vector2 _mousePosition = Vector2.zero; - - private string _query = ""; - private Rect _viewRect; - - private Rect _viewRect_Inner; - private bool _viewRect_InnerDirty = true; - private bool _viewRectDirty = true; - - private float _zoomLevel = 1f; - - public MainTabWindow_ResearchTree() - { - closeOnClickedOutside = false; - Instance = this; - } - - public static MainTabWindow_ResearchTree Instance { get; private set; } - - public float ScaledMargin => Constants.Margin * ZoomLevel / Prefs.UIScale; - - public float ZoomLevel - { - get => _zoomLevel; - set - { - _zoomLevel = Mathf.Clamp( value, 1f, MaxZoomLevel ); - _viewRectDirty = true; - _viewRect_InnerDirty = true; - } - } - - public Rect ViewRect - { - get - { - if ( _viewRectDirty ) - { - _viewRect = new Rect( - _baseViewRect.xMin * ZoomLevel, - _baseViewRect.yMin * ZoomLevel, - _baseViewRect.width * ZoomLevel, - _baseViewRect.height * ZoomLevel - ); - _viewRectDirty = false; - } - - return _viewRect; - } - } - - public Rect ViewRect_Inner - { - get - { - if ( _viewRect_InnerDirty ) - { - _viewRect_Inner = _viewRect.ContractedBy( Margin * ZoomLevel ); - _viewRect_InnerDirty = false; - } - - return _viewRect_Inner; - } - } - - public Rect TreeRect - { - get - { - if ( _treeRect == default ) - { - var width = Tree.Size.x * ( NodeSize.x + NodeMargins.x ); - var height = Tree.Size.z * ( NodeSize.y + NodeMargins.y ); - _treeRect = new Rect( 0f, 0f, width, height ); - } - - return _treeRect; - } - } - - public Rect VisibleRect => - new Rect( - _scrollPosition.x, - _scrollPosition.y, - ViewRect_Inner.width, - ViewRect_Inner.height ); - - internal float MaxZoomLevel - { - get - { - // get the minimum zoom level at which the entire tree fits onto the screen, or a static maximum zoom level. - var fitZoomLevel = Mathf.Max( TreeRect.width / _baseViewRect_Inner.width, - TreeRect.height / _baseViewRect_Inner.height ); - return Mathf.Min( fitZoomLevel, AbsoluteMaxZoomLevel ); - } - } - - public override void PreClose() - { - base.PreClose(); - Log.Debug( "CloseOnClickedOutside: {0}", closeOnClickedOutside ); - Log.Debug( StackTraceUtility.ExtractStackTrace() ); - } - - public void Notify_TreeInitialized() - { - SetRects(); - } - - public override void PreOpen() - { - base.PreOpen(); - SetRects(); - - if ( !Tree.Initialized ) - // initialize tree - Tree.Initialize(); - - // clear node availability caches - ResearchNode.ClearCaches(); - - _dragging = false; - closeOnClickedOutside = false; - } - - private void SetRects() - { - // tree view rects, have to deal with UIScale and ZoomLevel manually. - _baseViewRect = new Rect( - StandardMargin / Prefs.UIScale, - (TopBarHeight + Constants.Margin + StandardMargin), - (Screen.width - StandardMargin * 2f) / Prefs.UIScale, - ((Screen.height - MainButtonDef.ButtonHeight - StandardMargin * 2) / Prefs.UIScale) - TopBarHeight - Constants.Margin); - - // windowrect, set to topleft (for some reason vanilla alignment overlaps bottom buttons). - windowRect.x = 0f; - windowRect.y = 0f; - windowRect.width = UI.screenWidth; - windowRect.height = UI.screenHeight - MainButtonDef.ButtonHeight; - } - - public override void DoWindowContents( Rect canvas ) - { - if ( !Tree.Initialized ) - return; - - - // top bar - var topRect = new Rect( - canvas.xMin, - canvas.yMin, - canvas.width, - TopBarHeight ); - DrawTopBar( topRect ); - - ApplyZoomLevel(); - - // draw background - GUI.DrawTexture( ViewRect, Assets.SlightlyDarkBackground ); - - // draw the actual tree - // TODO: stop scrollbars scaling with zoom - _scrollPosition = GUI.BeginScrollView( ViewRect, _scrollPosition, TreeRect ); - GUI.BeginGroup( - new Rect( - ScaledMargin, - ScaledMargin, - TreeRect.width + ScaledMargin * 2f, - TreeRect.height + ScaledMargin * 2f - ) - ); - - Tree.Draw( VisibleRect ); - Queue.DrawLabels( VisibleRect ); - - HandleZoom(); - - GUI.EndGroup(); - GUI.EndScrollView( false ); - - HandleDragging(); - HandleDolly(); - - // reset zoom level - ResetZoomLevel(); - - - // cleanup; - GUI.color = Color.white; - Text.Anchor = TextAnchor.UpperLeft; - } - - private void HandleDolly() - { - var dollySpeed = 10f; - if ( KeyBindingDefOf.MapDolly_Left.IsDown ) - _scrollPosition.x -= dollySpeed; - if ( KeyBindingDefOf.MapDolly_Right.IsDown ) - _scrollPosition.x += dollySpeed; - if ( KeyBindingDefOf.MapDolly_Up.IsDown ) - _scrollPosition.y -= dollySpeed; - if ( KeyBindingDefOf.MapDolly_Down.IsDown ) - _scrollPosition.y += dollySpeed; - } - - - private void HandleZoom() - { - // handle zoom - if ( Event.current.isScrollWheel ) - { - // absolute position of mouse on research tree - var absPos = Event.current.mousePosition; - // Log.Debug( "Absolute position: {0}", absPos ); - - // relative normalized position of mouse on visible tree - var relPos = ( Event.current.mousePosition - _scrollPosition ) / ZoomLevel; - // Log.Debug( "Normalized position: {0}", relPos ); - - // update zoom level - ZoomLevel += Event.current.delta.y * ZoomStep * ZoomLevel; - - // we want to keep the _normalized_ relative position the same as before zooming - _scrollPosition = absPos - relPos * ZoomLevel; - - Event.current.Use(); - } - } - - private void HandleDragging() - { - if ( Event.current.type == EventType.MouseDown ) - { - _dragging = true; - _mousePosition = Event.current.mousePosition; - Event.current.Use(); - } - - if ( Event.current.type == EventType.MouseUp ) - { - _dragging = false; - _mousePosition = Vector2.zero; - } - - if ( Event.current.type == EventType.MouseDrag ) - { - var _currentMousePosition = Event.current.mousePosition; - _scrollPosition += _mousePosition - _currentMousePosition; - _mousePosition = _currentMousePosition; - } - } - - private void ApplyZoomLevel() - { - GUI.EndClip(); // window contents - GUI.EndClip(); // window itself? - GUI.matrix = Matrix4x4.TRS( new Vector3( 0f, 0f, 0f ), Quaternion.identity, - new Vector3( Prefs.UIScale / ZoomLevel, Prefs.UIScale / ZoomLevel, 1f ) ); - } - - private void ResetZoomLevel() - { - // dummies to maintain correct stack size - // TODO; figure out how to get actual clipping rects in ApplyZoomLevel(); - UI.ApplyUIScale(); - GUI.BeginClip( windowRect ); - GUI.BeginClip( new Rect( 0f, 0f, UI.screenWidth, UI.screenHeight ) ); - } - - private void DrawTopBar( Rect canvas ) - { - var searchRect = canvas; - var queueRect = canvas; - searchRect.width = 200f; - queueRect.xMin += 200f + Constants.Margin; - - GUI.DrawTexture( searchRect, Assets.SlightlyDarkBackground ); - GUI.DrawTexture( queueRect, Assets.SlightlyDarkBackground ); - - DrawSearchBar( searchRect.ContractedBy( Constants.Margin ) ); - Queue.DrawQueue( queueRect.ContractedBy( Constants.Margin ), !_dragging ); - } - - private void DrawSearchBar( Rect canvas ) - { - Profiler.Start( "DrawSearchBar" ); - var iconRect = new Rect( - canvas.xMax - Constants.Margin - 16f, - 0f, - 16f, - 16f ) - .CenteredOnYIn( canvas ); - var searchRect = new Rect( - canvas.xMin, - 0f, - canvas.width, - 30f ) - .CenteredOnYIn( canvas ); - - GUI.DrawTexture( iconRect, Assets.Search ); - var query = Widgets.TextField( searchRect, _query ); - - if ( query != _query ) - { - _query = query; - Find.WindowStack.FloatMenu?.Close( false ); - - if ( query.Length > 2 ) - { - // open float menu with search results, if any. - var options = new List(); - - foreach ( var result in Tree.Nodes.OfType() - .Select( n => new {node = n, match = n.Matches( query )} ) +// MainTabWindow_ResearchTree.cs +// Copyright Karel Kroeze, 2020-2020 + +using System.Collections.Generic; +using System.Linq; +using RimWorld; +using UnityEngine; +using Verse; +using static FluffyResearchTree.Constants; + +namespace FluffyResearchTree +{ + public class MainTabWindow_ResearchTree : MainTabWindow + { + internal static Vector2 _scrollPosition = Vector2.zero; + + private static Rect _treeRect; + + private Rect _baseViewRect; + private Rect _baseViewRect_Inner; + + private bool _dragging; + private Vector2 _mousePosition = Vector2.zero; + + private string _query = ""; + private Rect _viewRect; + + private Rect _viewRect_Inner; + private bool _viewRect_InnerDirty = true; + private bool _viewRectDirty = true; + + private float _zoomLevel = 1f; + + public MainTabWindow_ResearchTree() + { + closeOnClickedOutside = false; + Instance = this; + } + + public static MainTabWindow_ResearchTree Instance { get; private set; } + + public float ScaledMargin => Constants.Margin * ZoomLevel / Prefs.UIScale; + + public float ZoomLevel + { + get => _zoomLevel; + set + { + _zoomLevel = Mathf.Clamp( value, 1f, MaxZoomLevel ); + _viewRectDirty = true; + _viewRect_InnerDirty = true; + } + } + + public Rect ViewRect + { + get + { + if ( _viewRectDirty ) + { + _viewRect = new Rect( + _baseViewRect.xMin * ZoomLevel, + _baseViewRect.yMin * ZoomLevel, + _baseViewRect.width * ZoomLevel, + _baseViewRect.height * ZoomLevel + ); + _viewRectDirty = false; + } + + return _viewRect; + } + } + + public Rect ViewRect_Inner + { + get + { + if ( _viewRect_InnerDirty ) + { + _viewRect_Inner = _viewRect.ContractedBy( Margin * ZoomLevel ); + _viewRect_InnerDirty = false; + } + + return _viewRect_Inner; + } + } + + public Rect TreeRect + { + get + { + if ( _treeRect == default ) + { + var width = Tree.Size.x * ( NodeSize.x + NodeMargins.x ); + var height = Tree.Size.z * ( NodeSize.y + NodeMargins.y ); + _treeRect = new Rect( 0f, 0f, width, height ); + } + + return _treeRect; + } + } + + public Rect VisibleRect => + new Rect( + _scrollPosition.x, + _scrollPosition.y, + ViewRect_Inner.width, + ViewRect_Inner.height ); + + internal float MaxZoomLevel + { + get + { + // get the minimum zoom level at which the entire tree fits onto the screen, or a static maximum zoom level. + var fitZoomLevel = Mathf.Max( TreeRect.width / _baseViewRect_Inner.width, + TreeRect.height / _baseViewRect_Inner.height ); + return Mathf.Min( fitZoomLevel, AbsoluteMaxZoomLevel ); + } + } + + public override void PreClose() + { + base.PreClose(); + Log.Debug( "CloseOnClickedOutside: {0}", closeOnClickedOutside ); + Log.Debug( StackTraceUtility.ExtractStackTrace() ); + } + + public void Notify_TreeInitialized() + { + SetRects(); + } + + public override void PreOpen() + { + base.PreOpen(); + SetRects(); + + if ( !Tree.Initialized ) + // initialize tree + Tree.Initialize(); + + // clear node availability caches + ResearchNode.ClearCaches(); + + _dragging = false; + closeOnClickedOutside = false; + } + + private void SetRects() + { + // tree view rects, have to deal with UIScale and ZoomLevel manually. + _baseViewRect = new Rect( + StandardMargin / Prefs.UIScale, + (TopBarHeight + Constants.Margin + StandardMargin), + (Screen.width - StandardMargin * 2f) / Prefs.UIScale, + ((Screen.height - MainButtonDef.ButtonHeight - StandardMargin * 2) / Prefs.UIScale) - TopBarHeight - Constants.Margin); + + // windowrect, set to topleft (for some reason vanilla alignment overlaps bottom buttons). + windowRect.x = 0f; + windowRect.y = 0f; + windowRect.width = UI.screenWidth; + windowRect.height = UI.screenHeight - MainButtonDef.ButtonHeight; + } + + public override void DoWindowContents( Rect canvas ) + { + if ( !Tree.Initialized ) + return; + + + // top bar + var topRect = new Rect( + canvas.xMin, + canvas.yMin, + canvas.width, + TopBarHeight ); + DrawTopBar( topRect ); + + ApplyZoomLevel(); + + // draw background + GUI.DrawTexture( ViewRect, Assets.SlightlyDarkBackground ); + + // draw the actual tree + // TODO: stop scrollbars scaling with zoom + _scrollPosition = GUI.BeginScrollView( ViewRect, _scrollPosition, TreeRect ); + GUI.BeginGroup( + new Rect( + ScaledMargin, + ScaledMargin, + TreeRect.width + ScaledMargin * 2f, + TreeRect.height + ScaledMargin * 2f + ) + ); + + Tree.Draw( VisibleRect ); + Queue.DrawLabels( VisibleRect ); + + HandleZoom(); + + GUI.EndGroup(); + GUI.EndScrollView( false ); + + HandleDragging(); + HandleDolly(); + + // reset zoom level + ResetZoomLevel(); + + + // cleanup; + GUI.color = Color.white; + Text.Anchor = TextAnchor.UpperLeft; + } + + private void HandleDolly() + { + var dollySpeed = 10f; + if ( KeyBindingDefOf.MapDolly_Left.IsDown ) + _scrollPosition.x -= dollySpeed; + if ( KeyBindingDefOf.MapDolly_Right.IsDown ) + _scrollPosition.x += dollySpeed; + if ( KeyBindingDefOf.MapDolly_Up.IsDown ) + _scrollPosition.y -= dollySpeed; + if ( KeyBindingDefOf.MapDolly_Down.IsDown ) + _scrollPosition.y += dollySpeed; + } + + + private void HandleZoom() + { + // handle zoom + if ( Event.current.isScrollWheel ) + { + // absolute position of mouse on research tree + var absPos = Event.current.mousePosition; + // Log.Debug( "Absolute position: {0}", absPos ); + + // relative normalized position of mouse on visible tree + var relPos = ( Event.current.mousePosition - _scrollPosition ) / ZoomLevel; + // Log.Debug( "Normalized position: {0}", relPos ); + + // update zoom level + ZoomLevel += Event.current.delta.y * ZoomStep * ZoomLevel; + + // we want to keep the _normalized_ relative position the same as before zooming + _scrollPosition = absPos - relPos * ZoomLevel; + + Event.current.Use(); + } + } + + private void HandleDragging() + { + if ( Event.current.type == EventType.MouseDown ) + { + _dragging = true; + _mousePosition = Event.current.mousePosition; + Event.current.Use(); + } + + if ( Event.current.type == EventType.MouseUp ) + { + _dragging = false; + _mousePosition = Vector2.zero; + } + + if ( Event.current.type == EventType.MouseDrag ) + { + var _currentMousePosition = Event.current.mousePosition; + _scrollPosition += _mousePosition - _currentMousePosition; + _mousePosition = _currentMousePosition; + } + } + + private void ApplyZoomLevel() + { + GUI.EndClip(); // window contents + GUI.EndClip(); // window itself? + GUI.matrix = Matrix4x4.TRS( new Vector3( 0f, 0f, 0f ), Quaternion.identity, + new Vector3( Prefs.UIScale / ZoomLevel, Prefs.UIScale / ZoomLevel, 1f ) ); + } + + private void ResetZoomLevel() + { + // dummies to maintain correct stack size + // TODO; figure out how to get actual clipping rects in ApplyZoomLevel(); + UI.ApplyUIScale(); + GUI.BeginClip( windowRect ); + GUI.BeginClip( new Rect( 0f, 0f, UI.screenWidth, UI.screenHeight ) ); + } + + private void DrawTopBar( Rect canvas ) + { + var searchRect = canvas; + var queueRect = canvas; + searchRect.width = 200f; + queueRect.xMin += 200f + Constants.Margin; + + GUI.DrawTexture( searchRect, Assets.SlightlyDarkBackground ); + GUI.DrawTexture( queueRect, Assets.SlightlyDarkBackground ); + + DrawSearchBar( searchRect.ContractedBy( Constants.Margin ) ); + Queue.DrawQueue( queueRect.ContractedBy( Constants.Margin ), !_dragging ); + } + + private void DrawSearchBar( Rect canvas ) + { + Profiler.Start( "DrawSearchBar" ); + var iconRect = new Rect( + canvas.xMax - Constants.Margin - 16f, + 0f, + 16f, + 16f ) + .CenteredOnYIn( canvas ); + var searchRect = new Rect( + canvas.xMin, + 0f, + canvas.width, + 30f ) + .CenteredOnYIn( canvas ); + + GUI.DrawTexture( iconRect, Assets.Search ); + var query = Widgets.TextField( searchRect, _query ); + + if ( query != _query ) + { + _query = query; + Find.WindowStack.FloatMenu?.Close( false ); + + if ( query.Length > 2 ) + { + // open float menu with search results, if any. + var options = new List(); + + foreach ( var result in Tree.Nodes.OfType() + .Select( n => new {node = n, match = n.Matches( query )} ) .Where( result => result.match > 0 ) .OrderBy(result => result.match)) options.Add(new FloatMenuOption(result.node.Label, () => CenterOn(result.node), MenuOptionPriority.Default)); if (!options.Any()) - options.Add(new FloatMenuOption("Fluffy.ResearchTree.NoResearchFound".Translate(), null)); - - Find.WindowStack.Add( new FloatMenu_Fixed( options, - UI.GUIToScreenPoint( - new Vector2( - searchRect.xMin, searchRect.yMax ) ) ) ); - } - } - - Profiler.End(); - } - - public void CenterOn( Node node ) - { - var position = new Vector2( - ( NodeSize.x + NodeMargins.x ) * ( node.X - .5f ), - ( NodeSize.y + NodeMargins.y ) * ( node.Y - .5f ) ); - - node.Highlighted = true; - - position -= new Vector2( UI.screenWidth, UI.screenHeight ) / 2f; - - position.x = Mathf.Clamp( position.x, 0f, TreeRect.width - ViewRect.width ); - position.y = Mathf.Clamp( position.y, 0f, TreeRect.height - ViewRect.height ); - _scrollPosition = position; - } - } + options.Add(new FloatMenuOption("Fluffy.ResearchTree.NoResearchFound".Translate(), null)); + + Find.WindowStack.Add( new FloatMenu_Fixed( options, + UI.GUIToScreenPoint( + new Vector2( + searchRect.xMin, searchRect.yMax ) ) ) ); + } + } + + Profiler.End(); + } + + public void CenterOn( Node node ) + { + var position = new Vector2( + ( NodeSize.x + NodeMargins.x ) * ( node.X - .5f ), + ( NodeSize.y + NodeMargins.y ) * ( node.Y - .5f ) ); + + node.Highlighted = true; + + position -= new Vector2( UI.screenWidth, UI.screenHeight ) / 2f; + + position.x = Mathf.Clamp( position.x, 0f, TreeRect.width - ViewRect.width ); + position.y = Mathf.Clamp( position.y, 0f, TreeRect.height - ViewRect.height ); + _scrollPosition = position; + } + } } \ No newline at end of file diff --git a/Source/Queue/Queue.cs b/Source/Queue/Queue.cs index 81f7d9c..6f792a7 100644 --- a/Source/Queue/Queue.cs +++ b/Source/Queue/Queue.cs @@ -1,7 +1,7 @@ // Queue.cs // Copyright Karel Kroeze, 2020-2020 -//using Multiplayer.API; +using Multiplayer.API; using System.Collections.Generic; using System.Linq; using RimWorld; @@ -28,20 +28,7 @@ public Queue( World world ) : base( world ) /// Removes and returns the first node in the queue. /// /// - public static ResearchNode Pop - { - get - { - if ( _instance._queue != null && _instance._queue.Count > 0 ) - { - var node = _instance._queue[0]; - _instance._queue.RemoveAt( 0 ); - return node; - } - - return null; - } - } + /// public static int NumQueued => _instance._queue.Count - 1; @@ -66,7 +53,7 @@ public static void Dequeue( ResearchNode node ) if ( Find.ResearchManager.currentProj == node.Research ) Find.ResearchManager.currentProj = null; } - + public static void DrawLabels( Rect visibleRect ) { Profiler.Start( "Queue.DrawLabels" ); diff --git a/Source/Queue/Queue_HarmonyPatches.cs b/Source/Queue/Queue_HarmonyPatches.cs index 887de81..eb9d46d 100644 --- a/Source/Queue/Queue_HarmonyPatches.cs +++ b/Source/Queue/Queue_HarmonyPatches.cs @@ -1,4 +1,4 @@ -// Queue_HarmonyPatches.cs +// Queue_HarmonyPatches.cs // Copyright Karel Kroeze, 2020-2020 using HarmonyLib; @@ -12,11 +12,14 @@ public class HarmonyPatches_Queue [HarmonyPatch(typeof(ResearchManager), "FinishProject")] public class DoCompletionDialog { - // suppress vanilla completion dialog, we never want to show it. + //If Semi Random Research mod is loaded, suppress vanilla completion dialog. [System.Diagnostics.CodeAnalysis.SuppressMessage("CodeQuality", "IDE0051:Remove unused private members", Justification = "It is used, ignore compiler messages")] private static void Prefix(ref bool doCompletionDialog) { - doCompletionDialog = false; + if (ModLister.GetActiveModWithIdentifier("CaptainMuscles.SemiRandomResearch") == null) + { + doCompletionDialog = false; + } } diff --git a/Source/ResearchTree.cs b/Source/ResearchTree.cs index ad40728..b27daac 100644 --- a/Source/ResearchTree.cs +++ b/Source/ResearchTree.cs @@ -4,7 +4,7 @@ using System.Reflection; using HarmonyLib; using Verse; -//using Multiplayer.API; +using Multiplayer.API; namespace FluffyResearchTree { @@ -15,8 +15,10 @@ public ResearchTree( ModContentPack content ) : base( content ) var harmony = new Harmony( "Fluffy.ResearchTree" ); harmony.PatchAll( Assembly.GetExecutingAssembly() ); -// if ( MP.enabled ) -// MP.RegisterAll(); + if ( MP.enabled) + { + MP.RegisterAll(); + } } } } \ No newline at end of file diff --git a/Source/ResearchTree.csproj b/Source/ResearchTree.csproj index 533a051..66c8aa1 100644 --- a/Source/ResearchTree.csproj +++ b/Source/ResearchTree.csproj @@ -1,4 +1,4 @@ - + @@ -101,11 +101,11 @@ - - + \ No newline at end of file From a653d24a1b3a2b384b9ecb35986fd926a8bcb68a Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Sat, 22 Oct 2022 19:16:52 +0200 Subject: [PATCH 13/16] Initial 1.4 release --- About/About.xml | 3 +- About/PublishedFileId.txt | 1 + Assemblies/0Harmony.dll | Bin 807424 -> 931840 bytes Assemblies/0Harmony.xml | 6823 ++++++++++++++++-------------- Assemblies/ResearchTree.dll | Bin 70144 -> 70144 bytes Assemblies/System.ValueTuple.dll | Bin 0 -> 79496 bytes Assemblies/System.ValueTuple.xml | 1299 ++++++ 7 files changed, 4995 insertions(+), 3131 deletions(-) create mode 100644 About/PublishedFileId.txt create mode 100644 Assemblies/System.ValueTuple.dll create mode 100644 Assemblies/System.ValueTuple.xml diff --git a/About/About.xml b/About/About.xml index 4e7c503..f1f8d64 100644 --- a/About/About.xml +++ b/About/About.xml @@ -3,7 +3,7 @@ Research Tree Fluffy https://ludeon.com/forums/index.php?topic=16120 - This is a unofficial update of Fluffy's Research Tree to make it work with Rimworld 1.3 and speed up the research display loading process. Will get removed upon Fluffy's request or when the original mod gets updated. + This is a unofficial update of Fluffy's Research Tree to make it work with Rimworld 1.3 and beyond. Will get removed upon Fluffy's request or when the original mod gets updated. My fork of this mod: https://github.com/Zemogiter/ResearchTree/tree/1.3 Original mod: @@ -15,6 +15,7 @@ Please give me feedback on how to further improve this mod.
  • 1.1
  • 1.3
  • +
  • 1.4
  • fluffy.researchtree diff --git a/About/PublishedFileId.txt b/About/PublishedFileId.txt new file mode 100644 index 0000000..b86c1f2 --- /dev/null +++ b/About/PublishedFileId.txt @@ -0,0 +1 @@ +2608058938 \ No newline at end of file diff --git a/Assemblies/0Harmony.dll b/Assemblies/0Harmony.dll index 779798cfa0001886fcd12f133dc4f33f7cc037a8..86fc5eb58e84247e1912ceceb94711fabf6fa25a 100644 GIT binary patch literal 931840 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 z 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 z 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

    q_L8i-k7lLm*;N;KTW) zz!kWGK6vLsFandJ6KFvWPE72&N@

    PpurI=aftZP{c+6Eqo>eFwh6)TnIp55`aLL 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%0Ay-nx4OmysOhms?zQWliwNNP+k^i;X?*6BlZgN zvG`fYVukJXEKe};=j1m|Bu=uTjpaagz#k4jNfFH+ zwFb5bYOn}F^(ipE!S3=vFfb=cRAt@6lj0m8$${`G!W-Mb%-Q!?kqZV`{h@mWe@>ke z&Q>h5R{S&u&Qx^0YyGF@CYiFD9k9;}pys#78}yUUfJ!gv9NGW12a?Hnz8#kP5Q zf*}wa3WkC~5c@*V-&u~~edcv zY3Gj;kGL?4W;Kujn{tk>#3n#gpb8sbK=!SZ)p^C%ZJgtkOYYO_K7E7b{{BqkbMzJ5 zh_(YJ#)+w9?eKAFvKuunFUz`ZbzygZmMw(nY_M#gI8Yks9q1eA4?kjqwQB(V8bCQO zWZ<8QAOm}dOU!n>8iBiN6)z!99_?Bn$ZYlE5aP2!vcHdlm zG5-F&0~^PmeCK`ljqhcnJ^pTBV-Ko~zfRvn#?Ba9J^m$}%@VjQhz}bt-Tb@@#{+CW zkAGPSKCFmSmCCrRf2|oi-2g7Sn$Yq08R>eY==^}AE+f_xdtXARNm}Ml!R15>nXy?r z#7b8#uS5Y7#K}y0?8s8vV`wBjG6`1uLD{E0+xr!vbQAoX41#WJanF^)H=e4Aj( zpyk0ycTw$_dUG_#4eo>n4P-4!kd-d^s_EIFFh0dd**bjGG3+#V{;`kNa3nXs^G|IL z=A+Fcen-{73I~%V@V#d22($c_;yRWE4?*#4S`=ZR*oEa}JUxnA%Do;O ziSTFp1#&T750cc#V^`FLT3;7xg#2$CPdtC__WY&W^Ve?A-?}~bc6;{AW6elz_sQdE zRNqd<(<5y+Sm5#Aj;#evg(~Lu;t<10I&IFe0$VXE}+v?zhchkne%D0 z&$qGDpP9-9yeN4=mJh$#Pgx^)T@9BA5FolpVBEeUS+)z>xQ>t0uSX2xNaL6uiy_k| zSD%LS5W&vGQJ3R_>SNe$>Q*ZVy?4@*4R>>0ybF5vRHL9Ek{Wy_y2Xv_{&IeqST z@e;^LW^oK^AF~cNVny+$7%1@=p$&4WcOx{|q&A2}m~-kS<9t{u)h{Ngz^x85aRqL5 z`253|EiTIN^jPDZW@oqLpe7WIWjpCP4W)WMJ*RJ zEpiu}<=?HivB!1%1rlR8TLM@%1n8=XZAV3(vm|qh-2Ayl*6bm~&&2a8-c|E%g?7~e z6N@KV+_=khCRl&aZ{y;KgM$85o4&-n1R(BhdSe{2X|Jf$oi0RUY128*t)a82<=h%Q zn=ZgTE19xH32mlNo(|KuYzfm>I~D7<;D>x*xha`DM!kS?;#UAyM*-_DmIL=<*9aiYVwFU zD5NfrCVYaC>#`stNeA6zq9F`4?>tXE^$Q~I$-tj=rV%Gk>d+vo1ldgUS1yXHUiEy} z(Sff}Khym1qR=BLz=lgs!MPWUQ!+_lf(&mB#SK;E0U(!WEO>BZ_=?S+zBdt2Tpoj_ zgT{NA4c)@o44jv%alyV?HiE|9C9#Z#O*3MS)p{16BKV^-Ym<|NwBv@VIqo5Tm70L| z)-RPRNBr9M&uP;SIZkQade%;c4ABlG+}@ts*6R8+`xDWr+~~|1`BU;Dj{Hje4&gV* zZ*}aJUq4=}ONZYe3HH&`;azep$MJPJgwoe=r2T@+9(Ciijn4T;(LHXxJ&8L7}Uzs`@S^xPYvzQ4la3uL} zj`O$G$G^@FG9F1p7WZLJFy+j>SWxQ-7UC~*Ed;wy;u%jTz5b1Vdh<^|G5#*jVaC4( zZ2UvO#wNxJBjX=b=$rM&_{eRhqP3uHSo3ahT#(qexlb-hc@sW|!;RDl!fU%0@nXh4 zCEo<7Is1DgCfB?DN1I7@4gQ=>0TqBqnW7=*;vg_^Z@*>=q5J)!MRL9& zaOOJ6Am^J3O7y=o^V=1ap4Ty^E=K6fI1=>2%$9_Um-f4b@b;Cdf=`_hM>39Du^*{9 z;H6HW&GauWnn!n@Mxao8y1o^+&|PIPfBqTzrsuELCo?~%4>lS2=>4~f+tP+Vqx~2Q ze(FeO@QIAGIPc7y=x&_Y-07_@kIbCNvt?u)QpO1Cq6IlwS`E8g7gq7|YuLt1uCPS6 z1lz`L#h%^9s*;V@(yS4qa(q%FChR z&nb?>$DdPThtrqZllWN<@oOC7&yEp)j(xN9&$X{V|2)23Zv#JH;LN-PKGgPw7AZ4- zt$nleFS4&czl(31CUEgm;LQ9Df)_jh%|I+6vPY=P9uh zc8xz0V05HBJx$xe&u|%H+F7<`;Az$Gd$jo!|<58 zGfo;NNxl7kffi^k2len(2rc3Whq(x%qv_NPMByZ@snM-mc;^YRWm`|l(N0o?nBgaR zjDFH#lw!p;e*W0Xt*7`n*7Lh3{x$f%jo)ke&0@z6!y4P)(F1)>s~7M*ira6|$91b- zwTW>#A;yJplxe)siz8!8#tZLLt>cJ`J7#-HnQbc3JJvCaV~zcz$m#7Tl74J$*b^7` zAbEGTy<3#~QdFnfs3s#zvXAyXM;HHUE+O)U8KN+h+R_Faws9C&V=n2O2tLWDhtw9$ zKt05+CF!C0q=($tT}Nw5CWg}H!H9tRhLIvT`jgKbDK4SL6iw&#?qXdL@CH33|S z#&P5JQUsI<-EVy0H{ z8FrG=m9Q~g@G(IkyG%uwK2ADydz{_a^w`1C5EULfc5Kc$jvt#hhbu%^4prso8;qo6 zy?8ryI7RCP6lQ2cLSdSJphGy*d;>L>dCv*%@0N1o#LXNvU|(EQyN{_I{Yk!2d>1P0Z}RnW zdIBQNiin@@(AO5`VWLw;#?&8~)HA^Ehm2{A@!!NCC~_SnMSIaPR_`uwPn-O@poGE` z<(BT0^>)extdw0Djf2wgmaQ?xpnTy`<9jM?+N{tUJlHTl%$L=3zdwSbxq?5@D1RJ$ zPNBS_LI)hlWQj?9I(!YocIv{h{mqqxPk8gI^hwXJR&4HzuHl=G#^k%Yz08i|^}_QQ zG12+_nP015?zeIv0!}6apHm!Y^1ag;e`KbZ+Q);!2LZY}v5^s=dYlruwsddh`(TX^ zOIOM1STA7!*FW#@_69AdN>LRFNq)Dj&$0o8xF>b%t*$Ot zBq&%pH7*ugc`wyefISetnjiY^Vt%Yl=ErH|aaz0nWBX@#)?KaIY2=v_deT<+Vl`K3 z9!8)p-AwVFS8Z`uJnD&!#;LiyL=s}&K z5xqpzChtWPe0kUCiL~a`u`PYZ*d`Ias)hjX?p7y_R(YxOsK*(q2PQhLwCHd?*hyZ- z2=2|VxTLQzGVK>uO!rks^COq~VVz)J=pKqrWbXT6P2PAB;$8K1c%vEYdboDVq#jBB zXDa{Lravpcv*q*#9Q*y_iQlYK@reb6L^pvNEfcLLi&Ap~p%Z>|gg&`wz4_+u$Pw>I zxzo`sAGbanOF3s*Il{l_k2?J9;a5L8UD@SYpU-lnas+r|3LCS;8-PYf6Wy~~S=+;= zq|PRvw6y~>X@+pDfE~l9*N=`PvA3mfmggzN570)sC^RmvWoDqYCC^c`LErFks8qGL z^#~wA#(ZX&VKq1HCFMUw!Wyk<*TNHNQzR*c+*!U6d&2MX{XIV&Fb~9G3V$lU&HT;* zww>P>_-(;I$#3>@5~B7WtpM3scpy;J!?zNPJ0)CRr{Rty2YHwUR>&=hk#Mx-enLvl zG!9bQwJsw+`m4svT7mi#kkUEOUnw)lwyvU%;UQG4#+f+AkS)!q(tMK$22w*sD+T&w z0Fof+=y(Mjq5y9C$0`0x*>?hlT>yNKQiRh)jt*7|bvb1apcGvJtTZWRf`(jlEe7tS zC}0a_xu4Tjt(d5G^o`g>*zT#1X&f!lV5ksa=uRhZ` zS5B9lqdHx#J_(e9{C3$|izY#{dZ7bs5+D@dbO-PSI8=aHERM=2MZsFHLQ5`Si~yyR zT}Kzt>#~U7rggKSu=)4W2GVrq*QUUgq)D+LTGX83KQfXaV%Gdw29#b;&fu zrZ^iB1vcPtJkYwY5g>ME6@z&AgohH=fsF!#25vp&D7u5i!z?fy&sW?y7m!jf;CCy( zJNTiyY$saMFxHSdi{C~3p3HA2zg_$waj7RlKHkDt#|(Gz`z1g4p%hQInbqb~`Ci1Y z!S4n96#t+3y@|N*=l3aock%l%KVHFOe`FT2WpPcnEu|%+omlEzeg%`2ZaN?5tTbM8 zEfy`LTH#hWp6~?PcoqRw0v_%HbB8Gbk92`CvzmZcbb)z+2{5Z2I@I^k;1wGxu7K|> z2^;PT``D7Ok*+Y+w>!@jU17T{jFt8P)gCVX-R6hUi2a{4zwmJ3A2Ro#=A}TAG*Ttu<#qe#pNGWb@EgqkvbKN0{4Y=Z)n=~6 zvz;z-_3^pZE8Cu}xz>$s&sn+FtJqZ}$iG3AqWMNzr2wKHeL&3`V< z-(@giZKo(fUv2ZDegfUkl#_>=643Lo-NNHQc<2#lWA*@Gby6-k-%rW0QGH zU*Qyb!Ma5(*g^c(^Q)eaZ#`0VJyEoghm=zJ)c&L;-M@gzrR|)xtmRveZTm4wi2reI{~q%{zU_Z0{uqc&J|Z;Z*m)PJs> zC3noXp135>)tx-s?d;-9T_@jq(vtYUpz9qDW|v)j|IpS`ia<5&hWJhJ(*W7b4+3WP zgdWdV7sD3#&5BjXx2|Z{Th>DJt*Gt4*8Eo{eqP&ZJ+S~V_8gmUJ+19IJl}eH+jCHm8CzJtioMGMg&tnc8yg>Fo?utcY$P)Ij9@(- z{?3_u>kuq2JVn%nv#XeHttFQmH0}5$bW8TLE&zU>=6m>H5v9%qFIFe-&wy!rROe33 zsl=^8!jvYaoAoa`u zV*ZxVEnAUzEUeG^W6xYCLl{P86fAn!n;$!7D@w=Sg)A>Dz zAF_wkE&O!S{C<9UJ9ysoA2?_4;E&gOHjUp|zP#3R+WyyB_;cHSEni;id2RoK`JbQo zt4*)YI`<&tzB);dard|+cV*{u5Wuryw;1`o|4x> zaOiRycJiVJfyzT|E$QmZQgx(Fsr~4yG_jwLzQbn==0eckvw5um7a2w>S>o==UyN zcf!+@-1lb4&|jXa{<6%N9U<=77FYI8?KPhwh4VT<^kzh}+Uw{+qI7r?2u%HD$?6;Z z7sBq=8`+ka&Fb56VC|D)n(J7~CKePD-i(|hyhW0{$E2fQlbJVno8SVa!`CWcx_K^% z7LP}{ zS{_b(T`h^eNLKabUc~J(3@2k~k~a}FE99?4?*)L|;1hTnhn&Wp`iuDEjDTCL|0bY0 z16I7P`dLfyZc=DpwGsQ@W)EA2z_&v#d-{NG5R{d?ajo+CxMX+B@tvO>Qq@s7;1`kzNDvD zwxy@(Cf6*nMf)BmZ)bEzUtzvCKSu}yU#(zc)y0Z_LYNnwNJZ`Fp*c%~H#e!(pTyXl zuvz0rm*J+NwKhH2FoWhTkxTrBjO%{uLFB|_6KQGv8}r=A$D3@zKZYUEJc;m$1%-sK z6M?WiPx^a#ihP9^k+${ki}Sm*lb=FDS|`r$U%(Ms*p1_3J9#R^;duShx~`+q+Op|z z2OjH_Lg z;xO~ww*x;tyzq98k6_%Gf~Ja|UjGA$+nd+Y&iZ~p--FU#^C5J-Ikw6{{-UQ(?_M9)GetT=^QH5-GiV@sQF?tG7qoXNq;cX;t+(c!=Cjo1`Z!jU&5AQ%H z>b-Dt`-iq6fb**};VEDfo~rS>C}6au%q%og=xF#<4H{Vbq7LQ0PjToG*RtUp;Hm3d zZzpzrO;e$yqIez6ZHr-BB_7|xwOy0MLx_p|gVC(-7uhuiw_>TnJqTl$Q+*({} zrSNppEhy5IJ94f0jUN$Qgo_}=q8f&Nc&192Bvtr9#tjiZ!BSS^yhE0H_oXNIAzKgs zg1f}!B!cR>T(}DFq(3^cy7^gLW>>FyR#Kv+VNmtJFEese%P&u9o5BBAq>i}7xi#Lz zdpwH%u)4r?^h`lx4kAB4I-9)M&*w~6qC1Y4rao%&4&mHI#w+)P=K$!(ezQ-KIB=TE{G>+0XZOU~jLd zeufu~(r$y{U)1Kudc0p%r3#!+(2RrO`Q$C`jfW#~@i?@CbK$j?#8yxObHm}#FvOJs zy^{KV)K8@@q0Hv<7#31FcqiZachZlU9XcuIVI?efSVnfrH2*Gw2K#aw^|;4yZ}V;t z?MpXOJ2>S3Pm*G{C&)CP!z`buL_73pt)L3gvvG##*!z}&Kc{S>x8slA58-kC);9$F zA;9LjBK6ytzv;Q}0jymd$GB@z40}96@1eNRy@-b6x5@7&lkpx<+$ESTAJOZ{ZfU_B z=%^HXf4$L5CDPH`sl`M+GdWltiV#gO&Ezg{)PG5+qkcyroS5e8gpWUqVw#(vO%rkM zTIV9_;z!&%^HFTI%8GT(MSmqlisR{bQxW&v%Os_`DBa1asNaM?MKHtp;`70&`4GCT zoa3FD?~rz)J~r8a!zZaa%d{7SqUj#k{j@kh?^kwb{7q&2Yk**DDf7a%z@Le6X%j}z zQCKB0yWDH@dP}TNz`bZVCe1#zc@UUF}>$Jfu^e>r;N7U z!_|J=7Xc3{?%48pit|+*SFCI6f`KT@BDzC*T5eut!*hkBKRv{CYCjHdic5%mVv_ne z7SGAT1}R10<53l_Tn@?`ZkE4nFCWD@MJU=B=G=ppPLTP_BZXijdOcZ1pi!(}=H^0+ zY0yP#$}55u_OOx*T|!9W4E_!kSz%P9UDBgyfXQIFNsxnO+@;`BaNKDouid;+_cCqt zRpJqAQ_-ZOXT-x^!87)X&?CEJ-MXl4e-n6NB+E~%fLc=CCPuH|Q zN`AI~xf92J|20}0pxo?V6v9C?;*XF&z5ciaXT#~JKxjUCH285W@fbcltQEcieq^%H znk6iP@hcWu>`#i=E{sky-+x0d_JV1=qOyU+qEe>%*h1?FoLxz{Ddat88mX!^~R}@-D18=>DYDL_>p#fBr zy^{%2PAouP-=Ji}sLJL>aUv@vD72>A$>Ne|9v3wSzn4$Fl@5J0eX*CN-qp16j1)#L z2M0&4D*>9QblQMh`FrW|mBz~N84MpsRtrL|c`0qW@LstdE7$vQ?Oof>@D}=Z?2u3+ zcj5hugWlN{^nt}eAL|PGkHtY>=?ePb;-KGl1$}67Q1NLUG(NmI=#Z|U|6CMgJC?@D zgh$V#x{lQLHeO{3qH(pre;pvfo0cZ{bytErNHEs#ns>O)p%T zZl~+piGZ%cy#fzjoJ=cC6lDB4%G zzqsatT~n zbiNj^Cz9?AE%(j7hAx7SJ6z2pPEQ9WJN^K# zD^{TP;9yyKxy;WT87w#RGya_Nf%|z93F;$>*Pm05MrVq;J(-ZU6`AEw$B$JvBpK@@ zModxd&^TpzaYp5(8G)J|KW*iHJ?Jc)tp!UCF0wuK{j8PgK7>ceSFW!%}S_MN9l$ym|BgKuiTre2^lJQ=yBsgf4ZFnJV z8B{i0qfaiV*eh`Z!_k$bu0Oa9Da0Ysv&9;_SoT(0;?|34iQC>ydny@Bl!v2+p`n(R zIj%@g%<<9Fa(wip9G@rgiJC-=Yun-OM`l;CNDhoR27g6Rs8!%4_o%SJ8CVqS!R@33 zy4yi9-(ygwW^vLEE(yEEg~hECJ&myHmB3%;;E%(3J5F(gr_j8nE+uB*32ngg$_^Wg3*!b(drSw zpdID4&>N0*6Ib8!7YIZG=h8w9&))Mr;IxhQGaK)M>1D8ubZ=?mH06~8D?=SnuAG^2 zxETTM4izDct|lK_=V!5NrUEsu;8j<-xdo@n+*<9=ea^yjF|H@OZ?Flf_+dJ3R+ZD9s)rqxrZt zSj+y(57wHN!S3=ZQ-mbcc4-F%2Qg3%GU9~cMdR{_B9&C4*e>Vb;NT6n)2qS3x#>c1 zaQIB{tM;VJhXjX|S1p<$h#^wJA%o#O*lqZXc|?nI!67CaDo+F)p-4Kk@nH;^V8Y}> z<;h@jFgyV+eZ!4Pk_{%Kmg3la%h(PnIV>QkEwtRzd?vA?1^!r?XW^KvJ_4-&h%mT( zXmDuljD+&n*<)*@J#cRZhlac8pjl~P1&}Y%Y(qMH7S&x+&-;YusvTn0%4>o(8-6AK znph@w3>1CCJ%YsJbAhu~+k|d-qs807#-^tn24QV=5QY`9uR)w_kqE;VfCTMtyUI1; z2`c-r5LM6O=*)_^4q}gk!@_G+dojG#;W&UBKMGhWGW~2qWAIHJs@Px+23yZc&VA!C zyIsnk-L<{OYFiy|cu&X7kgI{siXq0mGaGGJF@ja~a^oW6h*;9^#U@)4ZfN|YW?mJ} zj9`5~DAdosKMAXj$Mh?vTWd({*P3C=Zd8V4f?Co=?bbmI1Wr4v70rQIfj%Uz!9EP9b z=zltM5pA7V$i+pF}UB z{PQq+;vAe)=2FY4=VQT-H`?Yu#@x`Clo=-&UWVDk=((U}uJ+akOe&@ zhFVl-H7hB=Os>TRkfZU2w=o_|-Mk^XCzfkmheC|W4Ycg|0)2gW7Urco+6_*fAn*v_ z^r(b_syrllcH#AJ+jul{PE)L&=i<(FG|80nyS$?pPyk|{PL%7r zqr6a|l%q3gwwS5MF?TbywPwC+h)rTPd@<3-#;wgq-}tVZb{p~y#BIv18L_R3SUNC8G&Ol|DEi3ge%GMfpP(- z82tx|k%Uh*Udf{AbVsDOa1do9+Y8d(^_Lx<Oh*;Yf$ClFP>7^B60SXB>JFt6dR8 z=+SR=;+js^j~g3`Q%27wXgFi380dH=c+t|bmwcm-p^L>lvTP68U!YHMnDQGLTb^V> z1&hluh2+Mm7yUuy42>=84sQoy+O}9bd2I0hf!tjsVQ=1*UvZzr*H7tJHuN&cSWqN?WBh$R|GPYux6>n_S3~!V<{AmqKxSZPC6b~{s#itTK55#NA zqmr?k&w_-voWY7tAlgbjLH%P)T-r{Zj49yuHpflTI$D(r$X!AYo^Q~$xyA!C`pQ($ zZ{ZVbIV9=VLV=`5XCj5P?O1Hw<#bn2H(j`Yr!!8ZsXFT|ad7-+baVW6S%| zp_Ex)9X|t+!|wPNlh^g;D}J~cUUg5k7yx!aF@eK+qm302!{EE4kkosU=j9b|{dZ?y zMlHD_=fnuL&F*$wEWFY3oRpA@O!rW`Rb88Mty;jr6+KLI<|{#IPnFAbI@^krFu|d> zdPp9-ti>%Z41tf1yxfgt<+dm2WgKwfsw?gK&nL&Jhfg+s3x)8taiUEIhbzP3VWgU< zmnL&~hr>hhHQus@6Ox}$y*}Ue6N!|p0BE9Kp3Iq{hZt&|Sk5&5CZ0Z1Xu!0hY5d>x zn91+IfMdUZE1l519!w_|6cQqkuZCm#^L_FRpQJxKi4*tJhS$=LtIf9C1m{0jrLIIQ z-Hl6N0`LT{Zx~+wWP?jv#2jga_FaLk0Ydgnj5cy51*|mW+z@E(U5w#v!tkwzp+dq< zi!j_Xv8oX$kMP?Gs%`YnaOf>+6jSIzaqoU86_#S-`loz;pQ%KFK1hyCkUpNCy0s7QN?uv z`+6(I53dD_Aj<>}uLnBy&Am^9Mw?K#@whW3XOG6Mh~deukS#Pv9I~Lyp#^Usp9Kws zsr6~8!KU3+`)ku0hnOVOOgdm+!lk$^j z(^H6UAcveg<#H!^@G`~JO9;H&)+eJ&i3HneeQsFG>eV^4#MF4v3a(`bxo?XxX44|- zfOD-c(VEpBUjGQ!v-xUn)ET+gXwdeip%QHZ5R~fa6;*GH^wCSyt&jy%KZ(uMwM86G zvRylbVCkMDjCM!2q+1+9CLK9R=P>oaP?vM`Qc5??6C0W<7g3&nLh&R*52v`iCm{|W zr>kQ+&RaxSbv8Qw;GiGM*B|tC=y>dYBnSN5m^HZEyrYp2_(G-iGH~02@kr;Wjwzy} zw&rRlzRo2@KcTuY&rx^(7OZ10i^5D?8({q z-SVPtHv*lyeD71*)a`oaQTQsL3z}!l-*oCl47w*Vf5*Rz<2oH*Eqs}GA4`NRuNA?{biMlPa{ zQ-k|?7eHr4^S=~ePJbh;dHIv*c>NlWBeIV14k%kB*Vtp&!N$A8OG7KN}{S; zhzuBK#R3kELp*1rp=|vU2P8%s)O|t8d?s5bdeLsNa8M#!`uXS{;iwmezJ-HP3FxDA zR9pj7bjnA6L1iq+W8I+(qs09ou-kl|PO^G~oV^$W?wBNTP0%@&>z&m=MS1IRH6&Ee zU3^6E$c`SQK~?JwmX8&u*YbDS%(kG{eRz3D7c~p6V$veEUfV)^xxJU9{7J zWtH+kwE}$`;Q54L;N_NPPcQ%lLjg+h)_+g5(Xs&*JB7QA+g=qW;wT67q{#)1+UL9e0yTU^-97Dhsy zEe+2sQ!ETQxRf0GMXzlqJ|zK1uU`Zs#i<0v8NQ)A!}=tFXAtO?@;c&n8@vu^gSVO) zR58+fqkyAMt+w zp0vf$J|CSF`{(4PYr2@R&vlrw!H|;#PB|+JUuC$us1q%@>)k2tK2VCUwNv!F6uFi_ zwc{Um zG#7#fYG!Y>&DACuaCjK2Gq`BdgxgzBqAh$2Z}TQb$im&Y!Z$PKrzTrM#$6OJD$2?* zcMl*lLSYU7`vl+gL_e6Z15TF?m(I!X9pKfatM7zo8@ewbdiCN)+U96U~J|(gN1duYFL#*}R_qv$g?wxGb zcCvZv;F1@<#Rh|xV^%?j0gQ|_N5#0S#>4aQ_z$H;^voR%W?`%-yq+QMi`8Ry1Z5~% zoa8Y(q3{(iXH^_5?dzS))liyOz4wng+W{gVx;x<0e((sU3&^MEAV%SbG&Tv7Octt~ zifG@)Muw9ObS@c~IH7ZCqc`8UNTD$5#rjG4##L?4(fLNJ?OB&^>~4Dw$v0lt_Kf8l zZ)tl5sw2p#Z)Ub)nK8U2{=QaUKYSXay_AbD3!Kx^#Lk5S0D1J{on#RoE82CsmL|K; ze)Dytt&ccwE<{RM+#%X9(HFg*5S|8(TB@-T1ngmPpVA6-TKe)kB)VpvR;Jd^$lhcg zKgF@%{|I?B_mFa8K_TIr*uz_HNfoS04R7uTgmUWyvu1L+kr}CPrheJ@DRuC6ioooz zJb~`$Oy9KIn)WqzV$>^br>E7d>G<2kX4`!S2rLMfsfVX+?Hip&9%hRm*P(`|)`&jb z=%EQne`Xw`kR8Z6MuAyrHm06RzrTP!|0v%-^V^Oa>Y7?ky8q!@!Y?^}AMUgGZsT_o zzpwGr*??HAukuS^vn3K{V#5<@Ga}WS?&82k^A~O@<(aG~ZE02wFrQqs+?HFC`JZ3^ zlT5+cu1K4?s1hfE9WE~CR1J~{vJ~}qB4k|EJ7%creQ7h+v`a^0Rcv?3AeCKfcR5m) zvNR&vhRD#=t~1p`W@3XlvNL5*pSB^gPi3#3#t_dq1#eDly8G*Ljvm284zFhvw<9V_ z9QY^#6SxCa!jI9_i($hDfQ=jgwxS!hcnpjUOy|>PovKO~$b3~1G>!Wg&+VJ7oVe5_ zDa!{+X&VdeW_drhU57^R)u}7H2Hz4@0K1=c21Dkl8lz@T<86#4jX)^_HTcawfuR;R zpEsxdh&QLrMRbWU_QU7Uj;^JBTTc4!`P%~|VC?EX*0m&vSB6g7oZZ>!yXTGvNc(8g zB0f4`+I;j~YTb9wa~>e=#iZ2{?2Z!SN3!_(Dm(-7AknWMhUXA@SWD_BRv(L0s)H93 zR|{(2J%^HckUcO0+DTa?wqU%$_5hLm7)|MyG>)cQSbwjDIEFNT(QOqQSE;vlZ4f8b zflj*CH;tPpVx68a=~&&{KiX_i?!-v+NIoIs-&r$z7Y|bu+gpXWmN=6STuq#Y z_>Qg}natMkc0szbeg(n{n>gC3IpaBIRbm~|&`Qbgtsbj44@Mrjg-6WW@d|eJrJPCA z$1*-KgJUZ39PSr}xAs~3X;HLZSnlVjqv@lM* zd@fj@P6gtGcP7sGD7klE5jMdOA>+ln^JL=Aqw}eQrnuk5zqpXWq!7tTt^$rAlyf*q zl69=M%x|$6#QNyMc5Hn8&pl&%IznsX6>CRv(NBjA(N!dv^jn|eQ;ALm;o$A#V);MF$WXm)9kU?c%$IA6v*CbA?N~o=9ds%=B_Af)M)YBzIal0(*W%663|`S3tDwe(>T(=q z4lb^X!$18`ak%h1#XUCJPd45URSXfl6c^M%*v&OQEZrGOVL$DK_4q$1_zF9gb^Q>& zky)}seU7>&)?p{TK^|41_ql0n#20SUypr|3o+ww*E@MX&({m zHP%@sPDK+$U*YoK(6LlJ=yN&j1cBd@)ku8!SBQ`Bh6@o_ri;!O{yWP>^f3-> z%Kg>DQ4s&QoZLR+9m3_|FNMj9LYh}oEsZs?9dFSn`-X{b;=xZLN$Y1#=#O#B)KO%0 z8#Zk(H%pV3m3Xr8B|6uk(HNPN)5M$41sl8I-FzE$y*jyqzxkOY(>T^WZ4cuzD%|L#F*ga;eJF@T&@ql4f>^hGq}EGuETbWBKXkRSEbrJ zX|XH&y~_Ud{=oT$w=O7)eebdPFB(n!)Y@ZH%MPLpl?7Xxy1KipKFZ>C`R`Z(>%H*q zf32kVQBqRQ*v8bd@wl7^tkZYfb-L$YE9rsjB-**C{d%cWKK!2Lzb@SOua)zGMQyiw zHnnUG`CrrgKlJUwA8FlTYvZwr@CxlM{qRTRKk4X|mqI{lxWvJ=a`<-A(WjWpX}$yJ zd6g+kfjK`-weX$%;Vrye_%0mHce@zgAZBQcesgOqH7EKvkV5I@XB1VhG!A0yd5sJB z8~%i`*L)ADu4V!Mv4Xwa)h6%Bm>sd5N-L?6CC#Jsrbz7g$XE7R?&gbiyuhnHI#a*6 zrTS5noAD39MiDues)vxbCOfwCG}Y6?c{kCOXDv6}ch9THg*Z0Vzl@4vPxn+$TSdP; zJe9P`P}*bj8{S1~uJeaq=lkvInaF+EaHbG$*K^}yPOCZm&|xbPj;Esg0b2r!HFsGbMl|$C9CiUawIK9 zJgsT$|6D&HY72iw1iE1h9gyzohVO#wl5ViHtc6w<{os;zb%XLgfpGovx~f)c>>_t( zs6CU6HN+9&4=LN8+xjMsZ)f7>u$m%^{2TpeLP~Q0xHkcqgJ+GL-Hz}#q()QccYGwn z+@C}<2Y~w$fH_{8SbsNx<(@WX;U8T#|Ep}Mt7q3Ve#olAAac~)Z~j?mxhQ$ZH%;_j zm^1cg#Jddq8TA$%1QqQtBGApL&$W+jg8Rx{cgf8TEsp6X^eJN*Z z`SqXY!Ya!UFT?t#N5X^%{`+BbM+_gBf(k8Urb$yF|A+rR@zS8onhxFTBE|SH+pL$(Gy;@L# z%(9djMcnlcY7@Q}B8_dG|A45BM!!NwQl|M@9?@W8a~ylKycf+MCqrucKGM{(1$el} zc89dUHse?P=q{3sY_*q6%$Av}w;$hFJy(h!vj6G~I(RHJz8P_tC}*ShlQmEKX7&~H zl8du1DBjIp+s)O(Q#;@6_PgT2-~G?mNoHzV=_PfN|3G!xW-;RsS0`&86YTz9uFq9( zboEK}bf0Zw?f4@SM(%Tn>uz2trp~+ncmJNwF8&&0WZum)Iqeb`lPNb6L|^aUh~miZ9{-odl2$3 z2~c7=3LmpAxpm?RGl$|4VL~0nIl>%SyHoraFu^%n(bRCe%5t^6#^3lf4svDmD=d-D zXkIq;+-xfKTG zVZ*(U{(6Tk*k$mM*~GD9Sc1@GiL&b)vM^Nn#`dT>a3bLxoAAJ=o#O$mmuZ? z(ds$<-B9r~I!wro!kQ3u0d}5=0!Z0uY7e1ZaRXdJFy#8e+ffkam7r34CUK-wWRT_T@r0cFqs8ws4Mqe<8EI6#^I^7wYr-=670ho zr|kd)huM?eaZv(2nC@vqdlD#TmI>7O8Le|CvL5LlHY13}`#ov*$jMLWB}!B|29zWE zg#+q*!GLl^zcHZJH}PyWzR!ckr=wmbaj}XTY9Ef0my13CH{m-W(@*yy1wi0$#||++ zkxPxPP56m)>J;*MzUA{D;)$x`esn#(bsJ*3o)VAChaUvY=R zJGgHK{zA*QV)^p?NjQ9wj2;3UO~#Bu%iI8AW<{81L%YiTp5mBnt% zbUr;ZjwnqSE3jv(m4#fCr9Z-5)|_Lt1>!g;x`S4&SN+BvaOPu2M&s0QqTWC0H}-V^ zCCdQ5@FPTy^%3J!A~Z3i-6d^?=slp@L^Yt;+uEoC^C~bO7w9$bByqW5L0)*3XjUQm zC@_QMqaTraG302niXm~KdB>?&F7L~Eb_ZAs8ul1dJ+)HMdz&1n&kq8-NU+tw-F1ELwUEs`$$nL=bJQsxeWGk>R&5* z(I@y;E-}JugB8;~lw^l^FoC;e`r4GKAlq#<qQ@mUqzjN!(vs z+)u@Ed1Y^jOh|Dr?m8$L3|BEm+|ciar@P?Tx^>Z*5YlaVEN!%lHrk6I+#TPz*^Tyd zYG-m$(lrcZy5M6e_tPN6*yYtOX##u(AH?xs=3#H=f-iTG^1C#+Vw=*+9a&e_o(j26 zG;71_DLHM|kerFyjW+;rrkSJbU?YmU#vWde3+1Kc-c>9_%H?|R`5n=T@M0p=zvc+$ z*V}TW1Lo6L7#!p_m+o&R`4oEZdGo)VkJJxzF|0c$t_St*yYyefN23{xmgJLl^05Qg z%gM)%)LF^Fsp<3FTHvLgl$w5Z;(k|Z`n!qyuc_(7+`Z_xNyxgIn#*9Qv$rokZE(tD zj?PJpHN=4K`>9XUD%aCb-q^8jfM;r#cK25OVZO-jY9qUyTXJ!`dWESr?Y+k$juX+f zTP40w7f02BeLLFL3vs3{QN)-hlFZK&QoqNIz$dm3@~o#A z^~i8J*Ge54zrS!hOXXU_V$B0~LwL|)d~Ps&elL8!(8lM#9}u6tUHDw~&){?LKf>pb z#rSYfi}v}W@cCjJpD#TiK40#_hu0IkCA|l3pNW5j&!odgX9NRmkzNWu_N;iZKT|s` zTdV2HzR3n_YkkxWdueHj7EG3B@9{P;`G2K*nb$|zI7b9^Yz%Q%?|jd;3tfqHWzt3Y z|6GRKqG3GbF*)0m**>iHFu(C8?v=VSTmS;h>Y;_ox?bNdX2uxi3${h;;5O;*K)XHt zUUxm!#jRfEb)G%1UDREI3n*tQS~+h3N<{ZcK_=?-CdM#cSv2a zygx^S)}G+Gy{b5=>O*wd$TmdCGoi(^HR4mpI_D0QFE2v?e};$M7w!C zK>IrhiM|yN`)uu;Y;Ap}-oMB&czf`-Pvfno2N?W_7>bJ;4`D=STfg`wv1A$U+AjQo z%dmT5JZLEv>of&dF~izeER}@(W2|^z2qIEDYw_rn5JU6h-~-H$-6n={b#ik9_3p1f z@Mz6bs}jb4jJM>l;8L{3Ww{h{JPx*aw4xr;%EMJwqOXG3^{5(@{eAu<+PM2r9^?ks zqVb!x>$@feau_AnO?4ywl?NCJjxMHBuj?6lPmhmsSI^Vv5O&zfK}F3-WJ0&lrs)dh z=(yevmK0TcAJIzo{Ha%nb~heR*V&O86zF)grx@gw=$(wHJQ}@%cy-U8@>f|bSAHhd;(Q0&x&iDY zRVn%#?oG2ec93D4zB=E9%#!D9suNvh^%c6yN*AiRf-8)GTiQs}iiI_XLSOZwf@y&} zUbB8qq2VNPPvyj?euCfiL_E9b=ObgZ*ag!g=&O$T(JLeo9p;VOWFfH(;s|LI_HL+B zpXS#X5an#zj-+%Y4;uA#Kzt-Zw1^XBzy70wH76wYE<#5y+|v95EVNWy3-K6nA;VkC z`Pn;J<;W=?eM6bU?nJK^Is-wjaojlxot%B8V)@bTB9eqJ64pGQYGD z#Ur_I!o7iB!@WI`#zwcHfoetEerh|P8O6^v9t?E=K=7ipGTSLWOsS00t#2l+7)Yle(1QP??q)SXM>=xz>Zt8 zM2OIdD`RE0oEe6xjO1X-CVveY&*tP zbLiGV!5(XH?=yJLvYOI+-Imq7=*2=siXNacJ;YGWZ#VaUSm%=z@ex;nbw80r3=PI=y-lz(Em(>3L3Z}i|3Z(7ab;DbkD9+h= z@DTem^E@nZxTqwA#hr2L(9lkN4s%V137KyaVWP~cRtbu(<)E!PxU#Dn7}SlEnu$&X zX0=0It1*ecl_VWhQZ*V$HP0+5h1*r$r@O1XJZ#aq%4@p2Jtt^C_@AlCA0&J9{i(@A z+#cQI)%oxViTj$KgKtaRdwZ^Xl)Kj|9&t5e_f?GD=IOLF59`gB;Y9p7{k0eL(oM9C z{P_Wcy1xpGe$OFp^auX~rWh1V-v3^yb>9(0zs4VHn*LVoM7vM9a7(U`On(e@>3m znIUC_F|`@&%=>eLhLf}QdPWH)MtRnLAo@(I?$R~xUU=~El?w(IM}ANJQN(c~N)ao~%!xQQs0 zst3`%B1&|xiA%cU=lkyYoErc}oxaNCrsX@-DQ!pf#h99}OGl?_T{{e_X9Z}}d3c}m z@bVtMskG5Ne>gmXwvY^0_>xeJ+CP)9k|fk|uOro^P^?-yTt|)*bp$nLh&Ps(Dc@LL zW)V=NY`67H>hQ<7c`bf>H*o!naq9Q%I1PD|jvv9aUzh^b7wC}=YRec58a?ls39@in?Kf-1SsxQ!^1#PTtJ-}L+O+6cWvO8G|o!$b>`6n3xj%Otg zVO;Xu<~)~ceutepeQr!BUVGjRqAtb>uf6)_MPfGPl_d%yi^r@zhyf!8GrAS#viVm2 zXal!4Z@gk54toROg0YR!cNp5SXhSL1e=Sc=#tg3TI{aUZV9wr)A%gLJL};^m?Fjb% zoEI63_o!U+7zS54;~A&t*t4I)Ng@uJK*jcFa!Mgad>hxwxWTK7maZ}EQ8^<0oJjRA zF^aSMD>t{7C}f(Rv2(R2dfSbagRf^@69boIFpL`$Yp|0!$F8|$WU{4aX`YH|4|!KQCkOBADDiN)Q)&dD0G&W*D;r0uXM;H@zoeV0yj zX5Ng~S0>S~$zuImgThpr7uU}vmd%Ys_p{iu{#Zw|bk50vRO&VD@oCTR#ZA&|kXO-* zu27cZNJ=myJ;spm$he?+Vr~=?#*p-M7!s&XhapMcAw47&p5^AR)>&N?xk=?lC6@Wx zQ@rictC%po2eQ@7v{~A$Q&7pt@icyVLBg}))8~YEg&18oXwazEpb=LDW7Qcn>0I0r zn)!?$(N4!?dPdBWIxhnmR{iK+!lV8C!Tndc|K{B7_piD*ML4z9uw$aix->7n3r^B9 z;jwBOV;3`yUHm3k!K-x$GAHxma~)yKVKYpmz_{KnMiMTr3cqHrf4Pw^Sso|J7Fpxg zcdSy*@s_^hE%j(Atlbyd^Cpe$0~-w11U(o%^HS?l;a1ltUh3nisb3}TLwaT}>Wq=w z86!7aUrE5%Jd!_Zql5WIhwumYTDcE$?lHN?<;H>lpQL*6b ze`i&TBf6?dNSJpu>*>5z!3aA*%|w)0Fx=Yw@YIply87rWPIns4HhpcaF>!Yn*%P>t zpck{^_V=45Jg%*r4GY!(7OVf^w6^VqT%DF%!@DPpjZdAZdy{C9diMT>XOCfc-F32O zqb9s)Bl$#|_=Ed+xi>ragXBKRxsR3mIOje=?h~DRR_+b_VQ#MDgFwuSW&}KvKN3hu z=i`)24Wk`ES*cN>cl33zBxSsI)xS&;nLNtzci8O8S>3QMKYhy(I0g>%J zIB>bLeU#!wXDH9(2<)q##bYtYRpgtg zetLi9^sXY$IzW+3CV`;@R-}L6BD=uIZvAa&g=1QR@4*{R1}o7u^7OfJQ&%pKJ8)PWU@jf9KzA?RHszzqRRvc8C8fWidHj zJCCGh;&-FH)ZV-COG#=9d@QowCq#2=`}20qb7{&>dJd(pAD zjoYRxPE_FimTW=)xh2~(mLvM14f@rz|BvE9Z#+tdnPerkIZ ztFER)vMCi_n$&MTHT6d47L9t_|AqQ>kr%7qKS5p=)vj{C+C|;fl7M7swc7QXd~{N; zxzxe8B=yRs9>)CGL%+33+5vL2?Klp^^>lr!7l3+1y2!62%Q)J1iDp7JEaQIq$+C=V14oB0F@s{9 zNx>fb6dO)g^0610WY}qP_))rq6TIS#x0S2^kW7U#^~~k^}7OH_m10tHuZ*YIsG~> z751z-)!l8?J-ZR&3?lV)$70D{^&FB@cdVkjA@3y48`MXAaUcDJ0!@CIOcHmL?aW|j^SyBDs4nQD|3qsIZI&~O&vxJ4GpiSNfxXj&Rv;U*JOl4^i3tpW zT=YS52;WQVa7QNknQEUgT*}#f#R4jp@vV?-o4JzwX@sfcog)Uc2AIVNh{F zw_Z9nAs66^GR>cp@q+HTIG1jN#BXh91pI}9rHj}2fJUaY=fYnC8{XfuAf2-=({A?? zVeE+LK?s8vqyx5hf{w8}>I*u&+bfZVv(>wLp<|I(LXxhazpdy5NnFxA^Z#M(O8}!N zvi^IzXL^oILM9U?Ash){u$@c-B!~gI5ftQ54h^Dm1_*{U_9QBXj1d(@5f$$nQBf4| zST9`9)pZq*#rs0U8_)H=h5zrp>h7r-!1eooADZdvU%h%&_3G$4UcDmKk+hm{%p3xs zovKChKa@5S7EB9`#5cU17JuT8qzxvPYkZV~4^O~Nt6#hr1vj0(;Nv5(0L-Sp*@gny z-lTnOm~T*SLR}ELxv(dN3#nDzI1G{G&><RN3W6re*DE92c&)`4c- zaICl&h^YyNc+?TorbXPQrUevi#SIbkJoRXytq`ox;m`z44uuvzJH;{(&cf3qS!SkT zW+#-cX)tT9M`N!EOGsRcpR1;q`&6-XMu%x&N5@(26Jy&7^i}jvW5Y~r?-25$OSBTk zzF3fNnh%*4yc!6CUGt~G$Tu_CwIUc@%eC*=$Tu?>*-J!hbZghXgOP7$Ffyr#V03NR zzJrl(W-zk0h+uT3Fq=>$xoJuYGFylGkQ|R%f=dG0I-)j80)vYD1o$MsMy)mO=cPlU z;EUCgCsGfqw=zIip_%g}fG$Nd7f1kIk7h2EfD;I4#7}&ZsM@MvH5U*L+i?1zTdCYa z{aXyNhER`H<5A3vn^&ThhEF3f;5QyXxg{yAr$T-vQ;c(Q@DRJo7VD%k4jHji@<(!ZW#>=i?8eTY$yv(IU&vWTPFP{XDy-I4LN8kK3AC!V z&P+ogrEW*EoMHaTUdK6|o9zWdZ&<=-uj8}4wxzx3Oe*(*b|_eJbV5~Sd2LU7O~~?k zH|;ee%WFs43tfIjTr>i(Q#dor3-%x#FB~<@2n9=Tj@PU#FBpe&ykO8FBh*J}ukl%4 zAE&*1Sze!}y{2b*!D^fnS8kTqCuuKIrk2IKGwp?v&hX-46O~t64-|O(cwbSC&szw) z2x==;7--)922bwmy-E>k8Lbt7NTth#1x0zt{2erW?E}>s&3qXZ2tiOcy~-dw`_sAU zR;rd5LYaSnm zbHZo$)K*cE+3uBb9Q8KqAOWz$umJ2vV1XJ6HbtuAD&;k-TI>48c;MQV( z#|9<8``G-bID|{>tv~W~EBX*0ujOJ#?rel6g{>~6nX2<=Ney}hcV2&Ul})#kU?@LW zQ&-l5hl;HDjAM|DL`>Cu#!R?KjRk4cjaigBwY58POun|nyyiQQmd}_@zOaIau4usH zNRoZ^CDDA+wOiLBEpd z`XcxH`FTY>AdZS-dcdctVc!|K^`zu2s2nK7 z?;*!T42ED?X$)36sBW0uF_5Sz)Xe=!B)HO+9p*U*Vpo!ZqWCinrQ&1}D6n2mN^W9q z%JT}@l1=r?>12wr)D0-a+fXMo9z0TbA*uA9DP;SuA2fz{-JW&c|Uij|O;j=^mCNSAvJRpOu^3BPYkfBqN zPO8Iy!}E5k!>#m1A@O_Az(m{TI*Y4f*vGB7+fi|;z*W$pz=fzCJE4^wAbYZpj@^AE zq#~gDv6&B7Sj%-xiFOu8QWH@@sqvW!Q^gW9gusyn?b6oR$WTBu!T_&bN-@iQz&u33 zeGHCiDjPUI^jW0*Xp|qHj~b*n{f0qoN58ng5hmfNpYbPO!VJY}rN}Xdb#wf#onx<) zW1&k4qk2@`kPUu6(SC36RnAjIOss^7+E1zD#eULu;3Jf**V>cxTCakB3$DXM6fm7H z_cv)>RVe$tYNsjUBLTPxA=OBj_@o-Dre_v57hIxA?K-DItN5Yn^~H7V`>8(7$G4vuXLu%MW%!H zW`eN(BsVV{e<5wQh>mQ(jHWCplnR5snWrsvyNmW?vq4;NAH_ZM{)&UKX9VHGd@}1= zrAUO^6A$2Jc7&+7fMRfZujJGywWH1>+`&Fw^cQ+wSX{5a$ z(5;6!A9|}dO*0LnJCe+1m#Ip3)C-RJO)AXl1V7I?{Oo$rwShpWmA1phPmuc}axIRv^Pn zm7=tlMh?d3S7DUxIwkhAP5?Du^^z#IPA2zL)O^BaD=?rD{O5KPw1cc`UD`g@X4k!+ z^^EH-wqAAImEkh1Fxx!J91BE61};z46ZxE;GTITE$+1Xc{eUOna0Yj*IO)@RTME1A4}`jo0NcU4@U}gI7#HHGFTcB**i^Gh(E=O zoQ}1yuJ}pnDADqm>8D4L8NkB`;)hQ9m?1dK9QyefNq{AdFiaHSZZdJiGvc*+f`hF* z+X1h=-Pd&HJ$B}|_v^L2?^Xz0j3CW_pa|$55Hk$^5q}v>!Yehd$ed89(_+0dtaj|K zhLI)w+v&mad2KGdmZuIxkyjSld9Lvp3nBTUc0w78&tr;2j&%@ameuK0E{ynFss0r9 zfYLE6o649iEWh;}NGrnDEA;SLZ{g8Sq)Z>LGEP7g>I_xP2~~yG2k$`Ju|5W&Z9Ch# zzYy+!LTGe0Pq&n1?rSV=dFky0G!#+zp|p){=p*+?lTye;`V}E->1{FM&#*bx3Hqnx zaUwhxS2zrBFy3s=Uk`Mj*?X%UoQc~vd@hPPAdpGe}2YRU89EEy-4=c_xnrpz>$U|=0 zW+HtRQ#q<|nS#{t?WDOCp+GQ(CBR3}+G1)j1`F!uqj2NXR{c>Rot8irD|u;_r{P$L zxCPNCJ5b}u$B*7hQIdQ`-uaAY2(K9HsC-Y}-$>r#0w^**WvnAH;QTI+fH6c6)B6oT zX)@3WlL3|2e`OkXCh%S%#vDH8+W~8`slkYRRYOS~XEVgFxC+vSjZ=|D&D=pH8$nuQ zxTvy_@r-Y2$eI36t@eU03OIB#k~Z1Yh#;MUm;k>Dmtx8 z;Z^f%JVN-0Igspx_=y?E@1)i!K-#5b^oJ4qb`%1e zI*Ge)7?OC>Z~JAu^~`v~=>iW-tO+hS>!~X}nYd z6Pu`Uet#=l{uKVw1~v|D+D9$vB$x2!rN^-C77AGr+l%$TXpg%PSNPCghVAGMEr()Bldf#3EXND3XI3jmL^>oID;DCi7h?%h+%}7nTi7-mkBZs2 z$Hlx8V-s@|Bq{j=E=SW7RD%#(FIw*08>Q`)rp^O%DGo;kIzWogn^0?TO`qOM1bp1) zK1MoO*!hP~iQY=-VxQ;8hi}~rbJr5hk40gh1^3zT;yv{)fr0`viUNn#lLFYWDKLtt zsA0g-6NP0F+`to!7QS;QRGg7n)Ef%I*1fv)XzwAU`%WWi5RC!{W1wI(-_r;+{2H9=Pv*F-g?n;sL66yO6q|F)}rvC+edppl1Z){>qG>0+8T#o zlS!qK(gEA33YYScC+WMwC&0zJ2)^3zXAROkXm9hrr)b20S(B9ED3asCtU}s95Gmyj zh7TxJmf)DG{Z4wLe2B>Gh)}T5(|(RHS>f>n`RKJz&ajyLTfuB27|9n^ja%jHtMLNP&?}T1~@I2D0CzagR*LBc%EH zf$*f2jMOoi3A&yVBm_e~l3-}xJepHW+E0reUaoUVD zSzmHx=g-mJJ^+#cg=e^|FjdBPrY@|MtW6vw7%xC^WWu9ZVibBi}`qBKL#WP@&&@WJx z57i+(G@jpK*GpS`pW}YoJ37zDcn{biScX_I{KOo_%V$dNr7^X+9tEG{FPb(Adm&(} zC|I0g)kG{~DAVv)(Wn)x=0=e5y~YM~DMO*!v*4rQ7*!Ttu~>r@m27aj)_G5GbSB#} zVq4KyHE%&oiI`S8Ob#M^qgv4(Af{Q+^b8FM(Ff~n2s_NbI5e;Uj98yD>aE?1b zHCAbIo<4hyU2G_c(mlV7-GELbQA}4W(kthV z665hg=M?GmTV)5lkWMm#1o?Dg8pF~x9Y=tU?YfL)1kCf0 zyCDCPjw_wFT7nh8f&0;kmLo}xH?4n~k$XP1#aR!LI=7oK6Q|xCF07xN!Gi0GSU>ng z`CyCC0aKNaJVvfKn?&o-^Qp$*pLNCn%%N#kX0KirSbfjRK(OE1eh?a{w2FaYWJtO= z*NbzfJne5M>p->+$N)H#P`C}X(?Bb^Ke=c?BrqE5#*$Fq4O!C=ow*+CB1JrnGoD6E zGM>RtJ5BGb6XD%X6S88gB+^hU#*?A7?Zbd=%>l&QcH*+WlZh9GW1;rp@J-Q=SZxSf z*TT!uF&ROg^kd(1*h`}9Y&}Yp{R)|Y6>|!W1CUVYCbW-q0y{VM?) zC_t^q;o%fuqLX0jtTZng&`Lgwn<-f$mT?F~+A(KwFGhXXv#59Xp$}uJ+eHvhk!%Z% z3J9jMYl>tkl-nxvQzScE(+#_ZN}R)~W)Jkii4#*KMKyICex*_MTI!e+;8osEK4vAH z__iJacj6$Z3@nF#WffVBa4hudtrOsBY(d4-TPKq9SvX}Yx_VI?g%|rqP|Ow$W?&Op zO|{oQ&Qi)GJt|s}y`TE(*6|3(8PrnLE_emGJXBSo>TTqu>YPX8Y^17>4Vb7 ztY7s*>xe$ZI4g#1g%VQ(!m{f40BYN$1$Cj=76L((+>G==5HasA)#ayl`+;@I>T;Z zZ@96E*GUiDj9#O&iCfDv5$}W1ayJ&9Rca@x9oQutwPFRdv%LOQc7sf47Ps=L{ zdf|iw@+{8687rt6!pN^#M~;)!6tz!{%bJ(@F^C2$R*Lc< z8$cslroGe>52Oir-`^|kcqvph$eUy&kc0~gHbT9 z!Q)XHzmhs+MYl3S^qDyoF>-mxh4pDPByy>-9F;4M+DerO`~OHMU&XnbDa&L}RGD%>ROMYSaURpA6UQ&@mkpRAyJYl|BZM3lkMn0jjJQ+MSCJpY`7oCM zb&ky^x*+vao6ZY5G90B>L@<}eEb=16@7_Hb!RmSSCqf0qydG-Xw2^yqK|pAs6a>W+ zd&8jX9WJ2hxc?G^E;WGl6F}9_s-|07FNN8VkhuCJToATHg)1Te%ZNCqu4o$H7Z44K z$msrXq2uxf7LJ^q_l1F`>Scb)HVM#?pEwGdiA_UObj7m+CnZkWA-M;s^n!Tk#<_Kgw}IKAMwiuq~e0nDjn%>1}J1xCmK`?Fou>b8CHM8SCgoyo>qtU)-%#^$Y5ti>cX5#Tu zdB!k^hd_Yb5mR}XhdHo$i4k0Y$8qH`9=k!^8;5N$5uudL)>ghrV*|29>rFeS#g}`{ zK_F0hbBlL`cu+%MZh^&ddm^jgeT<+gug@`si}y#Zm+}74L!+fTb1+4`8gIO|!RvHn z--s=333KBy=&2JCo1rgR>!3dAP;}Jgw4WAY_amCys z(5b$*COqQn=(h2^UL3-gCxUnl9ElHsf(i4yf|Byh7|p?9fO`ml+GW4g%^NIrI& z(>BnwL@qQ~Pz7u=M_w`qmiG3-D4_*4#l>tm$D1aUtm$AGld3K^E0jfW`9Dbb{`a)`H@4w_MnrrrdWKe@TU=6EYACqG@-)5MR8x}Ysl-P zD5I_TNQt>5=3cbgm0CrD)^~wh@(@rP&!IsW&*P_kF?`bWR##|d*yHl{6EnTef(RTh z3tlM-$_DLMHMA$;PR_-Ex4oG{{foL^d~-rDw@d41w5MB+Jze|al7GTGH${{f{J|s+ z#?;ogu91hn_DOh&kL5IU@E8k`M)PnGp{{E@uzU=1R9lHX z>9XOJBn+e###vF9SZd~YqQ*_v#7JDJ>E21HiBZeGJn7=xeTJm#Dd{4sHcB7zNoQ1l z!?@ycP7meLoPd~lSzK-9_lbB9)si9xYzX1dD)fw6+llZXxtN2OQ<5MefR+ioVePqkEn!3>qeMreVTW{?^mLh^)0>%&@j1&(*=C0mD0B zJQ<8Dufu^hoQ#JWm2L6IU(}XDIKS3L!I7#dARBl*MzWxUq4Wz~N;?Zv;jgw*v6)A~ zIUol)w%?D&d(>YG-AM&@w(ICEAWNMLy+i`7%Mn(bG=Vx_>*;ti{)Or;)<=At4RNA` zyqE3On@^6A_ZfTj=A$0uedb=h`A7$OpS4$SK3@Xgv*F7}K1>y#N91T4ax}1q5RHFV z>|#kYERSR0PdX*o&rmT^op-g82T{P?MOpt($Nih~(GIb`M}0M>(8@nhU!+!~s;x^A zGuDag+Q{LbA}Y6@{1H+zry~;5_S9l#04)k( zeM)DP+7nz)(~W}6?3kBhRWFpHKBA;*ErCS zbX_UxbUi0q%W%#@Pm*M~BhNrsPM3ou;ob>-`RzQTFA!J>NPm#D|E73VC zd-Kh7`m(&tbj%C0z3y=nwTIWe`}VqT-(GjRUduA$!exb2f6NVkLa>Dh?)VdeXNh2w zOhD~#DCD@7=KP}X%cwRsCOX3V5i-Qz2;Dp$^-{&jM5=J2TJblBY|lK2whVOu3;{97 zq~0_+1H=Y4DJoE}r8=pnEdAFO$`|K&dSrQr?xDWyPT)5-63Cx@eC}#cwD$K(VLjEi1N>=KZu)EbpW0d#=iL{7Gdu3oHd%=orY_uJ= z9?_V;fh&#?7xvTKQL79h@0veyun)}m~UJe%0c;Jg+U6t-Ht}3k9&rU6t zPC{k~>8j{yBRFVoBM9r}NS6{18>ntZcr1=39F!4^RSVfj(onfNF+G-2{y+}fspF6L z5+^}cHDLXRKQ-~!j0!MyEjAeEQe$Ji9CHCx!mFGO3>b5up>0=QZ!j(V8^jdx2G}#|w{Av|h&Zf6iV4Dco1d+zv1t*6 zpmS&NA=_Zqy&&%r2_$zT)zDqgO}dK$dJ4Z2S6x`qBXg^4C@;XLEIAC8V?%t}E1F}? z$4!o9%VGAy$u^{7oBx1;Rojqide;Myd`pqQYBExQhimqO6nInoefT>*PjDYgeV6Ti z8E%{jdQ|u)$(M*xr1WhiYPcU%g`F1-qs zB#D_Y#vSBiVB5jg1j8DB2s)V&v41=e%h8I>s_ZE=DNJzlO{hPM4F|Szg7YABC@WfE z#}$pnqJ_A3AsQ*XD%uejC-V6wXvGR+@l=eGI0|u^st`BDMKMu+&Jj+55Kh6L2!}qI zjzB~dLIWmNQB)8U>Muo*VHsIcDKfV}Zh%RPq;d!5)-hRy1U9TA=67gQmHrfc0V{l| ze-ZcGtmO(&(W(R66aj0u5ZtRLaZTmWrMqAU+RLU|La^Q05ltSdk(dObdaQ=rwxur5 zEQ;P#6m&qKyq$b>sLm#dbh&CRy+*r4=)OY{s(Kr)4Jft-P~;p>q*Jsj z+44@{hC|fTZn%}P8)>uqaiic_R39t#Ue?8Fa>qb-SFRow6sd-ry3( zqNOn8SZuxMWD{zU9k5hp?eN<9Mq*2^vX?n{6_TTx;7TA;inK$+lekyki|Zh1r7}qi ztEYXm`3Ii7$N)Ft!|{i{Sy_ZXRz|aN*f-%lGw5)*IJ}e&SozDv zvkRUR@VpTMu1Z#-LbOve#ae-?j37e%6HDx@)oapf`PMm351rMq3Vnk7EdMyv>G-?& z6L@Vw|DU`c<=cJ*q7kku;Yxo1j7AhX=>|-uyT1b5l~}JrwtUlT<$wV9D!JIxDy~Tc zW8&J!t!2*lL!9f3rigv8NcaZK2N5Id6wt}ZThdFAD8}Bn z(`D~bc1%$|u(2n+5iTRr>*JRR8=~BcyLa4qd*L{R&^D^-=#k>2NM9B?fnPU!rIr>@3}e1MBR1MC^zJ~?#_ z(RvHR+Yc*hC$~5!7*76xw6+s%MOVJ?E)g~cbaJ3ja=hcV8HN0~7t=TbiP?tH8l;&| z?WdzMvqj8PyQ$0!;}!H=D1+xIoogs=ogeYkb$F4}$(~{MjC$XB9XwOl6Mdi%uTSH( zsGZ)+5SJp(I0ll7~I*xXZoH;Rx9z6KJQnk1d>!Guv2BM09b%-CQr+Y zR6AHNRsrME8x+zb#{VxW`R_UIkCgl$gqvi#^AA_1lqF0}wAOWSXszq^=O86vQYOF{(}#nuqO)1+=o8S+%*WQ{s0%_~QGbEox`nF7D14EO z#b}Rdn`U}|&6tsLtuYSi61K?jQLo6wxB;^(8nRMLF$Tal$kI?r<6tn-PinS6qcDYu z2ZkL7<6*naNolt+NOBKOyUiov4%+7@Pge>r6`v>i?$kgo|At&>ZTtlESfsl|^@enp zZsDi5jcO1qi?rR!Pi!aN1_wGsTCYqZ{8ofl**qIG!`5R6X1c3Lw9(Z;=eaHqad}It zw5<9IJw>Yqsxah6rWdU{NOE-E)O-vq^c2nf{i&M~ReCt4r+A`IgJo63e?H=e78mJ# zXG9!Qd5K0(-9QXzi-`x-YU)(5)wq6}PZFC{2t!9soAC4Q!*2<~`OGIcNH86QMv!{y z#*9=_Uq`a}@c%1q+-&!e2u^$}mCHT|D3x}T7fBTWmE4|b7u={Y_rZ-u$$DySM&?u= zH0!CGGEm;{xD)xMf28*lYNu~Zj6WaZo%-?^ch6hrJ7XH_0~C6xVU|$de3*1nh&O=o>kHV1PC6Au22PJRoTr^;w=sNRldD)3pliI0z@jegfJbjIMk2pbJ zt(M?SF7|IiMGI#XE!^c1HO77+8-{d)Do$i4)K2kYQQkgfA$YtMpU*yE1werW6c38yIQ;FxU+wuAz=|(Jfl~G^e2pQ9z(sz}Mq-)% z5K(3bP1MF^=<$kX8pFUV?lSue>`OA)ugPX#dPD|6>7f~~S&4fzJG7LzSXSb)BHklk zrKK4$m3{O-;GLDM_Uxc#*YAPs!M?OOGydJ#K}vgP61}ZNI{IkVIDi|3AcB-gp8N;czSiR9^MZH~FMeP+8)Yej?^}R``v@fG>`$D=~ zsYz$&H2kf@-v{`srHxk6sCI~ky5sOE;=Kez7y*&%@G0@XLN;cypz7iVCYOVDb5U~r zMV5b=OvL>E8OPoNkDDq)?8}y}*x$yfcjXoOez$Hw&r#`#iw>|ibP6^Cz0t@^3LlE#!%o>$vaSLFrT#@S*YxSJ01^*Ku$q2%e}_0uu^3%f!jP4KiC&|6#!Pn zA453v60lv^_9&drIA{|13mFmm-({q>J`TDpNtsuGZz9*Y6UoXJ*g2FF2#nG#2~51E z1;+2Lz{Hy)Fo)I=nDBK3Cf- zVW|CfI4TRQn^CD$|H@OSWnl6OeW`yDBJ?!`LgB}{@*<}HU0$xFe8zf21mi6~fUR*2 z++tzNsaV$nAvsaXB{_-Lw4C_em6LdL|^8n8Y>%s9U3x8BG3GZ-g-deCQ6-PbU0r0F~L!~E_xE%D|wEr-@= zTEf?9TH=kHR<&9N{kYQ>3ae9Mu1U6%7em)Yd~?LyrSrnNX(8Qsh-!3DuV+W1gKBg_ zt?68MXz7e9OkzX;;RhR0yre?Q=P}q!^ma36A#k^Y%Dv-RN`fy&LwoYICqhx!&6$d{ zWX*$|nGdfi@LXpCBqPst@-@6J<;m#7h;yG)9!xK2j?<}EFYZ$&K+tcaJxX&Qe4!PZ z`;5e2oBdbYfy#xa)|mHv3UptiQbEMI)fd)b)Htmnb6QinU~fTb0>pG~Bu_Yzq$fms z4&uvgUYwWse2pII%E6NusafG=a|X+80j8gVvh|sqt5Y& zvYl!l?~_CGTX_e0RFg~5`?nnhTuru-^JsGNh;i#_)agJ1A?sQ64W;|>qC`l7zaiLQ zI7h_*_}{3(Ta!>-r^M! zg3zvx#3vG3Nsnl-d@D|miEKu2gG zFF2UlG%&E&IWO`QuNU?tXpLk6>MK@TVIx_D@bZIaFMud4?s20BE#AJ}H z;v4{a>DZLGhQkm7@-kFRb6D~#ni9tv6}gHh$KpNEulGbHi+96WZHOw~1A~#%kpx~N z(s&@+|n4x08?Y66s35 zj31=Ss~n8@I3G~X2O(MNl@pkV!Vt2^${YkXUj+>g#G!~Ozv7kGW~YG94&*QS6>zfc z23!ALTrseS9;)6-PmX~R5s5&tXZIh3NiIhc&9m{t(Jh^Y0LD3ZrSFoa90mUGk^J_a zPE52#GDWx*2p8*v%OFHvJm$H?NJvV`PJzcfk7GdnL>$K2bHi#pV|8BWm2{uy{`wq+}UgL>yw@?l2{Iq}XGkxCa2oqFFkB zd&Vt{zoQe?j2#fzkwu~HfnH<~KC~T$V)Ip$9!hR+1!~)hr!%e|hP@r-1Im+-e!f~5 z5?eOmz<@5ac4=Z35gG{d?Xd5JVYDYVIDpQ$dKn+^3-|rz#u;>5Pk)y31 zv_1@6IT9MuMqG`dMCTJ}V53lMlnqwc{KYjo%(7uT&h}i&p#w!0Q^=MI^o(>9=4Ww} zyx4w9oj~!!c0@|Fi7%RQ+YTA-5vnx--aT;M{QOoN4ObL8P*@OzpXlP{! zG;HB6`}5S@9$UB4M}`N8nN*l-g(|}sYP)RH-?MPQItC>qIHYGq{B_e4A(;B5?_19H zLb$GHS15hXA9fq)E9b?NzEJP-cg8!Ob739@gk4U)Pf@CG6YX@FTBcysQXSUB6D_e0 zonf6;RA+pMVDVL@`RybMX$Y_qsdUVm(APLVI_pE$G5(ZwABb>_6W%<5#2HRF)uq(q z8pV(v3rFOVroT{${0z~xQ(Y!SNd9i%Kl6m01ip%nQ$)(N~mLHaSga7(rr<8CYnkLfn^#mQ8DFCe?lIA8?F z4g&{#*r=UilrFUToobgDKDSfCB(E+Pk(XJ9)U{LMh;cp?O5!7|1iX^#phnqlk;i>% zYYU#0xVpiM^^iPYo^E)FQs6FV?sC%=R8B^^b|N2+0?0h>vrB4@$Jgm~2)~V3(&6DC zI3@o;$hKxeTItt#0~F`KkVy>jP?a2?<#OPvHptcAK!KgNc}om35^A5 z-TE`c$^BvJFq4)_>;b!q1DHIF7n&0eLsxIYpB~2h)5CZ_599su>zJdO9`&nS>L#te z2rn_nNBnfp-4cBGKSw&;($P5kV%Ux%;tUqmwNpORb(TdTGG8>T94rcR3d6po*MMm0 zD*Uvbg`e1ts$*sBOkn5ZqvpvWy_A7aN>N)+118f@xQOrNU0tAa=sBitytzM#nmXH? zD5R{u@~9l{?7hUd+=&l*FnYy6j8pcEkHSUteaEL`OaQePY#voVsP$bS_#xh%`vjDHd`Q1Q z8E090vmQgUX3brbR4G%}g9U#!u7hKjo&X2iDkS+BZ=+2?r4wlq%LxUm(dpUi239Rz z((GN81u8|RUdw|s99!n08R<`Ej;W$PKkF_T+Yk#YVbel!Y5@(dWLnbGj)~(_q%RE; z9-{g5V%B&nk8MpySq_`Q;#SGD5)J}9Lp-rOAe8labmnmJXArt0wjdAK!hFvn?u$V$ zzfBDo?;xdZBzDyZLsU_}iggR@I90S!rA`Y$+qAIU??piM99jfw^S~tdOuBuyO5f?X4i(=(FYUxlI<&V`_?Ri;3Iq!ZkKcVsQGswtSkVEQpklABU?tW-W z&ENjIJ%39wu#&ocy$c52YP@<$U5J;;^t$oPZcm;$?C;-;e>Q(PY)M_1!v*ScgXLq3 zW=@H(%3NW@P=_aN_UfY1!TzSu_+ya|INxH#?6%!$y3&B6oVKyp9JB? z_;YD(0LXStt*_y7M%*NQOw%e5u$?|#@nzyRCriH+CL!2fnV=e^ z?~Pr5S~F>*1rzbD^eXQlU;m*pT?23+sbw1%;^SyugdYQj!zxni;K85Co8j1{9|A_n z)jYc*9|P+(mU+3rz|R6Jalr_B=v)zQq1G z%|@3bmFjuE!d*JS$;%;U<6~qgZCX5p)3r3tG_HUjUByPLk+3xAHQ&a_nO6yNV8?{w z#yQq&M@#$~iWE+>}*#f9!QrL(?XDWx>yeq}Id zr}|IUv8aX{V<9@L1uTRuhxq%c_3*Z5={+^`T!=k&E2Rv*2JY`-Z_#IBma2HLwqwwu zxM+tVWe6nm9hD=m1%&hgaR8}1z#uUwwTW0ehfPzr<4sT9f?qyR!pi_TP+Xxo|4QnQ zg%QnOwWM>Gx|3KOoW)`Tz`gQWNnEXu#q_Y1vZ78Mu!=eI=6-p z16NiP2Q)*yc&3oL4eZ<{4tkN7I5?&DXE(+#T2}U*RS>Y|cD_T2ekaab(0sQDJIvoh zwxlnA4|rQ=pxk)%HO8y2X%!FaBKXM5C+X!sQEBcH{(Kegl?6 z^n0#aCoJnlirN?kLF_d=t{$bOZu3giF|v8+tH9kPIL#1+l`rzZFup7Jw|2viW_*Gc zo$war!nlzS6E~=wur_RU)>7^kOEX|=e z8k5yb=eH=9z>Df$9!tL^b#>7kl`Phih7ObzC>zE&L5elwk&wL7P5{QS z0?nUG;!sLXhs*aRi8#_ABt9&KA`{7gO3JXs{6^OuQPg7>@)K$pb#A}3+p)7c1{jQK0=(a-8+!6L6JOK(j51fV>kgZbVLkSq6m?XF=byv zvtvftFi2_GS&T9J!=a}0HSl@xtyzpXb2-iqAgP%}`7iA-11PC6kh5ldB#-hl+nZ?_>u5IuUINa}7dPA|a?SO&aw7dN4H z^4fZ!V`N24fp15Kc;ez%kAEG2qvZjWV6w-Vz*V$7kY^6occ9>C_SWN86gp$loQ~;O zeO?iOHuER>4z0ws*IK+Ajqh;D1OKzv%;_sEEsXzh8WK}xjzI6+P9J|B0XQiwy#k)L zL3tW1Na1>um%X4)Uq8ufID3hsHT30A&!?>hDHMH*(_TVWOW-fbDr9X0AkN~@=X-0b z^Ch+(Cr)B*i-!7=&%0@#b{dB8FhJxe!Yf$zsb4cV9!)|R6vlOK2tOdUu_M;EyQ7M^SR>SzUciT540zGgq2j{uYn^OU|; zQ>2&X!)ttws`m?umWyg8 z+6gYBml1Y?u_Ss?&4D_1J%^VqCa(L7r5 ze7|?wbytayL#IFT9opxxS=J)6X-T5&sCp~eU^We|uA=|?B+5p%G&Z+b^@E%0Tbiv| zjft`&T4pyk%sIS%$rSU1`li86Esc#jzUaz?@n(}*HL`wA1Be_peX9EQt?Ktz_#D`0 zPW|k8edpkJz}!9u*3+~_nUv;PHGb~w{}a9#3TE&<;{S**Npp&n-bv=16O#WYDfWZ& zXyQEHoLe>0T(rn+O7pF*uIgV^Q`Pscl@u+nf*Tb&l^MyH+g1>R@ENgyMAN$$YepcJh8ax}#IqXkQ@~0>H)3e5(Y!?3F+1Gxrwx1N9_$LGW zoK=;C2Lm<(@&E(jL7b9$<6Nq1!N$3Bsv7!LE$RyjcJ*-_E>i6vHIAd7<2cZ9^miNw zIgVP#K~WKB@u=m8CEl!BZEnkAZLzsnTexVkch0QFMj!n&XjXl*ceYiP49>RZ&1y{6 zBWts*W~&7b-|YGm>32T6=QoqPk=>1O2WB_bSG6>e0|d6C*>-?TAfP0NI@|Kw5$J-w z2Id+<;;&f)Tl_Waf~77P;z5CRijyDwmOQzkdCmf4xuI!pRRf8R94(Hcfn>;t<7glm zGU7NIYEf7m-1e~?AFCF{L_SviykN4~cHwkCQ}=Zo)sCZ|G(rFAn-*x{>VA2X|8Ho+9~);E@;G`rQ?r$n(F7HPB;7Km`x`km-e&T ze)hAUwc=^n@0R`EV!yZ42B?frYOtDpa~7Mk7y26Kir-|jr8m`|jF;e?S;^)(jkA(T zy&>7qlxz-il#~cxOVe!g6kqcK%RCt&=QYknjl%CNU$R-eB=LYK=`l-BHq#S+;F`xw z%#-FJ?cgN6R%gEU%Y3cPcx}lH+mac!B{OUbh0RUJoAK6yHw~GgOwY0`MNUs7)p51Bu7+wCb6pMnT+DSfP$Lvv98b&jv}!}PC#n_dhfU`=`l6-@sM>Y) zb6vHL3;b+4@N-=C^BmT*nwB^yoIx(TD!6jeBI%oUw@B`WY6+Lz4gDlsayQgUcx@1Q zLNq7MY7ERdVO~R1Lvwv#(Fp>Cgq!JOE2?RWU42{n>YS#AP&#R8XNw>0rV3RjWIs`K zel#J5>?c8JSq#}vK%x4kxkvzN{1RVd{j8Jf{rt;aG`C+7Eh4byH#Q`jwK?d4=FD%_ z@kjMz4mu$G!AZ5fxd{bHO$RQ#BaAM(eAIBfP!%%g0HV$w5FPO7vFgm*I&AtQ_tTw!Ed1hvvwzc0YCL1ym8-kmeefq&z4_|4$KSc?rT)?G>V-Mh zpkLZAJ?+W&PR_sJDgVh657=3qxB4^R7a#8I{@Bg`+4;@fW5D`R-E|G$hLwTjqRg)}pdGvzpLdmd&m& zvs#+U8k))unK-#@kvX@%DmOO-aqz$K4Rb6rY0hgd8`*ngMMc^8$)n2-s_N4xH&k*6 zoi?Df(U=8;4JCrVBK&p5UpfA8lMHJGAByKR{9%l&oPoa^@rP-Hf=d(>Qm-J50J;?g zS4b)+c3-HxrMsU2W1Gm zzoM9kbaySDhhSzo3HOQ5R+OovaJ35Y-=-)lon&N6ieDtjz<={U&O2;{> zGXEWD$1m2Do@HKT)^}dz%ddS(d3V3kcU3?+7}n@NKQgR5{&b%5=))0Z=-7_R#Fd?t z`L}jcI&IlcdAvNKbpExUa>44M%GqPaDdu_8l@)I-qPldR@_h=Z^7%6uG(s!*wjQaR zS4ZS47Y$X^&u`tmd&>0(Yp;_3dia;MS_c0muuJ4#j!W;%ED? z%1@O(Yu@ub*1n@~$MsOuTk~Exf6aS&i`TrTl&$#yB>!n|e|V>=bl}k+ja>8aM^8l= zF?s9=`SMu@RTnPFRjV20#|EY>EboB1~h6YRV`m3i#i9N|pEj=(!%uq~_< z<4Mw@FsMxYgjT!qB-~g^WxW$cDZAInzpi`>Mc*Y@o6?ng`+1a67m{l-RwRV$b3?Ix zpZvmc70>f1cR(XgSDtV~T!NYrQYGP@Fd4& zy0P8xB3cZ`o9yZMc5%aAJm0}eS38{F{nm-?AFnyCwQfqkTj+#%6Q<1s=kWs^SKl&+ z%L+Hd?CFkNDy~;-3B5Va!PdL^9kRc}WgC=#1n0NkbW+f9x#LpZ)K9F!4$@Mpp(c)y zP5*>kPxNr;#$)43l+l(-2fOE0Ol#|?6na3JSoltn#p$n=!EZe;~jn-feGJc$XTRnLwCn_ zj2(xrv>{#!d!w=fQlo!Jy_@rpP4}|o+v!q=%ZAsnGe3z^a8EY}d-e~f6u$e_ah2`o zr1?izew#NrY5w^w#}#&K;$Z_FEIQaJ%l)B8A#!_lmeJ>~OILz!E&kDM3#Xt(35oYc$q3h1h)u}q zwl|#gt#|AAn6(bw8n<4lZckHuy6_DtixI~li|X!a9UTm3g>3A)4i1;U9qOcDu}5He z${}taHU;%hq-ygOPFuJOoOl09a=FB96@wu0_X{buuD1wRo-*$%d}fh?Jmr(yJ+|uz zw041AQtY_SM;}X=uFRR~QJx2vkkSEhh@L@lrIs_wqnvv$(LIO0lVS@gOH`-l8jG|D zscmsnb?B!~&Dn_-y8CDfd%j!4W}tk&jVrGc`OQ=MK&IV(qi=Z6SA+|x+T_GG z2I&)Wxfo?6;w}E#!A84reA~~XoV1SO9f(gawa}=i89lJ5SC`-Kw8l#G-lF|31Q+4D z)DEF558UBk`~B>+ia@QRtiO{u=RyYL3MoZ)`G%CCt}EfX4zXRj@{8M}&xc${;=1w~ zawNV6=b>f`&bx;@add}F1=h38ah-dDq_@ww@2#j_GY86ccgJP`U4@Wx1V*e)S*s2*od!?DBlgP>&Oi_FUI+e zxZlQk7}birt;9D_l-9wJGnH?iQipiIMr+Aau0Xuxg8a~Di_$-{(Q)lSjzn5Ma7+J7 z47vsO^+=~~Jcf8hk93gx74o43UpbaI{|6;4dZeFRNq&Vfq4+w#e263G%aAsa=C53= z0g@EhyGXNe{b1J(T{#=67uZ_2UUflAMfz&p)K9TX<^#9q%2O7&Y58HeN4fktYWqXJ zbH2Y($W)Z?B5)SIzlR*x zkX(A9kF~!Bk2$WN@s$**za8ZvQsBdP;l&3j#2m;u$-TLT47_H8mD}_AbnJB6TPc3BBOu0@-|wx7_&an!*QK@gyVV_c@wdXu)iO= z@}n)?JmpiQp86MENsV(-ziqSQ+Khfq%Tq2yA2AGP?sTOLr6p2TiSiJxF>Z}G z3h@f;6<`nVB&lhj6a8)pe1+>&a1pKnF7`T7C9v;Z*D#mvIPfE1`uE~6e&B~@Djv+S zPQTBiymboA&lmxjirf-%0A@NGo0Th&5I-X?LvjvHj&eFwXTCu{CHQEVRiWuBFAWq3 z@hM`O({02D1RWA$zw9Q#hmal$hU3b&G?~Z0jaUUhNO0ch6^IXf1@g0)a3al7rIKj| zV_rx9e257jI&i-JASXSY*-}rw@;>TlMr{|dk5uNtGhcZS-+BjGkd>a% z%DGBAq>+y{ENI3ktFma0WDUN2Whq9@f@YF(B|_yZ4-9dTI^{Y}4^|5J-wIEiaub)u zVz=Cn0Yd4S=$6hg%I!>jE?Sh}d@S@IHPCb)hD70CcV!XgzL_#ygmoB_#>2FHgMU87 z;`4s_%GDU53O-9<+x865>^{n&xk!0Gi_dC8Ky!gxrq|;PG9i<@IiYS)zGY;;TnD*P z`JRy#E^?FdBO@hl>D;RP!pK(l>ISw7JMGS5iuW-AxoUNHY>3#&W|b>AcAJaS5ByZC|$B>o>Iz~=5>7E z1?T6K{XJ9`m*a~-|9r|zN+rj2uZz5@9GJ!DRi&15k*=$6D1#V*Zj;UDO=Tz}1%(c> zO&Q5Ktz7KH{*E##i}QA6EQi`aOG)_WL-|eQG{3aL3H2c?{N+Mo_2>!d-wMws$}~oH zf<_>p0SSSo4lP$8pW8H_VB{!}FMyE5-f~;_*FdPZ*@Q1D$!8-hztPl!;2 zT)@abFHO^2$jH%0rD-l=WT0JM6lygiS4+snj8qLuhq{E3E*OnEv0uu_VV9>78pY)+ zue*Iz)U(EO7D{ z%RTpJ)y(}pFL2FFe;p3+yvRtg+mlpyUS{MhS_;HJAKKCz9#2`mGPk?P#YLVf&s$lX z`*=R&^psxaq^FJEde994?JXHm9+*3|mQ$1bP z%)YM9Q>IeSw!6@Y{TNSAm3kXm%cFm1snb3Ct0bT8m{$qT(>(`d@tNTn$mvPvtKKtQ zq}lCT=6Oala+m6)XMyK1=KQAHA2xW#W^uMWQ#fB=j&Wjd@zkkjP@3IuN~>pXR;Z;w zNE+8*1|rgYmZvF;W`$=l(>&vHUgbF{i{?_#1tMR5C(T!RE>)?#9<|%DPg&!+hWXs# ze)ZM^$^3$B@LbQKMzuQW+2pxF$j2?yO`e+=ISHd#`sY*b^sHmVU*aGSc*_YoAV%<6<9|No9nVlkW@9a${`r)5J;NF4 zz{f0!)QsqVl=0bT1L*Z(#SwY zzH3Y)gBV%0D2)tZWdEi#GK`U_5;B63_ar`tFtSwQGn$c(QmDfi87U!S8Tm}&Gmeq7 zBt8=u=_Z9bf{}3&GKrC^7N^rZg^@`Taug#sN=O|e$4baCj2tE*$1+kcA;&ZF4@s&s z85ty{c{U@jOZl41h$Yd?Vm`~LBh^wpY-glWLY6VoQ$o&U^JVkIL>C1e#NXG_S1jBJ;X)r>Sr$R&(?E+LmO(jp;OF!HU0T*b&^ z5^@bA8zkg9Mz%=E8bhcZs11zVEYWOY zq)no^labpbn!6b}TcWv#k!zFbnt2~1=S#=~jJzo!4>EG8ggnH^rxNlABS%T){um>_ zORec2j2tSprY9L$BOy;QvO_|iX2g_g?-oWrlaS{aX^`sk3ygTBve?SV{Zgox7`aOd z^$H`ONHTnlk#8mB4Mub+g>Nx(n}lp*WQi2lc1Ds?Tss(fT%viOk-tkcA2M>R6#K`F z43&_bjBJr4{~059N#*_pBfm)H^%W!kmO_2a$TJenw~Sma#q~WSqa@BhGBQm3GBq_;cWQkO!1|wZ1B+kf%5|Ut~T|%lDDVLBwjGQAO)r=&i zeD!1GLka26h*!!*EhGC$$UsI8k&r=*d@u1C!bqV+GmMdb5;B63DH3uBBXcEWG$Sbq zIgF8~BpHrne>jtoXC*$f8TqFaYAz#xNV%BDNJ8SXfDuDV;X+29laNM6u9o6z zV&qaOuEmVJCec`oY?Wx583{_|ei9?ENXRLSY?F{v8QCe7&QeD5r4*(ZIZ{H}8M#M7 zmND{~gq+F98B&^;GxEKJoWn?)l#6p2`A|YuGO|`m^D0JOkR*R0Bi~86Sj~t>LM~xM zm14h)kp?NvS1{6FD#5E5iAl&cjQk=Y*D=ypO5qwt?vh%{T1Ey+G&eEwutc+t5ksQ6 zm64kzn%fw8Ny^s-Ms`Tj*u=<1QVQ>6Bv(T2X2d6jx`&ZEN%HqGGD<=oV5C|?9%Q6c zLLOq|cuCHWFw#dt9%JNkN%H?-q@$GgCmC5I<@6~=21&@%j4YFoEsVS;N$fdBR!TH4 zF!GH=vz3vEMDr3O#S-!gBZo;Te2tMRNrrDQGEt&=i;+Vlnr)19l#uO=OqGxwj2tc@ z?=vz+O3#Ok%#vt6X5T*VIk&yEl8T6&I29l?)V&nyvrlWc- zRpl)X*z1CEr?qK8ucSWd5eP35lI&TegIQLaQ z)amr#JON-wqZ$aUo!);oVEpqb4l)q>JqH>dApJlS0L^~LDIqI7{nU>+)REXZ5;XnQ zoh-2ytUnX7-gA)pDI%ZLE}@-RA2MA11am{#J)=XiTM=S z$cOp`DwLnW`9Hk{&4>DhYLt;nZ6p!8P%R2%=KV4iHyR>TrOhW1x>9{1Kr);-+==TN z^_#3v*Qh@PC_Phec2anq`ZFUt(FQ4}UjKFKAB=2qk?U0@NTJ@ckqN#VR9}!{f8FLY z2?(w!1TuY{;ByR+97cxP$ZR0FjGS(VS_q^ABUjjn1th}Ahjyq_fkYYEVk66dbYx_K z6ju==J8luNF9%I0M&dTjY9L)0xz$E415(O}d8-I@6_6f`^s|w5K*|~EX(JTMVB{Q| z&)q;O7#U#4PARNptLS&2&Z{w2^K=j$`C)n-7JW!H8etGmDXxQhMevl5dAvjZpQBv_cb! zT8a-E`3r*dJ?#WN2m0qz-d5jan%Q<6OoZN6-v**6*F)=rLLH!NQ+G2>OQS$mXxmgR zapO1 zlM!y8`J+0AIp1gZwBEq4Kr%Ti+LF-e;Qam7B0UcURBb7T`sraOUz)azIg>UUr5PGH z+P|3Q@e+X)2f6{tl*jpQrlNtMg+Ds006BH>Z%_F=xXUn0Uy+$BDWq@`9 zc181*Pi>mf-oaWDG>WovzM$Et4AGV_pT2In9}0v@P_t_t?*7rv%(($btgi?~$T>{& z)fFPmgq+JX4b^Fyl^oYOcHTFF<{}RD%sPi=tc|R8IgiyYVLnZEnJUUy?Q)Uk$3$Ek zfvjPgGaqzfpI{?HTs{-D8=0p5`83VVjEsWTpQxD=v^yF302(F^au*|4N;LN}(jS_b z4$XZzGzR$6&czDP1nohV^Gch>r%cqI$e}T9msJoO{%ur_)ZSy7ZZ6FfLcr%kw}wyE zzT%ud;MSj`wePu(Jzp+j_bJnXP^hPEWKG~$?I%VSxX4TmM|ME-q>Ieef{bi(k$Nr6 z$OIReuSFQS1Y;!1=@xB)Rv4zXbGhAid`g4XHB2>OtX*3aWs%mKk)5L)`7F}wV`lzdn7xpYQzP@$@?9T<5&cex3JnqkB^B0rQlyvwPKIpx1UH(74&l#}tN z{0*#9OO@09=GO8PxTDG?JmYU?b59$=mIL?>G%I_Di}I)cX&a}m#<}hvZ?%aeyzkWqJ`nD`5rYH>yK&~?>DU*+8E#Fey4NR|3d$#YQRJm8ezBqbyj~XZj-gV(kYqdt+*XF zRn7&RDq!|Np|+r>nz=UKjoXta1MM_OXSSnI=ql*hX1v!1I5?hVnkuhc88A7~t+xh03|8@1ye z2(-duxOm#fDc_q11MO^_OzfJtei{e5hv?ZJdXJF)Fk=VC!ZN;ry;EwVZD1VU2S_wN z*T;6|7z%|f-{tI7$v!f$+A1YN7h>deN13!&tQ(X)^W0e!|YDp=PkQf|qm3sHF zQaT}Da9-j+Yra(Q6B}nf>X7Y}2_A-mXUJ!=l4&XgKecgol#w`foN^AzyMwXAO1Llh zosCnd8Y|tPoUqE%xGsuQF5#izC95=vQT|S({!_`NqBvJ=oCLM=Q1FJWpYp0S4*HX* zKM%pF2>k_2lVCy;)z}qhxm!Y$U@ohaajE(yGz}(NxN6;2_71+3*08fSd4U=p=gS_QU~?wb@WY?UBZBC?$B zdp>xJRoYY)Wm>R^RsOCf%8cNxR@qfklsUoMtg^d~C<}r`ZSH;0TgY<2EDsh-qFz_p zmGJq5<-t<+y3*nO@pZixyu;dAkCDseIR=I5Fi}$-50rYII0v0_ zXCsO8tyL0D5dIgX>Xq|*7iTth7i{N;?61HwR$=&qqy)?_PMPz7D1T&MVdFdoe~07z zmHktz(7TWAK} z- zHaSWsQw#3K>d8vw_%c@6;#vnMlkw%PvR&g;i?3moH5#W{d~K`Dhj+tvs>j!}N{VY! zcw6xetujmF+!Oz>Rq|+@d*WN$GG92$R}nDx#)U&J1gEk6~% z(#Dzdyx1A$lopyQ8oxO?16`-JYYSsW$M3LqI;ow}@jGpK!kTIl6l&#LoH8-z7&Z?@$Xor#OqS?FT{Unl_~BjCgz+Gf7mJyt1>J8GplS+Wp4a&dlkQ8mZ0nEm2-al z>10~X-z&*|K42EdUr5HFHTPhRqd3N_ioa@=3wm9v;%_AT!Z=;Q+hY`GihotSFE1%? zIc0CQRq=kD=O>z)cS(({iVx(a`S}5@jn(n-d85evPVK$xp-}GhHXrA{K0c3CK6ZBS zP4D<5Yq>xrvAjM$Z(iz$UEw=Ws?T$-k59=jaVpAw#G^k}=(=9Rl^#MVU$Akg1v9V*AmyNcTYPa_!quolQaU0| z$-Egze_;*Yu!4fGxWt#X%Ejp%hm}Q=a|a5Dvy`>01Q4g3RX)Z!8`%k%kKzt;Zzt+9Onlp*-*k9SX1Z^ce3I;+Bn@c&hPP^tsU7_W}3g^yXU1@ zE7`?K_g!_$5v)68Io)?7{&AbC0@{@RGEKIGem2!-J0wofDaBWak|W_MoBQ3GdqTn> zt1MO}cfts(lvE{O!X&Fasn>pM!W^rd-6mIBAz|T7wQ*m60yJ``#}ziY36 zc_3kz$A*AB~ID0TQQgLMR{E8G}*4srn`)StSnbAWFV` zw2vx^-a>x?^F%^Xt6ZEe%2Nrq=gYwUs|BuoGRkAjfP|7(`KAKCu;Y|cR_TtODN0?d zWWMSt1M^WGhK6t|yfv1v9)1nZc5q#kDqw~rq~`zUbq!0XlAq#~MwvOzh=l4l#TlJY zKR?Y9r{T*`oJ=z|p%Lx_;*L)pNtF(TW-afnsHq9ft>V2EH9g^Bt9Wlky_nF-DlJo_ zHfAM6kXNGl3a!KCnVrzqD#v4#_Ey=7nwL0_TIG!xrK>IB7+0$SGdrP&RT`=?C!x1h z&Wyynt+syVC5*^Vt5q0l3MuKn1qrWMB>@FwB_m-0@-k-BL#$+)l}>piLzHz+DfPZ6 zo1Iebk|?{JG99fX?P@D!jmq}@>Y`S zoKto+5v6NRzKWL*h;q~^kLgt$cgi%4bH*uG%S!I&of7w)*tzVKORhYae{ykNovKT! zfKx82op`78X)bZ{LZR#0t=Co9DR;K!ywZI|oU+TcMY``+r}*nioMKM-@jg+)PFbs| ziaVu@D`C2?6clRZmRg=NE{?(JF4uD!6uSRDXDuS)FWpB9mAPA{#Hr+z-Oq_q)hV~& zEQ{^bc1qC}qSSNBps19&zEg?^Bu)dTL`O)Rhn(`qa8a5&r4?p=&a16c+7uS0ol`dA zo;b(p;FJP-6&;=O)!!25QKyX5IGvnw>u(aLt5YVpR!;YIbIMRvdO4+>>#OO$$DvTo zk8H?xGEF}h=U^GJJisYuaZbWz9^{n2-Dpbp4RuOL^BU%qvP&e@2&YUKE0#w(r8}O) zV9TSN;@4DToU(JV*ct1T$7f2aaZdSBL?;yU%b+ zr}7eKrc{5`UUEt~y{_3#xm}exP6>~c629z|0;;^?l(cloYpzpDt1{my zgG-5>g-&_1k|-HYc@iznWnSczv)KEw@~TsEXuB_Q%Keok&N8PAQ#-FY<)YeI>6Au4 zNvbtY=?bre^IGSWK{`%1IOTCwHcP7hl4`qC-pwJ(>rN?DL6kS0vQyjZZKt%utk1dc zb;=8;MA_$*+%rUZ-zhm?6y-yw96Bt@L8olMIRIP!)F~gnCgu6eDPz}(@}*PexH&xC z_YD*pgS&JEIp&nQZeGna59H=JpEcsV@O+C?>NXRlg;S1p5T!K~nj!Z&CEfR^i<7OR z#Odtf)W+Q$zKUKh&e{hgP9LX?Y%0n?r<~Bd20J@*bOm|FDFuUa?ZccBP~|zNr(Dof-$0>jzo2b;+{Kxpan3kpo+{^@@`7IJpH3MwMA{--9`1*SG*vPb z$}6p{^r%~0oD*v2Hm97`R3)6UPnFV6c|(;7PT8PJWv7f%rJ7S#>k3=TDa$lYJ*V_n zrJ+;C>vcWol-WAdwsXoKdKEpKvQhhLZ>KcUw&?Ga=dMZ5B!%jysP?g^T%56L`8lU- zRArn~R;V)GDU~#@sZQCgab`PZnU?Ssr*zU(3!L(_DodeI2_M!Hu5@u0X`J;=8Hjs! zJSsQ2R8QzGcbkjzCr%wX&KoYy*80*ncDp$9w9I>5oFZ;liT%7&x@vhoaj90o=VHr; zoN{B0X8<7CtQPr1;t{2ACuPk5az<4MlYa;yB}cCe(Zu*x^Hy*MkavS7WZthRa0T_z>G zJG3@Gog}Y@XGeeOzFMKzZJY{Qxr8`7bxQ9UqSOiPv~j-1$r4>fIIdpkO{?U)%~N(+ z<%Da&fTtsx)uzWX`$cksO)y1t$6g7 z7easJ$0eCB-3e#9Z-!HRwK)ze)W^nQPx3@RI#r`MbOLkmk|;AnIaBD&VPko*JTsKX zDzovNC;bJ?tWaXgBG8bgK5NIA`JqB7qmXJzZB_zM%B0XKO}6Dy^YcS@T07o%AzlsD zNcrc<$>LD06e>?#f3dSPbgxzRpuAk>rJ+VPuPo(Aq4Cyohv^(AU^a&)-gI4WhhDa+ytcKc8~t=^FoGXyHwEJ_@~R%TwBwr+56J&~l{0omt$s;xZo&t%7BI^BDJu z=r7Zp3hlbd&X1%ZFYh}HKZV}5b$Fwe*!exQ&(`79m$^26%JE0&kiF7uSEYXb3>{7x z4LkSrq57j*y%hS*rdo;Cq4I>YT_pu^2L33iu801xJt1v?i#9pw2GxMpOd!{Lo*c+*E?-=VB zU3;b}1%*aj<9ozTWhkQ%r@bmw69-z$AK{Fe{&43yab|&kj@%ZBv#hdRXNgA>7u&1w zzR1xzahX*rXXo-@eolPND*Ls5dM0kMN{6x%r&r=OtH?JoaGH_0!zynT;W+8OK2T^h z^}q^3*Y$$0uTx53l_8~9(i4eq+8R6It}8X+$;92ZEw-XRr{nI)#H1$^_t-1_qNH5u zbBTXir6%so(qF)gO8m4{|v z{<98eC6+5lJ)!n8Ni`?2VnOO--U;w4iFYFop3T5j%xO+Dz}&>D1v5~RyU?bj7_%&~ zxmA8b7OUbKf-(O((! zcH#`HtenKDNSS?;owpO`T067V&U;YEj+fVg#MQRU&uwJOndXpF+LV^^%u8Br?F>^p zY00atoj>7s(_f~!D|x3?^1)kYH}#)h zq##uY`v>~NSM8I3u_bKeuJmeB|K#7Sa;Ga#>Er>)_{CY|{-7!YlP}wAKaW|I{>qra z$=C4w0G_gNaoQ#iPWBa|@^pVu$}>7Sxlk_TUZ@+VO81R*O1(CsOmxbfs?3A}qvo|2 zI8GU}018>Y^+C2wN{UsMJ?q6OY?YRoo^qR2o`_Lyx5}{?CAH8$N8EzsJFt69H2Gcq z^h(Z1E^o_|W4h$NG`WUV=HMKg{>qr8$+d5?voyJ`wUg=U=W5dO)g{gjr}SU}J8Ds0bkBl%%Fr6IslsMDcIpX`lFX8N^yN>C zuINDcJ167df15L)pFv^MxTVirvb4P;zFCa5Dr|meMU8pYQXZ6cA?lYKY&o5Y56I) z5x#NDFB%DELtq+Sw5KY#?PpJB|` z7=eB>Yzp3PMfv>Z(b-&Ue$(y=pGmVR9&)uCG(T1JnYbisna!B!<3VAoEw?27DvV#Y zK^UAZr&C(@{8E7QktFAkfi()nIKgC8$O9;52`41S*&^wtQ>SeCv)o#wZ+ zAMH`p(%Me=F=UX>dek9{QcQ%7N~=djs-iAP@8q%05`i~dYwKWtu6 z^4cvY?o4oK(h8YDc2|{oV>sq8n%BZ6+pqW?mJ}lD<2260MrtF?^eKT~XhCS2!S63w zN-<@yqSP)VJ+UDu#Y{%M;76Q6c+bs5ELA|=Go_)fICMZ+(HhhgZ5Zn+TNB9 zL*o>2Xf38+kd~=MF{YrY_l(cHh!osz^DV7e?XxAttHdRZ* zD>S2jV6`zFxUOPTc=5cn1F&zPS%7;9r`?AB%o_D3E>%`($F1gZ9yF3K_u^u=P)&~Y zqsLnE!>gzW3L2S9{B{P(iFwl zh}mNeD9vnn%xB6VZ@*by%4hDhL@Q!tP?~9vohhw|Y~?Vt6hmo0xAZAm|G1?kXty6N zmBeKAho$0Z)$1VC6Y4oH;`+?fpj$0bow8PR36tOS&-9s62=zuqakC9`38g4*rhkBa zmZdj-!Sk`O&ZXJ}N-;e#_ieW{06phjP|)?81hs+YXxA?%i^Z{#%}piYS@nLc0P$=xtr z+hZ7Stt@rGcw@?S7ZZLh0JCTtga*y$lO^=uQiM&%svIxPe2;#x7ilqzf<6Z2H9>e1 zRDv{f_#&?wdCh27zBF^rX|cPdj+loYf@d6wK7|>RX|+T@&j&_(8#J=$(+Mo z%X=^@aUa@-)=n|I(K~q`_6K_0eydd}=lW30PW4f=M{}f&L~AJxP)b+Ytkl>MehuOs zP8&3nKs57XpEHrKD8&qK9=ns7ol2#;ic6da3Yu>lay%X%>#XLD8Jc4^|05pn&1jG0 zGa7bI71#byV;xfYr zP`U^71FZW@GWsO#Xz?qE(0C{PD|$PxLJ@d;?8VU2q7=$ye#4e;ST>%OE16p`lHa!F zqxFMkJ*-Shw0^Kg>jx2AxpaqI`87*)xDIIN!7csON@>B%7|C3_ zLaFBXDh^FGo+fRcs%@UCZJw(8rctKQOwI#iHG!>QooUFuiA#R~WlXWZ!u^RQ@`b(v zh0Q%Lqj#cbhs}rY%5G_BPhJPZW_Sd&@x*rO;@5X z9kXW8Mnrs-33o~xg)C7UF;N>aQ5zA(Ub&2O?2a+p(hk69Rw~s&Yq3_oAyXyO3+KUJ z59<$`DJEx4{4$Cq+UxOL_cr>$b5`4j{znuvrQxZswM3(Ahb7t>?X^T}GShdcH744H z6GftR7IXVXqGd5^^BB_ZRBDB>z#6S!O!bt?peM3cQt1MA9;9Ve8)5TMZob~2S$+P0 z&Qdxan-pkkw;L_($D~Qe3n)s zl<63HCiknyF)z{R@%GBRig!VZ|4m!@tk3kY@yIu&lbF~PEBf#mRM2{^9Gcbn5VbyC z8~hItmxYM;ghUf<9;4iB5j2-3_{=L-JG)nUQ;7`e5qTfjbBf)M6237P^_0P@qFeQRuUQkxaWX9@G`{1 z-1&g?&Suynt%v5;fY#Jn)PmP6;jK?ctKdtsM&5Tqgi1hO(H)kS!1A4zmOn46RVkc6 zQod}t0Zv$PQwt-4eMCCbVjq$E5VbkS>jW$8Gc~dHzN{nl_aXL^q@|f5sDqxcmuAK) zl~*dLwD|(Bl1V0MESD|<^-{1Mt&7xs5rq5t36tK@558NUaN z+#*r>Jw}@ABGIbrxV4I#8QD(Vl){`t`6qC(@oCEkq}ztWB>CZx*3` zvjO!&n%@jLA$|93h+snTFU2%N+V4P- z=sc`y6fY8;<|waO`?dH?E741+wIb1^XXJ|R+AefzsL)ZgAYbo<1!AuWJQ1=S>xqz; zKc^?z`*wrSxXnWNc!Ue3*@xrN*&I^<ghpUb%^K~vndp3o z>4wI;tnprS8uz-7QPLDcC&!;!qBGF%Ezw@(H%sJA1bR_C@^(^eD!8D@zTK;&BjuC36~92uqce#y;gUsgF}A)!I~$-weR@&ahhh&Zq-RnZ11G zRZH2Q#<&D=>5uoOQr(7me-&~S$f2e=WalJ>P+#9 zo7}H*>5H2&=kZI>C>5tYID*pB?%^oNZ}z?>=Un|K%7~wU6f}uwLrNnH3ubGssu^_`OTm6xsCj$)p)KK zzbU6wMX96GWTjC`_bK&v6gF2@8gmQsKr4WXS$Y~&($ZAW9hUA}h2M3zR1s9!QUa*D zrA?sPmX07rJxe`6jV#@Q&?c59gC4eY2-L>XTu=u~$3R^ywL#h*mgbpE|&^nU?8qa1mL6IoUX7ueIod0bS zD&&Y~ABuCUx&=bHq;G*z%)q?x>8zF72jKPE>s>oX z<~pgh*tu@>PMomV6f)v*p9p6jc`zSfjK6QpuL$)Und@S&XvLq#l*eikiS|UxGcEp9 zXf)EZM!zP`RD7e*Obu-|TvE_oWRBNslf+wdS+qRkgsA>FUb*W+RFkY-{YxkpJYm+x z)MYKJdgd0S>-C!m_8WZVJ<->=EicWGJE+f;!s#lmmuq}8D8osg6nh;7$K#%`)uiWe z`96ZiXLE-w(VpQrD6Cfe=7~B!Q{aWz_Qgolo+I|c8ZWl>2ch*VAZ;Z2G3uGA2I`9G zqG}g3Uh{bpI!h@D^E0Jj%T)J~D4n#?^+uu%(c6h)L+Kl;#a^UP`d$?ieMyT5?+3&G zmNM$DPA@yKBF>+wF$^=Isgae(dUeC$5}!xqg%8`jFpbTdErD zmA}cd?AATYKC>IWq#EM!zK%~sXe3jg^hPqzm^`08S^+BrQed`i;4^bULG%71UeEC> zzUO7-%!4&~D%!+v4z`6yU}+(I@mDNehn8XK4Cd2imd0Y1T5YNSBR;diQm@B+W}Brl zAo9)pW_BCgS+R6(g3p|?v>(Kwhnfo=>yLTXhBk*kbHma_lqz{PS?Sr+XKuIj`#_=o z7+V#s)*f>^)1Zfarl!?~L2GL1rQwp|9i-s0%t9WWZRpi5INz|;q^r-2wluS~l&UIn zn+Pq*e1O`R590p9GynEKjcNBX^%t5anW(=o(LBjS^CT0^lT0*EGErY+qIr^O@Fk(@ ze+yMOBNYFa&{B9xoZ=m&dlyJ(n{)}KnU&+w%*s@Dv4qkb%US?_9@A4UEnjb|FkNK` zW52t--jny^=`c$TuL{jo%2XQgvxJVuwNZ-L8E!sSM5;-@S+)k}CE zQrHhV?}X=Z-T@TF=ox9_T}Lk&YttTGi(YK0KW6k9mKqI#w*%t2^DoRSDdw>xW3F1N z9KaJAb4eSVAJ5%bq7$?-mfGdQz62E8=A+T(>Cht4`*703l!}?bk!p8r7p=3V*ccUU zmQtUSqJ4Z?XfW!J?TyCT$W%T*o*T9KZh%L{^sFPlJ$;*sP&|i&`Cx{nQaDlKJyJ!b zqqlMkqQ*z?9zDqv!p!;(QY4u>9Qo}Xr(*M{J?NRIk|4J1t$yC#hgvHVr8}NXbQhE< zi2VjrAiGdGrMo}CP8DhSDH>ickGt8-XN0)!dHvXR7Xi|j0yQ?Ijo%pqHZIv$bG zBe3v|O;l)i6CwdOZ<@8T=>n^V~D4nSJ2zaf^q z`imm%C}_p)b5OJ|4x6c4W!>70vmjp8yxO2z8*j@(JJ-pUyc+WAg}n0VHuM{*s> zL+N?F+zZP*GrZPF=#-Lpq<(W8GwUlhE%}4Ar^YY4KhLe@H{0&_nS}^NZwD>0@w{23 z4Caj$R-+SI3?4r<{BGESMS&L0^sVcXAB)Vsa&?-l<@s8HukrIjSL%uX-BGI>%Mzj*`hgw37 zD>21dxex0q^`=Pl5WF^~Pc{pYpUc{JE;KgniMrT9*|f7TYMDN4E>sljAZtA_-k7ps z<|6X;Vcza5)-rj9v`>sgm*v20W9i5(qCH(iXh#{Les>5Jx?AXHrP;MbYksd#4-Gx3 zq1myk;@mc2#b$a&DenkLOJ~R&Iv?vVQ#MVTPbs(3pr0h|nXsg|jv15FmYFQtvrR=S zuX)_Abc@=%)J#(NR9k;d(jML?-yAELxbD4`>0|WbNc2n)yFN?w zJPp%6tgB3q{4M0WEJXe#hmz09G!ZKfk+*;GR!N*^%@AMGn_tAMfBBf1ekciz{dC z-m602DV0JiaOfG$_eq@9v35dfnub| zl!@AdiCTdO&sy|@Z%{h6Jz`H-R=gx9ESr?%T*YfGp0n4(9-j5XEV{*7e#Es$>`4A4 zY7G4*LL}OEq|j-nd9BLVOZ(H<7MzWJ_9>gT))YKn$MmXbw_uiHtr2=V)2$lsZl&Mj zB=m3i1|08~LqhkX|FM=|?UmNF1(Xiq%!uOo%xt&Q!r4R1o6pF+lQx{8Jj?ryu$~;p zp1#pNG_vP6yL!QE196>>Tt;kAk!Q$69v>5V2~4!-C%QS`J=O}PAi6p9JsY|Sa|F}< zSe=>Tag|INN0>ORchd2ZP1_ijnJ5pYkkU|;nKeIFSf=Xhg@&Uau{KpHgqeo5MVM`w zo>BTssVQ2JL%WZZc!Ot)MzzMFIWU(nkq^t{!-!%Ux>_{4_r%)!YB`@;UJkF4Lo2Ix zV7h2D({L#Hzf9GtGR4+-XOzk;r+!chW0h$f#vqY5_I+lGj;$8hZv_yFHxC@a>-rw| z{B4TjCuH~aDo#mqTWy!_&DOYcV4oeK$u@M*INYPw!wwq8G7e$b(9c zL`$CH`in$=#omInp!waU4Vn|3<$1>qJ0$c7z8JQC6~*(RCO2CmAA(jUZs}HGvYdas zF|Q+(cWzAM%KMyl=}QT{{VSnHHH3;Oox}RXX-6rQsw~=h>|;4}JH{_lu1ujl*lDpw z&;Bx%ohRD%-9j{aIP`ouCDaCMMP8P8`84f8)E|ewqSRXR_#J(mL)WRjg7D*6tEJTJ zidepm-8F^cIW?>o0ISCH*z1sAG3Z8Ie3KxhbYG4W8;onb&89>r zuCzz;Rw0ZEl$11_?xD4q-oUPfX%bqCDGhDJR7$BS+K9DBl+L4#Si7oJ9<9Y%HKn)E zTCC+oYcbt{-78ZSrO(lVtTjYGCE{^;9jW-vtsjZzrA z9rePY!G48^xoQ6VLU9 z_*s`U(=iu6FMxXvSY7D;QIesPj>Sk3+b5T~6!`K0P7>%uJ=JW$sz#$C)jXo5|8uiw zGu`ZyYBIj$F%!1;s$r}AG6w{(aiI@3_XxZn9_72uYjyGI$t3OQQ(HS>~mQ~B!aF2zxzupk?FA$5YUwRH}L>PMK^TjnJ=-TAGsIXTG*{HmBs#4QGs8DjG+0su478 z(ASRJcq@L!y+BJZsg{8~Fl+Sn{nIv-ekI|YCHj*7ZoB z$9d%p+c%Ko(0{}F{0q)D&vPDl?q-NkuW4LTZ+zg1GKBIo1m2S-bWfdXH;gZrh>!Ss zMXn9pcfxhtyM^8vHP|iDmA8n7lrGKWJX%DvW7Kl!{fF>>6!QLY%X;v**+|(L^cU=*R=b$>_Ng@!Q#l|S(GxMilg=yym zsr&!ghy3QqDC`Su9@*iCnr-+!N|U=U&T~Lvvk?2WEuh%7@k`7;2cbox$1wJp+I%J& zo!GE;e20WCpDolDqme`RtCfoI<5}C7PePkvf5qBQm~)s8q1Q2;N#=O5J4RZuX-~s@ zM(fJ<}?FE=Q-YtZ^_zJWj5*Su=7X%X&|SuS@gG7vSH*8_JoCR>@#4i-$I0UV%M^QS z8guynoc7yV#;nCC@SESzuQpoRSI3yGps*c{pKg~i*eXnYoc186pus=FIAWqb2-BBM zaVlg(X*a_3t7^0_VeMY@946YKFwqW$iFPPVzhay-(O!kA=p~_(80V~gg3|@2N=hqE zOT2WPn9WR%HMB|%d_cTi`>Vc%p&Ue&Qosb&R6Bds5? zbNeFfZtliR8i~I3JHA|K>E6OZPuwoFs=UxIX+otmUK@=!L*pIQc$GBXV;XOv#`|95 z-O*Vrzu!ryifW&!_J-04rKiwKxb&xQ5gM6G=)i44bIS@fswlLnicq_1LQm8b8j7*X zmPgzxv`+JVr?P0(Y6}&^3c)EBsCEx#W!83SjaO2lcYQhZ=y{_hr=c4&M0*3hldq`kQqhLKAX*`; z(;Vto>Zz1RX@t@(zlxPf+P?P}5$y@A=WOpDtmjN0Y0JE!?NLwLqk0R8S5`w;XlOpn zG;HN|rP-SAaLw&2&7--dt)}+2sMc9Oexg^jS+6LcmOfoe-$k`=RXeNNL-&g1{2?h*q1r;t zx4P!hNokzYDy7Cs1C-_{y{U9i>AccMTKbQ$67#h!&n47M%eP5ep^NtCm$g0GX@9&3C!x7Sy!EG;K@O4ytyq+WTUYT+vCT3rb5g zj~04u>6+VvdTnR*+TPdPI%;k;wTE^4TiQH)L@3v0DZxyw-Ck<>3C;Iez48`H{jjIz zmbr=@08=F$GdXn3)K%>_jaNdoDjTH)hjdQ7P3O+~n%i*AZIt%*LFFXvUY#)qsO6~6 zm=jey9F`Q{D2>C8hf7~|kkCBU?inGPPeY$ot-I3Ux?*|pXi0G%dmpwu_lnR89Y;qs zUX4E_^nRraTE5+{iRDvTf1ezX6k}X}@t%3Yy&23Uc?@~D^i~-^XCzM>hE0t_?COkD~qa?hfq3;#6lXKc5)8HSTQ;@xqHU&MS$&`dvWy-HKX}E;e8!EKwn$Xg}gl40jIc?7jv2tG1CaS$6j&3f? z9kwiM(VK{Hr}R3XprJNU>DVICK2aK@p>Mq}=l8#Y$O=xuTnmQnx7L5mi)L))tdm@*- z?L^;N<9z80VJF_9wDcXNpF#Yj3H45ocxO(17vJ7lCHKMTcP6PUv8{ClBedFH*?Tk5 zPLSzug{op4v9<{%WjfJbXdz}+)-InD%8wl$ zYnw5HFpYRi=)H1Mg7&Bv4sEEV8l`19rg`kq6cLvq_KLa|Hm0GyqN62*zEXQWs&!DyN8yQZip1YIE$#`!9-Tde&EX0{4Ksv3!_38@12I;a+9$PZ;AKa`35P$u$2naB@iB0rSrj?O~lhq6{hHS$AQBR`ah{7@$HLz&1AWg$PZ;AKa`35P$u$2naB@iB0rRg{7@$HLz&1AWgLS@QW~Q~ekiASNj36AStCD`se@8orN@<;DGgR4Ka|swAIe02 zC=>aiOyq|$ksr!Lekc?9p-kk5GLaw3M1Cj}`JqhYhcb~L%0zxB6ZxS`aiOyq|$ksr!Lekc?9p-kk5GLaw3M1Cj}`JqhYhcb~L%0zxB6ZxS`aiOyq|$ksr!Lekc?9p-kk5GLaw3M1Cj}`JqhYhcb~L%0zxB6ZxS`aiOyq|$ksr!Lekc?9p-kk5GLaw3M1Cj}`JqhYhcb~L%0zxB6ZxS`w8AoxAIe02 zC=>aiOyq|$ksr!Lekc?9p-kk5GLaw3M1Cj}`JqhYhcb~L%0zxB6ZxS`aiOyq|$ksr!Lekc?9p-kk5GLaw3M1Cj}`JqhYhcb~L%0zxB6ZxS`aiOyq|$ksr!Lekc?9p-kk5GLaw3M1Cj}`JqhYhcaEon#@FgC=>aiOyq|$ksr!L zekc?9p-kk5GTo+gC;6eQksr!Lekc?9p-kk5GLaw3M1Cj}`JqhYhcb~L%0zxB6ZxS` zaiOyq|$ksr!Lekc?9p-kk5GLaw3M1Cj}`JqhYhcb~L%0zxB6ZxS` z>@hSG`?1#$R-(j;G*YO-e@vMM`%KPjb zdH|tmrr{!dLC?~f3HaitrCr$RlZTduM+4bIOEZs@5b9e)sQ;53kG-Pd`zW^%?lg?D zlz)dj@AyY<@ux50?g4ox_!gJbB2jwsf;7CViu*21Rk15z8WF;m&6iW?Bqh2(xC(g$ zP5fXi}B2a)uLVT%!DQK%i{M_ymq7U%~lXBJI^a@zb`;vZec&bdk%gx;zgo= zp=T3?&9N1D(%2HcGe9Z4rz^d8lJK0%R`IOq-72z&_oI;F0Mf>W7Do@`=hEc63tR%) z7e}I#=iq)QQbeLY+@oSz{+?)MT8P$Esh!f_Sj#v?f7L>caHk(7qELKq1bNU?H2l0M zmBp`LlJJ`;NWr1G=184Z8-=?|C`GK#v;i~RJyK)`owt&pFMc(`+7~h8D(40w8GbA5f5$NMd;-SKcSXl(p}oDdj$1^8Aux&kJ^Lo zMf-KsdQa2)&78UXl$qar6J^goHZ6rxy~JvA8s#@XjmJ}KwxsmLL~VYu@&$VI0d~eHV^T_X3jN!&Lg&sKEQ}NjZoarQ=(DE z+8{^VPich4nURQ1J))AYc0ImRSjl(3F1{IpUR%kx;y!#q#nKavB$U1f-2|G?&=b>x zExpzb=Np!?VdPD+G#J-0(^9<*yccL`6WW9F#WUMV3mv5znrSFB)y_0TLG$i2l7eR2 zCDzJ|*oCjK^e$+VrKhl#aalG&+hw)Ip!Y3#Uj{g{fbHQ6K1%(*wfCnfMXE`N=do4A^g@p<0?Snlz1dzH6njQ?7EcXv9;a}& z*2IREohDi>xwe>+_WO(DMWUz22)(fuqY7yw(J%0IHlkELhl_nWb;C-w9INHr!1H9P zecEt5mB8l4Gxf{JjkHL#dmX%UYpGyACVoCPkG)>c3OzH+nw$itn$rzg!*lxR*>hn9 z-$TGiSqkz>itp{Y>*X(J-1;%aqwntDZYdX9hR55nHh4G7YL|ZE`QU%EBJUI9JG&G3 zd>7ww{8dP-;H@pxDL=z^$6BtJICBJLzJ}aVO^!oyZS!4kN;O}jH&I>T8Qhs%yOF4I z@gmV#E?y-1sf!nh4#JwkwfpJ_PK$LAyB5|CAz!Ac8v6G<(ek2SQE1EPxkWa3S zkhatSlwoNgYHgXNY#6JnEiG}ohg35ZS4r&~vk!~u<9AHt+#=EDQM^@)w2^2XN3ng^ z>tQmEQcacaeCEb8bp~qPXa46*UBZ5wg?rc!x~JKNwQQwLasLH8tz_vauBblR(`Oz8 zHM2AT*Y=2|M-cBZP}sD_+TG7mJJib%OY6pQf8mqz;Wov4m_e!^CVL;a(daW@<>WfW z&Uyp)I_y4Sxwef*U)tiQ92a7psb@8r+kK|Jwt}}eqwg(I8({@*^d3p1ggS?{u|@9(ROqfT2|THjx!6RoM6j;rl~hlGb|y@&Iv3 zH-1GWrSBqc19`c{J{e49{?vw&y)P{Nin;hCh^?IZnyk>5(tiZS&WX!P;Eh*kk?4Zr zLbM%2GHV{>0r|e6vQWN35WX0Jvmk1t7EyWwfW|L>pS3nZv96ZlU1_Wqz)saZ zr*D3QKU2@fqc6I03i%pIYzn&jMf)7iw;xg@nf(pek4iFcqHoZyltafMlxueq2>l8x z34g;%e(eUm`h?8m7tvbuM6KTxDa^Bv-!#5mXkvMx18G7JR28~VO=w$9q0egx?Zt@$ z)du#gb(muJdSBJRuMr-jy7wam(@K%dt}k@8l~7xa_g){-=o{~xVp&(A1 zqK%ju^cCu>@j58o=qRD3UE0_@p6!C?ENvbgA7P3Ot=rg`oi?jZZ4|Q0jt~womuQtWlY0w#02BPknN~7JF zs;HJn=@zAc#`_k1gHxPUIWmhVqv;jSlb9-EApwdF65lR!4>S8Y8w24ZEm1-!J zP`Xp8B6>TgJyTogywa^2dPTLMYJTl6M=>X|m2Z`5|mPuCSa!Fw5^o7C^f=-&!H8SYAKD?eETX5 zRqCmEG*fD?v`_QMRNA4GSLsSEDM5DCCTYD4Ps%?du_Yg|xCbS(hA*UVRU8sF8p+W70<|t+FDcWSU zH(1kNQTk5l>4zl6oQROgCX@^FAD7^g+B=8Q$Xa&Q3TjEasP-PlKF2GgS9t?72x}X) z1Rtw5qk)9}&`{`W4Q;8{R#E9urCLgVVy5Oi&MAGXbWZc#fZYSfE1_l1uk@hC>#1~C zJxTFSN1+-TTBoUKXVgkwEmb*T5lp z!z#(w_L#QT?V7fa=G#fB2=;KC;yvxfA=O^jGC!%g?Wr#*zSNe^e!pmMJR@y9=NM@?1rK+M-yp)7?(zMw8yA%sG?GCInY^A-XZKl*m z$Ld9`@zt8*lG^K|qdT8o`AY1D+47vqLZ+I~u^K`_%uO7xDAo$5j&+2Ph11p)78+Yp zsEy`P1v53L&BRWhD0UutA3d?=_cRYp#}zRRR%(hiXN`Wrf$0d^oT-(j&4D^)Z3^m? zsV4drQEYCFq1CauRYY2*?C70L$>r^dTe z<0btq@rJv2v3b-UWXyv$kNXghX~%G(jX2L?ZF*^(I@owEUKN__v{-w$m&eJ3jaNbG zsobJ{T3_h;5aZ&}FLQB<6s2inSc|oM4&%3#wR{^!4-tp*ouuP9e}2S<{=L>X${fuU z8*fk4m`82A-c9j6LQ89h2z3}Mp{&+ABO;gGHEDkGq(D!4hjB0l(ZAGd0Zi`11 zvk3LtMGAENY3-PK+?YLc(WOOdH*>5dGC{#PrPVUK&0SLU40@%b~~ zp=5hr9eCtj(c@@+zFtpTfRiFl>s=+~!CGFNhVnU${Kf;fC5O^?@^4P-X_YZ!a&9G+ zJj-+rOqOHE;2A6y18hGHwh*fPkkF5hG2u5XZhlg2dB*{ z)Eh@${dr|x@H0+gQ0CZtui;deH81U6%u;mr<=1z8nMT<$LnD;yrD0*IAu2uB1z<&*XY+WT(84y!D)N`A@*uzleDC9Xm^cAp`6FMpv3Eqm1LYP9}zvf z;5S5EQX=kuL~M_U-k0Qf^fd#&dAKlt*8p>338AbsN;^?=o2)d|QdTMU|0OA!o)#jF z(~`zS8e1WaX*D!1-xj4B2xaYlC2t<5rw+L8vuY!+1-*8oQ%+8iRcHycIoH}IwD13a z%UR{-jmxYod-?u*JTKJC!|PXBX>x8GJ9|@~S4WmPJ#7iSgEt6eYDD}h(1UT9W% z{MS%glWC;H&NNpW;#+^{YmsPC%uP&ndkC#jTB8C+Ew*M3qCINmP-*kTO5PE1}AB@2*8VBstqedvGEQf-a|ItWu-L4BP}-GZ3t~{ z<2C9jbQ(R8G>%8}RV4Z)%G}zRvO=VTc=ynH z5$_pd>mWB~;4aqQ>u71FlbDN{)}n_oWycv0(;n5DG+-^Z^t0FFx2LSVS90L#5D9o`Awm}x3biQ3gzv;`m%TE*vB@>=wb6wJ{G?)RF9{>wNSoVF z^@Jvtz%TJxZ5sM1(?0YZrYG^dBU5YKNoU&si^MC4(a73B_}D}|2Kjoad|X$<8c9oU zQ@R`8F^4Wx?Q5mh8v64@c@nj8Uw(2W)&uftoUWWk1)kuX}#TCR+h60{jZk2^AhPfep7g-)Z}d-`Xzb1tEyu|y_zgWR%&kvPWi!!lnKF_8!IY%4=o&pG`Sy^bk`G2{}U6?^Q-+f9;&^uXMp!DzMqf&9t?xgfz>m|$U zMQ!kCq+f1g%bvYjGuZdzK1AaPzYlR4zkp-=O8_lRE+=Bk%rl`^s;uhtzmD4f+MoZur2m)x?6v;?^I63k-QI}zYHiJCskP?< z()u60Bz?TuHKBix=h^el^}O2Xe}(r*vGa3|K{(m5W2;Gv<$a!)1t-6ht%vSbzd zZ=;)g4%I;c1qtLJpLQ~-3a_CPQnp~H)*t#!- zGmou$Mck@hFZSxRi~3gH?vQ#Dr^t(a9Z_ug3S+ml)0Xc=?3S3`#nbde{FWc5r97BQ zsc*W+?WEZr^-2D<+ymBLj%xT)rnN#X?W}0urSnrt5nC3TUp}#EY4%~Ng4~GwW{a+p z7cYptVYq|9mZMJ!`BwVaxeYHS{XSAo=n!nTrsfo1kCOh=DtY<^d z_;ZR*s5PcdXjSf=I~}E&zfnHw8$R<8N=4rZ^`2Junc{1>RQN3_tZ!5Y_}(|tGSRc_ zTrbgeLXm57MReDQzgRRBBV`aQ`}K`de&3YKLZ=WEFU@>Cp6~WmF{9yS(S5(L`3|cP zow^h^zbWnhR`RHTKFKBMI7YN#uHP3olS@lz`3%0wO6FONH?myGtdHV5;Ae^Q;2}ez z*iv1}DQ%Qvmekren5DSPuOls!w*#Q}8}GMPicG-s8x zGE+xrJoY!cnHq1Nu0{LWQqh&yq8yF1Ab$~!emj%jXy&@|>d&iFul~Hc_sZh6!U0`- z7V4FI>%KRBJ*_9!1-{4Jc#%*~oZYZ?3+}!$4Z^C+b>Mlk3w2Gdh*JozgDYAugK%cV z+9uWR(Asztq3ci^KKtG_#q-%;ry;83d!Rnv@kD4PA3C<#W8=}z?LAP?Y{csF{Ew8P zCH6x!0`T4vPPZ-=A@Y8qF#|o8w4j;mh~Ke0g|tC4Y(BoaYpoo>+?4Gcr7e(-cMJLv z6`v%Qmmy#J9su5Ug+|{6!#B`CJCP!2UTKQ88^mwY+yLRX&l2$F?N1b%2OfPfl$Jvq zfKtp@KTg?Id-WI5mRs_n7c!O0!IWky^~F19)oDKHhVoHAtzwG7GEs_otuEe-{gr4f zRva21N#^7n{t9={)Wgg}UogY3Bw$XYUj_=Arf4nF(#*r_aFU-w)C{X+`fo%XKr=1P zK1gN=upg# z$yPgB%$TB}G}CV{mxc39hsODKE=1J(R%3cwx_k%xD4QbRB!0U!$$Z(oW6udc3ZJA~+WlE3OF_$T5vQ1}7G4EoZSnf~iyY=0=8i{_`m)krNJ=#;KKJKeg zKZr!DJHoGwyHSC6_;4L`k{YY6#aN}UJfxZNI3cB4OEdM+$C-Y{D!Je<(*9DC@s?)Z z$2S{R*wFZ2xK7hdCieWC_KPosn&Al-?%7vSyG)lB8?!e|S5*8S87Upn(wkwA>-m%G zRL`%Wo{w1i4!!PsP|!Sh5^ud>4GEgESoi5SxPxYk*7$c-I0fE1N11D4hnQsUK|k$i zsqYysX%&;JGXF+%6*KDvrm&$e%~M;3?K|4TkRojUzz!v9Y2;(*ZS1Bi10$K@v6hUwkL`7tx$sMsXpKnpcoC-9&`FQtH)L$+$CZS( zbrssM8eiG4q4cY@Odo6)qF+{Gjea+mskhpT&lIijcuDb`3r#W)V6C7ON#;P5>nh3g zMQ%K^RzjW9wN)_>e;{oxJ))A?ju!0Z^I_DE2R&gax6`VaQm{gEQx%hVn&;;h(es!O zPR3CWtJ#<5@g&prE$%r<=5zEC>P<;z8)z8pC7JgZbAL%PO_vD$g)8Eocyuhjw`t=Y zz|6pD8^9i?or(TK{V&P*_Q-g94sA|a(Cl8qyUn0!|0vcttm*h}0NR&n{yMqxN9q_; z8lfqs7pT0YWCI_uEcMuX?=q%_)pFJ}<}0hUycb^?wEZgUG7|1F$H&@3;>c?8Y)hLV=vil@0G>lu!|M-hj)E)xAMLsCR>=20?8 zB^b3FUvC9@p=tQwEp~XA$J0zzoeu(-i@81KVU$sBX{NecVX>0HOPJk~-el@;-1rFc=^J*1eDsN^-!(#$XLtmDg3jd!PY3luc7-{iDu=FJN{7Lv?Y(`Ahx zv<+{fW9N+DD$~%j8k+MMW@Q_C;TxIdTMm{{R(-R~^3P+f<(*O7ZQLV*hSu5=SPg<^ z0osU(R$_Z56Z6|xZ3l5Yl<#r()Tvp9nSp29wxxLQ6E=%0xm{4q7c5FXgWW4UH+XeLbP-4+^~*5t@$i zK`FAbjNLl&FuAB7tj21U7j$!O-J#*vK#?00<;Fz0F;Q+zlp9f2x!r7;ycV|1M3$Mz zG80*5BFjXvRx+__&b3ya!)}7BeXzil2Xb0CA7EN`&dg=^Z^MSjca3j`!tVqP0^u~gcjB7@GJGy(m$)(1--VA zYDZd&mC0y9&TXW|+o198R;`566b;R%+J2?ywFFaC`$JQFs?-I2ob$b`De7wIF4gvF zNwYPQ6tj8?EmB&lwYE;RFPlibJX+6XlnQr|(27d8YG^-g{bijc-WzIpyq12x#`{5O zg0|6MrFXD1;_H1;)8^4uZLWQ&wboj1rPW#+XO-^M6bWjtnby@@t;x#mB;S%+8&kAj zeWX|Zre0;?29lzCQ=vI(xxJS8L8aTY1ZOqh^P0l1Eptud-N4?FYvZ8S%Y#Z&l#Z*F zVGl}*wq=BN-zl`Zvd{v(qJCPI0cxd&mSCi6FKCLfN}p-nU()g0P_-6nxtm&PrIshF z)=A@)*U*J(rGaWG+N#-=N+{i>R9mUB(nG0o<-cfaeTZEj*KR>=>9T!A`|1Iq!rFqZ z^eQ)NzxwzgiMQl2q4(Mgwa`}mMeY5qv|jC9!0gRsnXGB+XzTkm-T-aiIa;dLTKXE= zBi8E(EvaKGS*eGnn4~lHFs1oeE4VC$wDgbZsC`xAZPL&mbo5+PnydA)NUvy)mY|-} zQmx6Y8ZS<-?JF(m3AJ~nk(6($UgcfdhrZMDjn(?=tgRoX_Ks`oS5WP!_Lny_k5PI> zJGI}pZZ0K==xi}S*R74ZR@|$h?KE_bhW69YNgDc*hK|wDMH+fmLtoa=Z5o=*X|Zek z1oVguyT*?|ZT$b3I~)I=tN;I>*Y)cy*Tjq@7i&gRNoyoZ8s?&smV_iN*RV#Zn$ zhL&62S=ob!CY-pA|x{R4i!x7)Y(=f3-Sp7T1d z^E$6{&g)A4T8h%kU-zQM<*x~7Ve;1`@7F0DDUuyU>y*C^A`kiNuSbKw;&CKP#=P7f z#vYW+@$$Why(L-hu;8!igMz=N%QfJH5X)^`dn5YUu8SU<${p=X7sRf8yma#;Xn8 ztF@lquP;4sxVPndyeQi|Z#&M;ax0H|dq3Z6#U!tY9EBz!d-fZvJ059#U9vkBQDnkD!bF1L(!SB!mOE%G~ zjRddmGrT(J;IVC9YyZUC@(tdv6JEU4o)_iSOM5TgVb7c9{K#JEkE_-`* zvse03uN`dg*jTSkp7ZKzftPlwSChYECMUQ2B`@DrUinUYf9>zF3*J6|!z)#y7x{bd zuPePR`qwMp7aqIlvB_Rpn78+@cwU0n>TdUriXR>hmU*7%9rW7JU~kLQy%cR}+d}g} z*|+m+O1&ra#$JuWm8jkm0;qBMYXVZpU$-O#e`R?r&SU>zd!=`?$KLk5DD)fhuU%1B z@>eBnFaPB)K{HW;Pf-^6Ydqq~U#Ag8{t9@k3igL&=jg9C>pUU2eo$?Ha7|$(=F=iK z*6(DHbvr22V#Uk*D_?Qo@s!mCW&L2%?O16OyLY! zRbzLoky~!ETf5+`qF^S=8H;y0ieFEDf_FKJU!(DBz4&zkzc%6*{tr?3x>Pmx&O5TC zYF*XDvAUot-^!MB71?Hcu>QPQu!bJn>9I{%*OPl;{hPry`K|Y>c42V8@$1fVovRt@ zo?jui*_Vj2TtuD*CfCEvUxRHoy+pPWd=Gqckn!~xek9xM^liZup}!_C#Jk2tyjQ4& z*{scP@V{Ilp*T1k@h=z$mq!^6L?S#6 zE|0NF9^r9XfK($Aic{TlczIUAsp%0OXWb2i$H@b!#gcF1S~hEdb#1;;wOK?%NuC2~ zAxNr1=72=7eMFi)f@@A7by#d8nd%j!`qE%5k}XxpEvTHj%xTP>EOrW&b0kPktcu{}hVmg7!IkQVHSAX!YCfPNU{E_R;CrSX#7!_3=d2_QXLFCqt$G?p#MOd@yTD4!4V7~4Z+ChB{UAg%5Yk(u5K_u&e1 zj>zOSjBOF5Z42p~S&b`ff=m@8jctDueV!mEq$5h$ABXniEDmRNUaS0@MWaD_v3Nmd zvA#I8XM#M*GKq|d(pV}E|3r4?E}m)@yA{_)PJ=wl_S`MWkyr38T95(kk|0^^&i1&2 ztOBmqvYHsf@KmedtOI$0ts~;#3ejPZB-R*P$jkE#T4wc|7#qg;>K|{1GjTocZIBU+ zf3*n2Yd<5|O|AXJzXwOM+QLa^`N(Gn;*4as5;=S;-d_(girqnk?@3NZvsfYzqR;pN zWDILhWNtmiia=iWoRK(^xRV^#o?l_{lqv>?ek4lpN|=+v^2o`pBlks0nDZ)&zmIQe zI(q@_uz5wsUJY}`vYF&ug!2TPv1}2MuGnv!yw1vr)WUx`8OIW1W#oMPmy~2Ca}9D(RNOiXS4|{=v1B;blQ?rDFJ6`lyCxDLgX=!A4Qy1f)ua^&+(SR9e+!h zz&;a>JWel)I7O1Mi)fi;AQRaMB6D%itBKRuM0S-(Wwb+nR8C?J&egmd*mV>;@cD9#f29Cj8km*eCAPGOG@Z4vxI~B48P8RF0 zkZEZ5v)FWnd=2M4woM`XLEdNoD5MzV1J?ARP+n(1=CS7$at>qxTcD6VCSxD6BMP|; z=Ob3_;ZU4|aF(zHh1Am-TgJXrh*24L?6JQTaudi3#;?)wTIJh*Qp1>oJ*kjvME-;jrwU*@*;b+)Ya6V=H&8a-j{!6$!1I~IjN+I`wRNqcN>$te%GL`KD$iG8+w~R8 z7fw2xfgxT~r22|olti3&_|a6z8Yl3`>Fgkmubyyrvt%OWC*@ghH*3(1JE3EFH*>pl zlEuD2n@}9LOHFi^$&wW@8|GSwau#L}Rd)2l743C$b@iv4euN>M5OT zcQRHg$P6Np=#~E!gg=|jN1m%nF_y=G_InmjIQOj@)OIHgsuJ+ z^AeC_ESty-%!@cV&Xy86h*2d!zn@^A5h*-{_66r8D->jw=>7f%Il~6_=6Old4tw!e zHdPRr`v)NZV-bm>JYMd0$bOQ6SR$DjQ4BeUPIQhKPPEy z;JcVzfm~)4Uy!67#x^@Z{$iB|bCSi?c9^a087iIn=tvN#X9E~xB2H5+ate=wGg@nm@<3v==0sxAHn`JFYei&S zGfA3j1BkSVm8tH~#t`X=F%FN@LYqWnGFsdOkUO=hM7~At86Yh+ejh&1{Q?}G>MpN5 zmC@=rx!WUU$eojWJn~EfNm^PR6gI33Tt$V|q*4i9$@-ceaj>xUUocpw6 zlC;24&@vLA1`JCTr%flPD^l@#j?>l=sohY< zX`?m9Iep z2bO4RfppdWmX6nYyN7L8cg=W@$4O@eI19Hys_t52A{B8Keh8#TSgM{{3^`xdl1@+U z0YPT5O;2j9Gg3XKB@lW00gX)t>7|tsc^`GT5u~>^HJj%?i;cU0o)6?{E&qL4o;I&x zm7*TrMx^~q`Rd6!XiJfJv2`^-rjj$8xcnQN8Iz;SmC6zEac8-f6r^#M1Dq3@aTTNsy^5iqSQChx?!{U(p1f&|J)%%FyUph-BGFnR|@)iis zeT+7nNOvMHYwH9l(Rf}<;3R7!7V|hI8qez!kd&}J_^Os7oKX9D_5W}t3MZY7s){cb zBF?MY6e3v-7%K)z4NLW!Hj|tqw_)xH=QV9Tk&5VTI2jw3>UHffIR$mF(v0Y@YiEe$ zqi5r(#(BL~$UgK53qU4m6_+yno5h|&sv{tiwbjcw3DsdnSa~wEJmI9{iY!*XQ6m{% zA9b!iMkpX}Y5C-|Knt%4k{K4~ZLN@;*=VTzT!4*P&T~&^mmA2VX^IvB;_~)`)zsS& z=N*rfuh!U|An$tQ@7wXDE68-Mv4}H^%|@z6K(e$>MCwFK@?KbZKG2ec6WaCdUdTKV{^6Gk9nE1*pd4*RuyEPHamxtS*#7l;e4h!PiwV8lC2n7 zwG)oNCt0AaU&)p?jaG+BxDI5E_LxHQK|a$aDr6D#4O+HBcEiclauu>4 zBv0F~kYgZUYJV%F1Z0a=^^;KU=Rvk=_bTLXkbJGTLaauZn`=W9QW0dAHdZ0EK?<~W zf~2v9=~$rx`9^zWO(-v3&);g@6~gOzkCvzqUe9~AfePXEyiXgh5MIv*w6O|#40#>V zW+|i($dB453Kxp{?LDg8&Y*YUlR z=H3dzYvUiSiXa*8=v*1+s#cqvH$Zrtt6Br;h>-&)*R&Xg@HpjKD}@{c`B!^PAx2}2 z|FjW;$WZ~WRZX9&ID9=y)AJOo!#}&(-f&NHat>^>~G}0h~WxcN;p;fio`a0CO+GE$&H-`~_KVMr9UK#lo zb;H*sYU_m}RXY0*BZ33SJwiV~q*hx36oG62xmB-3WCbR9 zTR( zJ-~_8j|vhxo8PbdTf+T%iEz@{T_{TqQiVHl`UP^bu-$y@7Z(<%jegT+UK{D`35-zq z=siU8(SA5->p7QNO7eh5{%kEtyRgU)>P;!~B}CqY5ElGNN8Vl3ER>xdZ}>I+3(nc$3)~HX@t$>q^o|3oUILT zRs>1Vugbi<+UTZN+{(+G#>(H5s~O$&hXs*GE?+0dZa|XNDz$7afi_eq)*fr=JPnAZBGo__C$T9aMD>M z+998NhC5H|dE|VF+IR=KKOGjQkA9h)09wl;##o;)=NY~IcKiWtwMA{|JfklXWET6g zn6agZ+*iLWNH$xGx##B~{q?pxc&co1PT2|aoSsO8*Tx}`f%dpNWhC;a_M<($5MKs>7GUw(BMRig2*T zSXs{TU($o?HXUw7uZB27Jm-b#(i!SGuQ!m+u&~I(b@4bbYV1v_vEgCP2)!k?hu13K zJB#pZg#NZ58Sa5$@@n!(J&VY35Ppqgq&}C(HF8Gji-}YmE}c>ODk4K~(O4|DVzmA_ zku;EYf@~)8!Rwe?fsE025y=7RF35L8jIVHYC4j5{`XM6KLHN^4FY6}+3AN{By%+w* zXHwVaVr>IXvc5}@liId}xV8+Eq7N$I4%Rmw##f0!Ue(>NISI|1QuS7Xgd(Tvn*~W{ zM-h2FQl*B~>T7z%LLMiy-(UMboCx8hv&p(#$$3rhD99}K_9=|z5qYehNrb;0{dbVp z^*uz!W0BH|!8(9m>zf<%8n3q$q=3DJE#_ZX9j`AGB(z;=dX6OS!e8b3e43uLo5x8P zYws*Vht>#0+{7?6>uuf}}IPKF?E4(Tm8L2#2SdsypBE$QkTi zN;OljD@Z!K2YZ>Pnx(fShhH`0sovB36Tu>`$ZMYdGNs}x|2)-vJ(HaOI>}TE^)HB2 z#I*@t!ln8iA|GR%zBW6eQ<{5&KmFNz6*US?*Z0^<+V;9 zLwR+^(alqZNC)(yoP6pzYj8H_|uTf+IRY9K|=d< zZ`hXZ)eD7_&T8T~J&#m-^`D8P)x!)4Z zRKmHtMhi|x9hD>(XQEahKkA!*3Xvy4e%2Fl)>Qkb%oCvF* z6Z&Q0q_f4gTzNa8-~2O=oX(oJ#OM@pPI~RRTWh&qcS^5MPMuikoc5eQEF8?p+Tf}^;#4t$ zv-QO{$=P~Uqc1ssqgVe3PBoAGPnV>+;g4Ly;BN}#N7FI%wEP~18b;zTlAJ*=!slo; zJ#znDlHBYO^FB#xd1MWaIG(DuF^=M_#rXm^Ewc#YkRY-jyBDO6aaj`4k97d4XC#*J z+-I?BI4}1Axh1U3^^GOMNoS2BM~}bw&F@d72u}6A9iS+0+;+NT`HO zjZAWa_i)A-`9y*xj4_JN-dMsIVjHiARTdD<17-RGo zB%4)y7T?FfR>T-Hh-BsBEjKt{#u(-~o+_K2`&47|;50Kv5&8Ogya^DbxiOze7RV7n z_7SNvNRk#tz4J0o`%Lsba9SFD72@85H5p?m5q_rtckVGNqTk`UbHbf_jgdrnoTebH zjb%i7eW|g#L1K+kg|q>QGg|&G<2;9_5}s^;6%XSPg**i30pn>R^T}yvj8F)7+8dLI z?4-Op80Qqi^Lp6maZ%>=62<9g3{nV>)5%CBvXq=hjdvBoozBKmB5P(~ZVJ-Hh`uBv zb20{`yU~*ff7=ds9y1dDkPau@dD2KG^89klb3qb~UVlnw`T)Fv59DcMi9-0j?|qD2 zMAFE4#;9>wrs9M$v95rFkis~8Df}!OJ@mMcmc>z zqbZR%tdkUj3^TeD*|h~%GeCwL6NvD)1>unmHp19Pw`(6k zCW1^h<|yP{khhF-g)9KcG$#EgQ+ zlN9nF$aJHKNSy;{Dfi(lYushZRGbV0nPqe&vKS;CB->a|q$~E zf<#H;Zpy5;Y+C$j<8x)EoNv5H7Nj6lB&;0mvCf=G)G zB$;P4ux0L?6eHDq<0&FfZ_q@U=Nqpn=}^njCw@&A{8fly>V~pEppuZz0s7Mm+Q;X;J&c!`oZWz z&g-?XQh``MggN^S{+4N;d(hb*<{U6yA?HjT`DEFFFz29=>2nT-IfslzFN%CV@s-s37a?&DjK0)qB z!;AK7)=A1Sz zlk)@e`WbOf8_!nZHJ|Nvc^9h!ASK2iA`6<~o_0Y}h-}7K>9Qc1MA}4R)+@+dB13Vm zU|6jvF;)}#7-hBv*-GRrN?1{leMA}|PIW;}5qSb}A_TciWIE#17sReA%e)_P8VeFZ z|%pyoEk#(&x`VgcGk>0TwH3-s|$WYAIvjrJJB)Kil$%0HE z^4fz~!4qUAk=59)96^>6*@koA8bNZ2v}%X5kRXLb>fyY!Nf7=tJm0RlaPkE?N96wI z7@Z1ooyan@%sqlstu9kVfb18fA(22ijsihi5h=WcV^ok%L_T{5?@SdWk;vQFr)LEj zLgYVe*F{0b5vc^{iXhX7j0Y(fWD$|ykV;2AmKdKAnF+@gWEYXY;8YgmFp>FiY6?a>nKPnk(ZFFiy%{otX+h2iXiieY@CjHiXdx<+>Wz(UqSMTBxm8RAcE{CasS3#~2c^*!(AZ|^$?G-@A3KB`=HINB{G$-O>4w@lIJ0cl%aRo+@or~83bLHY*6UbD<}|egxj>{FoO*(=T5{V*PsQ4pAk~SiK+B94q%jdK z9#_N!X-#CzHLUy#5>MoDToH>Cqz{oqgjeRD_4kDlD;C(lO93*lR_UTqZN{G~W1^1H*Qbwd1 zoZW&{h>+WUGsr$c>Jh1rREGs=L8JkkVnNyynTPEF32e&-+@F3a+%0^kotny zcv_X8D|e$-8w(NJsfG!1 zk;pcr8Y75~XD0c!H%IT6Do9NtFCosGfh*orBFbRnW6uNi{yH%;)! zuOhE(K}Hbi0cXA-6Nr2VXR#nNiL^m^as*jQWH9=%HGtkU}EAuh-ZnL5>nx zgfiy~a*jwh?27_Ht`nJzt=J<-)w;6Gov<(V3(}Ct8SIN9L0S+u@z?o zNhER~dXlq(3?VY$D#ky8j3aW(A&h?nnMTCjfVXW3vWUnGv^pKpG5#Sk2qkm{*+pb1 zwyUxrhl!+M57rc<=FFCym+w< zY7vGF%f=`PYXd>6B&=*rj;P^f@HYG=#i#&jz$OrLYsSgts`;hZ({e9k%Ju;LtrbIvIBITsAO0pBiJp0jW+7!i_q<+*6IR-CJF zE*kMZ=MQ7B;#7D9V^$;8=Ug_j6(ydoU2Bx&nY*0D^4Fc@FPOtTj56AkW*xo}J~S`u$x*k&iiSqaBB6Mc?rrYO!PIIfxLb1In26=ye` z3TB?qsc0TnoTG3mnx#IcvT5Tk)nJ*=!l`UVNaB^bs@Ym`uEMEm#`~P==3vFC&PK4<;zOns8no*L-_5&x-EJGZbeCociV*pVPq1Rh+SK8kmJXr=eM*I8)#>G|PNWW3yJ1(7u=p zr?D9=iMKDJ%ub545>Awv=yRgY6vf#DC)&*PIWgvP#n}xf#?13M&CSD#a}-WDI5@GUd;5*;C(ewLM7AF|ab~Q~X>0aYoIY^cnn^yVotdFHL*TSC z`M3DgzOKEQt2q4YbM4JSpYxDeqBv9FJY<&noQ`I#=+M5H3#X$QEs3`;I+>jmXC<6Y zW}?rDH&Ya66P$Q6)8}+Cmn+V0I9<#vPIogx60giX z&DM%@6;4kx-se1S4py8B@mNzZ`F9J|dhTUrD^4VwUS^KZ>1`G$P7IvhW|7ZHG_NR5 z9Gpbcjkz(eK4z38vi-p6W5)WNzGiR5=>w;)ndEc&nHh>R1WrG5j?Woj<|@uuI0MW= zpEJ-bQJg7o2AX9)XOLM7Yr(;D!CW|l%xFoxeKFYVq&O?#3^o&ePLi3TIGf-knVCLk zh`C&GcEcHB=J}jq=3&J-3TK#E>T^bzHpbS$GM|Mr!i5w3W4bMGY(I0&C`n}dfiu^P^*Qs+-ip%)&U`b;=PWcc z6lVyWh2|Wev&hU1`OminAErhRv)%xB@OF(V}L z%Dm2OtvFZVtTW?%&S&Oe#i`I0&sLbJK4-m|tvHcz)|)v#C)X@coESK{W|7ayGp{I4 z9GpDUz30aEv&oE-M7AF|o6K0Bv)SyeIDO!3Hj{kLRx?9!hQQfs&ha_n2tT;#E>@iDy&R)~LH&o`caQ2!Jl6Ym_XSPz1ebJ#5MIYs6b#o^y}C^FsFH@2UnW|Snd{lGbD z#`>IMv$x{(fm3WI`J7{BhT;r?bIhFMb55AKiZd3@3A51WoH9!kX9}ECW|_}9W7fJa zv@hnuIb%jk;_ZtPvy@w zv()EYFzwh-na{$xU`9ydmHDFCT5+zzxoF1woIlLLic_H*)_=@YpL5yFR-8yUm(3iX zbHyxBoESJ)%p#vtW?oU8I5=gdd;g8?=c*YciEKY`u9~qvr`+tVIDO!hn@K+Bx|yLk zL*QID=lC3EaIl5J%I8)&0R+-N+ty*!ReK8k~X+=xo?F-xLq&O?#*jA#? zajg`^*#yV6GJQ@3Yq{d=hEu`H^Enl*!-{hhPDQKK=Tx@rHlZ?~g;Uvzki;u@p*z-ptW=*<)5=zyNH{gE9G_FmDo~slIJK-IpA%tSQJgq95tiHb z#`Y6wMM)yt51dFV*5}l-dMi#JIQ6U~pHtt;P@Exf>RWSsP6I1famK=FU={kDh8F)a zMR1-n1x`b&%;z+=YCRBg=E7-gMN8uCizus;;;e)dWhMHYXe&i=Ho=LuGJQ^rwOny_ z!-=u-d`@%gu;Ltr)7&ccIV~)^U8u}w;k2+KB=O4J(rT?ZSK+j@;(gBD)?me{&;#o~ zR;tfwWo0W)B%D@Oj?Zar6(~*&oYq#6&xy6JC{7%lSj&Cz#`Y6uMM)yt51cqF*5|af zdMi#JIBl&YpVQ9DP@Exf+F5gaPJ1g?amK=FZx#BShpZCCnF8k_tIX$gv}&~v?Tfi^ zI$F_^c>AK0)k$$y!s%r3x2&RNdQQBRqBxu2#9Ns@r;D{*adyM$V&(aq1naQk9EFo$ zmHM3Smfay#=Cg3RTM?3Y<>_g)R-CJFdRp;5=W%PW;#BC#zm1;ib9!0XiW3Q^mzCpl zdRqmG69cEWRpfILtt*NX2Pe^TAG)y)`&dzu$o2!Lj}_~4`dYmerw^RIR+7)@XJshP z5IFs;IX-8Am8&>o;S8_}ea=9uL~*9T8EBRHoIzHtheP{fE}TJDv?SiX7;JS?oRx3} zTZuj=$x2b2O>mN|OrJBvTCO;|;S90ze9kcIu;LtrGt4UWIU_8)W2nq$;f$~%B=O2T z%4)4RSK*AZ;(g8-Yp~)}z*XllR;tfQwz3r`5>B#}<8xB10>z1elVTP5oK)+I;>5v8 zwcJN;Y(HbIC`n}dfiu>M^*Q6L-ip%)&NwT{=e%iUD9#W#Z(4JF&IBu0amK=#U={kD ziB^f?Oo21eD)Tv$tXiEy`(iGfNmjHZ-oD7NIw{UdI2l%=&&jk>6lW8hOe@ppOtF?L z&TcqUtURAH)jF&=N8wDhN`1~W%YHOe=Cg37SrL+WWu9TRR-CJFW?1n)XQnk+aVk8H z^&czM=ghXU6(o;ViNWea>R5L~*9TS!|X0oTXN+&Y^uV z7tT^ES`u$xEVnu-&Pq7Ttwf)bW2Gq0COA1(rq5YvEmxe~a8_D*K4-OcSdetqc&f(E z!C7sUDGvW0<{B%tOQ`1g_XR$+E-R!7$miC`t|8|RkPX&Uh1?7Bg;gv_IvdtkV=sej zw352KCjE@Gb})i&!HB1MzsdtkO% zDMZRWGMh+;(qO6;MB)~qbSU9AYdaDCY{gDNek5Xz)L5Y)mx$CHp|OL41bT|?@>r9RPC!ETUiO4LH*Vye?eX?p1d8;Pw zQS8M@BgLsE$N(bOKEiYDAUmy3iEK&J1o_JPhDcXzS4TKsTjfNK@4?%)KnktakIUT8 zqYj@3*=-FV()R++oFLy?Qw2$5oV)_^oppvBeA-1g`>cyZzWqaz{Z=`V9{ch39i%#F z-T8#ft6QYTJ^(pvbtIDU0p2?ca>N=!gdZ1+L5i$NL_UPW$x&-Hk!L_wgA`juL^^?N z0QuRvPUL&sDYqHqnAI3<3+Dv35j9@`a@=}?$Yj(QCnv49h*U+5{Qz>>dY{Niq&g0A z#`=`Vvkh@4DoBa7m&m<~@%@4)@kH(oq&mo1>kK)6oyWWiFHlDyns=uxAL<;d=PRgvQf~2uHw3Z~0 zf2>pF)JAJb1-WLOCvpmLI4QTvh!o+!ocwDUPsy#wC34-WDo7d|jL4aA{zo&yiFr4a#cHt zoCj*ly;Ie0^)xR}HhZHIo+U@Bs`h*${9SoFKx)|Mh|CAs4^q>f+DE41q!i?4`?Y5z z`EU?gI7lr!hsf)T&{m(q8#(MfL{fgj8!|xZ*yTiK{DUJK0qWXsKg;8U>gSfQt+>Sw zeoNv`)Hwf^#4YxFB2_xeseq#uq`n<|KS^Fi`JCph_GiAx4Zn#gH5AAm&L zUnyiMNHhBck#zI`8$epv=laXY_r4-YOS}C5N#>Gsw>^_c8{GZ)EmF0zHxfxD(%L>j zq(9E@hv3B8HJ_7lMxr141tiXXj>y?r*ryK_cM)lf^2C93xq&cX zh$J_}^W7jl>}y26*Clz(4xo+lHh%}s)MMa0aRV6-@}wO>PAr@mAWzvXiM&XW6Ycgy z@+op3yQd(b*4x*v_oB?}B94@N#OZ5yAu{eX-iZa$&wiSSqoEfCdCpEHGW!#aReBm{ zSv!-+hainWUa(gSGK=vyJ z4tUC@59Y9TT_T@>v=F2*k-IUD>I^d6&KD$$Z8#Ss2c^Tb*{FHpG#Dbcw0%0hVgWM3 z9;J|hAS3PdL>`UBdm%tZ+2&B0>M;=RjJ7)xS$Us)OZ*snz%c1_MhoYW$JiH%tRV8T zjZZU(eR>LGfD`B!lI=tyrKp3wNR@0SV_&L$ON#xzAlZz6UGx~78_91VuioJN3zBLt zQd03RNxf$CHp**$*9II(AY<*RMEYz+TLyXEt~yFO{5=(YK*rfcMEF}N_!}qQw8xE> z4u4Ywe=o#%`?fKXBxa(=z8n3W-IGYd5KPqi?kM{C`_ zI1cSCL~^&|SjXSqv&#iZV{4D0M+bV(o}D67HQbFCQwdT`gunlXlWaTTRq1fj8RUJt z50PJ=z`K1w=GeoC@VE55C`f@qMuE(=4-t6=XA+)jzFkU$zd47ens4_^m3eWJ1+vgy zM`TiOnd&2ZN07WF-<$f8T}&j$BUgyb@QC)BjJ&`j6$Qy=L$MW0kk?0cf`wWp2IMeb}E9}N&dE{)y2~V}k9;FbTYK^^7kkE|vQ~R(Wp`+l_up{MD`;>6- zURjK_t{_gh^SOPAoX;aLXGA$Z4~w(juJAf9VLA&s>%*K4_MJXwLzt6mKS|DSlvi$; z^MyUq=X??7_oG-`Fj&(*=<&fwz_tJ6j>V%q4cdLgJ9uuXfc*qJA{~6={B!DYb_Y z>5MaEP94mb?bnIqp2poJaL(E@i10Zzud(0kQX)$*BI0?Sw_8n?k@>rDd7KOO2qLxa zkSj~S+Y5;B_iW#d^89YE7bJsyjL}yO%qT9|rvyo3AFq^=FWF^8R!r9zZ>xXUPiOGF zc4OZ?Bku1dFshE>Yqz1~& zTY~1~6ZrxqBu@fsm(wg_C+eo2?!^HjY`1S55#e*QL5mZ`a)!0 z7tB3T9>=LKoRYvD^E5F6ahxcbDiC}JpyR{~BHyVyOhg_eQ)$8X4Z2PN5k5ZT?a*}& z36jQQ56XVbb!xoLw<6TDxlTPnvfXN5YV0dScAXA_gpRKe2_9b|5u zf*{ndipVc2gl|Q_nIcoM4^QFxGe`wzjUYSq;C`=2WETszu}U5Zww5X$3AVZr3AV9n zo)c_`HJlA1uWVKq+dg<8=J?Kbg`|Mga(*DfTisNU+DU%ucu!+rg4A<16InP5?HQ!L6OZG8r|R}1p34Tg%^62z5J=qfm}NVKL^?c( zZ(D#wIShN3r`o?Ba|@8$odHDdz*%A%NK^3a0%_))B=T+(d~*||g;V2Q8RtWg zn+IV=>U1J<3Ar}`xyR{FFVSYX@oh*%OD9({4}{0H9o~S1f;t&ipUdl zu`UYI!&xUtmiT(zI*`Ym-xQJ$(#xqioyU>R_aMEUae`zs{sr4#K@y!^M7~^sWBmnO zUv@4KdEs$<>lvi4bB)LtkUAj!oLgte5{}~YIK+9*X->qx1y8%f8R#SvF|be5EzE_T z`3m9l!9h+TkrkiG8R84hWg-cv4ektf8f3}5#{Vbdyy!ear0!q%k|**?at0EqMC2uB z0+IbYWvU_0GKI85s-aFkkz|b3c?pL*r9_&{mSlueb*9X{1g(xcBb`_x&o$Fnf5aK( zyhvofk8iN5PI)Wt?QEF_CT8 zu;1al;>dGTHv92SS;7?OC2|hFtg)?dUUlXZ`5ojs$ZJk1k&8QUYz@X7)@eRl=GAa3 z+A_!+PBM{LoE zdB=I0$o@P@raFU&YzEl_=UrzvkwxT8a}ElU#pWVTF`Vg6#QU<$nb=>iHbJgV6C$q> znd!75vNaXswMfh&oly$8=|#*UoqQtk(YSLBfNG?05h zK5!zINm70iYxp4ZoQoez@=piM^*|OleRDX;Vk_I?d0~)+&Spux?|XjaoCqWSHR_L? zbHYi-GXvPtB-FL@7m*?x`x9h|bDfAAKplfDbDR}C_jDFt1@lgjkDaPSPGGjR9At%4 zhsZD0aUBw5mD7;O(3-eD2J(s1jEL*v$`Z(0rxlSTtO^_f`P6xU2!GpgDahwe4?!~A z3ez#F0@>g^MWhah@e(Hkh@6}zom?l0$VCwDjc#%c>Pn#h+Rw+J#`kdnZ?I4|>ANxrj` z$fUt|%L<%)X9tly^lZ}kl}HbeJB1_LeCR80`HqX4Qpbn+PB%f&(|)S4P9oJHg**YW z)7eC%8k_+j1o`gxd2#r=K99S^q)D-%A{H zh6pE}Mc;%gc!+b*86zXRC)a7L>rl+Hov}nNfIKEhx*%xb+c2^KIpSnUN3_g-g3M6J zV2~f3k0@3A?^xBwaZ&8#2ol|^W1j|s$Idb53=!U*7vXQmoXawm z+u{d#G#z)!iNt|$=eSdGt!%4HE8~4l==o1LHHoYPnU1_pI8BK>hS6X)$VuleA_G9? z3lc}9I%9=T#z6Al&)Y z$rL1wnfNb{QyT2q0-5=kBV*f3onlHA>^Djs_cIQo}pFLH_5w zN@O$0zk*BvIGhBNWVEB5DE53zd4Hq3ALYd&R2rSSsQOZ z=bV292^|*~9BVxy-gq{gD)Ty&bqRBYrDjokrq z$!RM{nmFD$`NPQ+1Ye*)oX#MBImb= zctS?D+|@+J^^(MP2VfP9J2@C*^K*gYZYGlPtaMzrDrU3XX@T5%nFDSQK?+12@_kXk z9Y&5e3auBp-{j^Ixqy0}4N}RivRTII>S7E9QpIf`NT^n;xiNx-YPGs6N8O>ks=J*j zP6dpbc$^w;FC`8y&&}>)g=~jY%RNk~ZasxQ9;A+YhDcA4Lm-iE8Iev{tK>&qUANU1 zS!Pa7z^UsFAkq|L6a7WZ#NDYxDr4++9!@ za_`?Rx8i+_)kotz808KkvNlmhzTN#n5R?aGIwIfho+I+-0@;h+?ndvBc_sJ3mp+73 zb*GHn^nLVmg7gw3gMEQid|yPn%gA|Wh&&HAbq^Ei^aIB8=xt)$iH76jk;1~~xI(mhBH?-QA-b}=4>-O9&OUTJ0kaq4kA|r`B==S=SoJ|;=!D;Un36jCC zA@WZk9o%|*q|>z;*5?Izk;o(8;XDcQkUL5cv>)`4yyhQvXA|LlX7kZl?Qt7_C*uqU z;bXQ(+{r}r|KVBf@**j$_cu-9h_hszvi~Mgw`=%_H(K9KIF3 z+Tq2Jm6+c@&=jKoxPWZWLpj)P-T8mWAyOWA!Uf;fn=Rsa_ z|3^;Fld?QR+=w4#s_rvzmWDILEhfUxl@*h5hHzUQl}-^Nb27pmMc5Y2L;Ju&whk6)hk$!a_b$FdF7+E+zm3` zO&~HAq&vt2w^WccwuD+#n%n8P%4?x5An1ek@1^F^;-Ay_rovo1??gPdOl{;IIG&cSnoc}?lxqHazURPtcgG_hJ z$T>b6=Pr;LZp+iO6;(BMFG!X96``afV_uP3*81KGF79AvYr>ZGX=?D zukMrQf`#ruA}O;pb_J@-&UdR=QJ(JpMh_>fo$$&9gFcomXXfR=dLm$zU^@VC4kPYIiD; z`XKv2K5>sxst;b4sn)nvf8%j7*b$H);jD4n6XB!oiy&*=MS`TUDmVshtWK`;O85jtvky(~xu+c6Mt@CM0s&zzS|>o4WmGuKVHAW8aK z)F_-U+#XnLd1MG|1VB5SQcXN7M1Vr6(o&)PGq}VOk^p@BZ#xZb+5=clcs9y8IWD>u)igl zLOu3Z?jAuh*vwhz zc^Xckn|e*=b+|HCr!b=a#+^Z=iWMX)h@@erDxG{mLaROBxc=3iZ`?h?NoQ*VsCne| zjeC;F^9K4SkZ;|yGBREegEbJ4@7!`h%MS^6pAD82PKac}%#eZdOe1`t#FvuY{L69_71CiZvcv8Uad|l=h990&% zPYHs)WiOsShx4QR0+AOg;Hy}IBvUHx+$P8Xri+%q&x{X&9CdqWlJGvNGssVFB9X{R z*cTwh?lM8rSTfpk638)k7deg7H8vXLxO7J(HZkTdQuLDJYY zIHy2pr|4P=z zS$B&d8H|sOd2O6^i^#dj(nRF5u50sD8LaD3+}#i7H@71Z-bdAXgOiUO8M$mb&fPbV zm_p121zAl_SDJhN<~Da_(hcvbw8jgLI2rCR%z*gH+tr|B@wMDPkSav@{ZagQzeah+#2r)887}ftQ@tXHnreb959^OvKfjmenp-Fc#$zBnPPw;s5iC!+%PR5u z2}LeO%T~j z@bYMZNj^sl{Lkm;fy+Ke4=k(9%N&Yh1l9=>%F77UsB)uY2I>hCa?HTDKF10i^f^}G zzN$CIu>734=hi^7&$%`5 zBN4tY8c$%XLExM(Rl~q#U#f;-EviwVZ><}1ZxmJ=jRToJr*W9mB(UD+Gzr{QJG2Lf zpoCF@j)H`?D>{%sPOuK6!}eg)uszr;kmF0$EYLlI=M{?FJdh|zXzw%+bggrvb4Q?; zAR*_Dz!yHJMIhhjvkzUkWgOt1&V#nePMB81I=%_F|XLb zNkKw!?hl;vIrj&8)W5M-;{u6-glaV|EUz|!r9P)knA0|J+2^zka~=qEy!FO1KM>YK zwhQYa+Xq&QRC2qfq+@L`(6V7@E3!d429g>H!W#cSvhD<4hwA?W_+0BVGiR1Z_9%OZ zC?aJi`@Uq!PRPDyxtCm*OR`EC`XyAVIF@GS0G6pN&CPFFW+0zy*m?`oD5+8%FqO14UtzJrcr!8{qmJfq zmhU)KYjZ10U-Yc@9O6OU!dhx|^q2a^qM~J@+sxzNAtWY_6oIIe?}7M7$S8&TpIHGAgEPbtS#b z>MW&K;HyK#^fr64OvGp^<=n?y$TEC7zW&76X{b z%pshIlxl!ESxSi{?;U2wl~<|0$J0+NQVloPu~a~MMU`qa_4y$a%!(|H7oc|mnP|qbY{fZW9Wu$>%(4#ShxH-vn`c?-BcC>q zDQ4zMD(809FuM;j)%00%;dyzGl-g1fjkmr8H7e&hyRFEK?A3AM$}&qKeA7Kk~_h^M0Y(hvg!~gDf()vJ^(D zoRAOAgHn==<@sWa{E)@wX(@>YjR2Q}B%4R8QqGA6{k~!q$PzP8HMOlGGcX$yvefLv zvJ`D*Q^+#2b#)aps3X3(gsd>nu#_LGWTn}uhKixRcn>kF%&IljwyqDt*$Y{1hF(`O zlQ6QhAF{^W#L^SvQRg9R&DOP4Ofkeff~+_F+DbM;y!TLRW(}5aA-N!%%@$Eo1hU0U zW~s3Y_fp7qvt1pP&uomLwSep}Pt{fOF3tqHSMD^gN=Y=nMvZkq%xC80dMf4_oC$*< zyUaZGNs^2=>){%Nd~S}D5^vPQcmmbo7iNYA6q9IV#J{M8++!}6k`_a~?v+Tj$9#M= zY_EAkrIK@&HX&xOnW3S|C;0&O0J6{YS=wI0@kGukW*wGEIHPDB=_}J~q{`f^HqK?7 zQK@D@DT&5lT)8w)Z@*cVWi9rLDa?S(!+APyl#ZmGH2+n58Yo%<1coBj#$B>KNCeQR}0o*G%O+8{<)R zkk5B!X_owRagITbnG;!BVT6iePMDWj)?z$rFyu$Gb#s-^6bS9tNpm&JRS0eUl)0;g zis^V-rTW>t%<{!oD%CG$&z2OEXw<@}8kO)@bGnoyLoCL(x7gNi<{>HZXg)E=19HZ^ z&qApdK+c*)-%#6XhW*+A`JdT`WhO?tK8O5n9+HCh!ng`(ggnj6(@JfzViBEgs}jL|(=5%Je?Qwag(h zCeawkXYXGocHD?wx#9|oTDc-WQeBM*{eJiJkZTd4l`G0aZkear%Do7cUx*%MZ_F$* z&nb~-IL%MEZT|CE%pLRYV=;Hk^l!?1WU4C2`L6kl6!mq?!6F!aGK;Dhqw99`mQnr( zW;vF3SRR^nSjylo+y(hOGUJqlwjIL#P0ALQgDi&ir<7pKD#m)MovPK{ALE{aR54a* zDXB5^#qJzPdaG)btcGN;TC}HBDKT*<&kvAHR?!Y5NyfOMSQ7(cT1}+H8<{ckPpK@c zW+xT%Q6KaVCu6+DTFx>vB27B0m`5YgyKhS|?@Ea`PC_UjVeMhL$l_Xl7fOZMVzDa5 zxAsU$GFEQH%m{2Ni&d{H#RT6sWwZ1bYV<89&G&=Im|&bgyEQX<-e75tXJIa&O`h+DO(n!jeEZs(_ZRN5Kv&=_-wIyP5 zSwFL+$JI^a&$+C>Sh7Iq+R0@Z-Q=E{`5~Qq&TXl0sS-nao@WsAtXQY{R_PS`{O&6xy%6*0)lE*@n+pCpe#dyHssFWBtNH-|YW}>-ZV#_o#fRU46#7 z$1!@=Yd$OeTU29-p`2*h7Gp2+S+)|n^%YVOfWK7dd5qXo%@?q=eBN9guRv;bcw9ci z-GR=ZAjUzePmpsU!*DJCS7MNAw~WcpCEVK(?V*%nEZ;*ON_k02nyE`z(5k{Q3-H87 zTQ6wU<``X`f>wJLy{&@Qcow~11+4`vy37TweJpxU3tA^x^j;LSV!BhUCWH

    #gTx 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 z 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⪙KN9v8|A}x<@fcx$vD1h7?=Q|E94H=7c(6E^ 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 z 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

    C(hsY^#o?6X(;3rv#UXaUq8B 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 RJnC>i$>0CC|9`Rs{x>REp*;Wq literal 807424 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

    V9ac6$g8B=f#I}YwM;K!W>re8XBn@mk8 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¹VOcDMv#)# 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 X^a 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 - - - 0Harmony - - - -

    A factory to create delegate types - - - Default constructor - - - Creates a delegate type for a method - The method - The new delegate type - - - - A getter delegate type - Type that getter gets field/property value from - Type of the value that getter gets - The instance get getter uses - An delegate - - - - A setter delegate type - Type that setter sets field/property value for - Type of the value that setter sets - The instance the setter uses - The value the setter uses - An delegate - - - - A constructor delegate type - Type that constructor creates - An delegate - - - - A helper class for fast access to getters and setters - - - Creates an instantiation delegate - Type that constructor creates - The new instantiation delegate - - - - Creates an getter delegate for a property - Type that getter reads property from - Type of the property that gets accessed - The property - The new getter delegate - - - - Creates an getter delegate for a field - Type that getter reads field from - Type of the field that gets accessed - The field - The new getter delegate - - - - Creates an getter delegate for a field (with a list of possible field names) - Type that getter reads field/property from - Type of the field/property that gets accessed - A list of possible field names - The new getter delegate - - - - Creates an setter delegate - Type that setter assigns property value to - Type of the property that gets assigned - The property - The new setter delegate - - - - Creates an setter delegate for a field - Type that setter assigns field value to - Type of the field that gets assigned - The field - The new getter delegate - - - - A delegate to invoke a method - The instance - The method parameters - The method result - - - A helper class to invoke method with delegates - - - Creates a fast invocation handler from a method - The method to invoke - Controls if boxed value object is accessed/updated directly - The - - - The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array - passed to the fast invocation handler. - Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object. - Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array. - For example, - - var val = 5; - var box = (object)val; - var arr = new object[] { box }; - handler(arr); // for a method with parameter signature: ref/out/in int - - - - - If directBoxValueAccess is true, the boxed value object is accessed (and potentially updated) directly when the handler is called, - such that all references to the boxed object reflect the potentially updated value. - In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0] - now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object. - - - If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object, - such that potential updates to the value are reflected only in the arguments array. - In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10. - - - - - A low level memory helper - - - - Mark method for no inlining (currently only works on Mono) - The method/constructor to change - - - - Detours a method - The original method/constructor - The replacement method/constructor - An error string - - - - Writes a jump to memory - The memory address - Jump destination - An error string - - - - Gets the start of a method in memory - The method/constructor - [out] Details of the exception - The method start address - - - - special parameter names that can be used in prefix and postfix methods - - - Patch function helpers - - - Sorts patch methods by their priority rules - The original method - Patches to sort - Use debug mode - The sorted patch methods - - - - Creates new replacement method with the latest patches and detours the original method - The original method - Information describing the patches - The newly created replacement method - - - - Creates a patch sorter - Array of patches that will be sorted - Use debugging - - - Sorts internal PatchSortingWrapper collection and caches the results. - After first run the result is provided from the cache. - The original method - The sorted patch methods - - - Checks if the sorter was created with the same patch list and as a result can be reused to - get the sorted order of the patches. - List of patches to check against - true if equal - - - Removes one unresolved dependency from the least important patch. - - - Outputs all unblocked patches from the waiting list to results list - - - Adds patch to both results list and handled patches set - Patch to add - - - Wrapper used over the Patch object to allow faster dependency access and - dependency removal in case of cyclic dependencies - - - Create patch wrapper object used for sorting - Patch to wrap - - - Determines how patches sort - The other patch - integer to define sort order (-1, 0, 1) - - - Determines whether patches are equal - The other patch - true if equal - - - Hash function - A hash code - - - Bidirectionally registers Patches as after dependencies - List of dependencies to register - - - Bidirectionally registers Patches as before dependencies - List of dependencies to register - - - Bidirectionally removes Patch from after dependencies - Patch to remove - - - Bidirectionally removes Patch from before dependencies - Patch to remove - - - Specifies the type of method - - - - This is a normal method - - - This is a getter - - - This is a setter - - - This is a constructor - - - This is a static constructor - - - Specifies the type of argument - - - - This is a normal argument - - - This is a reference argument (ref) - - - This is an out argument (out) - - - This is a pointer argument (&) - - - Specifies the type of patch - - - - Any patch - - - A prefix patch - - - A postfix patch - - - A transpiler - - - A finalizer - - - A reverse patch - - - Specifies the type of reverse patch - - - - Use the unmodified original method (directly from IL) - - - Use the original as it is right now including previous patches but excluding future ones - - - Specifies the type of method call dispatching mechanics - - - - Call the method using dynamic dispatching if method is virtual (including overriden) - - - This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#. - This directly corresponds with the instruction. - - - For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called. - For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called. - - - Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually. - A fully dynamic dispatch in C# involves using - the dynamic type - (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support. - - - - - Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static) - - - a.k.a. non-virtual dispatching, early binding, or static binding. - This directly corresponds with the instruction. - - - For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics. - - - - - The base class for all Harmony annotations (not meant to be used directly) - - - - The common information for all attributes - - - Annotation to define your Harmony patch methods - - - - An empty annotation can be used together with TargetMethod(s) - - - - An annotation that specifies a class to patch - The declaring class/type - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The argument types of the method or constructor to patch - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The name of the method, property or constructor to patch - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The name of the method, property or constructor to patch - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The name of the method, property or constructor to patch - An array of argument types to target overloads - Array of - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The - An array of argument types to target overloads - Array of - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The name of the method, property or constructor to patch - The - - - - An annotation that specifies a method, property or constructor to patch - The name of the method, property or constructor to patch - - - - An annotation that specifies a method, property or constructor to patch - The name of the method, property or constructor to patch - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - The name of the method, property or constructor to patch - An array of argument types to target overloads - An array of - - - - An annotation that specifies a method, property or constructor to patch - The name of the method, property or constructor to patch - The - - - - An annotation that specifies a method, property or constructor to patch - The - - - - An annotation that specifies a method, property or constructor to patch - The - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - The - An array of argument types to target overloads - An array of - - - - An annotation that specifies a method, property or constructor to patch - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - An array of argument types to target overloads - An array of - - - - Annotation to define the original method for delegate injection - - - - An annotation that specifies a class to patch - The declaring class/type - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The argument types of the method or constructor to patch - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The name of the method, property or constructor to patch - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The name of the method, property or constructor to patch - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The name of the method, property or constructor to patch - An array of argument types to target overloads - Array of - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The - An array of argument types to target overloads - Array of - - - - An annotation that specifies a method, property or constructor to patch - The declaring class/type - The name of the method, property or constructor to patch - The - - - - An annotation that specifies a method, property or constructor to patch - The name of the method, property or constructor to patch - - - - An annotation that specifies a method, property or constructor to patch - The name of the method, property or constructor to patch - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - The name of the method, property or constructor to patch - An array of argument types to target overloads - An array of - - - - An annotation that specifies a method, property or constructor to patch - The name of the method, property or constructor to patch - The - - - - An annotation that specifies call dispatching mechanics for the delegate - The - - - - An annotation that specifies a method, property or constructor to patch - The - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - The - An array of argument types to target overloads - An array of - - - - An annotation that specifies a method, property or constructor to patch - An array of argument types to target overloads - - - - An annotation that specifies a method, property or constructor to patch - An array of argument types to target overloads - An array of - - - - Annotation to define your standin methods for reverse patching - - - - An annotation that specifies the type of reverse patching - The of the reverse patch - - - - A Harmony annotation to define that all methods in a class are to be patched - - - - A Harmony annotation - - - - A Harmony annotation to define patch priority - The priority - - - - A Harmony annotation - - - - A Harmony annotation to define that a patch comes before another patch - The array of harmony IDs of the other patches - - - - A Harmony annotation - - - A Harmony annotation to define that a patch comes after another patch - The array of harmony IDs of the other patches - - - - A Harmony annotation - - - A Harmony annotation to debug a patch (output uses to log to your Desktop) - - - - Specifies the Prepare function in a patch class - - - - Specifies the Cleanup function in a patch class - - - - Specifies the TargetMethod function in a patch class - - - - Specifies the TargetMethods function in a patch class - - - - Specifies the Prefix function in a patch class - - - - Specifies the Postfix function in a patch class - - - - Specifies the Transpiler function in a patch class - - - - Specifies the Finalizer function in a patch class - - - - A Harmony annotation - - - - The name of the original argument - - - - The index of the original argument - - - - The new name of the original argument - - - - An annotation to declare injected arguments by name - - - - An annotation to declare injected arguments by index - Zero-based index - - - - An annotation to declare injected arguments by renaming them - Name of the original argument - New name - - - - An annotation to declare injected arguments by index and renaming them - Zero-based index - New name - - - - An abstract wrapper around OpCode and their operands. Used by transpilers - - - - The opcode - - - - The operand - - - - All labels defined on this instruction - - - - All exception block boundaries defined on this instruction - - - - Creates a new CodeInstruction with a given opcode and optional operand - The opcode - The operand - - - - Create a full copy (including labels and exception blocks) of a CodeInstruction - The to copy - - - - Clones a CodeInstruction and resets its labels and exception blocks - A lightweight copy of this code instruction - - - - Clones a CodeInstruction, resets labels and exception blocks and sets its opcode - The opcode - A copy of this CodeInstruction with a new opcode - - - - Clones a CodeInstruction, resets labels and exception blocks and sets its operand - The operand - A copy of this CodeInstruction with a new operand - - - - Creates a CodeInstruction calling a method (CALL) - The class/type where the method is declared - The name of the method (case sensitive) - Optional parameters to target a specific overload of the method - Optional list of types that define the generic version of the method - A code instruction that calls the method matching the arguments - - - - Creates a CodeInstruction calling a method (CALL) - The target method in the form TypeFullName:MethodName, where the type name matches a form recognized by Type.GetType like Some.Namespace.Type. - Optional parameters to target a specific overload of the method - Optional list of types that define the generic version of the method - A code instruction that calls the method matching the arguments - - - - Creates a CodeInstruction calling a method (CALL) - The lambda expression using the method - - - - - Creates a CodeInstruction calling a method (CALL) - The lambda expression using the method - - - - - Creates a CodeInstruction calling a method (CALL) - The lambda expression using the method - - - - - Creates a CodeInstruction calling a method (CALL) - The lambda expression using the method - - - - - Creates a CodeInstruction loading a field (LD[S]FLD[A]) - The class/type where the field is defined - The name of the field (case sensitive) - Use address of field - - - - Creates a CodeInstruction storing to a field (ST[S]FLD) - The class/type where the field is defined - The name of the field (case sensitive) - - - - Returns a string representation of the code instruction - A string representation of the code instruction - - - - Exception block types - - - - The beginning of an exception block - - - - The beginning of a catch block - - - - The beginning of an except filter block - - - - The beginning of a fault block - - - - The beginning of a finally block - - - - The end of an exception block - - - - An exception block - - - - Block type - - - - Catch type - - - - Creates an exception block - The - The catch type - - - - The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain - - - - The unique identifier - - - - Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe" - This is for full debugging. To debug only specific patches, use the attribute - - - - Creates a new Harmony instance - A unique identifier (you choose your own) - A Harmony instance - - - - Searches the current assembly for Harmony annotations and uses them to create patches - This method can fail to use the correct assembly when being inlined. It calls StackTrace.GetFrame(1) which can point to the wrong method/assembly. If you are unsure or run into problems, use PatchAll(Assembly.GetExecutingAssembly()) instead. - - - - Creates a empty patch processor for an original method - The original method/constructor - A new instance - - - - Creates a patch class processor from an annotated class - The class/type - A new instance - - - - Creates a reverse patcher for one of your stub methods - The original method/constructor - The stand-in stub method as - A new instance - - - - Searches an assembly for Harmony annotations and uses them to create patches - The assembly - - - - Creates patches by manually specifying the methods - The original method/constructor - An optional prefix method wrapped in a object - An optional postfix method wrapped in a object - An optional transpiler method wrapped in a object - An optional finalizer method wrapped in a object - The replacement method that was created to patch the original method - - - - Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process - The original method/constructor you want to duplicate - Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates) - An optional transpiler as method that will be applied during the process - The replacement method that was created to patch the stub method - - - - Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global - The optional Harmony ID to restrict unpatching to a specific Harmony instance - This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID - - - - Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global - The original method/constructor - The - The optional Harmony ID to restrict unpatching to a specific Harmony instance - - - - Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global - The original method/constructor - The patch method as method to remove - - - - Test for patches from a specific Harmony ID - The Harmony ID - True if patches for this ID exist - - - - Gets patch information for a given original method - The original method/constructor - The patch information as - - - - Gets the methods this instance has patched - An enumeration of original methods/constructors - - - - Gets all patched original methods in the appdomain - An enumeration of patched original methods/constructors - - - - Gets the original method from a given replacement method - A replacement method, for example from a stacktrace - The original method/constructor or null if not found - - - - Tries to get the method from a stackframe including dynamic replacement methods - The - For normal frames, frame.GetMethod() is returned. For frames containing patched methods, the replacement method is returned or null if no method can be found - - - - Gets Harmony version for all active Harmony instances - [out] The current Harmony version - A dictionary containing assembly versions keyed by Harmony IDs - - - - Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure - - - - Default serialization constructor (not implemented) - The info - The context - - - - Get a list of IL instructions in pairs of offset+code - A list of key/value pairs which represent an offset and the code at that offset - - - - Get a list of IL instructions without offsets - A list of - - - - Get the error offset of the errornous IL instruction - The offset - - - - Get the index of the errornous IL instruction - The index into the list of instructions or -1 if not found - - - - A wrapper around a method to use it as a patch (for example a Prefix) - - - - The original method - - - - Class/type declaring this patch - - - - Patch method name - - - - Optional patch - - - - Array of argument types of the patch method - - - - of the patch - - - - Install this patch before patches with these Harmony IDs - - - - Install this patch after patches with these Harmony IDs - - - - Reverse patch type, see - - - - Create debug output for this patch - - - - Whether to use (true) or (false) mechanics - for -attributed delegate - - - - Default constructor - - - - Creates a patch from a given method - The original method - - - - Creates a patch from a given method - The original method - The patch - A list of harmony IDs that should come after this patch - A list of harmony IDs that should come before this patch - Set to true to generate debug output - - - - Creates a patch from a given method - The patch class/type - The patch method name - The optional argument types of the patch method (for overloaded methods) - - - - Gets the names of all internal patch info fields - A list of field names - - - - Merges annotations - The list of to merge - The merged - - - - Returns a string that represents the annotation - A string representation - - - - Annotation extensions - - - - Copies annotation information - The source - The destination - - - - Clones an annotation - The to clone - A copied - - - - Merges annotations - The master - The detail - A new, merged - - - - Gets all annotations on a class/type - The class/type - A list of all - - - - Gets merged annotations on a class/type - The class/type - The merged - - - - Gets all annotations on a method - The method/constructor - A list of - - - - Gets merged annotations on a method - The method/constructor - The merged - - - - - A mutable representation of an inline signature, similar to Mono.Cecil's CallSite. - Used by the calli instruction, can be used by transpilers - - - - - See - - - - See - - - - See - - - - The list of all parameter types or function pointer signatures received by the call site - - - - The return type or function pointer signature returned by the call site - - - - Returns a string representation of the inline signature - A string representation of the inline signature - - - - - A mutable representation of a parameter type with an attached type modifier, - similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq - - - - - Whether this is a modopt (optional modifier type) or a modreq (required modifier type) - - - - The modifier type attached to the parameter type - - - - The modified parameter type - - - - Returns a string representation of the modifier type - A string representation of the modifier type - - - - Patch serialization - - - - Control the binding of a serialized object to a type - Specifies the assembly name of the serialized object - Specifies the type name of the serialized object - The type of the object the formatter creates a new instance of - - - - Serializes a patch info - The - The serialized data - - - - Deserialize a patch info - The serialized data - A - - - - Compare function to sort patch priorities - The patch - Zero-based index - The priority - A standard sort integer (-1, 0, 1) - - - - Serializable patch information - - - - Prefixes as an array of - - - - Postfixes as an array of - - - - Transpilers as an array of - - - - Finalizers as an array of - - - - Returns if any of the patches wants debugging turned on - - - - Adds prefixes - An owner (Harmony ID) - The patch methods - - - - Adds a prefix - - - Removes prefixes - The owner of the prefixes, or * for all - - - - Adds postfixes - An owner (Harmony ID) - The patch methods - - - - Adds a postfix - - - Removes postfixes - The owner of the postfixes, or * for all - - - - Adds transpilers - An owner (Harmony ID) - The patch methods - - - - Adds a transpiler - - - Removes transpilers - The owner of the transpilers, or * for all - - - - Adds finalizers - An owner (Harmony ID) - The patch methods - - - - Adds a finalizer - - - Removes finalizers - The owner of the finalizers, or * for all - - - - Removes a patch using its method - The method of the patch to remove - - - - Gets a concatenated list of patches - The Harmony instance ID adding the new patches - The patches to add - The current patches - - - - Gets a list of patches with any from the given owner removed - The owner of the methods, or * for all - The current patches - - - - A serializable patch - - - - Zero-based index - - - - The owner (Harmony ID) - - - - The priority, see - - - - Keep this patch before the patches indicated in the list of Harmony IDs - - - - Keep this patch after the patches indicated in the list of Harmony IDs - - - - A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future - - - - The method of the static patch method - - - - Creates a patch - The method of the patch - Zero-based index - An owner (Harmony ID) - The priority, see - A list of Harmony IDs for patches that should run after this patch - A list of Harmony IDs for patches that should run before this patch - A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future - - - - Creates a patch - The method of the patch - Zero-based index - An owner (Harmony ID) - - - Get the patch method or a DynamicMethod if original patch method is a patch factory - The original method/constructor - The method of the patch - - - - Determines whether patches are equal - The other patch - true if equal - - - - Determines how patches sort - The other patch - integer to define sort order (-1, 0, 1) - - - - Hash function - A hash code - - - - A PatchClassProcessor used to turn on a class/type into patches - - - - Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes. - The Harmony instance - The class to process (need to have at least a [HarmonyPatch] attribute) - - - - Applies the patches - A list of all created replacement methods or null if patch class is not annotated - - - - A group of patches - - - - A collection of prefix - - - - A collection of postfix - - - - A collection of transpiler - - - - A collection of finalizer - - - - Gets all owners (Harmony IDs) or all known patches - The patch owners - - - - Creates a group of patches - An array of prefixes as - An array of postfixes as - An array of transpileres as - An array of finalizeres as - - - - A PatchProcessor handles patches on a method/constructor - - - - Creates an empty patch processor - The Harmony instance - The original method/constructor - - - - Adds a prefix - The prefix as a - A for chaining calls - - - - Adds a prefix - The prefix method - A for chaining calls - - - - Adds a postfix - The postfix as a - A for chaining calls - - - - Adds a postfix - The postfix method - A for chaining calls - - - - Adds a transpiler - The transpiler as a - A for chaining calls - - - - Adds a transpiler - The transpiler method - A for chaining calls - - - - Adds a finalizer - The finalizer as a - A for chaining calls - - - - Adds a finalizer - The finalizer method - A for chaining calls - - - - Gets all patched original methods in the appdomain - An enumeration of patched method/constructor - - - - Applies all registered patches - The generated replacement method - - - - Unpatches patches of a given type and/or Harmony ID - The patch type - Harmony ID or * for any - A for chaining calls - - - - Unpatches a specific patch - The method of the patch - A for chaining calls - - - - Gets patch information on an original - The original method/constructor - The patch information as - - - - Sort patch methods by their priority rules - The original method - Patches to sort - The sorted patch methods - - - - Gets Harmony version for all active Harmony instances - [out] The current Harmony version - A dictionary containing assembly version keyed by Harmony ID - - - - Creates a new empty generator to use when reading method bodies - A new - - - - Creates a new generator matching the method/constructor to use when reading method bodies - The original method/constructor to copy method information from - A new - - - - Returns the methods unmodified list of code instructions - The original method/constructor - Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) - A list containing all the original - - - - Returns the methods unmodified list of code instructions - The original method/constructor - A new generator that now contains all local variables and labels contained in the result - A list containing all the original - - - - Returns the methods current list of code instructions after all existing transpilers have been applied - The original method/constructor - Apply only the first count of transpilers - Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) - A list of - - - - Returns the methods current list of code instructions after all existing transpilers have been applied - The original method/constructor - A new generator that now contains all local variables and labels contained in the result - Apply only the first count of transpilers - A list of - - - - A low level way to read the body of a method. Used for quick searching in methods - The original method - All instructions as opcode/operand pairs - - - - A low level way to read the body of a method. Used for quick searching in methods - The original method - An existing generator that will be used to create all local variables and labels contained in the result - All instructions as opcode/operand pairs - - - - A patch priority - - - - Patch last - - - - Patch with very low priority - - - - Patch with low priority - - - - Patch with lower than normal priority - - - - Patch with normal priority - - - - Patch with higher than normal priority - - - - Patch with high priority - - - - Patch with very high priority - - - - Patch first - - - - A reverse patcher - - - - Creates a reverse patcher - The Harmony instance - The original method/constructor - Your stand-in stub method as - - - - Applies the patch - The type of patch, see - The generated replacement method - - - - A collection of commonly used transpilers - - - - A transpiler that replaces all occurrences of a given method with another one using the same signature - The enumeration of to act on - Method or constructor to search for - Method or constructor to replace with - Modified enumeration of - - - - A transpiler that alters instructions that match a predicate by calling an action - The enumeration of to act on - A predicate selecting the instructions to change - An action to apply to matching instructions - Modified enumeration of - - - - A transpiler that logs a text at the beginning of the method - The instructions to act on - The log text - Modified enumeration of - - - - A helper class for reflection related functions - - - - Shortcut for to simplify the use of reflections and make it work for any access level - - - - Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type - - - - Enumerates all assemblies in the current app domain, excluding visual studio assemblies - An enumeration of - - - Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise - The name - A type or null if not found - - - - Gets all successfully loaded types from a given assembly - The assembly - An array of types - - This calls and returns , while catching any thrown . - If such an exception is thrown, returns the successfully loaded types (, - filtered for non-null values). - - - - - Enumerates all successfully loaded types in the current app domain, excluding visual studio assemblies - An enumeration of all in all assemblies, excluding visual studio assemblies - - - Applies a function going up the type hierarchy and stops at the first non-null result - Result type of func() - The class/type to start with - The evaluation function returning T - The first non-null result, or null if no match - - The type hierarchy of a class or value type (including struct) does NOT include implemented interfaces, - and the type hierarchy of an interface is only itself (regardless of whether that interface implements other interfaces). - The top-most type in the type hierarchy of all non-interface types (including value types) is . - - - - - Applies a function going into inner types and stops at the first non-null result - Generic type parameter - The class/type to start with - The evaluation function returning T - The first non-null result, or null if no match - - - - Gets the reflection information for a directly declared field - The class/type where the field is defined - The name of the field - A field or null when type/name is null or when the field cannot be found - - - - Gets the reflection information for a field by searching the type and all its super types - The class/type where the field is defined - The name of the field (case sensitive) - A field or null when type/name is null or when the field cannot be found - - - - Gets the reflection information for a field - The class/type where the field is declared - The zero-based index of the field inside the class definition - A field or null when type is null or when the field cannot be found - - - - Gets the reflection information for a directly declared property - The class/type where the property is declared - The name of the property (case sensitive) - A property or null when type/name is null or when the property cannot be found - - - - Gets the reflection information for the getter method of a directly declared property - The class/type where the property is declared - The name of the property (case sensitive) - A method or null when type/name is null or when the property cannot be found - - - - Gets the reflection information for the setter method of a directly declared property - The class/type where the property is declared - The name of the property (case sensitive) - A method or null when type/name is null or when the property cannot be found - - - - Gets the reflection information for a property by searching the type and all its super types - The class/type - The name - A property or null when type/name is null or when the property cannot be found - - - - Gets the reflection information for the getter method of a property by searching the type and all its super types - The class/type - The name - A method or null when type/name is null or when the property cannot be found - - - - Gets the reflection information for the setter method of a property by searching the type and all its super types - The class/type - The name - A method or null when type/name is null or when the property cannot be found - - - - Gets the reflection information for a directly declared method - The class/type where the method is declared - The name of the method (case sensitive) - Optional parameters to target a specific overload of the method - Optional list of types that define the generic version of the method - A method or null when type/name is null or when the method cannot be found - - - - Gets the reflection information for a method by searching the type and all its super types - The class/type where the method is declared - The name of the method (case sensitive) - Optional parameters to target a specific overload of the method - Optional list of types that define the generic version of the method - A method or null when type/name is null or when the method cannot be found - - - - Gets the reflection information for a method by searching the type and all its super types - The target method in the form TypeFullName:MethodName, where the type name matches a form recognized by Type.GetType like Some.Namespace.Type. - Optional parameters to target a specific overload of the method - Optional list of types that define the generic version of the method - A method or null when type/name is null or when the method cannot be found - - - - Gets the names of all method that are declared in a type - The declaring class/type - A list of method names - - - - Gets the names of all method that are declared in the type of the instance - An instance of the type to search in - A list of method names - - - - Gets the names of all fields that are declared in a type - The declaring class/type - A list of field names - - - - Gets the names of all fields that are declared in the type of the instance - An instance of the type to search in - A list of field names - - - - Gets the names of all properties that are declared in a type - The declaring class/type - A list of property names - - - - Gets the names of all properties that are declared in the type of the instance - An instance of the type to search in - A list of property names - - - - Gets the type of any class member of - A member - The class/type of this member - - - - Test if a class member is actually an concrete implementation - A member - True if the member is a declared - - - - Gets the real implementation of a class member - A member - The member itself if its declared. Otherwise the member that is actually implemented in some base type - - - - Gets the reflection information for a directly declared constructor - The class/type where the constructor is declared - Optional parameters to target a specific overload of the constructor - Optional parameters to only consider static constructors - A constructor info or null when type is null or when the constructor cannot be found - - - - Gets the reflection information for a constructor by searching the type and all its super types - The class/type where the constructor is declared - Optional parameters to target a specific overload of the method - Optional parameters to only consider static constructors - A constructor info or null when type is null or when the method cannot be found - - - - Gets reflection information for all declared constructors - The class/type where the constructors are declared - Optional parameters to only consider static constructors - A list of constructor infos - - - - Gets reflection information for all declared methods - The class/type where the methods are declared - A list of methods - - - - Gets reflection information for all declared properties - The class/type where the properties are declared - A list of properties - - - - Gets reflection information for all declared fields - The class/type where the fields are declared - A list of fields - - - - Gets the return type of a method or constructor - The method/constructor - The return type - - - - Given a type, returns the first inner type matching a recursive search by name - The class/type to start searching at - The name of the inner type (case sensitive) - The inner type or null if type/name is null or if a type with that name cannot be found - - - - Given a type, returns the first inner type matching a recursive search with a predicate - The class/type to start searching at - The predicate to search with - The inner type or null if type/predicate is null or if a type with that name cannot be found - - - - Given a type, returns the first method matching a predicate - The class/type to start searching at - The predicate to search with - The method or null if type/predicate is null or if a type with that name cannot be found - - - - Given a type, returns the first constructor matching a predicate - The class/type to start searching at - The predicate to search with - The constructor info or null if type/predicate is null or if a type with that name cannot be found - - - - Given a type, returns the first property matching a predicate - The class/type to start searching at - The predicate to search with - The property or null if type/predicate is null or if a type with that name cannot be found - - - - Returns an array containing the type of each object in the given array - An array of objects - An array of types or an empty array if parameters is null (if an object is null, the type for it will be object) - - - - Creates an array of input parameters for a given method and a given set of potential inputs - The method/constructor you are planing to call - The possible input parameters in any order - An object array matching the method signature - - - - A readable/assignable reference delegate to an instance field of a class or static field (NOT an instance field of a struct) - - An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), - implemented interface, or derived class of this type - - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The runtime instance to access the field (ignored and can be omitted for static fields) - A readable/assignable reference to the field - Null instance passed to a non-static field ref delegate - - Instance of invalid type passed to a non-static field ref delegate - (this can happen if is a parent class or interface of the field's declaring type) - - - - This delegate cannot be used for instance fields of structs, since a struct instance passed to the delegate would be passed by - value and thus would be a copy that only exists within the delegate's invocation. This is fine for a readonly reference, - but makes assignment futile. Use instead. - - - Note that is not required to be the field's declaring type. It can be a parent class (including ), - implemented interface, or a derived class of the field's declaring type ("instanceOfT is FieldDeclaringType" must be possible). - Specifically, must be assignable from OR to the field's declaring type. - Technically, this allows Nullable, although Nullable is only relevant for structs, and since only static fields of structs - are allowed for this delegate, and the instance passed to such a delegate is ignored, this hardly matters. - - - Similarly, is not required to be the field's field type, unless that type is a non-enum value type. - It can be a parent class (including object) or implemented interface of the field's field type. It cannot be a derived class. - This variance is not allowed for value types, since that would require boxing/unboxing, which is not allowed for ref values. - Special case for enum types: can also be the underlying integral type of the enum type. - Specifically, for reference types, must be assignable from - the field's field type; for non-enum value types, must be exactly the field's field type; for enum types, - must be either the field's field type or the underyling integral type of that field type. - - - This delegate supports static fields, even those defined in structs, for legacy reasons. - For such static fields, is effectively ignored. - Consider using (and StaticFieldRefAccess methods that return it) instead for static fields. - - - - - - Creates a field reference delegate for an instance field of a class - The class that defines the instance field, or derived class of this type - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The name of the field - A readable/assignable delegate - - - For backwards compatibility, there is no class constraint on . - Instead, the non-value-type check is done at runtime within the method. - - - - - - Creates an instance field reference for a specific instance of a class - The class that defines the instance field, or derived class of this type - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The instance - The name of the field - A readable/assignable reference to the field - - - This method is meant for one-off access to a field's value for a single instance. - If you need to access a field's value for potentially multiple instances, use instead. - FieldRefAccess<T, F>(instance, fieldName) is functionally equivalent to FieldRefAccess<T, F>(fieldName)(instance). - - - For backwards compatibility, there is no class constraint on . - Instead, the non-value-type check is done at runtime within the method. - - - - - - Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - - The type that defines the field, or derived class of this type; must not be a struct type unless the field is static - - The name of the field - - A readable/assignable delegate with T=object - (for static fields, the instance delegate parameter is ignored) - - - - This method is meant for cases where the given type is only known at runtime and thus can't be used as a type parameter T - in e.g. . - - - This method supports static fields, even those defined in structs, for legacy reasons. - Consider using (and other overloads) instead for static fields. - - - - - - Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) - - An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), - implemented interface, or derived class of this type ("instanceOfT is FieldDeclaringType" must be possible) - - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The field - A readable/assignable delegate - - - This method is meant for cases where the field has already been obtained, avoiding the field searching cost in - e.g. . - - - This method supports static fields, even those defined in structs, for legacy reasons. - For such static fields, is effectively ignored. - Consider using (and other overloads) instead for static fields. - - - For backwards compatibility, there is no class constraint on . - Instead, the non-value-type check is done at runtime within the method. - - - - - - Creates a field reference for an instance field of a class - - The type that defines the field; or a parent class (including ), implemented interface, or derived class of this type - ("instanceOfT is FieldDeclaringType" must be possible) - - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The instance - The field - A readable/assignable reference to the field - - - This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. - If you need to access a field's value for potentially multiple instances, use instead. - FieldRefAccess<T, F>(instance, fieldInfo) is functionally equivalent to FieldRefAccess<T, F>(fieldInfo)(instance). - - - For backwards compatibility, there is no class constraint on . - Instead, the non-value-type check is done at runtime within the method. - - - - - - A readable/assignable reference delegate to an instance field of a struct - The struct that defines the instance field - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - A reference to the runtime instance to access the field - A readable/assignable reference to the field - - - - Creates a field reference delegate for an instance field of a struct - The struct that defines the instance field - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The name of the field - A readable/assignable delegate - - - - Creates an instance field reference for a specific instance of a struct - The struct that defines the instance field - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The instance - The name of the field - A readable/assignable reference to the field - - - This method is meant for one-off access to a field's value for a single instance. - If you need to access a field's value for potentially multiple instances, use instead. - StructFieldRefAccess<T, F>(ref instance, fieldName) is functionally equivalent to StructFieldRefAccess<T, F>(fieldName)(ref instance). - - - - - - Creates a field reference delegate for an instance field of a struct - The struct that defines the instance field - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The field - A readable/assignable delegate - - - This method is meant for cases where the field has already been obtained, avoiding the field searching cost in - e.g. . - - - - - - Creates a field reference for an instance field of a struct - The struct that defines the instance field - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The instance - The field - A readable/assignable reference to the field - - - This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. - If you need to access a field's value for potentially multiple instances, use instead. - StructFieldRefAccess<T, F>(ref instance, fieldInfo) is functionally equivalent to StructFieldRefAccess<T, F>(fieldInfo)(ref instance). - - - - - - A readable/assignable reference delegate to a static field - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - A readable/assignable reference to the field - - - - Creates a static field reference - The type (can be class or struct) the field is defined in - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The name of the field - A readable/assignable reference to the field - - - - Creates a static field reference - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The type (can be class or struct) the field is defined in - The name of the field - A readable/assignable reference to the field - - - - Creates a static field reference - An arbitrary type (by convention, the type the field is defined in) - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The field - A readable/assignable reference to the field - - The type parameter is only used in exception messaging and to distinguish between this method overload - and the overload (which returns a rather than a reference). - - - - - Creates a static field reference delegate - - The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), - a type that is assignable from that type; or if the field's type is an enum type, - either that type or the underlying integral type of that enum type - - The field - A readable/assignable delegate - - - - Creates a delegate to a given method - The delegate Type - The method to create a delegate from. - - Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate - where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) - instance delegate where the delegate invocation always applies to the given . - - - Only applies for instance methods. If true (default) and is virtual, invocation of the delegate - calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); - else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) - Note: if false and is an interface method, an ArgumentException is thrown. - - A delegate of given to given - - - Delegate invocation is more performant and more convenient to use than - at a one-time setup cost. - - - Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, - and both class and struct methods. - - - - - - Creates a delegate for a given delegate definition, attributed with [] - The delegate Type, attributed with [] - - Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate - where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) - instance delegate where the delegate invocation always applies to the given . - - A delegate of given to the method specified via [] - attributes on - - This calls with the method and virtualCall arguments - determined from the [] attributes on , - and the given (for closed instance delegates). - - - - - Returns who called the current method - The calling method/constructor (excluding the caller) - - - - Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces) - The exception to rethrow - - - - True if the current runtime is based on Mono, false otherwise (.NET) - - - - True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed) - - - - True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework) - - - - Throws a missing member runtime exception - The type that is involved - A list of names - - - - Gets default value for a specific type - The class/type - The default value - - - - Creates an (possibly uninitialized) instance of a given type - The class/type - The new instance - - - - Creates an (possibly uninitialized) instance of a given type - The class/type - The new instance - - - - - A cache for the or similar Add methods for different types. - - - - Makes a deep copy of any object - The type of the instance that should be created; for legacy reasons, this must be a class or interface - The original object - A copy of the original object but of type T - - - - Makes a deep copy of any object - The type of the instance that should be created - The original object - [out] The copy of the original object - Optional value transformation function (taking a field name and src/dst instances) - The optional path root to start with - - - - Makes a deep copy of any object - The original object - The type of the instance that should be created - Optional value transformation function (taking a field name and src/dst instances) - The optional path root to start with - The copy of the original object - - - - Tests if a type is a struct - The type - True if the type is a struct - - - - Tests if a type is a class - The type - True if the type is a class - - - - Tests if a type is a value type - The type - True if the type is a value type - - - - Tests if a type is an integer type - The type - True if the type represents some integer - - - - Tests if a type is a floating point type - The type - True if the type represents some floating point - - - - Tests if a type is a numerical type - The type - True if the type represents some number - - - - Tests if a type is void - The type - True if the type is void - - - - Test whether an instance is of a nullable type - Type of instance - An instance to test - True if instance is of nullable type, false if not - - - - Tests whether a type or member is static, as defined in C# - The type or member - True if the type or member is static - - - - Tests whether a type is static, as defined in C# - The type - True if the type is static - - - - Tests whether a property is static, as defined in C# - The property - True if the property is static - - - - Tests whether an event is static, as defined in C# - The event - True if the event is static - - - - Calculates a combined hash code for an enumeration of objects - The objects - The hash code - - - - General extensions for common cases - - - - Joins an enumeration with a value converter and a delimiter to a string - The inner type of the enumeration - The enumeration - An optional value converter (from T to string) - An optional delimiter - The values joined into a string - - - - Converts an array of types (for example methods arguments) into a human readable form - The array of types - A human readable description including brackets - - - - A full description of a type - The type - A human readable description - - - - A a full description of a method or a constructor without assembly details but with generics - The method/constructor - A human readable description - - - - A helper converting parameter infos to types - The array of parameter infos - An array of types - - - - A helper to access a value via key from a dictionary - The key type - The value type - The dictionary - The key - The value for the key or the default value (of T) if that key does not exist - - - - A helper to access a value via key from a dictionary with extra casting - The value type - The dictionary - The key - The value for the key or the default value (of T) if that key does not exist or cannot be cast to T - - - - Escapes Unicode and ASCII non printable characters - The string to convert - The string to convert - A string literal surrounded by - - - - Extensions for - - - - Shortcut for testing whether the operand is equal to a non-null value - The - The value - True if the operand has the same type and is equal to the value - - - - Shortcut for testing whether the operand is equal to a non-null value - The - The value - True if the operand is equal to the value - This is an optimized version of for - - - - Shortcut for code.opcode == opcode && code.OperandIs(operand) - The - The - The operand value - True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand - - - - Shortcut for code.opcode == opcode && code.OperandIs(operand) - The - The - The operand value - True if the opcode is equal to the given opcode and the operand is equal to the given operand - This is an optimized version of for - - - - Tests for any form of Ldarg* - The - The (optional) index - True if it matches one of the variations - - - - Tests for Ldarga/Ldarga_S - The - The (optional) index - True if it matches one of the variations - - - - Tests for Starg/Starg_S - The - The (optional) index - True if it matches one of the variations - - - - Tests for any form of Ldloc* - The - The optional local variable - True if it matches one of the variations - - - - Tests for any form of Stloc* - The - The optional local variable - True if it matches one of the variations - - - - Tests if the code instruction branches - The - The label if the instruction is a branch operation or if not - True if the instruction branches - - - - Tests if the code instruction calls the method/constructor - The - The method - True if the instruction calls the method or constructor - - - - Tests if the code instruction loads a constant - The - True if the instruction loads a constant - - - - Tests if the code instruction loads an integer constant - The - The integer constant - True if the instruction loads the constant - - - - Tests if the code instruction loads a floating point constant - The - The floating point constant - True if the instruction loads the constant - - - - Tests if the code instruction loads an enum constant - The - The enum - True if the instruction loads the constant - - - - Tests if the code instruction loads a field - The - The field - Set to true if the address of the field is loaded - True if the instruction loads the field - - - - Tests if the code instruction stores a field - The - The field - True if the instruction stores this field - - - - Adds labels to the code instruction and return it - The - One or several to add - The same code instruction - - - Adds labels to the code instruction and return it - The - An enumeration of - The same code instruction - - - Extracts all labels from the code instruction and returns them - The - A list of - - - Moves all labels from the code instruction to a different one - The to move the labels from - The to move the labels to - The code instruction labels were moved from (now empty) - - - Moves all labels from a different code instruction to the current one - The to move the labels from - The to move the labels to - The code instruction that received the labels - - - Adds ExceptionBlocks to the code instruction and return it - The - One or several to add - The same code instruction - - - Adds ExceptionBlocks to the code instruction and return it - The - An enumeration of - The same code instruction - - - Extracts all ExceptionBlocks from the code instruction and returns them - The - A list of - - - Moves all ExceptionBlocks from the code instruction to a different one - The to move the ExceptionBlocks from - The to move the ExceptionBlocks to - The code instruction blocks were moved from (now empty) - - - Moves all ExceptionBlocks from a different code instruction to the current one - The to move the ExceptionBlocks from - The to move the ExceptionBlocks to - The code instruction that received the blocks - - - General extensions for collections - - - - A simple way to execute code for every element in a collection - The inner type of the collection - The collection - The action to execute - - - - A simple way to execute code for elements in a collection matching a condition - The inner type of the collection - The collection - The predicate - The action to execute - - - - A helper to add an item to a collection - The inner type of the collection - The collection - The item to add - The collection containing the item - - - - A helper to add an item to an array - The inner type of the collection - The array - The item to add - The array containing the item - - - - A helper to add items to an array - The inner type of the collection - The array - The items to add - The array containing the items - - - - General extensions for collections - - - - Tests a class member if it has an IL method body (external methods for example don't have a body) - The member to test - Returns true if the member has an IL body or false if not - - - A file log for debugging - - - - Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop - - - - The indent character. The default is tab - - - - The current indent level - - - - Changes the indentation level - The value to add to the indentation level - - - - Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called - or else logging information is incomplete in case of a crash - The string to log - - - - Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called - or else logging information is incomplete in case of a crash - A list of strings to log (they will not be re-indented) - - - - Returns the log buffer and optionally empties it - True to empty the buffer - The buffer. - - - - Replaces the buffer with new lines - The lines to store - - - - Flushes the log buffer to disk (use in combination with LogBuffered) - - - - Log a string directly to disk. Slower method that prevents missing information in case of a crash - The string to log. - - - - Resets and deletes the log - - - - Logs some bytes as hex values - The pointer to some memory - The length of bytes to log - - - - A helper class to retrieve reflection info for non-private methods - - - - Given a lambda expression that calls a method, returns the method info - The lambda expression using the method - The method in the lambda expression - - - - Given a lambda expression that calls a method, returns the method info - The generic type - The lambda expression using the method - The method in the lambda expression - - - - Given a lambda expression that calls a method, returns the method info - The generic type - The generic result type - The lambda expression using the method - The method in the lambda expression - - - - Given a lambda expression that calls a method, returns the method info - The lambda expression using the method - The method in the lambda expression - - - - A reflection helper to read and write private elements - The result type defined by GetValue() - - - - Creates a traverse instance from an existing instance - The existing instance - - - - Gets/Sets the current value - The value to read or write - - - - A reflection helper to read and write private elements - - - - Creates a new traverse instance from a class/type - The class/type - A instance - - - - Creates a new traverse instance from a class T - The class - A instance - - - - Creates a new traverse instance from an instance - The object - A instance - - - - Creates a new traverse instance from a named type - The type name, for format see - A instance - - - - Creates a new and empty traverse instance - - - - Creates a new traverse instance from a class/type - The class/type - - - - Creates a new traverse instance from an instance - The object - - - - Gets the current value - The value - - - - Gets the current value - The type of the value - The value - - - - Invokes the current method with arguments and returns the result - The method arguments - The value returned by the method - - - - Invokes the current method with arguments and returns the result - The type of the value - The method arguments - The value returned by the method - - - - Sets a value of the current field or property - The value - The same traverse instance - - - - Gets the type of the current field or property - The type - - - - Moves the current traverse instance to a inner type - The type name - A traverse instance - - - - Moves the current traverse instance to a field - The type name - A traverse instance - - - - Moves the current traverse instance to a field - The type of the field - The type name - A traverse instance - - - - Gets all fields of the current type - A list of field names - - - - Moves the current traverse instance to a property - The type name - Optional property index - A traverse instance - - - - Moves the current traverse instance to a field - The type of the property - The type name - Optional property index - A traverse instance - - - - Gets all properties of the current type - A list of property names - - - - Moves the current traverse instance to a method - The name of the method - The arguments defining the argument types of the method overload - A traverse instance - - - - Moves the current traverse instance to a method - The name of the method - The argument types of the method - The arguments for the method - A traverse instance - - - - Gets all methods of the current type - A list of method names - - - - Checks if the current traverse instance is for a field - True if its a field - - - - Checks if the current traverse instance is for a property - True if its a property - - - - Checks if the current traverse instance is for a method - True if its a method - - - - Checks if the current traverse instance is for a type - True if its a type - - - - Iterates over all fields of the current type and executes a traverse action - Original object - The action receiving a instance for each field - - - - Iterates over all fields of the current type and executes a traverse action - Original object - Target object - The action receiving a pair of instances for each field pair - - - - Iterates over all fields of the current type and executes a traverse action - Original object - Target object - The action receiving a dot path representing the field pair and the instances - - - - Iterates over all properties of the current type and executes a traverse action - Original object - The action receiving a instance for each property - - - - Iterates over all properties of the current type and executes a traverse action - Original object - Target object - The action receiving a pair of instances for each property pair - - - - Iterates over all properties of the current type and executes a traverse action - Original object - Target object - The action receiving a dot path representing the property pair and the instances - - - - A default field action that copies fields to fields - - - - Returns a string that represents the current traverse - A string representation - - - - + + + + 0Harmony + + + + A factory to create delegate types + + + Default constructor + + + Creates a delegate type for a method + The method + The new delegate type + + + + A getter delegate type + Type that getter gets field/property value from + Type of the value that getter gets + The instance get getter uses + An delegate + + + + A setter delegate type + Type that setter sets field/property value for + Type of the value that setter sets + The instance the setter uses + The value the setter uses + An delegate + + + + A constructor delegate type + Type that constructor creates + An delegate + + + + A helper class for fast access to getters and setters + + + Creates an instantiation delegate + Type that constructor creates + The new instantiation delegate + + + + Creates an getter delegate for a property + Type that getter reads property from + Type of the property that gets accessed + The property + The new getter delegate + + + + Creates an getter delegate for a field + Type that getter reads field from + Type of the field that gets accessed + The field + The new getter delegate + + + + Creates an getter delegate for a field (with a list of possible field names) + Type that getter reads field/property from + Type of the field/property that gets accessed + A list of possible field names + The new getter delegate + + + + Creates an setter delegate + Type that setter assigns property value to + Type of the property that gets assigned + The property + The new setter delegate + + + + Creates an setter delegate for a field + Type that setter assigns field value to + Type of the field that gets assigned + The field + The new getter delegate + + + + A delegate to invoke a method + The instance + The method parameters + The method result + + + A helper class to invoke method with delegates + + + Creates a fast invocation handler from a method + The method to invoke + Controls if boxed value object is accessed/updated directly + The + + + The directBoxValueAccess option controls how value types passed by reference (e.g. ref int, out my_struct) are handled in the arguments array + passed to the fast invocation handler. + Since the arguments array is an object array, any value types contained within it are actually references to a boxed value object. + Like any other object, there can be other references to such boxed value objects, other than the reference within the arguments array. + For example, + + var val = 5; + var box = (object)val; + var arr = new object[] { box }; + handler(arr); // for a method with parameter signature: ref/out/in int + + + + + If directBoxValueAccess is true, the boxed value object is accessed (and potentially updated) directly when the handler is called, + such that all references to the boxed object reflect the potentially updated value. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, both box and arr[0] + now reflect the value 10. Note that the original val is not updated, since boxing always copies the value into the new boxed value object. + + + If directBoxValueAccess is false (default), the boxed value object in the arguments array is replaced with a "reboxed" value object, + such that potential updates to the value are reflected only in the arguments array. + In the above example, if the method associated with the handler updates the passed (boxed) value to 10, only arr[0] now reflects the value 10. + + + + + A low level memory helper + + + + Mark method for no inlining (currently only works on Mono) + The method/constructor to change + + + + Detours a method + The original method/constructor + The replacement method/constructor + An error string + + + + Writes a jump to memory + The memory address + Jump destination + An error string + + + + Gets the start of a method in memory + The method/constructor + [out] Details of the exception + The method start address + + + + special parameter names that can be used in prefix and postfix methods + + + Patch function helpers + + + Sorts patch methods by their priority rules + The original method + Patches to sort + Use debug mode + The sorted patch methods + + + + Creates new replacement method with the latest patches and detours the original method + The original method + Information describing the patches + The newly created replacement method + + + + Creates a patch sorter + Array of patches that will be sorted + Use debugging + + + Sorts internal PatchSortingWrapper collection and caches the results. + After first run the result is provided from the cache. + The original method + The sorted patch methods + + + Checks if the sorter was created with the same patch list and as a result can be reused to + get the sorted order of the patches. + List of patches to check against + true if equal + + + Removes one unresolved dependency from the least important patch. + + + Outputs all unblocked patches from the waiting list to results list + + + Adds patch to both results list and handled patches set + Patch to add + + + Wrapper used over the Patch object to allow faster dependency access and + dependency removal in case of cyclic dependencies + + + Create patch wrapper object used for sorting + Patch to wrap + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + Determines whether patches are equal + The other patch + true if equal + + + Hash function + A hash code + + + Bidirectionally registers Patches as after dependencies + List of dependencies to register + + + Bidirectionally registers Patches as before dependencies + List of dependencies to register + + + Bidirectionally removes Patch from after dependencies + Patch to remove + + + Bidirectionally removes Patch from before dependencies + Patch to remove + + + Specifies the type of method + + + + This is a normal method + + + This is a getter + + + This is a setter + + + This is a constructor + + + This is a static constructor + + + This targets the MoveNext method of the enumerator result + + + Specifies the type of argument + + + + This is a normal argument + + + This is a reference argument (ref) + + + This is an out argument (out) + + + This is a pointer argument (&) + + + Specifies the type of patch + + + + Any patch + + + A prefix patch + + + A postfix patch + + + A transpiler + + + A finalizer + + + A reverse patch + + + Specifies the type of reverse patch + + + + Use the unmodified original method (directly from IL) + + + Use the original as it is right now including previous patches but excluding future ones + + + Specifies the type of method call dispatching mechanics + + + + Call the method using dynamic dispatching if method is virtual (including overriden) + + + This is the built-in form of late binding (a.k.a. dynamic binding) and is the default dispatching mechanic in C#. + This directly corresponds with the instruction. + + + For virtual (including overriden) methods, the instance type's most-derived/overriden implementation of the method is called. + For non-virtual (including static) methods, same behavior as : the exact specified method implementation is called. + + + Note: This is not a fully dynamic dispatch, since non-virtual (including static) methods are still called non-virtually. + A fully dynamic dispatch in C# involves using + the dynamic type + (actually a fully dynamic binding, since even the name and overload resolution happens at runtime), which does not support. + + + + + Call the method using static dispatching, regardless of whether method is virtual (including overriden) or non-virtual (including static) + + + a.k.a. non-virtual dispatching, early binding, or static binding. + This directly corresponds with the instruction. + + + For both virtual (including overriden) and non-virtual (including static) methods, the exact specified method implementation is called, without virtual/override mechanics. + + + + + The base class for all Harmony annotations (not meant to be used directly) + + + + The common information for all attributes + + + Annotation to define your Harmony patch methods + + + + An empty annotation can be used together with TargetMethod(s) + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The full name of the declaring class/type + The name of the method, property or constructor to patch + The + + + + Annotation to define the original method for delegate injection + + + + An annotation that specifies a class to patch + The declaring class/type + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The argument types of the method or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The + An array of argument types to target overloads + Array of + + + + An annotation that specifies a method, property or constructor to patch + The declaring class/type + The name of the method, property or constructor to patch + The + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + The name of the method, property or constructor to patch + The + + + + An annotation that specifies call dispatching mechanics for the delegate + The + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + The + An array of argument types to target overloads + An array of + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + + + + An annotation that specifies a method, property or constructor to patch + An array of argument types to target overloads + An array of + + + + Annotation to define your standin methods for reverse patching + + + + An annotation that specifies the type of reverse patching + The of the reverse patch + + + + A Harmony annotation to define that all methods in a class are to be patched + + + + A Harmony annotation + + + + A Harmony annotation to define patch priority + The priority + + + + A Harmony annotation + + + + A Harmony annotation to define that a patch comes before another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to define that a patch comes after another patch + The array of harmony IDs of the other patches + + + + A Harmony annotation + + + A Harmony annotation to debug a patch (output uses to log to your Desktop) + + + + Specifies the Prepare function in a patch class + + + + Specifies the Cleanup function in a patch class + + + + Specifies the TargetMethod function in a patch class + + + + Specifies the TargetMethods function in a patch class + + + + Specifies the Prefix function in a patch class + + + + Specifies the Postfix function in a patch class + + + + Specifies the Transpiler function in a patch class + + + + Specifies the Finalizer function in a patch class + + + + A Harmony annotation + + + + The name of the original argument + + + + The index of the original argument + + + + The new name of the original argument + + + + An annotation to declare injected arguments by name + + + + An annotation to declare injected arguments by index + Zero-based index + + + + An annotation to declare injected arguments by renaming them + Name of the original argument + New name + + + + An annotation to declare injected arguments by index and renaming them + Zero-based index + New name + + + + An abstract wrapper around OpCode and their operands. Used by transpilers + + + + The opcode + + + + The operand + + + + All labels defined on this instruction + + + + All exception block boundaries defined on this instruction + + + + Creates a new CodeInstruction with a given opcode and optional operand + The opcode + The operand + + + + Create a full copy (including labels and exception blocks) of a CodeInstruction + The to copy + + + + Clones a CodeInstruction and resets its labels and exception blocks + A lightweight copy of this code instruction + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its opcode + The opcode + A copy of this CodeInstruction with a new opcode + + + + Clones a CodeInstruction, resets labels and exception blocks and sets its operand + The operand + A copy of this CodeInstruction with a new operand + + + + Creates a CodeInstruction calling a method (CALL) + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The target method in the form TypeFullName:MethodName, where the type name matches a form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A code instruction that calls the method matching the arguments + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Creates a CodeInstruction calling a method (CALL) + The lambda expression using the method + + + + + Returns an instruction to call the specified closure + The delegate type to emit + The closure that defines the method to call + A that calls the closure as a method + + + + Creates a CodeInstruction loading a field (LD[S]FLD[A]) + The class/type where the field is defined + The name of the field (case sensitive) + Use address of field + + + + Creates a CodeInstruction storing to a field (ST[S]FLD) + The class/type where the field is defined + The name of the field (case sensitive) + + + + Returns a string representation of the code instruction + A string representation of the code instruction + + + + Exception block types + + + + The beginning of an exception block + + + + The beginning of a catch block + + + + The beginning of an except filter block (currently not supported to use in a patch) + + + + The beginning of a fault block + + + + The beginning of a finally block + + + + The end of an exception block + + + + An exception block + + + + Block type + + + + Catch type + + + + Creates an exception block + The + The catch type + + + + The Harmony instance is the main entry to Harmony. After creating one with an unique identifier, it is used to patch and query the current application domain + + + + The unique identifier + + + + Set to true before instantiating Harmony to debug Harmony or use an environment variable to set HARMONY_DEBUG to '1' like this: cmd /C "set HARMONY_DEBUG=1 && game.exe" + This is for full debugging. To debug only specific patches, use the attribute + + + + Creates a new Harmony instance + A unique identifier (you choose your own) + A Harmony instance + + + + Searches the current assembly for Harmony annotations and uses them to create patches + This method can fail to use the correct assembly when being inlined. It calls StackTrace.GetFrame(1) which can point to the wrong method/assembly. If you are unsure or run into problems, use PatchAll(Assembly.GetExecutingAssembly()) instead. + + + + Creates a empty patch processor for an original method + The original method/constructor + A new instance + + + + Creates a patch class processor from an annotated class + The class/type + A new instance + + + + Creates a reverse patcher for one of your stub methods + The original method/constructor + The stand-in stub method as + A new instance + + + + Searches an assembly for Harmony annotations and uses them to create patches + The assembly + + + + Creates patches by manually specifying the methods + The original method/constructor + An optional prefix method wrapped in a object + An optional postfix method wrapped in a object + An optional transpiler method wrapped in a object + An optional finalizer method wrapped in a object + The replacement method that was created to patch the original method + + + + Patches a foreign method onto a stub method of yours and optionally applies transpilers during the process + The original method/constructor you want to duplicate + Your stub method as that will become the original. Needs to have the correct signature (either original or whatever your transpilers generates) + An optional transpiler as method that will be applied during the process + The replacement method that was created to patch the stub method + + + + Unpatches methods by patching them with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The optional Harmony ID to restrict unpatching to a specific Harmony instance + This method could be static if it wasn't for the fact that unpatching creates a new replacement method that contains your harmony ID + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The + The optional Harmony ID to restrict unpatching to a specific Harmony instance + + + + Unpatches a method by patching it with zero patches. Fully unpatching is not supported. Be careful, unpatching is global + The original method/constructor + The patch method as method to remove + + + + Test for patches from a specific Harmony ID + The Harmony ID + True if patches for this ID exist + + + + Gets patch information for a given original method + The original method/constructor + The patch information as + + + + Gets the methods this instance has patched + An enumeration of original methods/constructors + + + + Gets all patched original methods in the appdomain + An enumeration of patched original methods/constructors + + + + Gets the original method from a given replacement method + A replacement method, for example from a stacktrace + The original method/constructor or null if not found + + + + Tries to get the method from a stackframe including dynamic replacement methods + The + For normal frames, frame.GetMethod() is returned. For frames containing patched methods, the replacement method is returned or null if no method can be found + + + + Gets the original method from the stackframe and uses original if method is a dynamic replacement + The + The original method from that stackframe + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly versions keyed by Harmony IDs + + + + Under Mono, HarmonyException wraps IL compile errors with detailed information about the failure + + + + Default serialization constructor (not implemented) + The info + The context + + + + Get a list of IL instructions in pairs of offset+code + A list of key/value pairs which represent an offset and the code at that offset + + + + Get a list of IL instructions without offsets + A list of + + + + Get the error offset of the errornous IL instruction + The offset + + + + Get the index of the errornous IL instruction + The index into the list of instructions or -1 if not found + + + + A wrapper around a method to use it as a patch (for example a Prefix) + + + + The original method + + + + Class/type declaring this patch + + + + Patch method name + + + + Optional patch + + + + Array of argument types of the patch method + + + + of the patch + + + + Install this patch before patches with these Harmony IDs + + + + Install this patch after patches with these Harmony IDs + + + + Reverse patch type, see + + + + Create debug output for this patch + + + + Whether to use (true) or (false) mechanics + for -attributed delegate + + + + Default constructor + + + + Creates a patch from a given method + The original method + + + + Creates a patch from a given method + The original method + The patch + A list of harmony IDs that should come after this patch + A list of harmony IDs that should come before this patch + Set to true to generate debug output + + + + Creates a patch from a given method + The patch class/type + The patch method name + The optional argument types of the patch method (for overloaded methods) + + + + Gets the names of all internal patch info fields + A list of field names + + + + Merges annotations + The list of to merge + The merged + + + + Returns a string that represents the annotation + A string representation + + + + Annotation extensions + + + + Copies annotation information + The source + The destination + + + + Clones an annotation + The to clone + A copied + + + + Merges annotations + The master + The detail + A new, merged + + + + Gets all annotations on a class/type + The class/type + A list of all + + + + Gets merged annotations on a class/type + The class/type + The merged + + + + Gets all annotations on a method + The method/constructor + A list of + + + + Gets merged annotations on a method + The method/constructor + The merged + + + + + A mutable representation of an inline signature, similar to Mono.Cecil's CallSite. + Used by the calli instruction, can be used by transpilers + + + + + See + + + + See + + + + See + + + + The list of all parameter types or function pointer signatures received by the call site + + + + The return type or function pointer signature returned by the call site + + + + Returns a string representation of the inline signature + A string representation of the inline signature + + + + + A mutable representation of a parameter type with an attached type modifier, + similar to Mono.Cecil's OptionalModifierType / RequiredModifierType and C#'s modopt / modreq + + + + + Whether this is a modopt (optional modifier type) or a modreq (required modifier type) + + + + The modifier type attached to the parameter type + + + + The modified parameter type + + + + Returns a string representation of the modifier type + A string representation of the modifier type + + + + Patch serialization + + + + Control the binding of a serialized object to a type + Specifies the assembly name of the serialized object + Specifies the type name of the serialized object + The type of the object the formatter creates a new instance of + + + + Serializes a patch info + The + The serialized data + + + + Deserialize a patch info + The serialized data + A + + + + Compare function to sort patch priorities + The patch + Zero-based index + The priority + A standard sort integer (-1, 0, 1) + + + + Serializable patch information + + + + Prefixes as an array of + + + + Postfixes as an array of + + + + Transpilers as an array of + + + + Finalizers as an array of + + + + Returns if any of the patches wants debugging turned on + + + + Adds prefixes + An owner (Harmony ID) + The patch methods + + + + Adds a prefix + + + Removes prefixes + The owner of the prefixes, or * for all + + + + Adds postfixes + An owner (Harmony ID) + The patch methods + + + + Adds a postfix + + + Removes postfixes + The owner of the postfixes, or * for all + + + + Adds transpilers + An owner (Harmony ID) + The patch methods + + + + Adds a transpiler + + + Removes transpilers + The owner of the transpilers, or * for all + + + + Adds finalizers + An owner (Harmony ID) + The patch methods + + + + Adds a finalizer + + + Removes finalizers + The owner of the finalizers, or * for all + + + + Removes a patch using its method + The method of the patch to remove + + + + Gets a concatenated list of patches + The Harmony instance ID adding the new patches + The patches to add + The current patches + + + + Gets a list of patches with any from the given owner removed + The owner of the methods, or * for all + The current patches + + + + A serializable patch + + + + Zero-based index + + + + The owner (Harmony ID) + + + + The priority, see + + + + Keep this patch before the patches indicated in the list of Harmony IDs + + + + Keep this patch after the patches indicated in the list of Harmony IDs + + + + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + The method of the static patch method + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + The priority, see + A list of Harmony IDs for patches that should run after this patch + A list of Harmony IDs for patches that should run before this patch + A flag that will log the replacement method via every time this patch is used to build the replacement, even in the future + + + + Creates a patch + The method of the patch + Zero-based index + An owner (Harmony ID) + + + Get the patch method or a DynamicMethod if original patch method is a patch factory + The original method/constructor + The method of the patch + + + + Determines whether patches are equal + The other patch + true if equal + + + + Determines how patches sort + The other patch + integer to define sort order (-1, 0, 1) + + + + Hash function + A hash code + + + + A PatchClassProcessor used to turn on a class/type into patches + + + + Creates a patch class processor by pointing out a class. Similar to PatchAll() but without searching through all classes. + The Harmony instance + The class to process (need to have at least a [HarmonyPatch] attribute) + + + + Applies the patches + A list of all created replacement methods or null if patch class is not annotated + + + + A group of patches + + + + A collection of prefix + + + + A collection of postfix + + + + A collection of transpiler + + + + A collection of finalizer + + + + Gets all owners (Harmony IDs) or all known patches + The patch owners + + + + Creates a group of patches + An array of prefixes as + An array of postfixes as + An array of transpileres as + An array of finalizeres as + + + + A PatchProcessor handles patches on a method/constructor + + + + Creates an empty patch processor + The Harmony instance + The original method/constructor + + + + Adds a prefix + The prefix as a + A for chaining calls + + + + Adds a prefix + The prefix method + A for chaining calls + + + + Adds a postfix + The postfix as a + A for chaining calls + + + + Adds a postfix + The postfix method + A for chaining calls + + + + Adds a transpiler + The transpiler as a + A for chaining calls + + + + Adds a transpiler + The transpiler method + A for chaining calls + + + + Adds a finalizer + The finalizer as a + A for chaining calls + + + + Adds a finalizer + The finalizer method + A for chaining calls + + + + Gets all patched original methods in the appdomain + An enumeration of patched method/constructor + + + + Applies all registered patches + The generated replacement method + + + + Unpatches patches of a given type and/or Harmony ID + The patch type + Harmony ID or * for any + A for chaining calls + + + + Unpatches a specific patch + The method of the patch + A for chaining calls + + + + Gets patch information on an original + The original method/constructor + The patch information as + + + + Sort patch methods by their priority rules + The original method + Patches to sort + The sorted patch methods + + + + Gets Harmony version for all active Harmony instances + [out] The current Harmony version + A dictionary containing assembly version keyed by Harmony ID + + + + Creates a new empty generator to use when reading method bodies + A new + + + + Creates a new generator matching the method/constructor to use when reading method bodies + The original method/constructor to copy method information from + A new + + + + Returns the methods unmodified list of code instructions + The original method/constructor + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list containing all the original + + + + Returns the methods unmodified list of code instructions + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + A list containing all the original + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + Apply only the first count of transpilers + Optionally an existing generator that will be used to create all local variables and labels contained in the result (if not specified, an internal generator is used) + A list of + + + + Returns the methods current list of code instructions after all existing transpilers have been applied + The original method/constructor + A new generator that now contains all local variables and labels contained in the result + Apply only the first count of transpilers + A list of + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + All instructions as opcode/operand pairs + + + + A low level way to read the body of a method. Used for quick searching in methods + The original method + An existing generator that will be used to create all local variables and labels contained in the result + All instructions as opcode/operand pairs + + + + A patch priority + + + + Patch last + + + + Patch with very low priority + + + + Patch with low priority + + + + Patch with lower than normal priority + + + + Patch with normal priority + + + + Patch with higher than normal priority + + + + Patch with high priority + + + + Patch with very high priority + + + + Patch first + + + + A reverse patcher + + + + Creates a reverse patcher + The Harmony instance + The original method/constructor + Your stand-in stub method as + + + + Applies the patch + The type of patch, see + The generated replacement method + + + + A collection of commonly used transpilers + + + + A transpiler that replaces all occurrences of a given method with another one using the same signature + The enumeration of to act on + Method or constructor to search for + Method or constructor to replace with + Modified enumeration of + + + + A transpiler that alters instructions that match a predicate by calling an action + The enumeration of to act on + A predicate selecting the instructions to change + An action to apply to matching instructions + Modified enumeration of + + + + A transpiler that logs a text at the beginning of the method + The instructions to act on + The log text + Modified enumeration of + + + + A helper class for reflection related functions + + + + Shortcut for to simplify the use of reflections and make it work for any access level + + + + Shortcut for to simplify the use of reflections and make it work for any access level but only within the current type + + + + Enumerates all assemblies in the current app domain, excluding visual studio assemblies + An enumeration of + + + Gets a type by name. Prefers a full name with namespace but falls back to the first type matching the name otherwise + The name + A type or null if not found + + + + Gets all successfully loaded types from a given assembly + The assembly + An array of types + + This calls and returns , while catching any thrown . + If such an exception is thrown, returns the successfully loaded types (, + filtered for non-null values). + + + + + Enumerates all successfully loaded types in the current app domain, excluding visual studio assemblies + An enumeration of all in all assemblies, excluding visual studio assemblies + + + Applies a function going up the type hierarchy and stops at the first non-null result + Result type of func() + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + The type hierarchy of a class or value type (including struct) does NOT include implemented interfaces, + and the type hierarchy of an interface is only itself (regardless of whether that interface implements other interfaces). + The top-most type in the type hierarchy of all non-interface types (including value types) is . + + + + + Applies a function going into inner types and stops at the first non-null result + Generic type parameter + The class/type to start with + The evaluation function returning T + The first non-null result, or null if no match + + + + Gets the reflection information for a directly declared field + The class/type where the field is defined + The name of the field + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a directly declared field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A field or null when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The class/type where the field is defined + The name of the field (case sensitive) + A field or null when type/name is null or when the field cannot be found + + + + Gets the reflection information for a field by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A field or null when the field cannot be found + + + + Gets the reflection information for a field + The class/type where the field is declared + The zero-based index of the field inside the class definition + A field or null when type is null or when the field cannot be found + + + + Gets the reflection information for a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A property or null when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when the property cannot be found + + + + Gets the reflection information for the setter method of a directly declared property + The class/type where the property is declared + The name of the property (case sensitive) + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the Setter method of a directly declared property + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The class/type + The name + A property or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A property or null when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the getter method of a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The class/type + The name + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for the setter method of a property by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A method or null when type/name is null or when the property cannot be found + + + + Gets the reflection information for a directly declared method + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a directly declared method + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The class/type where the method is declared + The name of the method (case sensitive) + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when type/name is null or when the method cannot be found + + + + Gets the reflection information for a method by searching the type and all its super types + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + Optional parameters to target a specific overload of the method + Optional list of types that define the generic version of the method + A method or null when the method cannot be found + + + + Gets the method of an enumerator method + Enumerator method that creates the enumerator + The internal method of the enumerator or null if no valid enumerator is detected + + + Gets the names of all method that are declared in a type + The declaring class/type + A list of method names + + + + Gets the names of all method that are declared in the type of the instance + An instance of the type to search in + A list of method names + + + + Gets the names of all fields that are declared in a type + The declaring class/type + A list of field names + + + + Gets the names of all fields that are declared in the type of the instance + An instance of the type to search in + A list of field names + + + + Gets the names of all properties that are declared in a type + The declaring class/type + A list of property names + + + + Gets the names of all properties that are declared in the type of the instance + An instance of the type to search in + A list of property names + + + + Gets the type of any class member of + A member + The class/type of this member + + + + Test if a class member is actually an concrete implementation + A member + True if the member is a declared + + + + Gets the real implementation of a class member + A member + The member itself if its declared. Otherwise the member that is actually implemented in some base type + + + + Gets the reflection information for a directly declared constructor + The class/type where the constructor is declared + Optional parameters to target a specific overload of the constructor + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the constructor cannot be found + + + + Gets the reflection information for a constructor by searching the type and all its super types + The class/type where the constructor is declared + Optional parameters to target a specific overload of the method + Optional parameters to only consider static constructors + A constructor info or null when type is null or when the method cannot be found + + + + Gets reflection information for all declared constructors + The class/type where the constructors are declared + Optional parameters to only consider static constructors + A list of constructor infos + + + + Gets reflection information for all declared methods + The class/type where the methods are declared + A list of methods + + + + Gets reflection information for all declared properties + The class/type where the properties are declared + A list of properties + + + + Gets reflection information for all declared fields + The class/type where the fields are declared + A list of fields + + + + Gets the return type of a method or constructor + The method/constructor + The return type + + + + Given a type, returns the first inner type matching a recursive search by name + The class/type to start searching at + The name of the inner type (case sensitive) + The inner type or null if type/name is null or if a type with that name cannot be found + + + + Given a type, returns the first inner type matching a recursive search with a predicate + The class/type to start searching at + The predicate to search with + The inner type or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first method matching a predicate + The class/type to start searching at + The predicate to search with + The method or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first constructor matching a predicate + The class/type to start searching at + The predicate to search with + The constructor info or null if type/predicate is null or if a type with that name cannot be found + + + + Given a type, returns the first property matching a predicate + The class/type to start searching at + The predicate to search with + The property or null if type/predicate is null or if a type with that name cannot be found + + + + Returns an array containing the type of each object in the given array + An array of objects + An array of types or an empty array if parameters is null (if an object is null, the type for it will be object) + + + + Creates an array of input parameters for a given method and a given set of potential inputs + The method/constructor you are planing to call + The possible input parameters in any order + An object array matching the method signature + + + + A readable/assignable reference delegate to an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The runtime instance to access the field (ignored and can be omitted for static fields) + A readable/assignable reference to the field + Null instance passed to a non-static field ref delegate + + Instance of invalid type passed to a non-static field ref delegate + (this can happen if is a parent class or interface of the field's declaring type) + + + + This delegate cannot be used for instance fields of structs, since a struct instance passed to the delegate would be passed by + value and thus would be a copy that only exists within the delegate's invocation. This is fine for a readonly reference, + but makes assignment futile. Use instead. + + + Note that is not required to be the field's declaring type. It can be a parent class (including ), + implemented interface, or a derived class of the field's declaring type ("instanceOfT is FieldDeclaringType" must be possible). + Specifically, must be assignable from OR to the field's declaring type. + Technically, this allows Nullable, although Nullable is only relevant for structs, and since only static fields of structs + are allowed for this delegate, and the instance passed to such a delegate is ignored, this hardly matters. + + + Similarly, is not required to be the field's field type, unless that type is a non-enum value type. + It can be a parent class (including object) or implemented interface of the field's field type. It cannot be a derived class. + This variance is not allowed for value types, since that would require boxing/unboxing, which is not allowed for ref values. + Special case for enum types: can also be the underlying integral type of the enum type. + Specifically, for reference types, must be assignable from + the field's field type; for non-enum value types, must be exactly the field's field type; for enum types, + must be either the field's field type or the underyling integral type of that field type. + + + This delegate supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and StaticFieldRefAccess methods that return it) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates an instance field reference for a specific instance of a class + The class that defines the instance field, or derived class of this type + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldName) is functionally equivalent to FieldRefAccess<T, F>(fieldName)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + + The type that defines the field, or derived class of this type; must not be a struct type unless the field is static + + The name of the field + + A readable/assignable delegate with T=object + (for static fields, the instance delegate parameter is ignored) + + + + This method is meant for cases where the given type is only known at runtime and thus can't be used as a type parameter T + in e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + Consider using (and other overloads) instead for static fields. + + + + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + type of the field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A readable/assignable delegate with T=object + + + Creates a field reference delegate for an instance field of a class or static field (NOT an instance field of a struct) + + An arbitrary type if the field is static; otherwise the class that defines the field, or a parent class (including ), + implemented interface, or derived class of this type ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + This method supports static fields, even those defined in structs, for legacy reasons. + For such static fields, is effectively ignored. + Consider using (and other overloads) instead for static fields. + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + Creates a field reference for an instance field of a class + + The type that defines the field; or a parent class (including ), implemented interface, or derived class of this type + ("instanceOfT is FieldDeclaringType" must be possible) + + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + FieldRefAccess<T, F>(instance, fieldInfo) is functionally equivalent to FieldRefAccess<T, F>(fieldInfo)(instance). + + + For backwards compatibility, there is no class constraint on . + Instead, the non-value-type check is done at runtime within the method. + + + + + + A readable/assignable reference delegate to an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A reference to the runtime instance to access the field + A readable/assignable reference to the field + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable delegate + + + + Creates an instance field reference for a specific instance of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The name of the field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldName) is functionally equivalent to StructFieldRefAccess<T, F>(fieldName)(ref instance). + + + + + + Creates a field reference delegate for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + This method is meant for cases where the field has already been obtained, avoiding the field searching cost in + e.g. . + + + + + + Creates a field reference for an instance field of a struct + The struct that defines the instance field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The instance + The field + A readable/assignable reference to the field + + + This method is meant for one-off access to a field's value for a single instance and where the field has already been obtained. + If you need to access a field's value for potentially multiple instances, use instead. + StructFieldRefAccess<T, F>(ref instance, fieldInfo) is functionally equivalent to StructFieldRefAccess<T, F>(fieldInfo)(ref instance). + + + + + + A readable/assignable reference delegate to a static field + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + A readable/assignable reference to the field + + + + Creates a static field reference + The type (can be class or struct) the field is defined in + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The type (can be class or struct) the field is defined in + The name of the field + A readable/assignable reference to the field + + + + Creates a static field reference + The type of the field + The member in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + A readable/assignable reference to the field + + + + Creates a static field reference + An arbitrary type (by convention, the type the field is defined in) + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable reference to the field + + The type parameter is only used in exception messaging and to distinguish between this method overload + and the overload (which returns a rather than a reference). + + + + + Creates a static field reference delegate + + The type of the field; or if the field's type is a reference type (a class or interface, NOT a struct or other value type), + a type that is assignable from that type; or if the field's type is an enum type, + either that type or the underlying integral type of that enum type + + The field + A readable/assignable delegate + + + + Creates a delegate to a given method + The delegate Type + The method to create a delegate from. + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + + Only applies for instance methods. If true (default) and is virtual, invocation of the delegate + calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); + else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) + Note: if false and is an interface method, an ArgumentException is thrown. + + A delegate of given to given + + + Delegate invocation is more performant and more convenient to use than + at a one-time setup cost. + + + Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, + and both class and struct methods. + + + + + + Creates a delegate to a given method + The delegate Type + The method in the form TypeFullName:MemberName, where TypeFullName matches the form recognized by Type.GetType like Some.Namespace.Type. + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + + Only applies for instance methods. If true (default) and is virtual, invocation of the delegate + calls the instance method virtually (the instance type's most-derived/overriden implementation of the method is called); + else, invocation of the delegate calls the exact specified (this is useful for calling base class methods) + Note: if false and is an interface method, an ArgumentException is thrown. + + A delegate of given to given + + + Delegate invocation is more performant and more convenient to use than + at a one-time setup cost. + + + Works for both type of static and instance methods, both open and closed (a.k.a. unbound and bound) instance methods, + and both class and struct methods. + + + + + + Creates a delegate for a given delegate definition, attributed with [] + The delegate Type, attributed with [] + + Only applies for instance methods. If null (default), returned delegate is an open (a.k.a. unbound) instance delegate + where an instance is supplied as the first argument to the delegate invocation; else, delegate is a closed (a.k.a. bound) + instance delegate where the delegate invocation always applies to the given . + + A delegate of given to the method specified via [] + attributes on + + This calls with the method and virtualCall arguments + determined from the [] attributes on , + and the given (for closed instance delegates). + + + + + Returns who called the current method + The calling method/constructor (excluding the caller) + + + + Rethrows an exception while preserving its stack trace (throw statement typically clobbers existing stack traces) + The exception to rethrow + + + + True if the current runtime is based on Mono, false otherwise (.NET) + + + + True if the current runtime is .NET Framework, false otherwise (.NET Core or Mono, although latter isn't guaranteed) + + + + True if the current runtime is .NET Core, false otherwise (Mono or .NET Framework) + + + + Throws a missing member runtime exception + The type that is involved + A list of names + + + + Gets default value for a specific type + The class/type + The default value + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + Creates an (possibly uninitialized) instance of a given type + The class/type + The new instance + + + + + A cache for the or similar Add methods for different types. + + + + Makes a deep copy of any object + The type of the instance that should be created; for legacy reasons, this must be a class or interface + The original object + A copy of the original object but of type T + + + + Makes a deep copy of any object + The type of the instance that should be created + The original object + [out] The copy of the original object + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + + + + Makes a deep copy of any object + The original object + The type of the instance that should be created + Optional value transformation function (taking a field name and src/dst instances) + The optional path root to start with + The copy of the original object + + + + Tests if a type is a struct + The type + True if the type is a struct + + + + Tests if a type is a class + The type + True if the type is a class + + + + Tests if a type is a value type + The type + True if the type is a value type + + + + Tests if a type is an integer type + The type + True if the type represents some integer + + + + Tests if a type is a floating point type + The type + True if the type represents some floating point + + + + Tests if a type is a numerical type + The type + True if the type represents some number + + + + Tests if a type is void + The type + True if the type is void + + + + Test whether an instance is of a nullable type + Type of instance + An instance to test + True if instance is of nullable type, false if not + + + + Tests whether a type or member is static, as defined in C# + The type or member + True if the type or member is static + + + + Tests whether a type is static, as defined in C# + The type + True if the type is static + + + + Tests whether a property is static, as defined in C# + The property + True if the property is static + + + + Tests whether an event is static, as defined in C# + The event + True if the event is static + + + + Calculates a combined hash code for an enumeration of objects + The objects + The hash code + + + + A CodeInstruction match + + + The name of the match + + + The matched opcodes + + + The matched operands + + + The jumps from the match + + + The jumps to the match + + + The match predicate + + + Creates a code match + The optional opcode + The optional operand + The optional name + + + + Creates a code match that calls a method + The lambda expression using the method + The optional name + + + + Creates a code match that calls a method + The lambda expression using the method + The optional name + + + + Creates a code match + The CodeInstruction + An optional name + + + + Creates a code match + The predicate + An optional name + + + + Returns a string that represents the match + A string representation + + + + A CodeInstruction matcher + + + The current position + The index or -1 if out of bounds + + + + Gets the number of code instructions in this matcher + The count + + + + Checks whether the position of this CodeMatcher is within bounds + True if this CodeMatcher is valid + + + + Checks whether the position of this CodeMatcher is outside its bounds + True if this CodeMatcher is invalid + + + + Gets the remaining code instructions + The remaining count + + + + Gets the opcode at the current position + The opcode + + + + Gets the operand at the current position + The operand + + + + Gets the labels at the current position + The labels + + + + Gets the exception blocks at the current position + The blocks + + + + Creates an empty code matcher + + + Creates a code matcher from an enumeration of instructions + The instructions (transpiler argument) + An optional IL generator + + + + Makes a clone of this instruction matcher + A copy of this matcher + + + + Gets instructions at the current position + The instruction + + + + Gets instructions at the current position with offset + The offset + The instruction + + + + Gets all instructions + A list of instructions + + + + Gets all instructions as an enumeration + A list of instructions + + + + Gets some instructions counting from current position + Number of instructions + A list of instructions + + + + Gets all instructions within a range + The start index + The end index + A list of instructions + + + + Gets all instructions within a range (relative to current position) + The start offset + The end offset + A list of instructions + + + + Gets a list of all distinct labels + The instructions (transpiler argument) + A list of Labels + + + + Reports a failure + The method involved + The logger + True if current position is invalid and error was logged + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed) + Explanation of where/why the exception was thrown that will be added to the exception message + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at current position + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at any point between current position and the end + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the matches do not match at any point between current position and the start + Explanation of where/why the exception was thrown that will be added to the exception message + Some code matches + The same code matcher + + + + Throw an InvalidOperationException if current state is invalid (position out of bounds / last match failed), + or if the check function returns false + Explanation of where/why the exception was thrown that will be added to the exception message + Function that checks validity of current state. If it returns false, an exception is thrown + The same code matcher + + + + Sets an instruction at current position + The instruction to set + The same code matcher + + + + Sets instruction at current position and advances + The instruction + The same code matcher + + + + Sets opcode and operand at current position + The opcode + The operand + The same code matcher + + + + Sets opcode and operand at current position and advances + The opcode + The operand + The same code matcher + + + + Sets opcode at current position and advances + The opcode + The same code matcher + + + + Sets operand at current position and advances + The operand + The same code matcher + + + + Creates a label at current position + [out] The label + The same code matcher + + + + Creates a label at a position + The position + [out] The new label + The same code matcher + + + + Creates a label at a position + The offset + [out] The new label + The same code matcher + + + + Adds an enumeration of labels to current position + The labels + The same code matcher + + + + Adds an enumeration of labels at a position + The position + The labels + The same code matcher + + + + Sets jump to + Branch instruction + Destination for the jump + [out] The created label + The same code matcher + + + + Inserts some instructions + The instructions + The same code matcher + + + + Inserts an enumeration of instructions + The instructions + The same code matcher + + + + Inserts a branch + The branch opcode + Branch destination + The same code matcher + + + + Inserts some instructions and advances the position + The instructions + The same code matcher + + + + Inserts an enumeration of instructions and advances the position + The instructions + The same code matcher + + + + Inserts a branch and advances the position + The branch opcode + Branch destination + The same code matcher + + + + Removes current instruction + The same code matcher + + + + Removes some instruction from current position by count + Number of instructions + The same code matcher + + + + Removes the instructions in a range + The start + The end + The same code matcher + + + + Removes the instructions in a offset range + The start offset + The end offset + The same code matcher + + + + Advances the current position + The offset + The same code matcher + + + + Moves the current position to the start + The same code matcher + + + + Moves the current position to the end + The same code matcher + + + + Searches forward with a predicate and advances position + The predicate + The same code matcher + + + + Searches backwards with a predicate and reverses position + The predicate + The same code matcher + + + + Matches forward and advances position to beginning of matching sequence + Some code matches + The same code matcher + + + + Matches forward and advances position to ending of matching sequence + Some code matches + The same code matcher + + + + Matches backwards and reverses position to beginning of matching sequence + Some code matches + The same code matcher + + + + Matches backwards and reverses position to ending of matching sequence + Some code matches + The same code matcher + + + + Repeats a match action until boundaries are met + The match action + An optional action that is executed when no match is found + The same code matcher + + + + Gets a match by its name + The match name + An instruction + + + + General extensions for common cases + + + + Joins an enumeration with a value converter and a delimiter to a string + The inner type of the enumeration + The enumeration + An optional value converter (from T to string) + An optional delimiter + The values joined into a string + + + + Converts an array of types (for example methods arguments) into a human readable form + The array of types + A human readable description including brackets + + + + A full description of a type + The type + A human readable description + + + + A a full description of a method or a constructor without assembly details but with generics + The method/constructor + A human readable description + + + + A helper converting parameter infos to types + The array of parameter infos + An array of types + + + + A helper to access a value via key from a dictionary + The key type + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist + + + + A helper to access a value via key from a dictionary with extra casting + The value type + The dictionary + The key + The value for the key or the default value (of T) if that key does not exist or cannot be cast to T + + + + Escapes Unicode and ASCII non printable characters + The string to convert + The string to convert + A string literal surrounded by + + + + Extensions for + + + + Returns if an is initialized and valid + The + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand has the same type and is equal to the value + + + + Shortcut for testing whether the operand is equal to a non-null value + The + The value + True if the operand is equal to the value + This is an optimized version of for + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand has the same type and is equal to the given operand + + + + Shortcut for code.opcode == opcode && code.OperandIs(operand) + The + The + The operand value + True if the opcode is equal to the given opcode and the operand is equal to the given operand + This is an optimized version of for + + + + Tests for any form of Ldarg* + The + The (optional) index + True if it matches one of the variations + + + + Tests for Ldarga/Ldarga_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for Starg/Starg_S + The + The (optional) index + True if it matches one of the variations + + + + Tests for any form of Ldloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests for any form of Stloc* + The + The optional local variable + True if it matches one of the variations + + + + Tests if the code instruction branches + The + The label if the instruction is a branch operation or if not + True if the instruction branches + + + + Tests if the code instruction calls the method/constructor + The + The method + True if the instruction calls the method or constructor + + + + Tests if the code instruction loads a constant + The + True if the instruction loads a constant + + + + Tests if the code instruction loads an integer constant + The + The integer constant + True if the instruction loads the constant + + + + Tests if the code instruction loads a floating point constant + The + The floating point constant + True if the instruction loads the constant + + + + Tests if the code instruction loads an enum constant + The + The enum + True if the instruction loads the constant + + + + Tests if the code instruction loads a string constant + The + The string + True if the instruction loads the constant + + + + Tests if the code instruction loads a field + The + The field + Set to true if the address of the field is loaded + True if the instruction loads the field + + + + Tests if the code instruction stores a field + The + The field + True if the instruction stores this field + + + + Adds labels to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds labels to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all labels from the code instruction and returns them + The + A list of + + + Moves all labels from the code instruction to another one + The to move the labels from + The other to move the labels to + The code instruction labels were moved from (now empty) + + + Moves all labels from another code instruction to the current one + The to move the labels to + The other to move the labels from + The code instruction that received the labels + + + Adds ExceptionBlocks to the code instruction and return it + The + One or several to add + The same code instruction + + + Adds ExceptionBlocks to the code instruction and return it + The + An enumeration of + The same code instruction + + + Extracts all ExceptionBlocks from the code instruction and returns them + The + A list of + + + Moves all ExceptionBlocks from the code instruction to another one + The to move the ExceptionBlocks from + The other to move the ExceptionBlocks to + The code instruction blocks were moved from (now empty) + + + Moves all ExceptionBlocks from another code instruction to the current one + The to move the ExceptionBlocks to + The other to move the ExceptionBlocks from + The code instruction that received the blocks + + + General extensions for collections + + + + A simple way to execute code for every element in a collection + The inner type of the collection + The collection + The action to execute + + + + A simple way to execute code for elements in a collection matching a condition + The inner type of the collection + The collection + The predicate + The action to execute + + + + A helper to add an item to a collection + The inner type of the collection + The collection + The item to add + The collection containing the item + + + + A helper to add an item to an array + The inner type of the collection + The array + The item to add + The array containing the item + + + + A helper to add items to an array + The inner type of the collection + The array + The items to add + The array containing the items + + + + General extensions for collections + + + + Tests a class member if it has an IL method body (external methods for example don't have a body) + The member to test + Returns true if the member has an IL body or false if not + + + A file log for debugging + + + + Set this to make Harmony write its log content to this stream + + + + Full pathname of the log file, defaults to a file called harmony.log.txt on your Desktop + + + + The indent character. The default is tab + + + + The current indent level + + + + Changes the indentation level + The value to add to the indentation level + + + + Log a string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + The string to log + + + + Logs a list of string in a buffered way. Use this method only if you are sure that FlushBuffer will be called + or else logging information is incomplete in case of a crash + A list of strings to log (they will not be re-indented) + + + + Returns the log buffer and optionally empties it + True to empty the buffer + The buffer. + + + + Replaces the buffer with new lines + The lines to store + + + + Flushes the log buffer to disk (use in combination with LogBuffered) + + + + Log a string directly to disk. Slower method that prevents missing information in case of a crash + The string to log. + + + + Log a string directly to disk if Harmony.DEBUG is true. Slower method that prevents missing information in case of a crash + The string to log. + + + + Resets and deletes the log + + + + Logs some bytes as hex values + The pointer to some memory + The length of bytes to log + + + + A helper class to retrieve reflection info for non-private methods + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The generic type + The generic result type + The lambda expression using the method + The method in the lambda expression + + + + Given a lambda expression that calls a method, returns the method info + The lambda expression using the method + The method in the lambda expression + + + + A reflection helper to read and write private elements + The result type defined by GetValue() + + + + Creates a traverse instance from an existing instance + The existing instance + + + + Gets/Sets the current value + The value to read or write + + + + A reflection helper to read and write private elements + + + + Creates a new traverse instance from a class/type + The class/type + A instance + + + + Creates a new traverse instance from a class T + The class + A instance + + + + Creates a new traverse instance from an instance + The object + A instance + + + + Creates a new traverse instance from a named type + The type name, for format see + A instance + + + + Creates a new and empty traverse instance + + + + Creates a new traverse instance from a class/type + The class/type + + + + Creates a new traverse instance from an instance + The object + + + + Gets the current value + The value + + + + Gets the current value + The type of the value + The value + + + + Invokes the current method with arguments and returns the result + The method arguments + The value returned by the method + + + + Invokes the current method with arguments and returns the result + The type of the value + The method arguments + The value returned by the method + + + + Sets a value of the current field or property + The value + The same traverse instance + + + + Gets the type of the current field or property + The type + + + + Moves the current traverse instance to a inner type + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type name + A traverse instance + + + + Moves the current traverse instance to a field + The type of the field + The type name + A traverse instance + + + + Gets all fields of the current type + A list of field names + + + + Moves the current traverse instance to a property + The type name + Optional property index + A traverse instance + + + + Moves the current traverse instance to a field + The type of the property + The type name + Optional property index + A traverse instance + + + + Gets all properties of the current type + A list of property names + + + + Moves the current traverse instance to a method + The name of the method + The arguments defining the argument types of the method overload + A traverse instance + + + + Moves the current traverse instance to a method + The name of the method + The argument types of the method + The arguments for the method + A traverse instance + + + + Gets all methods of the current type + A list of method names + + + + Checks if the current traverse instance is for a field + True if its a field + + + + Checks if the current traverse instance is for a property + True if its a property + + + + Checks if the current traverse instance is for a method + True if its a method + + + + Checks if the current traverse instance is for a type + True if its a type + + + + Iterates over all fields of the current type and executes a traverse action + Original object + The action receiving a instance for each field + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each field pair + + + + Iterates over all fields of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the field pair and the instances + + + + Iterates over all properties of the current type and executes a traverse action + Original object + The action receiving a instance for each property + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a pair of instances for each property pair + + + + Iterates over all properties of the current type and executes a traverse action + Original object + Target object + The action receiving a dot path representing the property pair and the instances + + + + A default field action that copies fields to fields + + + + Returns a string that represents the current traverse + A string representation + + + + diff --git a/Assemblies/ResearchTree.dll b/Assemblies/ResearchTree.dll index ba43fd8447163944644c45f240c7378f96164fca..e52210ca9f6effe5ae6f123ddf0e809dc942737c 100644 GIT binary patch delta 15496 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 BrG@|i delta 15617 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 diff --git a/Assemblies/System.ValueTuple.dll b/Assemblies/System.ValueTuple.dll new file mode 100644 index 0000000000000000000000000000000000000000..b63769a4e9f013dc0472236826acba632ceac3ba GIT binary patch literal 79496 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
    |*dE#k)(@nehlu|@pYB7STU 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 SIk{W4*AVE3BY6ICkpBmry+Aeq literal 0 HcmV?d00001 diff --git a/Assemblies/System.ValueTuple.xml b/Assemblies/System.ValueTuple.xml new file mode 100644 index 0000000..92b0c5c --- /dev/null +++ b/Assemblies/System.ValueTuple.xml @@ -0,0 +1,1299 @@ + + + + System.ValueTuple + + + + + Indicates that the use of on a member is meant to be treated as a tuple with element names. + + + + + Initializes a new instance of the class. + + + Specifies, in a pre-order depth-first traversal of a type's + construction, which occurrences are + meant to carry element names. + + + This constructor is meant to be used on types that contain an + instantiation of that contains + element names. For instance, if C is a generic type with + two type parameters, then a use of the constructed type C{, might be intended to + treat the first type argument as a tuple with element names and the + second as a tuple without element names. In which case, the + appropriate attribute specification should use a + transformNames value of { "name1", "name2", null, null, + null }. + + + + + Specifies, in a pre-order depth-first traversal of a type's + construction, which elements are + meant to carry element names. + + + + + Provides extension methods for instances to interop with C# tuples features (deconstruction syntax, converting from and to ). + + + + + Deconstruct a properly nested with 1 elements. + + + + + Deconstruct a properly nested with 2 elements. + + + + + Deconstruct a properly nested with 3 elements. + + + + + Deconstruct a properly nested with 4 elements. + + + + + Deconstruct a properly nested with 5 elements. + + + + + Deconstruct a properly nested with 6 elements. + + + + + Deconstruct a properly nested with 7 elements. + + + + + Deconstruct a properly nested with 8 elements. + + + + + Deconstruct a properly nested with 9 elements. + + + + + Deconstruct a properly nested with 10 elements. + + + + + Deconstruct a properly nested with 11 elements. + + + + + Deconstruct a properly nested with 12 elements. + + + + + Deconstruct a properly nested with 13 elements. + + + + + Deconstruct a properly nested with 14 elements. + + + + + Deconstruct a properly nested with 15 elements. + + + + + Deconstruct a properly nested with 16 elements. + + + + + Deconstruct a properly nested with 17 elements. + + + + + Deconstruct a properly nested with 18 elements. + + + + + Deconstruct a properly nested with 19 elements. + + + + + Deconstruct a properly nested with 20 elements. + + + + + Deconstruct a properly nested with 21 elements. + + + + + Make a properly nested from a properly nested with 1 element. + + + + + Make a properly nested from a properly nested with 2 elements. + + + + + Make a properly nested from a properly nested with 3 elements. + + + + + Make a properly nested from a properly nested with 4 elements. + + + + + Make a properly nested from a properly nested with 5 elements. + + + + + Make a properly nested from a properly nested with 6 elements. + + + + + Make a properly nested from a properly nested with 7 elements. + + + + + Make a properly nested from a properly nested with 8 elements. + + + + + Make a properly nested from a properly nested with 9 elements. + + + + + Make a properly nested from a properly nested with 10 elements. + + + + + Make a properly nested from a properly nested with 11 elements. + + + + + Make a properly nested from a properly nested with 12 elements. + + + + + Make a properly nested from a properly nested with 13 elements. + + + + + Make a properly nested from a properly nested with 14 elements. + + + + + Make a properly nested from a properly nested with 15 elements. + + + + + Make a properly nested from a properly nested with 16 elements. + + + + + Make a properly nested from a properly nested with 17 elements. + + + + + Make a properly nested from a properly nested with 18 elements. + + + + + Make a properly nested from a properly nested with 19 elements. + + + + + Make a properly nested from a properly nested with 20 elements. + + + + + Make a properly nested from a properly nested with 21 elements. + + + + + Make a properly nested from a properly nested with 1 element. + + + + + Make a properly nested from a properly nested with 2 elements. + + + + + Make a properly nested from a properly nested with 3 elements. + + + + + Make a properly nested from a properly nested with 4 elements. + + + + + Make a properly nested from a properly nested with 5 elements. + + + + + Make a properly nested from a properly nested with 6 elements. + + + + + Make a properly nested from a properly nested with 7 elements. + + + + + Make a properly nested from a properly nested with 8 elements. + + + + + Make a properly nested from a properly nested with 9 elements. + + + + + Make a properly nested from a properly nested with 10 elements. + + + + + Make a properly nested from a properly nested with 11 elements. + + + + + Make a properly nested from a properly nested with 12 elements. + + + + + Make a properly nested from a properly nested with 13 elements. + + + + + Make a properly nested from a properly nested with 14 elements. + + + + + Make a properly nested from a properly nested with 15 elements. + + + + + Make a properly nested from a properly nested with 16 elements. + + + + + Make a properly nested from a properly nested with 17 elements. + + + + + Make a properly nested from a properly nested with 18 elements. + + + + + Make a properly nested from a properly nested with 19 elements. + + + + + Make a properly nested from a properly nested with 20 elements. + + + + + Make a properly nested from a properly nested with 21 elements. + + + + + Helper so we can call some tuple methods recursively without knowing the underlying types. + + + + + The ValueTuple types (from arity 0 to 8) comprise the runtime implementation that underlies tuples in C# and struct tuples in F#. + Aside from created via language syntax, they are most easily created via the ValueTuple.Create factory methods. + The System.ValueTuple types differ from the System.Tuple types in that: + - they are structs rather than classes, + - they are mutable rather than readonly, and + - their members (such as Item1, Item2, etc) are fields rather than properties. + + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if is a . + + + Returns a value indicating whether this instance is equal to a specified value. + An instance to compare to this instance. + true if has the same value as this instance; otherwise, false. + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + Returns the hash code for this instance. + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (). + + + + Creates a new struct 0-tuple. + A 0-tuple. + + + Creates a new struct 1-tuple, or singleton. + The type of the first component of the tuple. + The value of the first component of the tuple. + A 1-tuple (singleton) whose value is (item1). + + + Creates a new struct 2-tuple, or pair. + The type of the first component of the tuple. + The type of the second component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + A 2-tuple (pair) whose value is (item1, item2). + + + Creates a new struct 3-tuple, or triple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + A 3-tuple (triple) whose value is (item1, item2, item3). + + + Creates a new struct 4-tuple, or quadruple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + A 4-tuple (quadruple) whose value is (item1, item2, item3, item4). + + + Creates a new struct 5-tuple, or quintuple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The type of the fifth component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + The value of the fifth component of the tuple. + A 5-tuple (quintuple) whose value is (item1, item2, item3, item4, item5). + + + Creates a new struct 6-tuple, or sextuple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The type of the fifth component of the tuple. + The type of the sixth component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + The value of the fifth component of the tuple. + The value of the sixth component of the tuple. + A 6-tuple (sextuple) whose value is (item1, item2, item3, item4, item5, item6). + + + Creates a new struct 7-tuple, or septuple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The type of the fifth component of the tuple. + The type of the sixth component of the tuple. + The type of the seventh component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + The value of the fifth component of the tuple. + The value of the sixth component of the tuple. + The value of the seventh component of the tuple. + A 7-tuple (septuple) whose value is (item1, item2, item3, item4, item5, item6, item7). + + + Creates a new struct 8-tuple, or octuple. + The type of the first component of the tuple. + The type of the second component of the tuple. + The type of the third component of the tuple. + The type of the fourth component of the tuple. + The type of the fifth component of the tuple. + The type of the sixth component of the tuple. + The type of the seventh component of the tuple. + The type of the eighth component of the tuple. + The value of the first component of the tuple. + The value of the second component of the tuple. + The value of the third component of the tuple. + The value of the fourth component of the tuple. + The value of the fifth component of the tuple. + The value of the sixth component of the tuple. + The value of the seventh component of the tuple. + The value of the eighth component of the tuple. + An 8-tuple (octuple) whose value is (item1, item2, item3, item4, item5, item6, item7, item8). + + + Represents a 1-tuple, or singleton, as a value type. + The type of the tuple's only component. + + + + The current instance's first component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its field + is equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1), + where Item1 represents the value of . If the field is , + it is represented as . + + + + + Represents a 2-tuple, or pair, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + + Returns a value that indicates whether the current instance is equal to a specified object based on a specified comparison method. + + The object to compare with this instance. + An object that defines the method to use to evaluate whether the two objects are equal. + if the current instance is equal to the specified object; otherwise, . + + + This member is an explicit interface member implementation. It can be used only when the + instance is cast to an interface. + + The implementation is called only if other is not , + and if it can be successfully cast (in C#) or converted (in Visual Basic) to a + whose components are of the same types as those of the current instance. The IStructuralEquatable.Equals(Object, IEqualityComparer) method + first passes the values of the objects to be compared to the + implementation. If this method call returns , the method is + called again and passed the values of the two instances. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2), + where Item1 and Item2 represent the values of the + and fields. If either field value is , + it is represented as . + + + + + Represents a 3-tuple, or triple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3). + If any field value is , it is represented as . + + + + + Represents a 4-tuple, or quadruple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4). + If any field value is , it is represented as . + + + + + Represents a 5-tuple, or quintuple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + The type of the tuple's fifth component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + The current instance's fifth component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + The value of the tuple's fifth component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4, Item5). + If any field value is , it is represented as . + + + + + Represents a 6-tuple, or sixtuple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + The type of the tuple's fifth component. + The type of the tuple's sixth component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + The current instance's fifth component. + + + + + The current instance's sixth component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + The value of the tuple's fifth component. + The value of the tuple's sixth component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4, Item5, Item6). + If any field value is , it is represented as . + + + + + Represents a 7-tuple, or sentuple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + The type of the tuple's fifth component. + The type of the tuple's sixth component. + The type of the tuple's seventh component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + The current instance's fifth component. + + + + + The current instance's sixth component. + + + + + The current instance's seventh component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + The value of the tuple's fifth component. + The value of the tuple's sixth component. + The value of the tuple's seventh component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4, Item5, Item6, Item7). + If any field value is , it is represented as . + + + + + Represents an 8-tuple, or octuple, as a value type. + + The type of the tuple's first component. + The type of the tuple's second component. + The type of the tuple's third component. + The type of the tuple's fourth component. + The type of the tuple's fifth component. + The type of the tuple's sixth component. + The type of the tuple's seventh component. + The type of the tuple's eighth component. + + + + The current instance's first component. + + + + + The current instance's second component. + + + + + The current instance's third component. + + + + + The current instance's fourth component. + + + + + The current instance's fifth component. + + + + + The current instance's sixth component. + + + + + The current instance's seventh component. + + + + + The current instance's eighth component. + + + + + Initializes a new instance of the value type. + + The value of the tuple's first component. + The value of the tuple's second component. + The value of the tuple's third component. + The value of the tuple's fourth component. + The value of the tuple's fifth component. + The value of the tuple's sixth component. + The value of the tuple's seventh component. + The value of the tuple's eight component. + + + + Returns a value that indicates whether the current instance is equal to a specified object. + + The object to compare with this instance. + if the current instance is equal to the specified object; otherwise, . + + The parameter is considered to be equal to the current instance under the following conditions: + + It is a value type. + Its components are of the same types as those of the current instance. + Its components are equal to those of the current instance. Equality is determined by the default object equality comparer for each component. + + + + + + Returns a value that indicates whether the current + instance is equal to a specified . + + The tuple to compare with this instance. + if the current instance is equal to the specified tuple; otherwise, . + + The parameter is considered to be equal to the current instance if each of its fields + are equal to that of the current instance, using the default comparer for that field's type. + + + + Compares this instance to a specified instance and returns an indication of their relative values. + An instance to compare. + + A signed number indicating the relative values of this instance and . + Returns less than zero if this instance is less than , zero if this + instance is equal to , and greater than zero if this instance is greater + than . + + + + + Returns the hash code for the current instance. + + A 32-bit signed integer hash code. + + + + Returns a string that represents the value of this instance. + + The string representation of this instance. + + The string returned by this method takes the form (Item1, Item2, Item3, Item4, Item5, Item6, Item7, Rest). + If any field value is , it is represented as . + + + + From 72a8767871221f03cc7d491724bbeb84c94da9f1 Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Sat, 22 Oct 2022 19:20:07 +0200 Subject: [PATCH 14/16] initial 1.4 update --- Source/Assets.cs | 46 ++-- Source/Constants.cs | 26 +- .../Building_ResearchBench_Extensions.cs | 8 +- Source/Extensions/Def_Extensions.cs | 72 +++--- .../ResearchProjectDef_Extensions.cs | 113 ++++---- Source/FloatMenu_Fixed.cs | 14 +- Source/Graph/DummyNode.cs | 18 +- Source/Graph/Edge.cs | 78 +++--- Source/Graph/Node.cs | 170 ++++++------ Source/Graph/ResearchNode.cs | 244 +++++++++--------- Source/Graph/Tree.cs | 6 +- Source/Log.cs | 34 +-- Source/MainButtonWorker_ResearchTree.cs | 10 +- Source/MainTabWindow_ResearchTree.cs | 178 ++++++------- Source/Profiler.cs | 8 +- Source/Properties/AssemblyInfo.cs | 20 +- Source/Queue/Queue.cs | 163 ++++++------ Source/Queue/Queue_HarmonyPatches.cs | 2 +- Source/ResearchTree.cs | 14 +- Source/ResearchTree.csproj | 27 +- Source/packages.config | 6 +- 21 files changed, 619 insertions(+), 638 deletions(-) diff --git a/Source/Assets.cs b/Source/Assets.cs index 3eb714f..9f2574a 100644 --- a/Source/Assets.cs +++ b/Source/Assets.cs @@ -1,8 +1,8 @@ // Assets.cs // Copyright Karel Kroeze, 2018-2020 -using System.Collections.Generic; using RimWorld; +using System.Collections.Generic; using UnityEngine; using Verse; @@ -11,44 +11,44 @@ namespace FluffyResearchTree [StaticConstructorOnStartup] public static class Assets { - public static Texture2D Button = ContentFinder.Get( "Buttons/button" ); - public static Texture2D ButtonActive = ContentFinder.Get( "Buttons/button-active" ); - public static Texture2D ResearchIcon = ContentFinder.Get( "Icons/Research" ); - public static Texture2D MoreIcon = ContentFinder.Get( "Icons/more" ); - public static Texture2D Lock = ContentFinder.Get( "Icons/padlock" ); - internal static readonly Texture2D CircleFill = ContentFinder.Get( "Icons/circle-fill" ); + public static Texture2D Button = ContentFinder.Get("Buttons/button"); + public static Texture2D ButtonActive = ContentFinder.Get("Buttons/button-active"); + public static Texture2D ResearchIcon = ContentFinder.Get("Icons/Research"); + public static Texture2D MoreIcon = ContentFinder.Get("Icons/more"); + public static Texture2D Lock = ContentFinder.Get("Icons/padlock"); + internal static readonly Texture2D CircleFill = ContentFinder.Get("Icons/circle-fill"); - public static Color NegativeMouseoverColor = new Color( .4f, .1f, .1f ); - public static Dictionary ColorCompleted = new Dictionary(); - public static Dictionary ColorAvailable = new Dictionary(); - public static Dictionary ColorUnavailable = new Dictionary(); - public static Color TechLevelColor = new Color( 1f, 1f, 1f, .2f ); + public static Color NegativeMouseoverColor = new Color(.4f, .1f, .1f); + public static Dictionary ColorCompleted = new Dictionary(); + public static Dictionary ColorAvailable = new Dictionary(); + public static Dictionary ColorUnavailable = new Dictionary(); + public static Color TechLevelColor = new Color(1f, 1f, 1f, .2f); public static Texture2D SlightlyDarkBackground = - SolidColorMaterials.NewSolidColorTexture( 0f, 0f, 0f, .1f ); + SolidColorMaterials.NewSolidColorTexture(0f, 0f, 0f, .1f); public static Texture2D Search = - ContentFinder.Get( "Icons/magnifying-glass" ); + ContentFinder.Get("Icons/magnifying-glass"); static Assets() { var techlevels = Tree.RelevantTechLevels; - var n = techlevels.Count; - for ( var i = 0; i < n; i++ ) + var n = techlevels.Count; + for (var i = 0; i < n; i++) { - ColorCompleted[techlevels[i]] = Color.HSVToRGB( 1f / n * i, .75f, .75f ); - ColorAvailable[techlevels[i]] = Color.HSVToRGB( 1f / n * i, .33f, .33f ); - ColorUnavailable[techlevels[i]] = Color.HSVToRGB( 1f / n * i, .125f, .33f ); + ColorCompleted[techlevels[i]] = Color.HSVToRGB(1f / n * i, .75f, .75f); + ColorAvailable[techlevels[i]] = Color.HSVToRGB(1f / n * i, .33f, .33f); + ColorUnavailable[techlevels[i]] = Color.HSVToRGB(1f / n * i, .125f, .33f); } } [StaticConstructorOnStartup] public static class Lines { - public static Texture2D Circle = ContentFinder.Get( "Lines/Outline/circle" ); - public static Texture2D End = ContentFinder.Get( "Lines/Outline/end" ); - public static Texture2D EW = ContentFinder.Get( "Lines/Outline/ew" ); - public static Texture2D NS = ContentFinder.Get( "Lines/Outline/ns" ); + public static Texture2D Circle = ContentFinder.Get("Lines/Outline/circle"); + public static Texture2D End = ContentFinder.Get("Lines/Outline/end"); + public static Texture2D EW = ContentFinder.Get("Lines/Outline/ew"); + public static Texture2D NS = ContentFinder.Get("Lines/Outline/ns"); } } } \ No newline at end of file diff --git a/Source/Constants.cs b/Source/Constants.cs index 77ec3a5..4dba32e 100644 --- a/Source/Constants.cs +++ b/Source/Constants.cs @@ -7,18 +7,18 @@ namespace FluffyResearchTree { public static class Constants { - public const double Epsilon = 1e-4; - public const float HubSize = 16f; - public const float DetailedModeZoomLevelCutoff = 1.5f; - public const float Margin = 6f; - public const float QueueLabelSize = 30f; - public const float SmallQueueLabelSize = 20f; - public const float AbsoluteMaxZoomLevel = 3f; - public const float ZoomStep = .05f; - public static readonly Vector2 IconSize = new Vector2( 18f, 18f ); - public static readonly Vector2 NodeMargins = new Vector2( 50f, 10f ); - public static readonly Vector2 NodeSize = new Vector2( 200f, 50f ); - public static readonly float TopBarHeight = NodeSize.y + Margin * 2; - public static readonly Vector2 TechLevelLabelSize = new Vector2( 200f, 30f ); + public const double Epsilon = 1e-4; + public const float HubSize = 16f; + public const float DetailedModeZoomLevelCutoff = 1.5f; + public const float Margin = 6f; + public const float QueueLabelSize = 30f; + public const float SmallQueueLabelSize = 20f; + public const float AbsoluteMaxZoomLevel = 3f; + public const float ZoomStep = .05f; + public static readonly Vector2 IconSize = new Vector2(18f, 18f); + public static readonly Vector2 NodeMargins = new Vector2(50f, 10f); + public static readonly Vector2 NodeSize = new Vector2(200f, 50f); + public static readonly float TopBarHeight = NodeSize.y + Margin * 2; + public static readonly Vector2 TechLevelLabelSize = new Vector2(200f, 30f); } } \ No newline at end of file diff --git a/Source/Extensions/Building_ResearchBench_Extensions.cs b/Source/Extensions/Building_ResearchBench_Extensions.cs index e10aa41..fe33c6a 100644 --- a/Source/Extensions/Building_ResearchBench_Extensions.cs +++ b/Source/Extensions/Building_ResearchBench_Extensions.cs @@ -1,21 +1,21 @@ // Building_ResearchBench_Extensions.cs // Copyright Karel Kroeze, 2016-2020 -using System.Linq; using RimWorld; +using System.Linq; using Verse; namespace FluffyResearchTree { public static class Building_ResearchBench_Extensions { - public static bool HasFacility( this Building_ResearchBench building, ThingDef facility ) + public static bool HasFacility(this Building_ResearchBench building, ThingDef facility) { var comp = building.GetComp(); - if ( comp == null ) + if (comp == null) return false; - if ( comp.LinkedFacilitiesListForReading.Select( f => f.def ).Contains( facility ) ) + if (comp.LinkedFacilitiesListForReading.Select(f => f.def).Contains(facility)) return true; return false; diff --git a/Source/Extensions/Def_Extensions.cs b/Source/Extensions/Def_Extensions.cs index 6e2af12..249bfa1 100644 --- a/Source/Extensions/Def_Extensions.cs +++ b/Source/Extensions/Def_Extensions.cs @@ -1,9 +1,9 @@ // Def_Extensions.cs // Copyright Karel Kroeze, 2018-2020 +using RimWorld; using System.Collections.Generic; using System.Linq; -using RimWorld; using UnityEngine; using Verse; @@ -18,10 +18,10 @@ public static class Def_Extensions private static readonly Dictionary _cachedIconColors = new Dictionary(); - public static void DrawColouredIcon( this Def def, Rect canvas ) + public static void DrawColouredIcon(this Def def, Rect canvas) { GUI.color = def.IconColor(); - GUI.DrawTexture( canvas, def.IconTexture(), ScaleMode.ScaleToFit ); + GUI.DrawTexture(canvas, def.IconTexture(), ScaleMode.ScaleToFit); GUI.color = Color.white; } @@ -31,57 +31,54 @@ public static void DrawColouredIcon( this Def def, Rect canvas ) /// /// /// - public static Color IconColor( this Def def ) + public static Color IconColor(this Def def) { // garbage in, garbage out - if ( def == null ) + if (def == null) return Color.cyan; // check cache - if ( _cachedIconColors.ContainsKey( def ) ) return _cachedIconColors[def]; + if (_cachedIconColors.ContainsKey(def)) return _cachedIconColors[def]; // otherwise try to determine icon - var bdef = def as BuildableDef; var tdef = def as ThingDef; - var pdef = def as PawnKindDef; - var rdef = def as RecipeDef; // get product color for recipes - if ( rdef != null ) - if ( !rdef.products.NullOrEmpty() ) + if (def is RecipeDef rdef) + if (!rdef.products.NullOrEmpty()) { - _cachedIconColors.Add( def, rdef.products.First().thingDef.IconColor() ); + _cachedIconColors.Add(def, rdef.products.First().thingDef.IconColor()); return _cachedIconColors[def]; } // get color from final lifestage for pawns - if ( pdef != null ) + if (def is PawnKindDef pdef) { - _cachedIconColors.Add( def, pdef.lifeStages.Last().bodyGraphicData.color ); + _cachedIconColors.Add(def, pdef.lifeStages.Last().bodyGraphicData.color); return _cachedIconColors[def]; } - if ( bdef == null ) + if (!(def is BuildableDef bdef)) { // if we reach this point, def.IconTexture() would return null. Just store and return white to make sure we don't get weird errors down the line. - _cachedIconColors.Add( def, Color.white ); + _cachedIconColors.Add(def, Color.white); return _cachedIconColors[def]; } // built def != listed def if ( - tdef != null && + tdef != null && tdef.entityDefToBuild != null ) { - _cachedIconColors.Add( def, tdef.entityDefToBuild.IconColor() ); + _cachedIconColors.Add(def, tdef.entityDefToBuild.IconColor()); return _cachedIconColors[def]; } // graphic.color set? - if ( bdef.graphic != null ) + if (bdef.graphic != null) { - _cachedIconColors.Add( def, bdef.graphic.color ); + _cachedIconColors.Add(def, bdef.graphic.color); return _cachedIconColors[def]; } @@ -91,13 +88,13 @@ public static Color IconColor( this Def def ) tdef.MadeFromStuff ) { - var stuff = GenStuff.DefaultStuffFor( tdef ); - _cachedIconColors.Add( def, stuff.stuffProps.color ); + var stuff = GenStuff.DefaultStuffFor(tdef); + _cachedIconColors.Add(def, stuff.stuffProps.color); return _cachedIconColors[def]; } // all else failed. - _cachedIconColors.Add( def, Color.white ); + _cachedIconColors.Add(def, Color.white); return _cachedIconColors[def]; } @@ -106,38 +103,35 @@ public static Color IconColor( this Def def ) /// /// /// - public static Texture2D IconTexture( this Def def ) + public static Texture2D IconTexture(this Def def) { // garbage in, garbage out - if ( def == null ) + if (def == null) return null; // check cache - if ( _cachedDefIcons.ContainsKey( def ) ) + if (_cachedDefIcons.ContainsKey(def)) return _cachedDefIcons[def]; // otherwise try to determine icon - var buildableDef = def as BuildableDef; - var thingDef = def as ThingDef; - var pawnKindDef = def as PawnKindDef; - var recipeDef = def as RecipeDef; + var thingDef = def as ThingDef; // recipes will be passed icon of first product, if defined. if ( - recipeDef != null && + def is RecipeDef recipeDef && !recipeDef.products.NullOrEmpty() ) { - _cachedDefIcons.Add( def, recipeDef.products.First().thingDef.IconTexture() ); + _cachedDefIcons.Add(def, recipeDef.products.First().thingDef.IconTexture()); return _cachedDefIcons[def]; } // animals need special treatment ( this will still only work for animals, pawns are a whole different can o' worms ). - if ( pawnKindDef != null ) + if (def is PawnKindDef pawnKindDef) try { _cachedDefIcons.Add( - def, pawnKindDef.lifeStages.Last().bodyGraphicData.Graphic.MatSouth.mainTexture as Texture2D ); + def, pawnKindDef.lifeStages.Last().bodyGraphicData.Graphic.MatSouth.mainTexture as Texture2D); return _cachedDefIcons[def]; } catch @@ -145,21 +139,21 @@ public static Texture2D IconTexture( this Def def ) // ignored } - if ( buildableDef != null ) + if (def is BuildableDef buildableDef) { // if def built != def listed. - if ( thingDef?.entityDefToBuild != null ) + if (thingDef?.entityDefToBuild != null) { - _cachedDefIcons.Add( def, thingDef.entityDefToBuild.IconTexture() ); + _cachedDefIcons.Add(def, thingDef.entityDefToBuild.IconTexture()); return _cachedDefIcons[def]; } - _cachedDefIcons.Add( def, buildableDef.uiIcon ); + _cachedDefIcons.Add(def, buildableDef.uiIcon); return buildableDef.uiIcon; } // nothing stuck - _cachedDefIcons.Add( def, null ); + _cachedDefIcons.Add(def, null); return null; } } diff --git a/Source/Extensions/ResearchProjectDef_Extensions.cs b/Source/Extensions/ResearchProjectDef_Extensions.cs index 22f8505..ccd9c7c 100644 --- a/Source/Extensions/ResearchProjectDef_Extensions.cs +++ b/Source/Extensions/ResearchProjectDef_Extensions.cs @@ -3,7 +3,6 @@ using System.Collections.Generic; using System.Linq; -using System.Runtime.Remoting.Messaging; using Verse; namespace FluffyResearchTree @@ -13,7 +12,7 @@ public static class ResearchProjectDef_Extensions private static readonly Dictionary>> _unlocksCache = new Dictionary>>(); - public static List Descendants( this ResearchProjectDef research ) + public static List Descendants(this ResearchProjectDef research) { var descendants = new HashSet(); @@ -21,135 +20,135 @@ public static List Descendants( this ResearchProjectDef rese // populate initial queue var queue = new Queue( DefDatabase.AllDefsListForReading.Where( - res => res.prerequisites?.Contains( research ) ?? false ) ); + res => res.prerequisites?.Contains(research) ?? false)); // add to the list, and queue up children. - while ( queue.Count > 0 ) + while (queue.Count > 0) { var current = queue.Dequeue(); - descendants.Add( current ); + descendants.Add(current); - foreach ( var descendant in DefDatabase.AllDefsListForReading.Where( + foreach (var descendant in DefDatabase.AllDefsListForReading.Where( res => res.prerequisites?.Contains( - current ) ?? + current) ?? false && !descendants.Contains( - res ) ) ) - queue.Enqueue( descendant ); + res))) + queue.Enqueue(descendant); } return descendants.ToList(); } - public static IEnumerable GetPlantsUnlocked( this ResearchProjectDef research ) + public static IEnumerable GetPlantsUnlocked(this ResearchProjectDef research) { return DefDatabase.AllDefsListForReading .Where( - td => td.plant?.sowResearchPrerequisites?.Contains( research ) ?? false ); + td => td.plant?.sowResearchPrerequisites?.Contains(research) ?? false); } - public static List Ancestors( this ResearchProjectDef research ) + public static List Ancestors(this ResearchProjectDef research) { // keep a list of prerequites var prerequisites = new List(); - if ( research.prerequisites.NullOrEmpty() ) + if (research.prerequisites.NullOrEmpty()) return prerequisites; // keep a stack of prerequisites that should be checked - var stack = new Stack( research.prerequisites.Where( parent => parent != research ) ); + var stack = new Stack(research.prerequisites.Where(parent => parent != research)); // keep on checking everything on the stack until there is nothing left - while ( stack.Count > 0 ) + while (stack.Count > 0) { // add to list of prereqs var parent = stack.Pop(); - prerequisites.Add( parent ); + prerequisites.Add(parent); // add prerequitsite's prereqs to the stack - if ( !parent.prerequisites.NullOrEmpty() ) - foreach ( var grandparent in parent.prerequisites ) + if (!parent.prerequisites.NullOrEmpty()) + foreach (var grandparent in parent.prerequisites) // but only if not a prerequisite of itself, and not a cyclic prerequisite - if ( grandparent != parent && !prerequisites.Contains( grandparent ) ) - stack.Push( grandparent ); + if (grandparent != parent && !prerequisites.Contains(grandparent)) + stack.Push(grandparent); } return prerequisites.Distinct().ToList(); } - public static IEnumerable GetRecipesUnlocked( this ResearchProjectDef research ) + public static IEnumerable GetRecipesUnlocked(this ResearchProjectDef research) { // recipe directly locked behind research var direct = - DefDatabase.AllDefsListForReading.Where( rd => rd.researchPrerequisite == research ); + DefDatabase.AllDefsListForReading.Where(rd => rd.researchPrerequisite == research); // recipe building locked behind research var building = DefDatabase.AllDefsListForReading .Where( - td => ( td.researchPrerequisites?.Contains( research ) ?? false ) - && !td.AllRecipes.NullOrEmpty() ) - .SelectMany( td => td.AllRecipes ) - .Where( rd => rd.researchPrerequisite == null ); + td => (td.researchPrerequisites?.Contains(research) ?? false) + && !td.AllRecipes.NullOrEmpty()) + .SelectMany(td => td.AllRecipes) + .Where(rd => rd.researchPrerequisite == null); // return union of these two sets - return direct.Concat( building ).Distinct(); + return direct.Concat(building).Distinct(); } - public static IEnumerable GetTerrainUnlocked( this ResearchProjectDef research ) + public static IEnumerable GetTerrainUnlocked(this ResearchProjectDef research) { return DefDatabase.AllDefsListForReading - .Where( td => td.researchPrerequisites?.Contains( research ) ?? false ); + .Where(td => td.researchPrerequisites?.Contains(research) ?? false); } - public static IEnumerable GetThingsUnlocked( this ResearchProjectDef research ) + public static IEnumerable GetThingsUnlocked(this ResearchProjectDef research) { return DefDatabase.AllDefsListForReading - .Where( td => td.researchPrerequisites?.Contains( research ) ?? false ); + .Where(td => td.researchPrerequisites?.Contains(research) ?? false); } - public static List> GetUnlockDefsAndDescs( this ResearchProjectDef research, bool dedupe = true ) + public static List> GetUnlockDefsAndDescs(this ResearchProjectDef research, bool dedupe = true) { - if ( _unlocksCache.ContainsKey( research ) ) + if (_unlocksCache.ContainsKey(research)) return _unlocksCache[research]; var unlocks = new List>(); - unlocks.AddRange( research.GetThingsUnlocked() - .Where( d => d.IconTexture() != null ) - .Select( d => new Pair( - d, "Fluffy.ResearchTree.AllowsBuildingX".Translate( d.LabelCap ) ) ) ); - unlocks.AddRange( research.GetTerrainUnlocked() - .Where( d => d.IconTexture() != null ) - .Select( d => new Pair( - d, "Fluffy.ResearchTree.AllowsBuildingX".Translate( d.LabelCap ) ) ) ); - unlocks.AddRange( research.GetRecipesUnlocked() - .Where( d => d.IconTexture() != null ) - .Select( d => new Pair( - d, "Fluffy.ResearchTree.AllowsCraftingX".Translate( d.LabelCap ) ) ) ); - unlocks.AddRange( research.GetPlantsUnlocked() - .Where( d => d.IconTexture() != null ) - .Select( d => new Pair( - d, "Fluffy.ResearchTree.AllowsPlantingX".Translate( d.LabelCap ) ) ) ); + unlocks.AddRange(research.GetThingsUnlocked() + .Where(d => d.IconTexture() != null) + .Select(d => new Pair( + d, "Fluffy.ResearchTree.AllowsBuildingX".Translate(d.LabelCap)))); + unlocks.AddRange(research.GetTerrainUnlocked() + .Where(d => d.IconTexture() != null) + .Select(d => new Pair( + d, "Fluffy.ResearchTree.AllowsBuildingX".Translate(d.LabelCap)))); + unlocks.AddRange(research.GetRecipesUnlocked() + .Where(d => d.IconTexture() != null) + .Select(d => new Pair( + d, "Fluffy.ResearchTree.AllowsCraftingX".Translate(d.LabelCap)))); + unlocks.AddRange(research.GetPlantsUnlocked() + .Where(d => d.IconTexture() != null) + .Select(d => new Pair( + d, "Fluffy.ResearchTree.AllowsPlantingX".Translate(d.LabelCap)))); // get unlocks for all descendant research, and remove duplicates. var descendants = research.Descendants(); - if ( dedupe && descendants.Any() ) + if (dedupe && descendants.Any()) { var descendantUnlocks = research.Descendants() - .SelectMany( c => c.GetUnlockDefsAndDescs( false ).Select( u => u.First ) ) + .SelectMany(c => c.GetUnlockDefsAndDescs(false).Select(u => u.First)) .Distinct() .ToList(); - unlocks = unlocks.Where( u => !descendantUnlocks.Contains( u.First ) ).ToList(); + unlocks = unlocks.Where(u => !descendantUnlocks.Contains(u.First)).ToList(); } - _unlocksCache.Add( research, unlocks ); + _unlocksCache.Add(research, unlocks); return unlocks; } - public static ResearchNode ResearchNode( this ResearchProjectDef research ) + public static ResearchNode ResearchNode(this ResearchProjectDef research) { - var node = Tree.Nodes.OfType().FirstOrDefault( n => n.Research == research ); - if ( node == null ) - Log.Error( "Node for {0} not found. Was it intentionally hidden or locked?", true, research.LabelCap ); + var node = Tree.Nodes.OfType().FirstOrDefault(n => n.Research == research); + if (node == null) + Log.Error("Node for {0} not found. Was it intentionally hidden or locked?", true, research.LabelCap); return node; } } diff --git a/Source/FloatMenu_Fixed.cs b/Source/FloatMenu_Fixed.cs index c8629a8..5dcb3c2 100644 --- a/Source/FloatMenu_Fixed.cs +++ b/Source/FloatMenu_Fixed.cs @@ -11,19 +11,19 @@ public class FloatMenu_Fixed : FloatMenu { private readonly Vector2 _position; - public FloatMenu_Fixed( List options, Vector2 position, bool focus = false ) : base( options ) + public FloatMenu_Fixed(List options, Vector2 position, bool focus = false) : base(options) { - _position = position; + _position = position; vanishIfMouseDistant = false; - focusWhenOpened = focus; + focusWhenOpened = focus; } protected override void SetInitialSizeAndPosition() { - var position = _position; - if ( position.x + InitialSize.x > UI.screenWidth ) position.x = UI.screenWidth - InitialSize.x; - if ( position.y + InitialSize.y > UI.screenHeight ) position.y = UI.screenHeight - InitialSize.y; - windowRect = new Rect( position.x, position.y, InitialSize.x, InitialSize.y ); + var position = _position; + if (position.x + InitialSize.x > UI.screenWidth) position.x = UI.screenWidth - InitialSize.x; + if (position.y + InitialSize.y > UI.screenHeight) position.y = UI.screenHeight - InitialSize.y; + windowRect = new Rect(position.x, position.y, InitialSize.x, InitialSize.y); } } } \ No newline at end of file diff --git a/Source/Graph/DummyNode.cs b/Source/Graph/DummyNode.cs index 1864005..6a9b16e 100644 --- a/Source/Graph/DummyNode.cs +++ b/Source/Graph/DummyNode.cs @@ -10,7 +10,7 @@ public class DummyNode : Node { #region Overrides of Node - public override string Label => "DUMMY: " + ( Parent?.Label ?? "??" ) + " -> " + ( Child?.Label ?? "??" ); + public override string Label => "DUMMY: " + (Parent?.Label ?? "??") + " -> " + (Child?.Label ?? "??"); #endregion @@ -41,8 +41,7 @@ public ResearchNode Parent { get { - var parent = InNodes.FirstOrDefault() as ResearchNode; - if ( parent != null ) + if (InNodes.FirstOrDefault() is ResearchNode parent) return parent; var dummyParent = InNodes.FirstOrDefault() as DummyNode; @@ -55,8 +54,7 @@ public ResearchNode Child { get { - var child = OutNodes.FirstOrDefault() as ResearchNode; - if ( child != null ) + if (OutNodes.FirstOrDefault() is ResearchNode child) return child; var dummyChild = OutNodes.FirstOrDefault() as DummyNode; @@ -65,10 +63,10 @@ public ResearchNode Child } } - public override bool Completed => OutNodes.FirstOrDefault()?.Completed ?? false; - public override bool Available => OutNodes.FirstOrDefault()?.Available ?? false; - public override bool Highlighted => OutNodes.FirstOrDefault()?.Highlighted ?? false; - public override Color Color => OutNodes.FirstOrDefault()?.Color ?? Color.white; - public override Color EdgeColor => OutNodes.FirstOrDefault()?.EdgeColor ?? Color.white; + public override bool Completed => OutNodes.FirstOrDefault()?.Completed ?? false; + public override bool Available => OutNodes.FirstOrDefault()?.Available ?? false; + public override bool Highlighted => OutNodes.FirstOrDefault()?.Highlighted ?? false; + public override Color Color => OutNodes.FirstOrDefault()?.Color ?? Color.white; + public override Color EdgeColor => OutNodes.FirstOrDefault()?.EdgeColor ?? Color.white; } } \ No newline at end of file diff --git a/Source/Graph/Edge.cs b/Source/Graph/Edge.cs index ee0747b..6989082 100644 --- a/Source/Graph/Edge.cs +++ b/Source/Graph/Edge.cs @@ -13,10 +13,10 @@ public class Edge where T1 : Node where T2 : Node private T1 _in; private T2 _out; - public Edge( T1 @in, T2 @out ) + public Edge(T1 @in, T2 @out) { - _in = @in; - _out = @out; + _in = @in; + _out = @out; IsDummy = _out is DummyNode; } @@ -25,7 +25,7 @@ public T1 In get => _in; set { - _in = value; + _in = value; IsDummy = _out is DummyNode; } } @@ -35,53 +35,53 @@ public T2 Out get => _out; set { - _out = value; + _out = value; IsDummy = _out is DummyNode; } } - public int Span => _out.X - _in.X; - public float Length => Mathf.Abs( _in.Yf - _out.Yf ) * ( IsDummy ? 10 : 1 ); - public bool IsDummy { get; private set; } + public int Span => _out.X - _in.X; + public float Length => Mathf.Abs(_in.Yf - _out.Yf) * (IsDummy ? 10 : 1); + public bool IsDummy { get; private set; } public int DrawOrder { get { - if ( Out.Highlighted ) + if (Out.Highlighted) return 3; - if ( Out.Completed ) + if (Out.Completed) return 2; - if ( Out.Available ) + if (Out.Available) return 1; return 0; } } - public void Draw( Rect visibleRect ) + public void Draw(Rect visibleRect) { - if ( !In.IsVisible( visibleRect ) && !Out.IsVisible( visibleRect ) ) + if (!In.IsVisible(visibleRect) && !Out.IsVisible(visibleRect)) return; var color = Out.EdgeColor; GUI.color = color; - var left = In.Right; + var left = In.Right; var right = Out.Left; // if left and right are on the same level, just draw a straight line. - if ( Math.Abs( left.y - right.y ) < Epsilon ) + if (Math.Abs(left.y - right.y) < Epsilon) { - var line = new Rect( left.x, left.y - 2f, right.x - left.x, 4f ); - GUI.DrawTexture( line, Lines.EW ); + var line = new Rect(left.x, left.y - 2f, right.x - left.x, 4f); + GUI.DrawTexture(line, Lines.EW); } // draw three line pieces and two curves. else { // determine top and bottom y positions - var top = Math.Min( left.y, right.y ) + NodeMargins.x / 4f; - var bottom = Math.Max( left.y, right.y ) - NodeMargins.x / 4f; + var top = Math.Min(left.y, right.y) + NodeMargins.x / 4f; + var bottom = Math.Max(left.y, right.y) - NodeMargins.x / 4f; // straight bits // left to curve @@ -89,64 +89,64 @@ public void Draw( Rect visibleRect ) left.x, left.y - 2f, NodeMargins.x / 4f, - 4f ); - GUI.DrawTexture( leftToCurve, Lines.EW ); + 4f); + GUI.DrawTexture(leftToCurve, Lines.EW); // curve to curve var curveToCurve = new Rect( left.x + NodeMargins.x / 2f - 2f, top, 4f, - bottom - top ); - GUI.DrawTexture( curveToCurve, Lines.NS ); + bottom - top); + GUI.DrawTexture(curveToCurve, Lines.NS); // curve to right var curveToRight = new Rect( - left.x + NodeMargins.x / 4f * 3, - right.y - 2f, + left.x + NodeMargins.x / 4f * 3, + right.y - 2f, right.x - left.x - NodeMargins.x / 4f * 3, - 4f ); - GUI.DrawTexture( curveToRight, Lines.EW ); + 4f); + GUI.DrawTexture(curveToRight, Lines.EW); // curve positions var curveLeft = new Rect( left.x + NodeMargins.x / 4f, left.y - NodeMargins.x / 4f, NodeMargins.x / 2f, - NodeMargins.x / 2f ); + NodeMargins.x / 2f); var curveRight = new Rect( - left.x + NodeMargins.x / 4f, + left.x + NodeMargins.x / 4f, right.y - NodeMargins.x / 4f, NodeMargins.x / 2f, - NodeMargins.x / 2f ); + NodeMargins.x / 2f); // going down - if ( left.y < right.y ) + if (left.y < right.y) { - GUI.DrawTextureWithTexCoords( curveLeft, Lines.Circle, new Rect( 0.5f, 0.5f, 0.5f, 0.5f ) ); + GUI.DrawTextureWithTexCoords(curveLeft, Lines.Circle, new Rect(0.5f, 0.5f, 0.5f, 0.5f)); // bottom right quadrant - GUI.DrawTextureWithTexCoords( curveRight, Lines.Circle, new Rect( 0f, 0f, 0.5f, 0.5f ) ); + GUI.DrawTextureWithTexCoords(curveRight, Lines.Circle, new Rect(0f, 0f, 0.5f, 0.5f)); // top left quadrant } // going up else { - GUI.DrawTextureWithTexCoords( curveLeft, Lines.Circle, new Rect( 0.5f, 0f, 0.5f, 0.5f ) ); + GUI.DrawTextureWithTexCoords(curveLeft, Lines.Circle, new Rect(0.5f, 0f, 0.5f, 0.5f)); // top right quadrant - GUI.DrawTextureWithTexCoords( curveRight, Lines.Circle, new Rect( 0f, 0.5f, 0.5f, 0.5f ) ); + GUI.DrawTextureWithTexCoords(curveRight, Lines.Circle, new Rect(0f, 0.5f, 0.5f, 0.5f)); // bottom left quadrant } } // draw the end arrow (if not dummy) - if ( !IsDummy ) + if (!IsDummy) { var end = new Rect( right.x - 16f, right.y - 8f, 16f, - 16f ); - GUI.DrawTexture( end, Lines.End ); + 16f); + GUI.DrawTexture(end, Lines.End); } // or draw a line piece through the dummy @@ -158,7 +158,7 @@ public void Draw( Rect visibleRect ) NodeSize.x, 4f ); - GUI.DrawTexture( through, Lines.EW ); + GUI.DrawTexture(through, Lines.EW); } // reset color diff --git a/Source/Graph/Node.cs b/Source/Graph/Node.cs index f18bfde..70bb427 100644 --- a/Source/Graph/Node.cs +++ b/Source/Graph/Node.cs @@ -15,11 +15,11 @@ namespace FluffyResearchTree { public class Node { - protected const float Offset = 2f; - protected List> _inEdges = new List>(); - protected bool _largeLabel; - protected List> _outEdges = new List>(); - protected Vector2 _pos = Vector2.zero; + protected const float Offset = 2f; + protected List> _inEdges = new List>(); + protected bool _largeLabel; + protected List> _outEdges = new List>(); + protected Vector2 _pos = Vector2.zero; protected Rect _queueRect, @@ -33,26 +33,26 @@ protected Rect protected bool _rectsSet; protected Vector2 _topLeft = Vector2.zero, - _right = Vector2.zero, - _left = Vector2.zero; + _right = Vector2.zero, + _left = Vector2.zero; public List Descendants { - get { return OutNodes.Concat( OutNodes.SelectMany( n => n.Descendants ) ).ToList(); } + get { return OutNodes.Concat(OutNodes.SelectMany(n => n.Descendants)).ToList(); } } public List> OutEdges => _outEdges; - public List OutNodes => _outEdges.Select( e => e.Out ).ToList(); - public List> InEdges => _inEdges; - public List InNodes => _inEdges.Select( e => e.In ).ToList(); - public List> Edges => _inEdges.Concat( _outEdges ).ToList(); - public List Nodes => InNodes.Concat( OutNodes ).ToList(); + public List OutNodes => _outEdges.Select(e => e.Out).ToList(); + public List> InEdges => _inEdges; + public List InNodes => _inEdges.Select(e => e.In).ToList(); + public List> Edges => _inEdges.Concat(_outEdges).ToList(); + public List Nodes => InNodes.Concat(OutNodes).ToList(); public Rect CostIconRect { get { - if ( !_rectsSet ) + if (!_rectsSet) SetRects(); return _costIconRect; @@ -63,21 +63,21 @@ public Rect CostLabelRect { get { - if ( !_rectsSet ) + if (!_rectsSet) SetRects(); return _costLabelRect; } } - public virtual Color Color => Color.white; + public virtual Color Color => Color.white; public virtual Color EdgeColor => Color; public Rect IconsRect { get { - if ( !_rectsSet ) + if (!_rectsSet) SetRects(); return _iconsRect; @@ -88,7 +88,7 @@ public Rect LabelRect { get { - if ( !_rectsSet ) + if (!_rectsSet) SetRects(); return _labelRect; @@ -102,7 +102,7 @@ public Vector2 Left { get { - if ( !_rectsSet ) + if (!_rectsSet) SetRects(); return _left; @@ -116,7 +116,7 @@ public Rect QueueRect { get { - if ( !_rectsSet ) + if (!_rectsSet) SetRects(); return _queueRect; @@ -127,7 +127,7 @@ public Rect LockRect { get { - if ( !_rectsSet ) + if (!_rectsSet) SetRects(); return _lockRect; @@ -141,7 +141,7 @@ public Rect Rect { get { - if ( !_rectsSet ) + if (!_rectsSet) SetRects(); return _rect; @@ -155,88 +155,88 @@ public Vector2 Right { get { - if ( !_rectsSet ) + if (!_rectsSet) SetRects(); return _right; } } - public Vector2 Center => ( Left + Right ) / 2f; + public Vector2 Center => (Left + Right) / 2f; public virtual int X { - get => (int) _pos.x; + get => (int)_pos.x; set { - if ( value < 0 ) - throw new ArgumentOutOfRangeException( nameof( value ) ); - if ( Math.Abs( _pos.x - value ) < Epsilon ) + if (value < 0) + throw new ArgumentOutOfRangeException(nameof(value)); + if (Math.Abs(_pos.x - value) < Epsilon) return; - Log.Trace( "\t" + this + " X: " + _pos.x + " -> " + value ); + Log.Trace("\t" + this + " X: " + _pos.x + " -> " + value); _pos.x = value; // update caches - _rectsSet = false; - Tree.Size.x = Tree.Nodes.Max( n => n.X ); + _rectsSet = false; + Tree.Size.x = Tree.Nodes.Max(n => n.X); Tree.OrderDirty = true; } } public virtual int Y { - get => (int) _pos.y; + get => (int)_pos.y; set { - if ( value < 0 ) - throw new ArgumentOutOfRangeException( nameof( value ) ); - if ( Math.Abs( _pos.y - value ) < Epsilon ) + if (value < 0) + throw new ArgumentOutOfRangeException(nameof(value)); + if (Math.Abs(_pos.y - value) < Epsilon) return; - Log.Trace( "\t" + this + " Y: " + _pos.y + " -> " + value ); + Log.Trace("\t" + this + " Y: " + _pos.y + " -> " + value); _pos.y = value; // update caches - _rectsSet = false; - Tree.Size.z = Tree.Nodes.Max( n => n.Y ); + _rectsSet = false; + Tree.Size.z = Tree.Nodes.Max(n => n.Y); Tree.OrderDirty = true; } } - public virtual Vector2 Pos => new Vector2( X, Y ); + public virtual Vector2 Pos => new Vector2(X, Y); public virtual float Yf { get => _pos.y; set { - if ( Math.Abs( _pos.y - value ) < Epsilon ) + if (Math.Abs(_pos.y - value) < Epsilon) return; _pos.y = value; // update caches - Tree.Size.z = Tree.Nodes.Max( n => n.Y ) + 1; + Tree.Size.z = Tree.Nodes.Max(n => n.Y) + 1; Tree.OrderDirty = true; } } public virtual string Label { get; } - public virtual bool Completed => false; - public virtual bool Available => false; + public virtual bool Completed => false; + public virtual bool Available => false; public virtual bool Highlighted { get; set; } - protected internal virtual bool SetDepth( int min = 1 ) + protected internal virtual bool SetDepth(int min = 1) { // calculate desired position - var isRoot = InNodes.NullOrEmpty(); - var desired = isRoot ? 1 : InNodes.Max( n => n.X ) + 1; - var depth = Mathf.Max( desired, min ); + var isRoot = InNodes.NullOrEmpty(); + var desired = isRoot ? 1 : InNodes.Max(n => n.X) + 1; + var depth = Mathf.Max(desired, min); // no change - if ( depth == X ) + if (depth == X) return false; // update @@ -250,15 +250,15 @@ protected internal virtual bool SetDepth( int min = 1 ) public virtual void Debug() { var text = new StringBuilder(); - text.AppendLine( Label + " (" + X + ", " + Y + "):" ); - text.AppendLine( "- Parents" ); - foreach ( var parent in InNodes ) text.AppendLine( "-- " + parent.Label ); + text.AppendLine(Label + " (" + X + ", " + Y + "):"); + text.AppendLine("- Parents"); + foreach (var parent in InNodes) text.AppendLine("-- " + parent.Label); - text.AppendLine( "- Children" ); - foreach ( var child in OutNodes ) text.AppendLine( "-- " + child.Label ); + text.AppendLine("- Children"); + foreach (var child in OutNodes) text.AppendLine("-- " + child.Label); - text.AppendLine( "" ); - Log.Message( text.ToString() ); + text.AppendLine(""); + Log.Message(text.ToString()); } @@ -271,75 +271,75 @@ public void SetRects() { // origin _topLeft = new Vector2( - ( X - 1 ) * ( NodeSize.x + NodeMargins.x ), - ( Yf - 1 ) * ( NodeSize.y + NodeMargins.y ) ); + (X - 1) * (NodeSize.x + NodeMargins.x), + (Yf - 1) * (NodeSize.y + NodeMargins.y)); - SetRects( _topLeft ); + SetRects(_topLeft); } - public void SetRects( Vector2 topLeft ) + public void SetRects(Vector2 topLeft) { // main rect - _rect = new Rect( topLeft.x, + _rect = new Rect(topLeft.x, topLeft.y, NodeSize.x, - NodeSize.y ); + NodeSize.y); // left and right edges - _left = new Vector2( _rect.xMin, _rect.yMin + _rect.height / 2f ); - _right = new Vector2( _rect.xMax, _left.y ); + _left = new Vector2(_rect.xMin, _rect.yMin + _rect.height / 2f); + _right = new Vector2(_rect.xMax, _left.y); // queue rect - _queueRect = new Rect( _rect.xMax - QueueLabelSize / 2f, - _rect.yMin + ( _rect.height - QueueLabelSize ) / 2f, QueueLabelSize, - QueueLabelSize ); + _queueRect = new Rect(_rect.xMax - QueueLabelSize / 2f, + _rect.yMin + (_rect.height - QueueLabelSize) / 2f, QueueLabelSize, + QueueLabelSize); // label rect - _labelRect = new Rect( _rect.xMin + 6f, - _rect.yMin + 3f, - _rect.width * 2f / 3f - 6f, - _rect.height * .5f - 3f ); + _labelRect = new Rect(_rect.xMin + 6f, + _rect.yMin + 3f, + _rect.width * 2f / 3f - 6f, + _rect.height * .5f - 3f); // research cost rect - _costLabelRect = new Rect( _rect.xMin + _rect.width * 2f / 3f, - _rect.yMin + 3f, + _costLabelRect = new Rect(_rect.xMin + _rect.width * 2f / 3f, + _rect.yMin + 3f, _rect.width * 1f / 3f - 16f - 3f, - _rect.height * .5f - 3f ); + _rect.height * .5f - 3f); // research icon rect - _costIconRect = new Rect( _costLabelRect.xMax, - _rect.yMin + ( _costLabelRect.height - 16f ) / 2, + _costIconRect = new Rect(_costLabelRect.xMax, + _rect.yMin + (_costLabelRect.height - 16f) / 2, 16f, - 16f ); + 16f); // icon container rect - _iconsRect = new Rect( _rect.xMin, + _iconsRect = new Rect(_rect.xMin, _rect.yMin + _rect.height * .5f, _rect.width, - _rect.height * .5f ); + _rect.height * .5f); // lock icon rect - _lockRect = new Rect( 0f, 0f, 32f, 32f ); - _lockRect = _lockRect.CenteredOnXIn( _rect ); - _lockRect = _lockRect.CenteredOnYIn( _rect ); + _lockRect = new Rect(0f, 0f, 32f, 32f); + _lockRect = _lockRect.CenteredOnXIn(_rect); + _lockRect = _lockRect.CenteredOnYIn(_rect); // see if the label is too big - _largeLabel = Text.CalcHeight( Label, _labelRect.width ) > _labelRect.height; + _largeLabel = Text.CalcHeight(Label, _labelRect.width) > _labelRect.height; // done _rectsSet = true; } - public virtual bool IsVisible( Rect visibleRect ) + public virtual bool IsVisible(Rect visibleRect) { return !( Rect.xMin > visibleRect.xMax || Rect.xMax < visibleRect.xMin || Rect.yMin > visibleRect.yMax || - Rect.yMax < visibleRect.yMin ); + Rect.yMax < visibleRect.yMin); } - public virtual void Draw( Rect visibleRect, bool forceDetailedMode = false ) + public virtual void Draw(Rect visibleRect, bool forceDetailedMode = false) { } } diff --git a/Source/Graph/ResearchNode.cs b/Source/Graph/ResearchNode.cs index ae032aa..67f0e69 100644 --- a/Source/Graph/ResearchNode.cs +++ b/Source/Graph/ResearchNode.cs @@ -1,11 +1,11 @@ // ResearchNode.cs // Copyright Karel Kroeze, 2020-2020 +using RimWorld; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; -using RimWorld; using UnityEngine; using Verse; using static FluffyResearchTree.Constants; @@ -22,12 +22,12 @@ public class ResearchNode : Node public ResearchProjectDef Research; - public ResearchNode( ResearchProjectDef research ) + public ResearchNode(ResearchProjectDef research) { Research = research; // initialize position at vanilla y position, leave x at zero - we'll determine this ourselves - _pos = new Vector2( 0, research.researchViewY + 1 ); + _pos = new Vector2(0, research.researchViewY + 1); } public List Parents @@ -35,7 +35,7 @@ public List Parents get { var parents = InNodes.OfType(); - parents.Concat( InNodes.OfType().Select( dn => dn.Parent ) ); + parents.Concat(InNodes.OfType().Select(dn => dn.Parent)); return parents.ToList(); } } @@ -44,11 +44,11 @@ public override Color Color { get { - if ( Highlighted ) + if (Highlighted) return GenUI.MouseoverColor; - if ( Completed ) + if (Completed) return Assets.ColorCompleted[Research.techLevel]; - if ( Available ) + if (Available) return Assets.ColorCompleted[Research.techLevel]; return Assets.ColorUnavailable[Research.techLevel]; } @@ -58,11 +58,11 @@ public override Color EdgeColor { get { - if ( Highlighted ) + if (Highlighted) return GenUI.MouseoverColor; - if ( Completed ) + if (Completed) return Assets.ColorCompleted[Research.techLevel]; - if ( Available ) + if (Available) return Assets.ColorAvailable[Research.techLevel]; return Assets.ColorUnavailable[Research.techLevel]; } @@ -73,40 +73,39 @@ public List Children get { var children = OutNodes.OfType(); - children.Concat( OutNodes.OfType().Select( dn => dn.Child ) ); + children.Concat(OutNodes.OfType().Select(dn => dn.Child)); return children.ToList(); } } public override string Label => Research.LabelCap; - public static bool BuildingPresent( ResearchProjectDef research ) + public static bool BuildingPresent(ResearchProjectDef research) { - if ( DebugSettings.godMode && Prefs.DevMode ) + if (DebugSettings.godMode && Prefs.DevMode) return true; // try get from cache - bool result; - if ( _buildingPresentCache.TryGetValue( research, out result ) ) + if (_buildingPresentCache.TryGetValue(research, out bool result)) return result; // do the work manually - if ( research.requiredResearchBuilding == null ) + if (research.requiredResearchBuilding == null) result = true; else - result = Find.Maps.SelectMany( map => map.listerBuildings.allBuildingsColonist ) + result = Find.Maps.SelectMany(map => map.listerBuildings.allBuildingsColonist) .OfType() - .Any( b => research.CanBeResearchedAt( b, true ) ); + .Any(b => research.CanBeResearchedAt(b, true)); - if ( result ) - result = research.Ancestors().All( BuildingPresent ); + if (result) + result = research.Ancestors().All(BuildingPresent); // update cache - _buildingPresentCache.Add( research, result ); + _buildingPresentCache.Add(research, result); return result; } - public static bool TechprintAvailable( ResearchProjectDef research ) + public static bool TechprintAvailable(ResearchProjectDef research) { return research.TechprintRequirementMet; } @@ -117,83 +116,82 @@ public static void ClearCaches() _missingFacilitiesCache.Clear(); } - public static implicit operator ResearchNode( ResearchProjectDef def ) + public static implicit operator ResearchNode(ResearchProjectDef def) { return def.ResearchNode(); } - public int Matches( string query ) + public int Matches(string query) { var culture = CultureInfo.CurrentUICulture; - query = query.ToLower( culture ); + query = query.ToLower(culture); - if ( Research.LabelCap.RawText.ToLower( culture ).Contains( query ) ) + if (Research.LabelCap.RawText.ToLower(culture).Contains(query)) return 1; - if ( Research.GetUnlockDefsAndDescs() - .Any( unlock => unlock.First.LabelCap.RawText.ToLower( culture ).Contains( query ) ) ) + if (Research.GetUnlockDefsAndDescs() + .Any(unlock => unlock.First.LabelCap.RawText.ToLower(culture).Contains(query))) return 2; - if ( Research.description.ToLower( culture ).Contains( query ) ) + if (Research.description.ToLower(culture).Contains(query)) return 3; return 0; } - public static List MissingFacilities( ResearchProjectDef research ) + public static List MissingFacilities(ResearchProjectDef research) { // try get from cache - List missing; - if ( _missingFacilitiesCache.TryGetValue( research, out missing ) ) + if (_missingFacilitiesCache.TryGetValue(research, out List missing)) return missing; // get list of all researches required before this - var thisAndPrerequisites = research.Ancestors().Where( rpd => !rpd.IsFinished ).ToList(); - thisAndPrerequisites.Add( research ); + var thisAndPrerequisites = research.Ancestors().Where(rpd => !rpd.IsFinished).ToList(); + thisAndPrerequisites.Add(research); // get list of all available research benches - var availableBenches = Find.Maps.SelectMany( map => map.listerBuildings.allBuildingsColonist ) + var availableBenches = Find.Maps.SelectMany(map => map.listerBuildings.allBuildingsColonist) .OfType(); - var availableBenchDefs = availableBenches.Select( b => b.def ).Distinct(); + var availableBenchDefs = availableBenches.Select(b => b.def).Distinct(); missing = new List(); // check each for prerequisites // TODO: We should really build this list recursively so we can re-use results for prerequisites. - foreach ( var rpd in thisAndPrerequisites ) + foreach (var rpd in thisAndPrerequisites) { - if ( rpd.requiredResearchBuilding == null ) + if (rpd.requiredResearchBuilding == null) continue; - if ( !availableBenchDefs.Contains( rpd.requiredResearchBuilding ) ) - missing.Add( rpd.requiredResearchBuilding ); + if (!availableBenchDefs.Contains(rpd.requiredResearchBuilding)) + missing.Add(rpd.requiredResearchBuilding); - if ( rpd.requiredResearchFacilities.NullOrEmpty() ) + if (rpd.requiredResearchFacilities.NullOrEmpty()) continue; - foreach ( var facility in rpd.requiredResearchFacilities ) - if ( !availableBenches.Any( b => b.HasFacility( facility ) ) ) - missing.Add( facility ); + foreach (var facility in rpd.requiredResearchFacilities) + if (!availableBenches.Any(b => b.HasFacility(facility))) + missing.Add(facility); } // add to cache missing = missing.Distinct().ToList(); - _missingFacilitiesCache.Add( research, missing ); + _missingFacilitiesCache.Add(research, missing); return missing; } public bool BuildingPresent() { - return BuildingPresent( Research ); + return BuildingPresent(Research); } - + public bool TechprintAvailable() { - return TechprintAvailable( Research ); + return TechprintAvailable(Research); } /// /// Draw the node, including interactions. /// - public override void Draw( Rect visibleRect, bool forceDetailedMode = false ) + public override void Draw(Rect visibleRect, bool forceDetailedMode = false) { - if ( !IsVisible( visibleRect ) ) + if (!IsVisible(visibleRect)) { Highlighted = false; return; @@ -201,149 +199,149 @@ public override void Draw( Rect visibleRect, bool forceDetailedMode = false ) var detailedMode = forceDetailedMode || MainTabWindow_ResearchTree.Instance.ZoomLevel < DetailedModeZoomLevelCutoff; - var mouseOver = Mouse.IsOver( Rect ); - if ( Event.current.type == EventType.Repaint ) + var mouseOver = Mouse.IsOver(Rect); + if (Event.current.type == EventType.Repaint) { // researches that are completed or could be started immediately, and that have the required building(s) available GUI.color = mouseOver ? GenUI.MouseoverColor : Color; - if ( mouseOver || Highlighted ) - GUI.DrawTexture( Rect, Assets.ButtonActive ); + if (mouseOver || Highlighted) + GUI.DrawTexture(Rect, Assets.ButtonActive); else - GUI.DrawTexture( Rect, Assets.Button ); + GUI.DrawTexture(Rect, Assets.Button); // grey out center to create a progress bar effect, completely greying out research not started. - if ( Available ) + if (Available) { - var progressBarRect = Rect.ContractedBy( 3f ); - GUI.color = Assets.ColorAvailable[Research.techLevel]; + var progressBarRect = Rect.ContractedBy(3f); + GUI.color = Assets.ColorAvailable[Research.techLevel]; progressBarRect.xMin += Research.ProgressPercent * progressBarRect.width; - GUI.DrawTexture( progressBarRect, BaseContent.WhiteTex ); + GUI.DrawTexture(progressBarRect, BaseContent.WhiteTex); } Highlighted = false; // draw the research label - if ( !Completed && !Available ) + if (!Completed && !Available) GUI.color = Color.grey; else GUI.color = Color.white; - if ( detailedMode ) + if (detailedMode) { - Text.Anchor = TextAnchor.UpperLeft; + Text.Anchor = TextAnchor.UpperLeft; Text.WordWrap = false; - Text.Font = _largeLabel ? GameFont.Tiny : GameFont.Small; - Widgets.Label( LabelRect, Research.LabelCap ); + Text.Font = _largeLabel ? GameFont.Tiny : GameFont.Small; + Widgets.Label(LabelRect, Research.LabelCap); } else { - Text.Anchor = TextAnchor.MiddleCenter; + Text.Anchor = TextAnchor.MiddleCenter; Text.WordWrap = false; - Text.Font = GameFont.Medium; - Widgets.Label( Rect, Research.LabelCap ); + Text.Font = GameFont.Medium; + Widgets.Label(Rect, Research.LabelCap); } // draw research cost and icon - if ( detailedMode ) + if (detailedMode) { Text.Anchor = TextAnchor.UpperRight; - Text.Font = Research.CostApparent > 1000000 ? GameFont.Tiny : GameFont.Small; - Widgets.Label( CostLabelRect, Research.CostApparent.ToStringByStyle( ToStringStyle.Integer ) ); - GUI.DrawTexture( CostIconRect, !Completed && !Available ? Assets.Lock : Assets.ResearchIcon, - ScaleMode.ScaleToFit ); + Text.Font = Research.CostApparent > 1000000 ? GameFont.Tiny : GameFont.Small; + Widgets.Label(CostLabelRect, Research.CostApparent.ToStringByStyle(ToStringStyle.Integer)); + GUI.DrawTexture(CostIconRect, !Completed && !Available ? Assets.Lock : Assets.ResearchIcon, + ScaleMode.ScaleToFit); } Text.WordWrap = true; // attach description and further info to a tooltip - TooltipHandler.TipRegion( Rect, GetResearchTooltipString, Research.GetHashCode() ); - if ( !BuildingPresent() ) - TooltipHandler.TipRegion( Rect, "Fluffy.ResearchTree.MissingFacilities".Translate( - string.Join( ", ", + TooltipHandler.TipRegion(Rect, GetResearchTooltipString, Research.GetHashCode()); + if (!BuildingPresent()) + TooltipHandler.TipRegion(Rect, "Fluffy.ResearchTree.MissingFacilities".Translate( + string.Join(", ", MissingFacilities() - .Select( td => td.LabelCap ).ToArray() ) ) ); + .Select(td => td.LabelCap).ToArray()))); - else if ( !TechprintAvailable() ) - TooltipHandler.TipRegion( Rect, "Fluffy.ResearchTree.MissingTechprints".Translate( - Research.TechprintsApplied, Research.techprintCount ) ); + else if (!TechprintAvailable()) + TooltipHandler.TipRegion(Rect, "Fluffy.ResearchTree.MissingTechprints".Translate( + Research.TechprintsApplied, Research.techprintCount)); // draw unlock icons - if ( detailedMode ) + if (detailedMode) { var unlocks = Research.GetUnlockDefsAndDescs(); - for ( var i = 0; i < unlocks.Count; i++ ) + for (var i = 0; i < unlocks.Count; i++) { var iconRect = new Rect( - IconsRect.xMax - ( i + 1 ) * ( IconSize.x + 4f ), - IconsRect.yMin + ( IconsRect.height - IconSize.y ) / 2f, + IconsRect.xMax - (i + 1) * (IconSize.x + 4f), + IconsRect.yMin + (IconsRect.height - IconSize.y) / 2f, IconSize.x, - IconSize.y ); + IconSize.y); - if ( iconRect.xMin - IconSize.x < IconsRect.xMin && - i + 1 < unlocks.Count ) + if (iconRect.xMin - IconSize.x < IconsRect.xMin && + i + 1 < unlocks.Count) { // stop the loop if we're about to overflow and have 2 or more unlocks yet to print. iconRect.x = IconsRect.x + 4f; - GUI.DrawTexture( iconRect, Assets.MoreIcon, ScaleMode.ScaleToFit ); - var tip = string.Join( "\n", - unlocks.GetRange( i, unlocks.Count - i ).Select( p => p.Second ) - .ToArray() ); - TooltipHandler.TipRegion( iconRect, tip ); + GUI.DrawTexture(iconRect, Assets.MoreIcon, ScaleMode.ScaleToFit); + var tip = string.Join("\n", + unlocks.GetRange(i, unlocks.Count - i).Select(p => p.Second) + .ToArray()); + TooltipHandler.TipRegion(iconRect, tip); // new TipSignal( tip, Settings.TipID, TooltipPriority.Pawn ) ); break; } // draw icon - unlocks[i].First.DrawColouredIcon( iconRect ); + unlocks[i].First.DrawColouredIcon(iconRect); // tooltip - TooltipHandler.TipRegion( iconRect, unlocks[i].Second ); + TooltipHandler.TipRegion(iconRect, unlocks[i].Second); } } - if ( mouseOver ) + if (mouseOver) { // highlight prerequisites if research available - if ( Available ) + if (Available) { Highlighted = true; - foreach ( var prerequisite in GetMissingRequiredRecursive() ) + foreach (var prerequisite in GetMissingRequiredRecursive()) prerequisite.Highlighted = true; } // highlight children if completed - else if ( Completed ) + else if (Completed) { - foreach ( var child in Children ) + foreach (var child in Children) child.Highlighted = true; } } } // if clicked and not yet finished, queue up this research and all prereqs. - if ( Widgets.ButtonInvisible( Rect ) && Available ) + if (Widgets.ButtonInvisible(Rect) && Available) { // LMB is queue operations, RMB is info - if ( Event.current.button == 0 && !Research.IsFinished ) + if (Event.current.button == 0 && !Research.IsFinished) { - if ( !Queue.IsQueued( this ) ) + if (!Queue.IsQueued(this)) { // if shift is held, add to queue, otherwise replace queue var queue = GetMissingRequiredRecursive() - .Concat( new List( new[] {this} ) ) + .Concat(new List(new[] { this })) .Distinct(); - Queue.EnqueueRange( queue, Event.current.shift ); + Queue.EnqueueRange(queue, Event.current.shift); } else { - Queue.Dequeue( this ); + Queue.Dequeue(this); } } - if ( DebugSettings.godMode && Prefs.DevMode && Event.current.button == 1 && !Research.IsFinished ) + if (DebugSettings.godMode && Prefs.DevMode && Event.current.button == 1 && !Research.IsFinished) { - Find.ResearchManager.FinishProject( Research ); + Find.ResearchManager.FinishProject(Research); Queue.Notify_InstantFinished(); } } @@ -355,22 +353,22 @@ public override void Draw( Rect visibleRect, bool forceDetailedMode = false ) /// List prerequisites public List GetMissingRequiredRecursive() { - var parents = Research.prerequisites?.Where( rpd => !rpd.IsFinished ).Select( rpd => rpd.ResearchNode() ); - if ( parents == null ) + var parents = Research.prerequisites?.Where(rpd => !rpd.IsFinished).Select(rpd => rpd.ResearchNode()); + if (parents == null) return new List(); - var allParents = new List( parents ); - foreach ( var parent in parents ) - allParents.AddRange( parent.GetMissingRequiredRecursive() ); + var allParents = new List(parents); + foreach (var parent in parents) + allParents.AddRange(parent.GetMissingRequiredRecursive()); return allParents.Distinct().ToList(); } public override bool Completed => Research.IsFinished; - public override bool Available => !Research.IsFinished && ( DebugSettings.godMode || (BuildingPresent() && TechprintAvailable())); + public override bool Available => !Research.IsFinished && (DebugSettings.godMode || (BuildingPresent() && TechprintAvailable())); public List MissingFacilities() { - return MissingFacilities( Research ); + return MissingFacilities(Research); } /// @@ -381,29 +379,29 @@ private string GetResearchTooltipString() { // start with the descripton var text = new StringBuilder(); - text.AppendLine( Research.description ); + text.AppendLine(Research.description); text.AppendLine(); - if ( Queue.IsQueued( this ) ) + if (Queue.IsQueued(this)) { - text.AppendLine( "Fluffy.ResearchTree.LClickRemoveFromQueue".Translate() ); + text.AppendLine("Fluffy.ResearchTree.LClickRemoveFromQueue".Translate()); } else { - text.AppendLine( "Fluffy.ResearchTree.LClickReplaceQueue".Translate() ); - text.AppendLine( "Fluffy.ResearchTree.SLClickAddToQueue".Translate() ); + text.AppendLine("Fluffy.ResearchTree.LClickReplaceQueue".Translate()); + text.AppendLine("Fluffy.ResearchTree.SLClickAddToQueue".Translate()); } - if ( DebugSettings.godMode ) text.AppendLine( "Fluffy.ResearchTree.RClickInstaFinish".Translate() ); + if (DebugSettings.godMode) text.AppendLine("Fluffy.ResearchTree.RClickInstaFinish".Translate()); return text.ToString(); } - public void DrawAt( Vector2 pos, Rect visibleRect, bool forceDetailedMode = false ) + public void DrawAt(Vector2 pos, Rect visibleRect, bool forceDetailedMode = false) { - SetRects( pos ); - Draw( visibleRect, forceDetailedMode ); + SetRects(pos); + Draw(visibleRect, forceDetailedMode); SetRects(); } } diff --git a/Source/Graph/Tree.cs b/Source/Graph/Tree.cs index ba08222..04abcb5 100644 --- a/Source/Graph/Tree.cs +++ b/Source/Graph/Tree.cs @@ -1,13 +1,13 @@ // Tree.cs // Copyright Karel Kroeze, 2020-2020 +using RimWorld; using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; -using RimWorld; using UnityEngine; using Verse; using static FluffyResearchTree.Constants; @@ -808,9 +808,7 @@ private static void Swap(Node A, Node B) throw new Exception("Can't swap nodes on different layers"); // swap Y positions of adjacent nodes - var tmp = A.Y; - A.Y = B.Y; - B.Y = tmp; + (B.Y, A.Y) = (A.Y, B.Y); } private static bool BarymetricSweep(int iteration) diff --git a/Source/Log.cs b/Source/Log.cs index bd033e1..a481620 100644 --- a/Source/Log.cs +++ b/Source/Log.cs @@ -7,40 +7,40 @@ namespace FluffyResearchTree { public static class Log { - public static void Message( string msg, params object[] args ) + public static void Message(string msg, params object[] args) { - Verse.Log.Message( Format( msg, args ) ); + Verse.Log.Message(Format(msg, args)); } - public static void Warning( string msg, params object[] args ) + public static void Warning(string msg, params object[] args) { - Verse.Log.Warning( Format( msg, args ) ); + Verse.Log.Warning(Format(msg, args)); } - private static string Format( string msg, params object[] args ) + private static string Format(string msg, params object[] args) { - return "ResearchTree :: " + string.Format( msg, args ); + return "ResearchTree :: " + string.Format(msg, args); } - public static void Error( string msg, bool once, params object[] args ) + public static void Error(string msg, bool once, params object[] args) { - var _msg = Format( msg, args ); - if ( once ) - Verse.Log.ErrorOnce( _msg, _msg.GetHashCode() ); + var _msg = Format(msg, args); + if (once) + Verse.Log.ErrorOnce(_msg, _msg.GetHashCode()); else - Verse.Log.Error( _msg ); + Verse.Log.Error(_msg); } - [Conditional( "DEBUG" )] - public static void Debug( string msg, params object[] args ) + [Conditional("DEBUG")] + public static void Debug(string msg, params object[] args) { - Verse.Log.Message( Format( msg, args ) ); + Verse.Log.Message(Format(msg, args)); } - [Conditional( "TRACE" )] - public static void Trace( string msg, params object[] args ) + [Conditional("TRACE")] + public static void Trace(string msg, params object[] args) { - Verse.Log.Message( Format( msg, args ) ); + Verse.Log.Message(Format(msg, args)); } } } \ No newline at end of file diff --git a/Source/MainButtonWorker_ResearchTree.cs b/Source/MainButtonWorker_ResearchTree.cs index a3d53db..eb61f7f 100644 --- a/Source/MainButtonWorker_ResearchTree.cs +++ b/Source/MainButtonWorker_ResearchTree.cs @@ -9,18 +9,18 @@ namespace FluffyResearchTree { public class MainButtonWorker_ResearchTree : MainButtonWorker_ToggleResearchTab { - public override void DoButton( Rect rect ) + public override void DoButton(Rect rect) { - base.DoButton( rect ); + base.DoButton(rect); - if ( Queue.NumQueued > 0 ) + if (Queue.NumQueued > 0) { var queueRect = new Rect( rect.xMax - Constants.SmallQueueLabelSize - Constants.Margin, 0f, Constants.SmallQueueLabelSize, - Constants.SmallQueueLabelSize ).CenteredOnYIn( rect ); - Queue.DrawLabel( queueRect, Color.white, Color.grey, Queue.NumQueued ); + Constants.SmallQueueLabelSize).CenteredOnYIn(rect); + Queue.DrawLabel(queueRect, Color.white, Color.grey, Queue.NumQueued); } } } diff --git a/Source/MainTabWindow_ResearchTree.cs b/Source/MainTabWindow_ResearchTree.cs index 74812c9..41dda30 100644 --- a/Source/MainTabWindow_ResearchTree.cs +++ b/Source/MainTabWindow_ResearchTree.cs @@ -1,9 +1,9 @@ // MainTabWindow_ResearchTree.cs // Copyright Karel Kroeze, 2020-2020 +using RimWorld; using System.Collections.Generic; using System.Linq; -using RimWorld; using UnityEngine; using Verse; using static FluffyResearchTree.Constants; @@ -19,22 +19,22 @@ public class MainTabWindow_ResearchTree : MainTabWindow private Rect _baseViewRect; private Rect _baseViewRect_Inner; - private bool _dragging; + private bool _dragging; private Vector2 _mousePosition = Vector2.zero; private string _query = ""; - private Rect _viewRect; + private Rect _viewRect; private Rect _viewRect_Inner; private bool _viewRect_InnerDirty = true; - private bool _viewRectDirty = true; + private bool _viewRectDirty = true; private float _zoomLevel = 1f; public MainTabWindow_ResearchTree() { closeOnClickedOutside = false; - Instance = this; + Instance = this; } public static MainTabWindow_ResearchTree Instance { get; private set; } @@ -46,8 +46,8 @@ public float ZoomLevel get => _zoomLevel; set { - _zoomLevel = Mathf.Clamp( value, 1f, MaxZoomLevel ); - _viewRectDirty = true; + _zoomLevel = Mathf.Clamp(value, 1f, MaxZoomLevel); + _viewRectDirty = true; _viewRect_InnerDirty = true; } } @@ -56,12 +56,12 @@ public Rect ViewRect { get { - if ( _viewRectDirty ) + if (_viewRectDirty) { _viewRect = new Rect( - _baseViewRect.xMin * ZoomLevel, - _baseViewRect.yMin * ZoomLevel, - _baseViewRect.width * ZoomLevel, + _baseViewRect.xMin * ZoomLevel, + _baseViewRect.yMin * ZoomLevel, + _baseViewRect.width * ZoomLevel, _baseViewRect.height * ZoomLevel ); _viewRectDirty = false; @@ -75,9 +75,9 @@ public Rect ViewRect_Inner { get { - if ( _viewRect_InnerDirty ) + if (_viewRect_InnerDirty) { - _viewRect_Inner = _viewRect.ContractedBy( Margin * ZoomLevel ); + _viewRect_Inner = _viewRect.ContractedBy(Margin * ZoomLevel); _viewRect_InnerDirty = false; } @@ -89,11 +89,11 @@ public Rect TreeRect { get { - if ( _treeRect == default ) + if (_treeRect == default) { - var width = Tree.Size.x * ( NodeSize.x + NodeMargins.x ); - var height = Tree.Size.z * ( NodeSize.y + NodeMargins.y ); - _treeRect = new Rect( 0f, 0f, width, height ); + var width = Tree.Size.x * (NodeSize.x + NodeMargins.x); + var height = Tree.Size.z * (NodeSize.y + NodeMargins.y); + _treeRect = new Rect(0f, 0f, width, height); } return _treeRect; @@ -105,24 +105,24 @@ public Rect TreeRect _scrollPosition.x, _scrollPosition.y, ViewRect_Inner.width, - ViewRect_Inner.height ); + ViewRect_Inner.height); internal float MaxZoomLevel { get { // get the minimum zoom level at which the entire tree fits onto the screen, or a static maximum zoom level. - var fitZoomLevel = Mathf.Max( TreeRect.width / _baseViewRect_Inner.width, - TreeRect.height / _baseViewRect_Inner.height ); - return Mathf.Min( fitZoomLevel, AbsoluteMaxZoomLevel ); + var fitZoomLevel = Mathf.Max(TreeRect.width / _baseViewRect_Inner.width, + TreeRect.height / _baseViewRect_Inner.height); + return Mathf.Min(fitZoomLevel, AbsoluteMaxZoomLevel); } } public override void PreClose() { base.PreClose(); - Log.Debug( "CloseOnClickedOutside: {0}", closeOnClickedOutside ); - Log.Debug( StackTraceUtility.ExtractStackTrace() ); + Log.Debug("CloseOnClickedOutside: {0}", closeOnClickedOutside); + Log.Debug(StackTraceUtility.ExtractStackTrace()); } public void Notify_TreeInitialized() @@ -135,14 +135,14 @@ public override void PreOpen() base.PreOpen(); SetRects(); - if ( !Tree.Initialized ) + if (!Tree.Initialized) // initialize tree Tree.Initialize(); // clear node availability caches ResearchNode.ClearCaches(); - _dragging = false; + _dragging = false; closeOnClickedOutside = false; } @@ -156,15 +156,15 @@ private void SetRects() ((Screen.height - MainButtonDef.ButtonHeight - StandardMargin * 2) / Prefs.UIScale) - TopBarHeight - Constants.Margin); // windowrect, set to topleft (for some reason vanilla alignment overlaps bottom buttons). - windowRect.x = 0f; - windowRect.y = 0f; - windowRect.width = UI.screenWidth; + windowRect.x = 0f; + windowRect.y = 0f; + windowRect.width = UI.screenWidth; windowRect.height = UI.screenHeight - MainButtonDef.ButtonHeight; } - public override void DoWindowContents( Rect canvas ) + public override void DoWindowContents(Rect canvas) { - if ( !Tree.Initialized ) + if (!Tree.Initialized) return; @@ -173,33 +173,33 @@ public override void DoWindowContents( Rect canvas ) canvas.xMin, canvas.yMin, canvas.width, - TopBarHeight ); - DrawTopBar( topRect ); + TopBarHeight); + DrawTopBar(topRect); ApplyZoomLevel(); // draw background - GUI.DrawTexture( ViewRect, Assets.SlightlyDarkBackground ); + GUI.DrawTexture(ViewRect, Assets.SlightlyDarkBackground); // draw the actual tree // TODO: stop scrollbars scaling with zoom - _scrollPosition = GUI.BeginScrollView( ViewRect, _scrollPosition, TreeRect ); + _scrollPosition = GUI.BeginScrollView(ViewRect, _scrollPosition, TreeRect); GUI.BeginGroup( new Rect( ScaledMargin, ScaledMargin, - TreeRect.width + ScaledMargin * 2f, + TreeRect.width + ScaledMargin * 2f, TreeRect.height + ScaledMargin * 2f ) ); - Tree.Draw( VisibleRect ); - Queue.DrawLabels( VisibleRect ); + Tree.Draw(VisibleRect); + Queue.DrawLabels(VisibleRect); HandleZoom(); GUI.EndGroup(); - GUI.EndScrollView( false ); + GUI.EndScrollView(false); HandleDragging(); HandleDolly(); @@ -209,20 +209,20 @@ public override void DoWindowContents( Rect canvas ) // cleanup; - GUI.color = Color.white; + GUI.color = Color.white; Text.Anchor = TextAnchor.UpperLeft; } private void HandleDolly() { var dollySpeed = 10f; - if ( KeyBindingDefOf.MapDolly_Left.IsDown ) + if (KeyBindingDefOf.MapDolly_Left.IsDown) _scrollPosition.x -= dollySpeed; - if ( KeyBindingDefOf.MapDolly_Right.IsDown ) + if (KeyBindingDefOf.MapDolly_Right.IsDown) _scrollPosition.x += dollySpeed; - if ( KeyBindingDefOf.MapDolly_Up.IsDown ) + if (KeyBindingDefOf.MapDolly_Up.IsDown) _scrollPosition.y -= dollySpeed; - if ( KeyBindingDefOf.MapDolly_Down.IsDown ) + if (KeyBindingDefOf.MapDolly_Down.IsDown) _scrollPosition.y += dollySpeed; } @@ -230,14 +230,14 @@ private void HandleDolly() private void HandleZoom() { // handle zoom - if ( Event.current.isScrollWheel ) + if (Event.current.isScrollWheel) { // absolute position of mouse on research tree var absPos = Event.current.mousePosition; // Log.Debug( "Absolute position: {0}", absPos ); // relative normalized position of mouse on visible tree - var relPos = ( Event.current.mousePosition - _scrollPosition ) / ZoomLevel; + var relPos = (Event.current.mousePosition - _scrollPosition) / ZoomLevel; // Log.Debug( "Normalized position: {0}", relPos ); // update zoom level @@ -252,24 +252,24 @@ private void HandleZoom() private void HandleDragging() { - if ( Event.current.type == EventType.MouseDown ) + if (Event.current.type == EventType.MouseDown) { - _dragging = true; + _dragging = true; _mousePosition = Event.current.mousePosition; Event.current.Use(); } - if ( Event.current.type == EventType.MouseUp ) + if (Event.current.type == EventType.MouseUp) { - _dragging = false; + _dragging = false; _mousePosition = Vector2.zero; } - if ( Event.current.type == EventType.MouseDrag ) + if (Event.current.type == EventType.MouseDrag) { var _currentMousePosition = Event.current.mousePosition; _scrollPosition += _mousePosition - _currentMousePosition; - _mousePosition = _currentMousePosition; + _mousePosition = _currentMousePosition; } } @@ -277,8 +277,8 @@ private void ApplyZoomLevel() { GUI.EndClip(); // window contents GUI.EndClip(); // window itself? - GUI.matrix = Matrix4x4.TRS( new Vector3( 0f, 0f, 0f ), Quaternion.identity, - new Vector3( Prefs.UIScale / ZoomLevel, Prefs.UIScale / ZoomLevel, 1f ) ); + GUI.matrix = Matrix4x4.TRS(new Vector3(0f, 0f, 0f), Quaternion.identity, + new Vector3(Prefs.UIScale / ZoomLevel, Prefs.UIScale / ZoomLevel, 1f)); } private void ResetZoomLevel() @@ -286,84 +286,84 @@ private void ResetZoomLevel() // dummies to maintain correct stack size // TODO; figure out how to get actual clipping rects in ApplyZoomLevel(); UI.ApplyUIScale(); - GUI.BeginClip( windowRect ); - GUI.BeginClip( new Rect( 0f, 0f, UI.screenWidth, UI.screenHeight ) ); + GUI.BeginClip(windowRect); + GUI.BeginClip(new Rect(0f, 0f, UI.screenWidth, UI.screenHeight)); } - private void DrawTopBar( Rect canvas ) + private void DrawTopBar(Rect canvas) { var searchRect = canvas; - var queueRect = canvas; - searchRect.width = 200f; - queueRect.xMin += 200f + Constants.Margin; + var queueRect = canvas; + searchRect.width = 200f; + queueRect.xMin += 200f + Constants.Margin; - GUI.DrawTexture( searchRect, Assets.SlightlyDarkBackground ); - GUI.DrawTexture( queueRect, Assets.SlightlyDarkBackground ); + GUI.DrawTexture(searchRect, Assets.SlightlyDarkBackground); + GUI.DrawTexture(queueRect, Assets.SlightlyDarkBackground); - DrawSearchBar( searchRect.ContractedBy( Constants.Margin ) ); - Queue.DrawQueue( queueRect.ContractedBy( Constants.Margin ), !_dragging ); + DrawSearchBar(searchRect.ContractedBy(Constants.Margin)); + Queue.DrawQueue(queueRect.ContractedBy(Constants.Margin), !_dragging); } - private void DrawSearchBar( Rect canvas ) + private void DrawSearchBar(Rect canvas) { - Profiler.Start( "DrawSearchBar" ); + Profiler.Start("DrawSearchBar"); var iconRect = new Rect( canvas.xMax - Constants.Margin - 16f, 0f, 16f, - 16f ) - .CenteredOnYIn( canvas ); + 16f) + .CenteredOnYIn(canvas); var searchRect = new Rect( canvas.xMin, 0f, canvas.width, - 30f ) - .CenteredOnYIn( canvas ); + 30f) + .CenteredOnYIn(canvas); - GUI.DrawTexture( iconRect, Assets.Search ); - var query = Widgets.TextField( searchRect, _query ); + GUI.DrawTexture(iconRect, Assets.Search); + var query = Widgets.TextField(searchRect, _query); - if ( query != _query ) + if (query != _query) { _query = query; - Find.WindowStack.FloatMenu?.Close( false ); + Find.WindowStack.FloatMenu?.Close(false); - if ( query.Length > 2 ) + if (query.Length > 2) { // open float menu with search results, if any. var options = new List(); - foreach ( var result in Tree.Nodes.OfType() - .Select( n => new {node = n, match = n.Matches( query )} ) - .Where( result => result.match > 0 ) - .OrderBy(result => result.match)) - options.Add(new FloatMenuOption(result.node.Label, () => CenterOn(result.node), MenuOptionPriority.Default)); + foreach (var result in Tree.Nodes.OfType() + .Select(n => new { node = n, match = n.Matches(query) }) + .Where(result => result.match > 0) + .OrderBy(result => result.match)) + options.Add(new FloatMenuOption(result.node.Label, () => CenterOn(result.node), MenuOptionPriority.Default)); - if (!options.Any()) - options.Add(new FloatMenuOption("Fluffy.ResearchTree.NoResearchFound".Translate(), null)); + if (!options.Any()) + options.Add(new FloatMenuOption("Fluffy.ResearchTree.NoResearchFound".Translate(), null)); - Find.WindowStack.Add( new FloatMenu_Fixed( options, + Find.WindowStack.Add(new FloatMenu_Fixed(options, UI.GUIToScreenPoint( new Vector2( - searchRect.xMin, searchRect.yMax ) ) ) ); + searchRect.xMin, searchRect.yMax)))); } } Profiler.End(); } - public void CenterOn( Node node ) + public void CenterOn(Node node) { var position = new Vector2( - ( NodeSize.x + NodeMargins.x ) * ( node.X - .5f ), - ( NodeSize.y + NodeMargins.y ) * ( node.Y - .5f ) ); + (NodeSize.x + NodeMargins.x) * (node.X - .5f), + (NodeSize.y + NodeMargins.y) * (node.Y - .5f)); node.Highlighted = true; - position -= new Vector2( UI.screenWidth, UI.screenHeight ) / 2f; + position -= new Vector2(UI.screenWidth, UI.screenHeight) / 2f; - position.x = Mathf.Clamp( position.x, 0f, TreeRect.width - ViewRect.width ); - position.y = Mathf.Clamp( position.y, 0f, TreeRect.height - ViewRect.height ); + position.x = Mathf.Clamp(position.x, 0f, TreeRect.width - ViewRect.width); + position.y = Mathf.Clamp(position.y, 0f, TreeRect.height - ViewRect.height); _scrollPosition = position; } } diff --git a/Source/Profiler.cs b/Source/Profiler.cs index 424e42d..1af3b7b 100644 --- a/Source/Profiler.cs +++ b/Source/Profiler.cs @@ -8,13 +8,13 @@ namespace FluffyResearchTree { public class Profiler { - [Conditional( "DEBUG" )] - public static void Start( string label = null ) + [Conditional("DEBUG")] + public static void Start(string label = null) { - DeepProfiler.Start( label ); + DeepProfiler.Start(label); } - [Conditional( "DEBUG" )] + [Conditional("DEBUG")] public static void End() { DeepProfiler.End(); diff --git a/Source/Properties/AssemblyInfo.cs b/Source/Properties/AssemblyInfo.cs index 382cb1a..d6b6c51 100644 --- a/Source/Properties/AssemblyInfo.cs +++ b/Source/Properties/AssemblyInfo.cs @@ -7,22 +7,22 @@ // General Information about an assembly is controlled through the following // set of attributes. Change these attribute values to modify the information // associated with an assembly. -[assembly: AssemblyTitle( "ResearchTree" )] -[assembly: AssemblyDescription( "" )] -[assembly: AssemblyConfiguration( "" )] -[assembly: AssemblyCompany( "" )] -[assembly: AssemblyProduct( "ResearchTree" )] -[assembly: AssemblyCopyright( "Copyright © 2015" )] -[assembly: AssemblyTrademark( "" )] -[assembly: AssemblyCulture( "" )] +[assembly: AssemblyTitle("ResearchTree")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("ResearchTree")] +[assembly: AssemblyCopyright("Copyright © 2015")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. -[assembly: ComVisible( false )] +[assembly: ComVisible(false)] // The following GUID is for the ID of the typelib if this project is exposed to COM -[assembly: Guid( "3eb50a4a-c426-40e5-b682-458b34007336" )] +[assembly: Guid("3eb50a4a-c426-40e5-b682-458b34007336")] // Version information for an assembly consists of the following four values: // diff --git a/Source/Queue/Queue.cs b/Source/Queue/Queue.cs index 6f792a7..b41e1ec 100644 --- a/Source/Queue/Queue.cs +++ b/Source/Queue/Queue.cs @@ -1,11 +1,10 @@ // Queue.cs // Copyright Karel Kroeze, 2020-2020 -using Multiplayer.API; -using System.Collections.Generic; -using System.Linq; using RimWorld; using RimWorld.Planet; +using System.Collections.Generic; +using System.Linq; using UnityEngine; using Verse; using static FluffyResearchTree.Assets; @@ -15,11 +14,11 @@ namespace FluffyResearchTree { public class Queue : WorldComponent { - private static Queue _instance; - private readonly List _queue = new List(); - private List _saveableQueue; + private static Queue _instance; + private readonly List _queue = new List(); + private List _saveableQueue; - public Queue( World world ) : base( world ) + public Queue(World world) : base(world) { _instance = this; } @@ -32,39 +31,39 @@ public Queue( World world ) : base( world ) public static int NumQueued => _instance._queue.Count - 1; - public static void TryDequeue( ResearchNode node ) + public static void TryDequeue(ResearchNode node) { - if ( _instance._queue.Contains( node ) ) - Dequeue( node ); + if (_instance._queue.Contains(node)) + Dequeue(node); } -// [SyncMethod] - public static void Dequeue( ResearchNode node ) + // [SyncMethod] + public static void Dequeue(ResearchNode node) { // remove this node - _instance._queue.Remove( node ); + _instance._queue.Remove(node); // remove all nodes that depend on it - var followUps = _instance._queue.Where( n => n.GetMissingRequiredRecursive().Contains( node ) ).ToList(); - foreach ( var followUp in followUps ) - _instance._queue.Remove( followUp ); + var followUps = _instance._queue.Where(n => n.GetMissingRequiredRecursive().Contains(node)).ToList(); + foreach (var followUp in followUps) + _instance._queue.Remove(followUp); // if currently researching this node, stop that - if ( Find.ResearchManager.currentProj == node.Research ) + if (Find.ResearchManager.currentProj == node.Research) Find.ResearchManager.currentProj = null; } - - public static void DrawLabels( Rect visibleRect ) + + public static void DrawLabels(Rect visibleRect) { - Profiler.Start( "Queue.DrawLabels" ); + Profiler.Start("Queue.DrawLabels"); var i = 1; - foreach ( var node in _instance._queue ) + foreach (var node in _instance._queue) { - if ( node.IsVisible( visibleRect ) ) + if (node.IsVisible(visibleRect)) { - var main = ColorCompleted[node.Research.techLevel]; + var main = ColorCompleted[node.Research.techLevel]; var background = i > 1 ? ColorUnavailable[node.Research.techLevel] : main; - DrawLabel( node.QueueRect, main, background, i ); + DrawLabel(node.QueueRect, main, background, i); } i++; @@ -73,100 +72,100 @@ public static void DrawLabels( Rect visibleRect ) Profiler.End(); } - public static void DrawLabel( Rect canvas, Color main, Color background, int label ) + public static void DrawLabel(Rect canvas, Color main, Color background, int label) { // draw coloured tag GUI.color = main; - GUI.DrawTexture( canvas, CircleFill ); + GUI.DrawTexture(canvas, CircleFill); // if this is not first in line, grey out centre of tag - if ( background != main ) + if (background != main) { GUI.color = background; - GUI.DrawTexture( canvas.ContractedBy( 2f ), CircleFill ); + GUI.DrawTexture(canvas.ContractedBy(2f), CircleFill); } // draw queue number - GUI.color = Color.white; + GUI.color = Color.white; Text.Anchor = TextAnchor.MiddleCenter; - Widgets.Label( canvas, label.ToString() ); + Widgets.Label(canvas, label.ToString()); Text.Anchor = TextAnchor.UpperLeft; } - public static void Enqueue( ResearchNode node, bool add ) + public static void Enqueue(ResearchNode node, bool add) { - Log.Debug( $"Enqueuing: {node.Research.defName}" ); + Log.Debug($"Enqueuing: {node.Research.defName}"); // if we're not adding, clear the current queue and current research project - if ( !add ) + if (!add) { _instance._queue.Clear(); Find.ResearchManager.currentProj = null; } // add to the queue if not already in it - if ( !_instance._queue.Contains( node ) ) - _instance._queue.Add( node ); + if (!_instance._queue.Contains(node)) + _instance._queue.Add(node); // try set the first research in the queue to be the current project. var next = _instance._queue.First(); Find.ResearchManager.currentProj = next?.Research; // null if next is null. } -// [SyncMethod] - public static void EnqueueRange( IEnumerable nodes, bool add ) + // [SyncMethod] + public static void EnqueueRange(IEnumerable nodes, bool add) { - TutorSystem.Notify_Event( "StartResearchProject" ); + TutorSystem.Notify_Event("StartResearchProject"); // clear current Queue if not adding - if ( !add ) + if (!add) { _instance._queue.Clear(); Find.ResearchManager.currentProj = null; } // sorting by depth ensures prereqs are met - cost is just a bonus thingy. - foreach ( var node in nodes.OrderBy( node => node.X ).ThenBy( node => node.Research.CostApparent ) ) - Enqueue( node, true ); + foreach (var node in nodes.OrderBy(node => node.X).ThenBy(node => node.Research.CostApparent)) + Enqueue(node, true); } - public static bool IsQueued( ResearchNode node ) + public static bool IsQueued(ResearchNode node) { - return _instance._queue.Contains( node ); + return _instance._queue.Contains(node); } - public static void TryStartNext( ResearchProjectDef finished ) + public static void TryStartNext(ResearchProjectDef finished) { var current = _instance._queue.FirstOrDefault()?.Research; - Log.Debug( "TryStartNext: current; {0}, finished; {1}", current, finished ); - if ( finished != _instance._queue.FirstOrDefault()?.Research ) + Log.Debug("TryStartNext: current; {0}, finished; {1}", current, finished); + if (finished != _instance._queue.FirstOrDefault()?.Research) { - TryDequeue( finished ); + TryDequeue(finished); return; } - _instance._queue.RemoveAt( 0 ); + _instance._queue.RemoveAt(0); var next = _instance._queue.FirstOrDefault()?.Research; - Log.Debug( "TryStartNext: next; {0}", next ); + Log.Debug("TryStartNext: next; {0}", next); Find.ResearchManager.currentProj = next; - DoCompletionLetter( current, next ); + DoCompletionLetter(current, next); } - private static void DoCompletionLetter( ResearchProjectDef current, ResearchProjectDef next ) + private static void DoCompletionLetter(ResearchProjectDef current, ResearchProjectDef next) { // message - string label = "ResearchFinished".Translate( current.LabelCap ); - string text = current.LabelCap + "\n\n" + current.description; + string label = "ResearchFinished".Translate(current.LabelCap); + string text = current.LabelCap + "\n\n" + current.description; - if ( next != null ) + if (next != null) { - text += "\n\n" + "Fluffy.ResearchTree.NextInQueue".Translate( next.LabelCap ); - Find.LetterStack.ReceiveLetter( label, text, LetterDefOf.PositiveEvent ); + text += "\n\n" + "Fluffy.ResearchTree.NextInQueue".Translate(next.LabelCap); + Find.LetterStack.ReceiveLetter(label, text, LetterDefOf.PositiveEvent); } else { - text += "\n\n" + "Fluffy.ResearchTree.NextInQueue".Translate( "Fluffy.ResearchTree.None".Translate() ); - Find.LetterStack.ReceiveLetter( label, text, LetterDefOf.NeutralEvent ); + text += "\n\n" + "Fluffy.ResearchTree.NextInQueue".Translate("Fluffy.ResearchTree.None".Translate()); + Find.LetterStack.ReceiveLetter(label, text, LetterDefOf.NeutralEvent); } } @@ -175,57 +174,57 @@ public override void ExposeData() base.ExposeData(); // store research defs as these are the defining elements - if ( Scribe.mode == LoadSaveMode.Saving ) - _saveableQueue = _queue.Select( node => node.Research ).ToList(); + if (Scribe.mode == LoadSaveMode.Saving) + _saveableQueue = _queue.Select(node => node.Research).ToList(); - Scribe_Collections.Look( ref _saveableQueue, "Queue", LookMode.Def ); + Scribe_Collections.Look(ref _saveableQueue, "Queue", LookMode.Def); - if ( Scribe.mode == LoadSaveMode.PostLoadInit ) + if (Scribe.mode == LoadSaveMode.PostLoadInit) // initialize the queue - foreach ( var research in _saveableQueue ) + foreach (var research in _saveableQueue) { // find a node that matches the research - or null if none found var node = research.ResearchNode(); // enqueue the node - if ( node != null ) + if (node != null) { - Log.Debug( "Adding {0} to queue", node.Research.LabelCap ); - Enqueue( node, true ); + Log.Debug("Adding {0} to queue", node.Research.LabelCap); + Enqueue(node, true); } else { - Log.Debug( "Could not find node for {0}", research.LabelCap ); + Log.Debug("Could not find node for {0}", research.LabelCap); } } } - public static void DrawQueue( Rect canvas, bool interactible ) + public static void DrawQueue(Rect canvas, bool interactible) { - Profiler.Start( "Queue.DrawQueue" ); - if ( !_instance._queue.Any() ) + Profiler.Start("Queue.DrawQueue"); + if (!_instance._queue.Any()) { Text.Anchor = TextAnchor.MiddleCenter; - GUI.color = TechLevelColor; - Widgets.Label( canvas, "Fluffy.ResearchTree.NothingQueued".Translate() ); + GUI.color = TechLevelColor; + Widgets.Label(canvas, "Fluffy.ResearchTree.NothingQueued".Translate()); Text.Anchor = TextAnchor.UpperLeft; - GUI.color = Color.white; + GUI.color = Color.white; return; } var pos = canvas.min; - for ( var i = 0; i < _instance._queue.Count && pos.x + NodeSize.x < canvas.xMax; i++ ) + for (var i = 0; i < _instance._queue.Count && pos.x + NodeSize.x < canvas.xMax; i++) { var node = _instance._queue[i]; var rect = new Rect( - pos.x - Margin, - pos.y - Margin, + pos.x - Margin, + pos.y - Margin, NodeSize.x + 2 * Margin, NodeSize.y + 2 * Margin ); - node.DrawAt( pos, rect, true ); - if ( interactible && Mouse.IsOver( rect ) ) - MainTabWindow_ResearchTree.Instance.CenterOn( node ); + node.DrawAt(pos, rect, true); + if (interactible && Mouse.IsOver(rect)) + MainTabWindow_ResearchTree.Instance.CenterOn(node); pos.x += NodeSize.x + Margin; } @@ -234,9 +233,9 @@ public static void DrawQueue( Rect canvas, bool interactible ) public static void Notify_InstantFinished() { - foreach ( var node in new List( _instance._queue ) ) - if ( node.Research.IsFinished ) - TryDequeue( node ); + foreach (var node in new List(_instance._queue)) + if (node.Research.IsFinished) + TryDequeue(node); Find.ResearchManager.currentProj = _instance._queue.FirstOrDefault()?.Research; } diff --git a/Source/Queue/Queue_HarmonyPatches.cs b/Source/Queue/Queue_HarmonyPatches.cs index eb9d46d..8b0463c 100644 --- a/Source/Queue/Queue_HarmonyPatches.cs +++ b/Source/Queue/Queue_HarmonyPatches.cs @@ -12,7 +12,7 @@ public class HarmonyPatches_Queue [HarmonyPatch(typeof(ResearchManager), "FinishProject")] public class DoCompletionDialog { - //If Semi Random Research mod is loaded, suppress vanilla completion dialog. + //If Semi Random Research mod is not loaded, suppress vanilla completion dialog. [System.Diagnostics.CodeAnalysis.SuppressMessage("CodeQuality", "IDE0051:Remove unused private members", Justification = "It is used, ignore compiler messages")] private static void Prefix(ref bool doCompletionDialog) { diff --git a/Source/ResearchTree.cs b/Source/ResearchTree.cs index b27daac..d48ec0d 100644 --- a/Source/ResearchTree.cs +++ b/Source/ResearchTree.cs @@ -1,24 +1,20 @@ // ResearchTree.cs // Copyright Karel Kroeze, 2020-2020 -using System.Reflection; using HarmonyLib; +using System.Reflection; using Verse; -using Multiplayer.API; namespace FluffyResearchTree { public class ResearchTree : Mod { - public ResearchTree( ModContentPack content ) : base( content ) + public ResearchTree(ModContentPack content) : base(content) { - var harmony = new Harmony( "Fluffy.ResearchTree" ); - harmony.PatchAll( Assembly.GetExecutingAssembly() ); + var harmony = new Harmony("Fluffy.ResearchTree"); + harmony.PatchAll(Assembly.GetExecutingAssembly()); + - if ( MP.enabled) - { - MP.RegisterAll(); - } } } } \ No newline at end of file diff --git a/Source/ResearchTree.csproj b/Source/ResearchTree.csproj index 66c8aa1..6b20ea5 100644 --- a/Source/ResearchTree.csproj +++ b/Source/ResearchTree.csproj @@ -38,11 +38,8 @@ false - - packages\Lib.Harmony.2.1.1\lib\net472\0Harmony.dll - - - packages\RimWorld.MultiplayerAPI.0.3.0\lib\net472\0MultiplayerAPI.dll + + packages\Lib.Harmony.2.2.2\lib\net472\0Harmony.dll C:\Program Files (x86)\Steam\steamapps\common\RimWorld\RimWorldWin64_Data\Managed\Assembly-CSharp.dll @@ -50,7 +47,9 @@ - + + packages\System.ValueTuple.4.5.0\lib\portable-net40+sl4+win8+wp8\System.ValueTuple.dll + @@ -94,18 +93,18 @@ - + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + + + \ No newline at end of file diff --git a/Source/packages.config b/Source/packages.config index 734149a..45d21c7 100644 --- a/Source/packages.config +++ b/Source/packages.config @@ -1,6 +1,6 @@  - - - + + + \ No newline at end of file From 880470f03143715739a43480d9bc0aace81ed969 Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Sun, 23 Oct 2022 16:42:53 +0200 Subject: [PATCH 15/16] Update ResearchTree.csproj new packages --- Source/ResearchTree.csproj | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Source/ResearchTree.csproj b/Source/ResearchTree.csproj index 6b20ea5..891e909 100644 --- a/Source/ResearchTree.csproj +++ b/Source/ResearchTree.csproj @@ -38,6 +38,11 @@ false + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + packages\Lib.Harmony.2.2.2\lib\net472\0Harmony.dll From f5be0cbcd77aab47221462d89e936e7d3ccafb7a Mon Sep 17 00:00:00 2001 From: Zemogiter Date: Mon, 24 Oct 2022 00:39:25 +0200 Subject: [PATCH 16/16] Begining to add debug button for instant research --- Assemblies/ResearchTree.dll | Bin 70144 -> 71680 bytes Source/MainTabWindow_ResearchTree.cs | 32 ++++++++++++++++++++++++++- 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/Assemblies/ResearchTree.dll b/Assemblies/ResearchTree.dll index e52210ca9f6effe5ae6f123ddf0e809dc942737c..c6237a98976553a09bb35e81facd1a857ec22322 100644 GIT binary patch literal 71680 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 RMe@Yob3gw8{{Kk|{9o%XR=EHG literal 70144 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 F{{sC>=->bV diff --git a/Source/MainTabWindow_ResearchTree.cs b/Source/MainTabWindow_ResearchTree.cs index 41dda30..3a5924c 100644 --- a/Source/MainTabWindow_ResearchTree.cs +++ b/Source/MainTabWindow_ResearchTree.cs @@ -2,11 +2,13 @@ // Copyright Karel Kroeze, 2020-2020 using RimWorld; +using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using Verse; using static FluffyResearchTree.Constants; +using static RimWorld.MainTabWindow_Research; namespace FluffyResearchTree { @@ -118,6 +120,31 @@ internal float MaxZoomLevel } } + public void ShowDebugButton() + { + Rect rect = new Rect(0f, 0f, 140f, 0f); + float leftStartAreaHeight = 68f; + float leftViewDebugHeight = 0f; + float num = 0f; + float num2 = 0f; + var selectedProject = Find.ResearchManager.currentProj; + Rect outRect = new Rect(0f, 0f, rect.width, num); + Rect viewRect = new Rect(0f, 0f, outRect.width - 16f, leftViewDebugHeight); + Rect rect11 = new Rect(0f, outRect.yMax + 10f , rect.width, leftStartAreaHeight); + if (Prefs.DevMode && selectedProject != Find.ResearchManager.currentProj && !selectedProject.IsFinished) + { + Text.Font = GameFont.Tiny; + Rect rect13 = new Rect(rect11.x, outRect.yMax, 120f, 30f); + if (Widgets.ButtonText(rect13, "Debug: Finish now")) + { + Find.ResearchManager.currentProj = selectedProject; + Find.ResearchManager.FinishProject(selectedProject); + } + Text.Font = GameFont.Small; + leftViewDebugHeight = rect13.height; + } + } + public override void PreClose() { base.PreClose(); @@ -167,7 +194,10 @@ public override void DoWindowContents(Rect canvas) if (!Tree.Initialized) return; - + if(Prefs.DevMode) + { + ShowDebugButton(); + } // top bar var topRect = new Rect( canvas.xMin,