30 lines
No EOL
1.1 KiB
C#
30 lines
No EOL
1.1 KiB
C#
using System.Collections.Generic;
|
|
using WingsEmu.Core.Extensions;
|
|
using WingsEmu.Game.Entities;
|
|
using WingsEmu.Packets.Enums;
|
|
|
|
namespace WingsEmu.Game.Battle;
|
|
|
|
public class SacrificeManager : ISacrificeManager
|
|
{
|
|
// Caster | Target
|
|
private readonly Dictionary<(VisualType, long), IBattleEntity> _savedSacrificeByCaster = new();
|
|
|
|
// Target | Caster
|
|
private readonly Dictionary<(VisualType, long), IBattleEntity> _savedSacrificeByTarget = new();
|
|
|
|
public void SaveSacrifice(IBattleEntity caster, IBattleEntity target)
|
|
{
|
|
_savedSacrificeByCaster[(caster.Type, caster.Id)] = target;
|
|
_savedSacrificeByTarget[(target.Type, target.Id)] = caster;
|
|
}
|
|
|
|
public IBattleEntity GetTarget(IBattleEntity caster) => _savedSacrificeByCaster.GetOrDefault((caster.Type, caster.Id));
|
|
public IBattleEntity GetCaster(IBattleEntity target) => _savedSacrificeByTarget.GetOrDefault((target.Type, target.Id));
|
|
|
|
public void RemoveSacrifice(IBattleEntity caster, IBattleEntity target)
|
|
{
|
|
_savedSacrificeByCaster.Remove((caster.Type, caster.Id));
|
|
_savedSacrificeByTarget.Remove((target.Type, target.Id));
|
|
}
|
|
} |