2020-12-01 17:05:19 +01:00
using Content.Server.Objectives.Interfaces ;
using JetBrains.Annotations ;
using Robust.Shared.Localization ;
2021-03-05 01:08:38 +01:00
using Robust.Shared.Serialization.Manager.Attributes ;
2020-12-01 17:05:19 +01:00
using Robust.Shared.Utility ;
namespace Content.Server.Objectives.Conditions
{
[UsedImplicitly]
2021-03-05 01:08:38 +01:00
[DataDefinition]
2020-12-01 17:05:19 +01:00
public class StayAliveCondition : IObjectiveCondition
{
2021-06-09 22:19:39 +02:00
private Mind . Mind ? _mind ;
2020-12-01 17:05:19 +01:00
2021-06-09 22:19:39 +02:00
public IObjectiveCondition GetAssigned ( Mind . Mind mind )
2020-12-01 17:05:19 +01:00
{
return new StayAliveCondition { _mind = mind } ;
}
2021-06-21 02:13:54 +02:00
public string Title = > Loc . GetString ( "objective-condition-stay-alive-title" ) ;
2020-12-01 17:05:19 +01:00
2021-06-21 02:13:54 +02:00
public string Description = > Loc . GetString ( "objective-condition-stay-alive-description" ) ;
2020-12-01 17:05:19 +01:00
public SpriteSpecifier Icon = > new SpriteSpecifier . Rsi ( new ResourcePath ( "Objects/Misc/skub.rsi" ) , "icon" ) ; //didn't know what else would have been a good icon for staying alive
2021-05-15 16:46:55 +01:00
public float Progress = > ( _mind ? . CharacterDeadIC ? ? false ) ? 0f : 1f ;
2020-12-01 17:05:19 +01:00
public float Difficulty = > 1f ;
public bool Equals ( IObjectiveCondition ? other )
{
return other is StayAliveCondition sac & & Equals ( _mind , sac . _mind ) ;
}
public override bool Equals ( object? obj )
{
if ( ReferenceEquals ( null , obj ) ) return false ;
if ( ReferenceEquals ( this , obj ) ) return true ;
if ( obj . GetType ( ) ! = GetType ( ) ) return false ;
return Equals ( ( StayAliveCondition ) obj ) ;
}
public override int GetHashCode ( )
{
return ( _mind ! = null ? _mind . GetHashCode ( ) : 0 ) ;
}
}
}