add fuel indicator to ame fuel jar, minor refactor (#14590)
Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
28
Content.Server/AME/AMESystem.Fuel.cs
Normal file
28
Content.Server/AME/AMESystem.Fuel.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using Content.Server.AME.Components;
|
||||
using Content.Shared.Examine;
|
||||
|
||||
namespace Content.Server.AME;
|
||||
|
||||
/// <summary>
|
||||
/// Adds fuel level info to examine on fuel jars and handles network state.
|
||||
/// </summary>
|
||||
public sealed partial class AMESystem
|
||||
{
|
||||
private void InitializeFuel()
|
||||
{
|
||||
SubscribeLocalEvent<AMEFuelContainerComponent, ExaminedEvent>(OnFuelExamined);
|
||||
}
|
||||
|
||||
private void OnFuelExamined(EntityUid uid, AMEFuelContainerComponent comp, ExaminedEvent args)
|
||||
{
|
||||
if (!args.IsInDetailsRange)
|
||||
return;
|
||||
|
||||
// less than 25%: amount < capacity / 4 = amount * 4 < capacity
|
||||
var low = comp.FuelAmount * 4 < comp.FuelCapacity;
|
||||
args.PushMarkup(Loc.GetString("ame-fuel-container-component-on-examine-detailed-message",
|
||||
("colorName", low ? "darkorange" : "orange"),
|
||||
("amount", comp.FuelAmount),
|
||||
("capacity", comp.FuelCapacity)));
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ using JetBrains.Annotations;
|
||||
namespace Content.Server.AME
|
||||
{
|
||||
[UsedImplicitly]
|
||||
public sealed class AntimatterEngineSystem : EntitySystem
|
||||
public sealed partial class AMESystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly IMapManager _mapManager = default!;
|
||||
[Dependency] private readonly PopupSystem _popupSystem = default!;
|
||||
@@ -29,9 +29,12 @@ namespace Content.Server.AME
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
|
||||
SubscribeLocalEvent<AMEControllerComponent, PowerChangedEvent>(OnAMEPowerChange);
|
||||
SubscribeLocalEvent<AMEControllerComponent, InteractUsingEvent>(OnInteractUsing);
|
||||
SubscribeLocalEvent<AMEPartComponent, InteractUsingEvent>(OnPartInteractUsing);
|
||||
|
||||
InitializeFuel();
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
@@ -1,37 +1,18 @@
|
||||
namespace Content.Server.AME.Components
|
||||
namespace Content.Server.AME.Components;
|
||||
|
||||
// TODO: network and put in shared
|
||||
[RegisterComponent]
|
||||
public sealed class AMEFuelContainerComponent : Component
|
||||
{
|
||||
[RegisterComponent]
|
||||
public sealed class AMEFuelContainerComponent : Component
|
||||
{
|
||||
private int _fuelAmount;
|
||||
private int _maxFuelAmount;
|
||||
/// <summary>
|
||||
/// The amount of fuel in the jar.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("fuelAmount")]
|
||||
public int FuelAmount = 1000;
|
||||
|
||||
/// <summary>
|
||||
/// The amount of fuel in the jar.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public int FuelAmount
|
||||
{
|
||||
get => _fuelAmount;
|
||||
set => _fuelAmount = value;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The maximum fuel capacity of the jar.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
public int MaxFuelAmount
|
||||
{
|
||||
get => _maxFuelAmount;
|
||||
set => _maxFuelAmount = value;
|
||||
}
|
||||
|
||||
protected override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
_maxFuelAmount = 1000;
|
||||
_fuelAmount = 1000;
|
||||
}
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// The maximum fuel capacity of the jar.
|
||||
/// </summary>
|
||||
[ViewVariables(VVAccess.ReadWrite), DataField("fuelCapacity")]
|
||||
public int FuelCapacity = 1000;
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
ame-fuel-container-component-on-examine-detailed-message = Fuel: [color={$colorName}]{$amount}/{$capacity}[/color]
|
||||
Reference in New Issue
Block a user