Skip to content

Commit

Permalink
[adds]
Browse files Browse the repository at this point in the history
+ SubController.DontProcessThisPhase priority constant to completely skip unneeded callbacks
+ LibrarySubController.Initialize (-100 priority) to explicitly instantiate MCMs last

[changes]
+ HelpSubController.Initialization priority from -100 to -75
+ MCM instantiation happens in an explicit static method (InitializeMCMs) instead of a static constructor to control sequencing of events
+ Increases MCM window size from 600x400 to 600x600, adding 200px height to the client areas
  • Loading branch information
ForsakenShell committed Apr 12, 2016
1 parent fa48aa8 commit f3f808f
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 46 deletions.
88 changes: 54 additions & 34 deletions DLL_Project/Controller/Controller_MainMonoBehaviour.cs
Expand Up @@ -164,14 +164,21 @@ public static void Initialize()
subControllers.Sort( (x,y) => ( x.ValidationPriority > y.ValidationPriority ) ? -1 : 1 );
foreach( var subsys in subControllers )
{
if( !subsys.Validate() )
if( subsys.ValidationPriority != SubController.DontProcessThisPhase )
{
CCL_Log.Error( subsys.strReturn, subsys.Name + " :: Validation" );
return;
if( !subsys.Validate() )
{
CCL_Log.Error( subsys.strReturn, subsys.Name + " :: Validation" );
return;
}
if( subsys.strReturn != string.Empty )
{
CCL_Log.Message( subsys.strReturn, subsys.Name + " :: Validations" );
}
}
if( subsys.strReturn != string.Empty )
else
{
CCL_Log.Message( subsys.strReturn, subsys.Name + " :: Validations" );
subsys.State = SubControllerState.Validated;
}
}

Expand All @@ -181,14 +188,21 @@ public static void Initialize()
subControllers.Sort( (x,y) => ( x.InitializationPriority > y.InitializationPriority ) ? -1 : 1 );
foreach( var subsys in subControllers )
{
if( !subsys.Initialize() )
if( subsys.InitializationPriority != SubController.DontProcessThisPhase )
{
CCL_Log.Error( subsys.strReturn, subsys.Name + " :: Initialization" );
return;
if( !subsys.Initialize() )
{
CCL_Log.Error( subsys.strReturn, subsys.Name + " :: Initialization" );
return;
}
if( subsys.strReturn != string.Empty )
{
CCL_Log.Message( subsys.strReturn, subsys.Name + " :: Initialization" );
}
}
if( subsys.strReturn != string.Empty )
else
{
CCL_Log.Message( subsys.strReturn, subsys.Name + " :: Initialization" );
subsys.State = SubControllerState.Ok;
}
}

Expand All @@ -208,21 +222,24 @@ public void ReIntialize()

foreach( var subsys in subControllers )
{
if(
( subsys.State >= SubControllerState._BaseOk )&&
( subsys.ReinitializeOnGameLoad )
)
if( subsys.InitializationPriority != SubController.DontProcessThisPhase )
{
if( !subsys.Initialize() )
if(
( subsys.State >= SubControllerState._BaseOk )&&
( subsys.ReinitializeOnGameLoad )
)
{
CCL_Log.Error( subsys.strReturn, subsys.Name + " :: Reinitialization" );
gameValid = false;
enabled = false;
return;
}
if( subsys.strReturn != string.Empty )
{
CCL_Log.Message( subsys.strReturn, subsys.Name + " :: Reinitialization" );
if( !subsys.Initialize() )
{
CCL_Log.Error( subsys.strReturn, subsys.Name + " :: Reinitialization" );
gameValid = false;
enabled = false;
return;
}
if( subsys.strReturn != string.Empty )
{
CCL_Log.Message( subsys.strReturn, subsys.Name + " :: Reinitialization" );
}
}
}
}
Expand All @@ -240,19 +257,22 @@ public void UpdateSubControllers()

