Add a few useful popups to welders.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using Content.Server.GameObjects.Components.Chemistry;
|
using Content.Server.GameObjects.Components.Chemistry;
|
||||||
using Content.Server.GameObjects.EntitySystems;
|
using Content.Server.GameObjects.EntitySystems;
|
||||||
|
using Content.Server.Interfaces;
|
||||||
using Content.Shared.Chemistry;
|
using Content.Shared.Chemistry;
|
||||||
using Content.Shared.GameObjects;
|
using Content.Shared.GameObjects;
|
||||||
using Content.Shared.GameObjects.Components.Interactable;
|
using Content.Shared.GameObjects.Components.Interactable;
|
||||||
@@ -21,6 +22,7 @@ namespace Content.Server.GameObjects.Components.Interactable
|
|||||||
{
|
{
|
||||||
#pragma warning disable 649
|
#pragma warning disable 649
|
||||||
[Dependency] private IEntitySystemManager _entitySystemManager;
|
[Dependency] private IEntitySystemManager _entitySystemManager;
|
||||||
|
[Dependency] private IServerNotifyManager _notifyManager;
|
||||||
#pragma warning restore 649
|
#pragma warning restore 649
|
||||||
|
|
||||||
public override string Name => "Welder";
|
public override string Name => "Welder";
|
||||||
@@ -82,17 +84,28 @@ namespace Content.Server.GameObjects.Components.Interactable
|
|||||||
{
|
{
|
||||||
var canUse = base.UseTool(user, target, toolQualityNeeded);
|
var canUse = base.UseTool(user, target, toolQualityNeeded);
|
||||||
|
|
||||||
return toolQualityNeeded.HasFlag(ToolQuality.Welding) ? canUse && TryWeld(DefaultFuelCost) : canUse;
|
return toolQualityNeeded.HasFlag(ToolQuality.Welding) ? canUse && TryWeld(DefaultFuelCost, user) : canUse;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool UseTool(IEntity user, IEntity target, ToolQuality toolQualityNeeded, float fuelConsumed)
|
public bool UseTool(IEntity user, IEntity target, ToolQuality toolQualityNeeded, float fuelConsumed)
|
||||||
{
|
{
|
||||||
return base.UseTool(user, target, toolQualityNeeded) && TryWeld(fuelConsumed);
|
return base.UseTool(user, target, toolQualityNeeded) && TryWeld(fuelConsumed, user);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool TryWeld(float value)
|
private bool TryWeld(float value, IEntity user = null)
|
||||||
{
|
{
|
||||||
if (!WelderLit || !CanWeld(value) || _solutionComponent == null)
|
if (!WelderLit)
|
||||||
|
{
|
||||||
|
_notifyManager.PopupMessage(Owner, user, Loc.GetString("The welder is turned off!"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!CanWeld(value))
|
||||||
|
{
|
||||||
|
_notifyManager.PopupMessage(Owner, user, Loc.GetString("The welder does not have enough fuel for that!"));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_solutionComponent == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return _solutionComponent.TryRemoveReagent("chem.WeldingFuel", ReagentUnit.New(value));
|
return _solutionComponent.TryRemoveReagent("chem.WeldingFuel", ReagentUnit.New(value));
|
||||||
@@ -111,7 +124,7 @@ namespace Content.Server.GameObjects.Components.Interactable
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Deactivates welding tool if active, activates welding tool if possible
|
/// Deactivates welding tool if active, activates welding tool if possible
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private bool ToggleWelderStatus()
|
private bool ToggleWelderStatus(IEntity user = null)
|
||||||
{
|
{
|
||||||
if (WelderLit)
|
if (WelderLit)
|
||||||
{
|
{
|
||||||
@@ -123,7 +136,11 @@ namespace Content.Server.GameObjects.Components.Interactable
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!CanLitWelder()) return false;
|
if (!CanLitWelder())
|
||||||
|
{
|
||||||
|
_notifyManager.PopupMessage(Owner, user, Loc.GetString("The welder has no fuel left!"));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
WelderLit = true;
|
WelderLit = true;
|
||||||
_spriteComponent.LayerSetVisible(1, true);
|
_spriteComponent.LayerSetVisible(1, true);
|
||||||
@@ -134,7 +151,7 @@ namespace Content.Server.GameObjects.Components.Interactable
|
|||||||
|
|
||||||
public bool UseEntity(UseEntityEventArgs eventArgs)
|
public bool UseEntity(UseEntityEventArgs eventArgs)
|
||||||
{
|
{
|
||||||
return ToggleWelderStatus();
|
return ToggleWelderStatus(eventArgs.User);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Examine(FormattedMessage message)
|
public void Examine(FormattedMessage message)
|
||||||
|
|||||||
Reference in New Issue
Block a user