mirror of
https://github.com/Xevion/RimWorld-Hydroponics-Expanded.git
synced 2025-12-06 13:16:17 -06:00
Add dynamic power usage via Stage setter
This commit is contained in:
@@ -12,10 +12,31 @@ namespace HydroponicsExpanded {
|
||||
[StaticConstructorOnStartup]
|
||||
public class BuildingDenseHydroponicsBasin : Building_PlantGrower, IThingHolder, IPlantToGrowSettable {
|
||||
private ThingOwner _innerContainer;
|
||||
private int _capacity = 4;
|
||||
private int _capacity = 4; // Modified by CapacityExtension DefModExtension
|
||||
private float _highestGrowth = 0f;
|
||||
private CompPowerTrader _compPowerTrader;
|
||||
|
||||
private HydroponicsStage _stage = HydroponicsStage.Sowing;
|
||||
|
||||
public HydroponicsStage Stage {
|
||||
get => _stage;
|
||||
private set {
|
||||
switch (value) {
|
||||
case HydroponicsStage.Sowing:
|
||||
case HydroponicsStage.Harvest:
|
||||
_compPowerTrader.PowerOutput = _compPowerTrader.Props.idlePowerDraw;
|
||||
break;
|
||||
case HydroponicsStage.Grow:
|
||||
_compPowerTrader.PowerOutput = _compPowerTrader.Props.PowerConsumption;
|
||||
break;
|
||||
default:
|
||||
throw new ArgumentOutOfRangeException();
|
||||
}
|
||||
|
||||
_stage = value;
|
||||
}
|
||||
}
|
||||
|
||||
public BuildingDenseHydroponicsBasin() {
|
||||
_innerContainer = new ThingOwner<Thing>(this, false);
|
||||
}
|
||||
@@ -48,14 +69,14 @@ namespace HydroponicsExpanded {
|
||||
if (capacityReached) {
|
||||
SoundStarter.PlayOneShot(SoundDefOf.CryptosleepCasket_Accept,
|
||||
new TargetInfo(Position, Map));
|
||||
_stage = HydroponicsStage.Grow;
|
||||
Stage = HydroponicsStage.Grow;
|
||||
}
|
||||
}
|
||||
|
||||
private void GrowTick() {
|
||||
// If there are no plants stored, reset the growth % and move back to the sowing stage.
|
||||
if (_innerContainer.Count == 0) {
|
||||
_stage = HydroponicsStage.Sowing;
|
||||
Stage = HydroponicsStage.Sowing;
|
||||
_highestGrowth = 0f;
|
||||
return;
|
||||
}
|
||||
@@ -78,7 +99,7 @@ namespace HydroponicsExpanded {
|
||||
|
||||
// When growth is complete, move to the harvesting stage.
|
||||
if (growthTrackingPlant.LifeStage == PlantLifeStage.Mature)
|
||||
_stage = HydroponicsStage.Harvest;
|
||||
Stage = HydroponicsStage.Harvest;
|
||||
}
|
||||
|
||||
private void HarvestTick() {
|
||||
@@ -111,7 +132,7 @@ namespace HydroponicsExpanded {
|
||||
|
||||
// All plants have been harvested. Switch back to sowing stage.
|
||||
if (_innerContainer.Count == 0)
|
||||
_stage = HydroponicsStage.Sowing;
|
||||
Stage = HydroponicsStage.Sowing;
|
||||
}
|
||||
|
||||
private void TickStage(HydroponicsStage stage) {
|
||||
@@ -237,6 +258,8 @@ namespace HydroponicsExpanded {
|
||||
public override void SpawnSetup(Map map, bool respawningAfterLoad) {
|
||||
base.SpawnSetup(map, respawningAfterLoad);
|
||||
|
||||
_compPowerTrader = GetComp<CompPowerTrader>();
|
||||
|
||||
var modExtension = def.GetModExtension<CapacityExtension>();
|
||||
if (modExtension != null) {
|
||||
_capacity = modExtension.capacity;
|
||||
|
||||
Reference in New Issue
Block a user