Files
Delta-v/Content.Shared/_DV/Tips/Conditions/TipCondition.cs
T
Milonandpre-commit-ci[bot] e0fd0cb2cd tips / tutorial system (#5199)
* somewhat functional yes

* some cleanup

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* review

* missed one

* why not params…

* review 2

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2026-01-14 14:23:39 -06:00

45 lines
1.4 KiB
C#

using JetBrains.Annotations;
using Robust.Shared.Player;
using Robust.Shared.Prototypes;
namespace Content.Shared._DV.Tips.Conditions;
/// <summary>
/// Base class for tip conditions. Implementations check if a tip should be shown to a player.
/// </summary>
[ImplicitDataDefinitionForInheritors, UsedImplicitly(ImplicitUseTargetFlags.WithInheritors)]
public abstract partial class TipCondition
{
/// <summary>
/// If true, inverts the result of the condition.
/// </summary>
[DataField]
public bool Invert;
/// <summary>
/// Evaluates the condition, applying inversion if configured.
/// </summary>
[PublicAPI]
public bool Evaluate(TipConditionContext ctx)
{
var result = EvaluateImplementation(ctx);
return result ^ Invert;
}
protected abstract bool EvaluateImplementation(TipConditionContext ctx);
}
/// <summary>
/// Context passed to tip conditions for evaluation.
/// Contains references to the player and relevant systems.
/// </summary>
public sealed class TipConditionContext
{
public required EntityUid Player { get; init; }
public required ICommonSession Session { get; init; }
public required IEntityManager EntMan { get; init; }
public required IPrototypeManager Proto { get; init; }
public required IComponentFactory CompFactory { get; init; }
public required ILogManager LogMan { get; init; }
}