foreach( var subsys in UpdateControllers )
{
if(
( subsys.State == SubControllerState.Ok )&&
( subsys.IsHashIntervalTick( ticks ) )
)
if( subsys.UpdatePriority != SubController.DontProcessThisPhase )
{
if( !subsys.Update() )
{
CCL_Log.Error( subsys.strReturn, subsys.Name + " :: Update" );
return;
}
if( subsys.strReturn != string.Empty )
if(
( subsys.State == SubControllerState.Ok )&&
( subsys.IsHashIntervalTick( ticks ) )
)
{
CCL_Log.Message( subsys.strReturn, subsys.Name + " :: Update" );
if( !subsys.Update() )
{
CCL_Log.Error( subsys.strReturn, subsys.Name + " :: Update" );
return;
}
if( subsys.strReturn != string.Empty )
{
CCL_Log.Message( subsys.strReturn, subsys.Name + " :: Update" );
}
}
}
}
Expand Down
16 changes: 9 additions & 7 deletions DLL_Project/Controller/SubController.cs
Expand Up @@ -28,6 +28,8 @@ public enum SubControllerState
internal abstract class SubController
{

public const int DontProcessThisPhase = -99999;

// Controller name
public abstract string Name { get; }

Expand Down Expand Up @@ -59,24 +61,24 @@ public virtual int ValidationPriority
{
get
{
// Default class property for sub-classes which don't need to [de]elevate this
return 0;
// Default class property for sub-classes which don't need to do this
return DontProcessThisPhase;
}
}
public virtual int InitializationPriority
{
get
{
// Default class property for sub-classes which don't need to [de]elevate this
return 0;
// Default class property for sub-classes which don't need to do this
return DontProcessThisPhase;
}
}
public virtual int UpdatePriority
{
get
{
// Default class property for sub-classes which don't need to [de]elevate this
return 0;
// Default class property for sub-classes which don't need to do this
return DontProcessThisPhase;
}
}

Expand All @@ -101,7 +103,7 @@ public virtual bool ReinitializeOnGameLoad
// Entry with controller state Uninitialized
// Exit with ValidationError (false) on error
// Validated (true) if ready for initialization
public virtual bool Validate ()
public virtual bool Validate()
{
// Default class method for sub-classes which don't require validation
strReturn = string.Empty;
Expand Down
2 changes: 1 addition & 1 deletion DLL_Project/SubControllers/HelpSubController.cs
Expand Up @@ -27,7 +27,7 @@ public override int InitializationPriority
{
get
{
return -100;
return -75;
}
}
public override bool Initialize()
Expand Down
17 changes: 16 additions & 1 deletion DLL_Project/SubControllers/LibrarySubController.cs
Expand Up @@ -32,6 +32,15 @@ public override int ValidationPriority
}
}

// Override sequence priorities
public override int InitializationPriority
{
get
{
return -100;
}
}

// Validate ModHelperDefs, CCL load order, CCL versioning
public override bool Validate()
{
Expand Down Expand Up @@ -175,7 +184,13 @@ public override bool Validate()
public override bool Initialize()
{
// Don't need to keep checking on this controller
strReturn = string.Empty;
if( !Window_ModConfigurationMenu.InitializeMCMs() )
{
strReturn = "Errors initializing Mod Configuration Menus";
State = SubControllerState.InitializationError;
return false;
}
strReturn = "Mod Configuration Menus initialized";
State = SubControllerState.Hybernating;
return true;
}
Expand Down
7 changes: 4 additions & 3 deletions DLL_Project/Windows/Window_ModConfigurationMenu.cs
Expand Up @@ -108,13 +108,13 @@ public override Vector2 InitialWindowSize
{
get
{
return new Vector2( 600f, 400f );
return new Vector2( 600f, 600f );
}
}

#region Constructor

static Window_ModConfigurationMenu()
public static bool InitializeMCMs()
{
allMenus = new List<MenuWorkers>();

Expand All @@ -131,6 +131,7 @@ static Window_ModConfigurationMenu()
if( menu.worker == null )
{
CCL_Log.Error( "Unable to create instance of {0}", mcm.mcmClass.ToString() );
return false;
}
else
{
Expand All @@ -142,7 +143,7 @@ static Window_ModConfigurationMenu()
}
}
}

return true;
}

public Window_ModConfigurationMenu()
Expand Down
Binary file not shown.

1 comment on commit f3f808f

@ForsakenShell
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This commit resolves issue #70

Please sign in to comment.