diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.dll b/1.6/1.6/Assemblies/ArachnaeSwarm.dll
index eeffb18..9da37bc 100644
Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.dll and b/1.6/1.6/Assemblies/ArachnaeSwarm.dll differ
diff --git a/1.6/1.6/Assemblies/ArachnaeSwarm.pdb b/1.6/1.6/Assemblies/ArachnaeSwarm.pdb
index 0627f59..3b3c8bc 100644
Binary files a/1.6/1.6/Assemblies/ArachnaeSwarm.pdb and b/1.6/1.6/Assemblies/ArachnaeSwarm.pdb differ
diff --git a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
index 56b0905..1db2803 100644
--- a/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
+++ b/Source/ArachnaeSwarm/ArachnaeSwarm.csproj
@@ -241,6 +241,7 @@
+
@@ -259,6 +260,7 @@
+
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompQueuedInteractiveProducer.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompQueuedInteractiveProducer.cs
index 3f266cd..63e1854 100644
--- a/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompQueuedInteractiveProducer.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompQueuedInteractiveProducer.cs
@@ -55,16 +55,16 @@ namespace ArachnaeSwarm
[StaticConstructorOnStartup]
public class CompQueuedInteractiveProducer : ThingComp
{
- private List productionOrders = new List();
+ protected List productionOrders = new List();
public ProcessDef selectedProcess;
- private CompRefuelableNutrition _fuelComp;
- private CompAffectedByFacilities _facilitiesComp;
- private List _cachedProcesses;
+ protected CompRefuelableNutrition _fuelComp;
+ protected CompAffectedByFacilities _facilitiesComp;
+ protected List _cachedProcesses;
public CompProperties_QueuedInteractiveProducer Props => (CompProperties_QueuedInteractiveProducer)props;
- private CompRefuelableNutrition FuelComp => _fuelComp ?? (_fuelComp = parent.GetComp());
- private CompAffectedByFacilities FacilitiesComp => _facilitiesComp ?? (_facilitiesComp = parent.GetComp());
+ protected CompRefuelableNutrition FuelComp => _fuelComp ?? (_fuelComp = parent.GetComp());
+ protected CompAffectedByFacilities FacilitiesComp => _facilitiesComp ?? (_facilitiesComp = parent.GetComp());
public List Processes
{
@@ -225,7 +225,7 @@ namespace ArachnaeSwarm
return (finalQuality, progress, order.temperaturePenaltyPercent);
}
- private void FinishProduction(QueuedProcessOrder order)
+ protected virtual void FinishProduction(QueuedProcessOrder order)
{
if (order.process == null)
{
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompQueuedInteractiveProducerWithFlux.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompQueuedInteractiveProducerWithFlux.cs
index 4634d08..64f8591 100644
--- a/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompQueuedInteractiveProducerWithFlux.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_CompInteractiveProducer/CompQueuedInteractiveProducerWithFlux.cs
@@ -25,7 +25,7 @@ namespace ArachnaeSwarm
public float NeutronFlux => neutronFlux;
public float RawFlux => neutronFlux;
public FluxMode CurrentFluxMode => fluxMode;
- public float FluxEfficiency => IFluxController.GetEfficiency(neutronFlux);
+ public float FluxEfficiency => IFluxControllerExtensions.GetEfficiency(neutronFlux);
public bool IsAutoMode => fluxMode != FluxMode.Manual;
public bool IsIncubating => IsAnyOrderActive;
public bool IsDormant => neutronFlux < 0.05f;
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_SpawnPawnFromList/CompQueuedPawnSpawner.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_SpawnPawnFromList/CompQueuedPawnSpawner.cs
index 87d90b8..e7e5739 100644
--- a/Source/ArachnaeSwarm/Building_Comps/ARA_SpawnPawnFromList/CompQueuedPawnSpawner.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_SpawnPawnFromList/CompQueuedPawnSpawner.cs
@@ -23,16 +23,16 @@ namespace ArachnaeSwarm
public class CompQueuedPawnSpawner : ThingComp
{
- private List productionOrders = new List();
+ protected List productionOrders = new List();
public QueuedPawnSpawnEntry selectedEntry;
- private CompRefuelableNutrition _fuelComp;
- private CompAffectedByFacilities _facilitiesComp;
+ protected CompRefuelableNutrition _fuelComp;
+ protected CompAffectedByFacilities _facilitiesComp;
public CompProperties_QueuedPawnSpawner Props => (CompProperties_QueuedPawnSpawner)props;
- private CompRefuelableNutrition FuelComp => _fuelComp ?? (_fuelComp = parent.GetComp());
- private CompAffectedByFacilities FacilitiesComp => _facilitiesComp ?? (_facilitiesComp = parent.GetComp());
+ protected CompRefuelableNutrition FuelComp => _fuelComp ?? (_fuelComp = parent.GetComp());
+ protected CompAffectedByFacilities FacilitiesComp => _facilitiesComp ?? (_facilitiesComp = parent.GetComp());
public override void Initialize(CompProperties props)
{
diff --git a/Source/ArachnaeSwarm/Building_Comps/ARA_SpawnPawnFromList/CompQueuedPawnSpawnerWithFlux.cs b/Source/ArachnaeSwarm/Building_Comps/ARA_SpawnPawnFromList/CompQueuedPawnSpawnerWithFlux.cs
index 4e3dcd9..60cf8de 100644
--- a/Source/ArachnaeSwarm/Building_Comps/ARA_SpawnPawnFromList/CompQueuedPawnSpawnerWithFlux.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/ARA_SpawnPawnFromList/CompQueuedPawnSpawnerWithFlux.cs
@@ -25,7 +25,7 @@ namespace ArachnaeSwarm
public float NeutronFlux => neutronFlux;
public float RawFlux => neutronFlux;
public FluxMode CurrentFluxMode => fluxMode;
- public float FluxEfficiency => IFluxController.GetEfficiency(neutronFlux);
+ public float FluxEfficiency => IFluxControllerExtensions.GetEfficiency(neutronFlux);
public bool IsAutoMode => fluxMode != FluxMode.Manual;
public bool IsIncubating => IsAnyOrderActive;
public bool IsDormant => neutronFlux < 0.05f;
diff --git a/Source/ArachnaeSwarm/Building_Comps/CompRefuelableNutrition.cs b/Source/ArachnaeSwarm/Building_Comps/CompRefuelableNutrition.cs
index bf5a2e9..00973ab 100644
--- a/Source/ArachnaeSwarm/Building_Comps/CompRefuelableNutrition.cs
+++ b/Source/ArachnaeSwarm/Building_Comps/CompRefuelableNutrition.cs
@@ -116,10 +116,10 @@ namespace ArachnaeSwarm
}
}
- public override bool ShouldAutoRefuelNow =>
+ public new bool ShouldAutoRefuelNow =>
allowAutoRefuel && TargetFuelLevel > 0.01f && (Fuel < TargetFuelLevel * 0.75f || Fuel == 0f);
- public override bool ShouldAutoRefuelNowIgnoringFuelPct =>
+ public new bool ShouldAutoRefuelNowIgnoringFuelPct =>
allowAutoRefuel && TargetFuelLevel > 0.01f && Fuel < TargetFuelLevel;
// 覆盖基类属性,确保 WorkGiver 扫描时拦截
diff --git a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs
index b8ac223..74b916d 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_EquipmentOotheca/Building_EquipmentOotheca.cs
@@ -35,9 +35,12 @@ namespace ArachnaeSwarm
// === 属性 ===
public IFluxController FluxController => this;
public float NeutronFlux => neutronFlux;
+ public float RawFlux => neutronFlux;
public FluxMode FluxMode => fluxMode;
- public float FluxEfficiency => IFluxController.GetEfficiency(neutronFlux);
+ public FluxMode CurrentFluxMode => fluxMode;
+ public float FluxEfficiency => IFluxControllerExtensions.GetEfficiency(neutronFlux);
public bool IsAutoMode => fluxMode != FluxMode.Manual;
+ public bool IsIncubating => isIncubating;
public bool IsDormant => neutronFlux < 0.05f;
public CompRefuelableNutrition FuelComp => GetComp();
@@ -85,7 +88,7 @@ namespace ArachnaeSwarm
private void InitializeNutrientInfo() { } // 清理完毕
// === Tick方法(带活性系统)===
- public override void Tick()
+ protected override void Tick()
{
base.Tick();
diff --git a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs
index 179f056..32714ac 100644
--- a/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs
+++ b/Source/ArachnaeSwarm/Buildings/Building_Ootheca/Building_Ootheca.cs
@@ -37,9 +37,12 @@ namespace ArachnaeSwarm
// === 属性 ===
public IFluxController FluxController => this;
public float NeutronFlux => neutronFlux;
+ public float RawFlux => neutronFlux;
public FluxMode FluxMode => fluxMode;
- public float FluxEfficiency => IFluxController.GetEfficiency(neutronFlux);
+ public FluxMode CurrentFluxMode => fluxMode;
+ public float FluxEfficiency => IFluxControllerExtensions.GetEfficiency(neutronFlux);
public bool IsAutoMode => fluxMode != FluxMode.Manual;
+ public bool IsIncubating => isIncubating;
public bool IsDormant => neutronFlux < 0.05f;
public CompRefuelableNutrition FuelComp => GetComp();
@@ -195,7 +198,7 @@ namespace ArachnaeSwarm
}
// === Tick方法 ===
- public override void Tick()
+ protected override void Tick()
{
base.Tick();
diff --git a/Source/ArachnaeSwarm/Buildings/IFluxController.cs b/Source/ArachnaeSwarm/Buildings/IFluxController.cs
index 50f8d91..9823c3f 100644
--- a/Source/ArachnaeSwarm/Buildings/IFluxController.cs
+++ b/Source/ArachnaeSwarm/Buildings/IFluxController.cs
@@ -1,3 +1,5 @@
+using UnityEngine;
+
namespace ArachnaeSwarm
{
///
@@ -24,6 +26,21 @@ namespace ArachnaeSwarm
string GetModeShort();
}
+ ///
+ /// IFluxController 扩展方法
+ ///
+ public static class IFluxControllerExtensions
+ {
+ ///
+ /// 计算通量效率(非线性曲线)
+ ///
+ public static float GetEfficiency(float flux)
+ {
+ // 使用平方根曲线:0% -> 0, 50% -> 0.707, 100% -> 1.0
+ return Mathf.Sqrt(Mathf.Clamp01(flux));
+ }
+ }
+
///
/// 活性模式枚举(共享)
///