This commit is contained in:
CortexCore
2023-10-20 19:31:12 +08:00
parent 5cd094ed9a
commit a160813262
1878 changed files with 630581 additions and 4485 deletions

View File

@@ -10,7 +10,8 @@
"GUID:f51ebe6a0ceec4240a699833d6309b23",
"GUID:ef0bb553b58b90b488bdbe8672e3be0b",
"GUID:677cd05ca06c46b4395470200b1acdad",
"GUID:30cdc242b1ac6a944a460f4ab0b77b88"
"GUID:30cdc242b1ac6a944a460f4ab0b77b88",
"GUID:7efac18f239530141802fb139776f333"
],
"includePlatforms": [],
"excludePlatforms": [],

View File

@@ -22,14 +22,22 @@ namespace BITFALL.Player.Survival
private bool OnUseItem(IBasicItem arg)
{
switch (arg)
var used = false;
{
case var _ when arg.GetAssetable().TryGetProperty<PlayerEatAddHunger>(out var addHunger) &&
_survival.Elements.TryGetAny(x => x is PlayerSurvivalHunger, out var hunger):
hunger.Value += addHunger.Value;
return true;
if (arg.GetAssetable().TryGetProperty<PlayerEatAddHunger>(out var addHunger) &&
_survival.Elements.TryGetAny(x => x is PlayerSurvivalHunger, out var element))
{
element.Value += addHunger.Value;
used = true;
}
if (arg.GetAssetable().TryGetProperty<PlayerEatAddThirst>(out var addThirst) &&
_survival.Elements.TryGetAny(x => x is PlayerSurvivalThirst, out element))
{
element.Value += addThirst.Value;
used = true;
}
}
return false;
return used;
}
}

View File

@@ -8,13 +8,21 @@ using UnityEngine;
namespace BITFALL.Player.Survival
{
[Serializable]
public struct SurvivalDamage : IDamageType
{
public IPlayerSurvivalElement element;
public string Message;
}
[CustomType(typeof(IPlayerSurvivalService))]
public class PlayerSurvivalService : EntityComponent, IPlayerSurvivalService
{
public IPlayerSurvivalElement[] Elements { get; set; } = Array.Empty<IPlayerSurvivalElement>();
[SerializeReference, SubclassSelector] private IPlayerSurvivalElement[] initialElements = Array.Empty<IPlayerSurvivalElement>();
private IntervalUpdate _interval = new(1);
private readonly IntervalUpdate _interval = new(1);
[SerializeReference,SubclassSelector,Inject] private IDamageService _damageService;
[Inject]
private IHealth _health;
public override void OnAwake()
{
Elements = initialElements;
@@ -26,6 +34,18 @@ namespace BITFALL.Player.Survival
foreach (var x in Elements)
{
x.Value -= 1;
if (x.Value <= 0)
{
_damageService.Execute(new DamageMessage()
{
damageType = new SurvivalDamage()
{
element = x,
},
target = entity,
damage = 1,
});
}
}
}
}