server-master/srcs/WingsAPI.Game/Battle/Managers/MeditationManager.cs
2026-02-10 18:21:30 +01:00

46 lines
No EOL
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using WingsEmu.Game.Entities;
namespace WingsEmu.Game.Battle;
public class MeditationManager : IMeditationManager
{
private readonly Dictionary<long, List<(short, DateTime)>> _savedMeditationCaster = new();
public void SaveMeditation(IBattleEntity caster, short meditationId, DateTime dateTime)
{
if (_savedMeditationCaster.ContainsKey(caster.Id))
{
_savedMeditationCaster[caster.Id].Add((meditationId, dateTime));
}
else
{
_savedMeditationCaster.Add(caster.Id, new List<(short, DateTime)> { (meditationId, dateTime) });
}
}
public DateTime GetCastTime(IBattleEntity caster, short meditationId) => _savedMeditationCaster[caster.Id].FirstOrDefault(s => s.Item1 == meditationId).Item2;
public List<(short, DateTime)> GetAllMeditations(IBattleEntity caster) => _savedMeditationCaster[caster.Id];
public void RemoveAllMeditation(IBattleEntity caster)
{
_savedMeditationCaster.Remove(caster.Id);
}
public void RemoveMeditation(IBattleEntity caster, short meditationId)
{
foreach ((short, DateTime) s in _savedMeditationCaster[caster.Id].ToList())
{
if (s.Item1 == meditationId)
{
_savedMeditationCaster[caster.Id].Remove(s);
}
}
}
public bool HasMeditation(IBattleEntity caster) => _savedMeditationCaster.ContainsKey(caster.Id);
}