Stop medium behaviors retaining configs
This commit is contained in:
parent
8930b7945e
commit
85eca69d37
13 changed files with 83 additions and 58 deletions
|
|
@ -28,7 +28,8 @@ public class CapacitorConfig : RuntimeBehaviorConfig
|
|||
|
||||
public class Capacitor : Behavior
|
||||
{
|
||||
private CapacitorConfig _data;
|
||||
private readonly PerformanceStat _capacity;
|
||||
private readonly PerformanceStat _efficiency;
|
||||
|
||||
public float Charge { get; private set; }
|
||||
public float Capacity { get; private set; }
|
||||
|
|
@ -42,18 +43,20 @@ public class Capacitor : Behavior
|
|||
|
||||
public Capacitor(CapacitorConfig data, EquippedItem item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_capacity = data.Capacity;
|
||||
_efficiency = data.Efficiency;
|
||||
}
|
||||
|
||||
public Capacitor(CapacitorConfig data, ConsumableItemEffect item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_capacity = data.Capacity;
|
||||
_efficiency = data.Efficiency;
|
||||
}
|
||||
|
||||
public override bool Execute(float dt)
|
||||
{
|
||||
Capacity = Evaluate(_data.Capacity);
|
||||
Efficiency = Evaluate(_data.Efficiency);
|
||||
Capacity = Evaluate(_capacity);
|
||||
Efficiency = Evaluate(_efficiency);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,15 +21,11 @@ public class CockpitConfig : RuntimeBehaviorConfig
|
|||
|
||||
public class Cockpit : Behavior
|
||||
{
|
||||
private CockpitConfig _data;
|
||||
|
||||
public Cockpit(CockpitConfig data, EquippedItem item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
}
|
||||
|
||||
public Cockpit(CockpitConfig data, ConsumableItemEffect item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,15 +21,11 @@ public class HeatStorageConfig : RuntimeBehaviorConfig
|
|||
|
||||
public class HeatStorage : Behavior
|
||||
{
|
||||
private HeatStorageConfig _data;
|
||||
|
||||
public HeatStorage(HeatStorageConfig data, EquippedItem item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
}
|
||||
|
||||
public HeatStorage(HeatStorageConfig data, ConsumableItemEffect item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,22 +37,31 @@ public class MiningTool : Behavior
|
|||
public Guid AsteroidBelt;
|
||||
public int Asteroid;
|
||||
|
||||
private MiningToolConfig _data;
|
||||
private readonly PerformanceStat _damagePerSecond;
|
||||
private readonly PerformanceStat _efficiency;
|
||||
private readonly PerformanceStat _penetration;
|
||||
private readonly PerformanceStat _range;
|
||||
public float Range { get; private set; }
|
||||
|
||||
public MiningTool(MiningToolConfig data, EquippedItem item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_damagePerSecond = data.DamagePerSecond;
|
||||
_efficiency = data.Efficiency;
|
||||
_penetration = data.Penetration;
|
||||
_range = data.Range;
|
||||
}
|
||||
|
||||
public MiningTool(MiningToolConfig data, ConsumableItemEffect item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_damagePerSecond = data.DamagePerSecond;
|
||||
_efficiency = data.Efficiency;
|
||||
_penetration = data.Penetration;
|
||||
_range = data.Range;
|
||||
}
|
||||
|
||||
public override bool Execute(float dt)
|
||||
{
|
||||
Range = Evaluate(_data.Range);
|
||||
Range = Evaluate(_range);
|
||||
var belt = Entity.Zone.AsteroidBelts[AsteroidBelt];
|
||||
if (AsteroidBelt != Guid.Empty &&
|
||||
Entity.Zone.AsteroidExists(AsteroidBelt, Asteroid) &&
|
||||
|
|
@ -62,12 +71,12 @@ public class MiningTool : Behavior
|
|||
Entity,
|
||||
AsteroidBelt,
|
||||
Asteroid,
|
||||
Evaluate(_data.DamagePerSecond) * dt,
|
||||
Evaluate(_data.Efficiency),
|
||||
Evaluate(_data.Penetration));
|
||||
Evaluate(_damagePerSecond) * dt,
|
||||
Evaluate(_efficiency),
|
||||
Evaluate(_penetration));
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,7 +34,9 @@ public class ResourceScanner : Behavior, IAlwaysUpdatedBehavior
|
|||
{
|
||||
public int Asteroid = -1;
|
||||
|
||||
private ResourceScannerConfig _data;
|
||||
private readonly PerformanceStat _range;
|
||||
private readonly PerformanceStat _minimumDensity;
|
||||
private readonly PerformanceStat _scanDuration;
|
||||
private float _scanTime;
|
||||
private Guid _scanTarget;
|
||||
|
||||
|
|
@ -58,12 +60,16 @@ public class ResourceScanner : Behavior, IAlwaysUpdatedBehavior
|
|||
|
||||
public ResourceScanner(ResourceScannerConfig data, EquippedItem item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_range = data.Range;
|
||||
_minimumDensity = data.MinimumDensity;
|
||||
_scanDuration = data.ScanDuration;
|
||||
}
|
||||
|
||||
public ResourceScanner(ResourceScannerConfig data, ConsumableItemEffect item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_range = data.Range;
|
||||
_minimumDensity = data.MinimumDensity;
|
||||
_scanDuration = data.ScanDuration;
|
||||
}
|
||||
|
||||
public override bool Execute(float dt)
|
||||
|
|
@ -100,8 +106,8 @@ public class ResourceScanner : Behavior, IAlwaysUpdatedBehavior
|
|||
|
||||
public void Update(float delta)
|
||||
{
|
||||
Range = Evaluate(_data.Range);
|
||||
MinimumDensity = Evaluate(_data.MinimumDensity);
|
||||
ScanDuration = Evaluate(_data.ScanDuration);
|
||||
Range = Evaluate(_range);
|
||||
MinimumDensity = Evaluate(_minimumDensity);
|
||||
ScanDuration = Evaluate(_scanDuration);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,21 +29,24 @@ public class Shield : Behavior, IProgressBehavior
|
|||
public float Efficiency { get; private set; }
|
||||
public float EnergyUsage { get; private set; }
|
||||
|
||||
private ShieldConfig _data;
|
||||
private readonly PerformanceStat _efficiency;
|
||||
private readonly PerformanceStat _energyUsage;
|
||||
|
||||
public Shield(ShieldConfig data, EquippedItem item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_efficiency = data.Efficiency;
|
||||
_energyUsage = data.EnergyUsage;
|
||||
}
|
||||
public Shield(ShieldConfig data, ConsumableItemEffect item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_efficiency = data.Efficiency;
|
||||
_energyUsage = data.EnergyUsage;
|
||||
}
|
||||
|
||||
public override bool Execute(float dt)
|
||||
{
|
||||
Efficiency = Evaluate(_data.Efficiency);
|
||||
EnergyUsage = Evaluate(_data.EnergyUsage);
|
||||
Efficiency = Evaluate(_efficiency);
|
||||
EnergyUsage = Evaluate(_energyUsage);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
@ -59,4 +62,4 @@ public class Shield : Behavior, IProgressBehavior
|
|||
}
|
||||
|
||||
public virtual float Progress => Item.ThermalPerformance;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,17 +19,13 @@ public class SwitchConfig : RuntimeBehaviorConfig
|
|||
|
||||
public class Switch : Behavior, IActivatedBehavior
|
||||
{
|
||||
private SwitchConfig _data;
|
||||
|
||||
public bool Activated { get; set; }
|
||||
|
||||
public Switch(SwitchConfig data, EquippedItem item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
}
|
||||
public Switch(SwitchConfig data, ConsumableItemEffect item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
}
|
||||
|
||||
public override bool Execute(float dt)
|
||||
|
|
@ -46,4 +42,4 @@ public class Switch : Behavior, IActivatedBehavior
|
|||
{
|
||||
Activated = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,23 +29,24 @@ public class ThermotoggleConfig : RuntimeBehaviorConfig
|
|||
public class Thermotoggle : Behavior
|
||||
{
|
||||
public float TargetTemperature;
|
||||
private ThermotoggleConfig _data;
|
||||
|
||||
public ThermotoggleConfig ThermotoggleConfig => _data;
|
||||
public bool Adjustable { get; }
|
||||
private readonly bool _highPass;
|
||||
|
||||
public Thermotoggle(ThermotoggleConfig data, EquippedItem item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
TargetTemperature = data.TargetTemperature;
|
||||
_highPass = data.HighPass;
|
||||
Adjustable = data.Adjustable;
|
||||
}
|
||||
public Thermotoggle(ThermotoggleConfig data, ConsumableItemEffect item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
TargetTemperature = data.TargetTemperature;
|
||||
_highPass = data.HighPass;
|
||||
Adjustable = data.Adjustable;
|
||||
}
|
||||
|
||||
public override bool Execute(float dt)
|
||||
{
|
||||
return Temperature < TargetTemperature ^ _data.HighPass;
|
||||
return Temperature < TargetTemperature ^ _highPass;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,13 +46,19 @@ public class Thruster : Behavior, IAnalogBehavior
|
|||
set => _input = saturate(value);
|
||||
}
|
||||
|
||||
private ThrusterConfig _data;
|
||||
private readonly PerformanceStat _thrust;
|
||||
private readonly PerformanceStat _visibility;
|
||||
private readonly PerformanceStat _heat;
|
||||
private readonly PerformanceStat _energyUsage;
|
||||
|
||||
private float _input;
|
||||
|
||||
public Thruster(ThrusterConfig data, EquippedItem item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_thrust = data.Thrust;
|
||||
_visibility = data.Visibility;
|
||||
_heat = data.Heat;
|
||||
_energyUsage = data.EnergyUsage;
|
||||
ParticlesPrefab = data.ParticlesPrefab;
|
||||
var hullShape = ItemManager.GetRuntimeShape(Entity.Hull);
|
||||
var itemShape = ItemManager.GetRuntimeShape(item.EquippableItem);
|
||||
|
|
@ -60,28 +66,31 @@ public class Thruster : Behavior, IAnalogBehavior
|
|||
var itemCenter = hullShape.Inset(itemShape, item.Position, item.EquippableItem.Rotation).CenterOfMass;
|
||||
var toCenter = hullCenter - itemCenter;
|
||||
Torque = -dot(normalize(toCenter), float2(1, 0).Rotate(item.EquippableItem.Rotation));
|
||||
Thrust = Evaluate(_data.Thrust);
|
||||
Thrust = Evaluate(_thrust);
|
||||
}
|
||||
|
||||
public Thruster(ThrusterConfig data, ConsumableItemEffect item) : base(data, item)
|
||||
{
|
||||
_data = data;
|
||||
_thrust = data.Thrust;
|
||||
_visibility = data.Visibility;
|
||||
_heat = data.Heat;
|
||||
_energyUsage = data.EnergyUsage;
|
||||
ParticlesPrefab = data.ParticlesPrefab;
|
||||
Torque = 0;
|
||||
Thrust = Evaluate(_data.Thrust);
|
||||
Thrust = Evaluate(_thrust);
|
||||
}
|
||||
|
||||
public override bool Execute(float dt)
|
||||
{
|
||||
Item.SetAudioParameter(SpecialAudioParameter.Intensity, _input);
|
||||
if(_input > .01f && Entity.TryConsumeEnergy(_input * Evaluate(_data.EnergyUsage)))
|
||||
if(_input > .01f && Entity.TryConsumeEnergy(_input * Evaluate(_energyUsage)))
|
||||
{
|
||||
Thrust = Evaluate(_data.Thrust);
|
||||
Thrust = Evaluate(_thrust);
|
||||
Entity.Velocity -= Direction.xz * _input * Thrust / Entity.Mass * dt;
|
||||
Entity.Direction = mul(Entity.Direction,
|
||||
Unity.Mathematics.float2x2.Rotate(_input * Torque * Thrust * ItemManager.GameplaySettings.TorqueMultiplier / Entity.Mass * dt));
|
||||
AddHeat(_input * Evaluate(_data.Heat) * dt);
|
||||
var vis = _input * Evaluate(_data.Visibility);
|
||||
AddHeat(_input * Evaluate(_heat) * dt);
|
||||
var vis = _input * Evaluate(_visibility);
|
||||
if (!Entity.VisibilitySources.TryGetValue(this, out var existingVisibility) || vis > existingVisibility)
|
||||
Entity.VisibilitySources[this] = vis;
|
||||
return true;
|
||||
|
|
|
|||
Loading…
Reference in a new issue