This commit is contained in:
CortexCore
2023-12-16 23:30:08 +08:00
parent 78216a3d47
commit 961ae8feb4
33 changed files with 369 additions and 148 deletions

View File

@@ -25,4 +25,56 @@ namespace BITFALL.Player.Movement
bool Entry(IEntity player);
bool Exit(IEntity player);
}
public abstract class AbstractPlayerFixedPlace : IPlayerFixedPlace
{
protected abstract IPlayerFixedPlace _playerFixedPlaceImplementation { get; }
float3 IPlayerFixedPlace.FixedPosition => _playerFixedPlaceImplementation.FixedPosition;
float3 IPlayerFixedPlace.Velocity => _playerFixedPlaceImplementation.Velocity;
quaternion IPlayerFixedPlace.FixedRotation => _playerFixedPlaceImplementation.FixedRotation;
float3 IPlayerFixedPlace.ExitPosition => _playerFixedPlaceImplementation.ExitPosition;
quaternion IPlayerFixedPlace.ExitRotation => _playerFixedPlaceImplementation.ExitRotation;
bool IPlayerFixedPlace.TryGetFixedEntity(out IEntity entity)
{
return _playerFixedPlaceImplementation.TryGetFixedEntity(out entity);
}
event Func<IEntity, bool> IPlayerFixedPlace.OnPlayerEntry
{
add => _playerFixedPlaceImplementation.OnPlayerEntry += value;
remove => _playerFixedPlaceImplementation.OnPlayerEntry -= value;
}
event Func<IEntity, bool> IPlayerFixedPlace.OnPlayerExit
{
add => _playerFixedPlaceImplementation.OnPlayerExit += value;
remove => _playerFixedPlaceImplementation.OnPlayerExit -= value;
}
event Action<IEntity> IPlayerFixedPlace.OnPlayerEntered
{
add => _playerFixedPlaceImplementation.OnPlayerEntered += value;
remove => _playerFixedPlaceImplementation.OnPlayerEntered -= value;
}
event Action<IEntity> IPlayerFixedPlace.OnPlayerExited
{
add => _playerFixedPlaceImplementation.OnPlayerExited += value;
remove => _playerFixedPlaceImplementation.OnPlayerExited -= value;
}
bool IPlayerFixedPlace.Entry(IEntity player)
{
return _playerFixedPlaceImplementation.Entry(player);
}
bool IPlayerFixedPlace.Exit(IEntity player)
{
return _playerFixedPlaceImplementation.Exit(player);
}
}
}

View File

@@ -19,11 +19,13 @@ namespace BITFALL.Player.Survival
{
string Name { get; }
public float Value { get; set; }
public float Decay { get; }
event Action<float> OnValueChanged;
}
public abstract class PlayerSurvivalElement:IPlayerSurvivalElement{
public virtual string Name=>GetType().Name;
private float _value = 100;
public float Value {
get => _value;
set
@@ -33,10 +35,19 @@ namespace BITFALL.Player.Survival
_value = value;
}
}
public virtual float Decay => 1;
public event Action<float> OnValueChanged;
}
[Serializable]
public sealed class PlayerSurvivalHunger:PlayerSurvivalElement{}
public sealed class PlayerSurvivalHunger : PlayerSurvivalElement
{
public override float Decay => 0.16f;
}
[Serializable]
public sealed class PlayerSurvivalThirst:PlayerSurvivalElement{}
public sealed class PlayerSurvivalThirst : PlayerSurvivalElement
{
public override float Decay => 0.32f;
}
}