Skip to content

Commit

Permalink
[adds]
Browse files Browse the repository at this point in the history
+ Initialize() (virtual) and InjectionSet (field) for ModConfigurationMenu
+ Examples for facility and trader kind (stock generator) injectors

[fixes]
+ Small bugs in the facility and trader kind (stock generator) injectors

[changes]
+ Library version to 0.12.7.2
  • Loading branch information
ForsakenShell committed Apr 2, 2016
1 parent a1c40c3 commit ea9dc8d
Show file tree
Hide file tree
Showing 19 changed files with 153 additions and 23 deletions.
49 changes: 38 additions & 11 deletions DLL_Project/Defs/ModHelperDef/Facilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,19 +88,41 @@ public bool IsValid( ModHelperDef def, ref string errors

bool isValid = true;

foreach( var facility in def.Facilities )
for( int index = 0; index < def.Facilities.Count; ++index )
{
// Get comps
if( facility.facility.GetCompProperties( typeof( CompFacility ) ) == null )
var facilitySet = def.Facilities[ index ];
if( facilitySet.facility.NullOrEmpty() )
{
errors += string.Format( "'{0}' is missing CompFacility for facility injection", facility.facility.defName );
errors += string.Format( "\n\tfacility in Facilities {0} is null", index );
isValid = false;
}
foreach( var targetDef in facility.targetDefs )
else
{
if( targetDef.GetCompProperties( typeof( CompAffectedByFacilities ) ) == null )
var facilityDef = DefDatabase<ThingDef>.GetNamed( facilitySet.facility, false );
if( facilityDef == null )
{
errors += string.Format( "Unable to resolve facility '{0}' in Facilities", facilitySet.facility );
isValid = false;
}
else if( facilityDef.GetCompProperties( typeof( CompFacility ) ) == null )
{
errors += string.Format( "'{0}' is missing CompAffectedByFacilities for facility injection", targetDef.defName );
// Check comps
errors += string.Format( "'{0}' is missing CompFacility for facility injection", facilitySet.facility );
isValid = false;
}
}
for( int index2 = 0; index2 < facilitySet.targetDefs.Count; ++index2 )
{
var target = facilitySet.targetDefs[ index2 ];
var targetDef = DefDatabase<ThingDef>.GetNamed( target, false );
if( targetDef == null )
{
errors += string.Format( "Unable to resolve targetDef '{0}' in Facilities", target );
isValid = false;
}
else if( targetDef.GetCompProperties( typeof( CompAffectedByFacilities ) ) == null )
{
errors += string.Format( "'{0}' is missing CompAffectedByFacilities for facility injection", target );
isValid = false;
}
}
Expand All @@ -119,10 +141,13 @@ public bool Injected( ModHelperDef def )

foreach( var facility in def.Facilities )
{
foreach( var targetDef in facility.targetDefs )
var facilityDef = DefDatabase<ThingDef>.GetNamed( facility.facility );

foreach( var target in facility.targetDefs )
{
var targetDef = DefDatabase<ThingDef>.GetNamed( target );
var targetComp = targetDef.GetCompProperties( typeof( CompAffectedByFacilities ) );
if( !targetComp.linkableFacilities.Contains( facility.facility ) )
if( !targetComp.linkableFacilities.Contains( facilityDef ) )
{
return false;
}
Expand All @@ -141,9 +166,11 @@ public bool Inject( ModHelperDef def )

foreach( var facility in def.Facilities )
{
foreach( var targetDef in facility.targetDefs )
var facilityDef = DefDatabase<ThingDef>.GetNamed( facility.facility );
foreach( var target in facility.targetDefs )
{
LinkFacility( targetDef, facility.facility );
var targetDef = DefDatabase<ThingDef>.GetNamed( target );
LinkFacility( targetDef, facilityDef );
}
}

Expand Down
20 changes: 18 additions & 2 deletions DLL_Project/Defs/ModHelperDef/TraderKinds.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,21 @@ public bool IsValid( ModHelperDef def, ref string errors
for( int index = 0; index < def.TraderKinds.Count; ++index )
{
var traderKind = def.TraderKinds[ index ];
if( traderKind.targetDef == null )
if( traderKind.targetDef.NullOrEmpty() )
{
errors += string.Format( "\n\ttargetDef in TraderKinds {0} is null", index );
isValid = false;
}
else
{
var target = traderKind.targetDef;
var traderKindDef = DefDatabase<TraderKindDef>.GetNamed( target, false );
if( traderKindDef == null )
{
errors += string.Format( "Unable to resolve targetDef '{0}' in TraderKinds", target );
isValid = false;
}
}
for( int index2 = 0; index2 < traderKind.stockGenerators.Count; ++index2 )
{
if( traderKind.stockGenerators[ index2 ] == null )
Expand Down Expand Up @@ -90,9 +100,15 @@ public bool Inject( ModHelperDef def )
var targetDef = traderKind.targetDef;
foreach( var stockGenerator in traderKind.stockGenerators )
{
targetDef.stockGenerators.Add( stockGenerator );
var traderKindDef = DefDatabase<TraderKindDef>.GetNamed( targetDef, false );
traderKindDef.stockGenerators.Add( stockGenerator );
stockGenerator.PostLoad();
stockGenerator.ResolveReferences();
CCL_Log.TraceMod(
def,
Verbosity.Injections,
string.Format( "Injecting {0} into {1}", stockGenerator.GetType().Name, traderKindDef.label ),
"TraderKinds" );
}
}

Expand Down
2 changes: 1 addition & 1 deletion DLL_Project/Extensions/Find_Extensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ public static LoadedMod ModByModIndex( int Index )
}

// Get the ModHelperDef for a mod
public static ModHelperDef ModHelperDefForMod( LoadedMod mod )
public static ModHelperDef ModHelperDefForMod( LoadedMod mod )
{
if( mod == null )
{
Expand Down
6 changes: 6 additions & 0 deletions DLL_Project/StaticClasses/ModConfigurationMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ public abstract class ModConfigurationMenu

public abstract void ExposeData();

public virtual void Initialize()
{
}

public MCMInjectionSet InjectionSet;

}

}
4 changes: 2 additions & 2 deletions DLL_Project/Structures/FacilityInjectionSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ namespace CommunityCoreLibrary
public struct FacilityInjectionSet
{

public ThingDef facility;
public string facility;

public List<ThingDef> targetDefs;
public List<string> targetDefs;

}

Expand Down
2 changes: 1 addition & 1 deletion DLL_Project/Structures/StockGeneratorInjectionSet.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace CommunityCoreLibrary
public struct StockGeneratorInjectionSet
{

public TraderKindDef targetDef;
public string targetDef;

public List<StockGenerator> stockGenerators;

Expand Down
2 changes: 1 addition & 1 deletion DLL_Project/Version/Version.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public static System.Version Current
// TODO: Fix issue #30 so we can use proper assembly versioning
//System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();
//CCLVersion = assembly.GetName().Version;
versionCurrent = new System.Version( "0.12.7.1" );
versionCurrent = new System.Version( "0.12.7.2" );
}
return versionCurrent;
}
Expand Down
2 changes: 2 additions & 0 deletions DLL_Project/Windows/Window_ModConfigurationMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,8 @@ static Window_ModConfigurationMenu()
}
else
{
menu.worker.InjectionSet = mcm;
menu.worker.Initialize();
allMenus.Add( menu );
LoadMCMData( menu );
}
Expand Down
2 changes: 1 addition & 1 deletion Forum/1_Release_Post.bbc
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[center][img]https://github.com/RimWorldCCLTeam/CommunityCoreLibrary/blob/master/WebGraphics/CCL_Logo_Long.png?raw=true[/img]
v0.12.7.1
v0.12.7.2

[glow=red,2,300]This forum thread and the first 10 posts serve as the documentation/manual.

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>

<name>Community Core Library v0.12.7.1</name>
<name>Community Core Library v0.12.7.2</name>

<author>RimWorld CCL Team</author>

Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<ModName>Community Core Library</ModName>

<version>0.12.7.1</version>
<version>0.12.7.2</version>

<MapComponents>
<li>CommunityCoreLibrary.HideItemManager</li>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>
<name>Facility Injector</name>
<author>RimWorld CCL Team</author>
<url>n/a</url>
<targetVersion>Community Core Library v0.12.7</targetVersion>
<description>
This is an example of how to inject facilities into buildings.

Demonstrates:
ModHelperDef Facilities
</description>
</ModMetaData>
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>

<ModHelperDef>
<defName>FacilityInjector</defName>

<ModName>Facility Injector</ModName>

<version>0.12.7</version>

<Facilities>
<li>
<facility>ToolCabinet</facility>

<targetDefs>
<li>Bed</li>
<li>RoyalBed</li>
</targetDefs>
</li>
</Facilities>

</ModHelperDef>

</Defs>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>
<name>Trader Injector</name>
<author>RimWorld CCL Team</author>
<url>n/a</url>
<targetVersion>Community Core Library v0.12.7</targetVersion>
<description>
This is an example of how to inject stock generators into traders.

Demonstrates:
ModHelperDef TraderKinds
</description>
</ModMetaData>
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8" ?>
<Defs>

<ModHelperDef>
<defName>TraderInjector</defName>

<ModName>Trader Injector</ModName>

<version>0.12.7</version>

<TraderKinds>
<li>
<targetDef>PirateMerchant</targetDef>

<stockGenerators>
<li Class="StockGenerator_SingleDef">
<thingDef>Silver</thingDef>
<countRange>
<min>100000</min>
<max>200000</max>
</countRange>
</li>
</stockGenerators>
</li>
</TraderKinds>

</ModHelperDef>

</Defs>
2 changes: 1 addition & 1 deletion _Mod/User Release/Community Core Library/About/About.xml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<ModMetaData>

<name>Community Core Library v0.12.7.1</name>
<name>Community Core Library v0.12.7.2</name>

<author>RimWorld CCL Team</author>

Expand Down
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<ModName>Community Core Library</ModName>

<version>0.12.7.1</version>
<version>0.12.7.2</version>

<MapComponents>
<li>CommunityCoreLibrary.HideItemManager</li>
Expand Down

0 comments on commit ea9dc8d

Please sign in to comment.