mirror of
https://github.com/WWhiteDreamProject/wwdpublic.git
synced 2026-05-02 21:17:30 +03:00
# Description By extremely popular demand(Both internally, and from our downstreams), this PR reimplements Part Upgrading. Since some of the systems that this PR touches were substantially changed since the removal of Parts, I had to do a lot of very in depth by-hand edits of individual systems. Shockingly, the only one that really proved any trouble was Cloning System, so I'm genuinely surprised wizden didn't substantially touch any of these codes since removing parts.. # Changelog 🆑 - add: Part Upgrading has returned! --------- Signed-off-by: VMSolidus <evilexecutive@gmail.com> Co-authored-by: DEATHB4DEFEAT <77995199+DEATHB4DEFEAT@users.noreply.github.com>
53 lines
2.1 KiB
C#
53 lines
2.1 KiB
C#
using Content.Shared.Gravity;
|
|
using Content.Shared.Construction.Prototypes;
|
|
using Robust.Shared.Serialization.TypeSerializers.Implementations.Custom.Prototype;
|
|
|
|
namespace Content.Server.Gravity
|
|
{
|
|
[RegisterComponent]
|
|
[Access(typeof(GravityGeneratorSystem))]
|
|
public sealed partial class GravityGeneratorComponent : SharedGravityGeneratorComponent
|
|
{
|
|
// 1% charge per second.
|
|
[ViewVariables(VVAccess.ReadWrite)] [DataField("chargeRate")] public float ChargeRate { get; set; } = 0.01f;
|
|
// The gravity generator has two power values.
|
|
// Idle power is assumed to be the power needed to run the control systems and interface.
|
|
[DataField("idlePower")] public float IdlePowerUse { get; set; }
|
|
// Active power is the power needed to keep the gravity field stable.
|
|
[DataField("activePower")] public float ActivePowerUse { get; set; }
|
|
[DataField("lightRadiusMin")] public float LightRadiusMin { get; set; }
|
|
[DataField("lightRadiusMax")] public float LightRadiusMax { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
/// Is the power switch on?
|
|
/// </summary>
|
|
[DataField("switchedOn")]
|
|
public bool SwitchedOn { get; set; } = true;
|
|
|
|
/// <summary>
|
|
/// Is the gravity generator intact?
|
|
/// </summary>
|
|
[DataField("intact")]
|
|
public bool Intact { get; set; } = true;
|
|
|
|
[DataField("maxCharge")]
|
|
public float MaxCharge { get; set; } = 1;
|
|
|
|
// 0 -> 1
|
|
[ViewVariables(VVAccess.ReadWrite)] [DataField("charge")] public float Charge { get; set; } = 1;
|
|
|
|
[DataField(customTypeSerializer: typeof(PrototypeIdSerializer<MachinePartPrototype>))]
|
|
public string MachinePartMaxChargeMultiplier = "Capacitor";
|
|
|
|
/// <summary>
|
|
/// Is the gravity generator currently "producing" gravity?
|
|
/// </summary>
|
|
[ViewVariables]
|
|
public bool GravityActive { get; set; } = false;
|
|
|
|
// Do we need a UI update even if the charge doesn't change? Used by power button.
|
|
[ViewVariables] public bool NeedUIUpdate { get; set; }
|
|
}
|
|
}
|