Skip to content

Commit ee744f0

Browse files
author
serg.morozov
committed
Refactor
1 parent acdb268 commit ee744f0

File tree

58 files changed

+620
-387
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+620
-387
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
using System.Collections.Generic;
2+
3+
namespace Nuclear.AbilitySystem.Tests
4+
{
5+
public class CombatStateBuilder
6+
{
7+
private readonly List<IUnitMutable> _units = new();
8+
private IAbilityContextHolderMutable? _abilityContextHolder;
9+
10+
public CombatStateBuilder WithUnit(IUnitMutable unit)
11+
{
12+
_units.Add(unit);
13+
return this;
14+
}
15+
16+
public CombatStateBuilder WithAbilityContext(IAbilityContextHolderMutable contextHolder)
17+
{
18+
_abilityContextHolder = contextHolder;
19+
return this;
20+
}
21+
22+
public ICombatState Build()
23+
{
24+
return new CombatState(_units, _abilityContextHolder ?? new AbilityContextHolder());
25+
}
26+
}
27+
}

NuclearAbilitySystem.Implementation/Features/Abilities/AbilityContextHolder.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33

44
namespace Nuclear.AbilitySystem
55
{
6-
public sealed class AbilityContextHolder : IAbilityContextHolder
6+
public sealed class AbilityContextHolder : IAbilityContextHolderMutable
77
{
88
private readonly Dictionary<Type, IAbilityContext> _contexts = new();
99

1010
public AbilityContextHolder()
1111
{
12-
_contexts.Add(typeof(ITimeAbilityContext), new TimeAbilityContext(0));
12+
_contexts.Add(typeof(ITurnAbilityContext), new TurnAbilityContext(0));
1313
_contexts.Add(typeof(IDistanceBetweenUnitsAbilityContext), new DistanceBetweenUnitsAbilityContext());
1414
}
1515

@@ -25,24 +25,24 @@ public T GetContext<T>() where T : IAbilityContext
2525
return (T)_contexts[typeof(T)];
2626
}
2727

28-
public IAbilityContextHolder DeepClone()
28+
public IAbilityContextHolderMutable DeepClone()
2929
{
3030
return new AbilityContextHolder(this);
3131
}
3232

33-
public void Subscribe(ICombatState combatState)
33+
public void Connect(ICombatState combatState)
3434
{
3535
foreach (var context in _contexts.Values)
3636
{
37-
context.Subscribe(combatState);
37+
context.Connect(combatState);
3838
}
3939
}
4040

41-
public void UnSubscribe()
41+
public void Disconnect()
4242
{
4343
foreach (var context in _contexts.Values)
4444
{
45-
context.UnSubscribe();
45+
context.Disconnect();
4646
}
4747
}
4848
}

NuclearAbilitySystem.Implementation/Features/Abilities/AbilityActionTarget.cs renamed to NuclearAbilitySystem.Implementation/Features/Abilities/Actions/AbilityActionTarget.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ public enum AbilityActionTarget
1313
public static class AbilityActionTargetExtensions
1414
{
1515
public static void UpdateAbilityActionTarget(AbilityActionTarget skillActionTarget,
16-
IUnitId? source, IUnitId? target,
17-
out IUnitId? effectSource, out IUnitId? effectTarget)
16+
UnitId? source, UnitId? target,
17+
out UnitId? effectSource, out UnitId? effectTarget)
1818
{
1919
switch (skillActionTarget)
2020
{

NuclearAbilitySystem.Implementation/Features/Abilities/Checks/CooldownAbilityCheck.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@ public CooldownAbilityCheck(int cooldown, int? startValue = null)
1313
_lastCastTime = -startValue ?? -cooldown;
1414
}
1515

16-
public bool CanExecute(IUnitId source, IUnitId? target, ICombatState context)
16+
public bool CanExecute(UnitId source, UnitId? target, ICombatState context)
1717
{
18-
var timeContext = context.AbilityContextHolder.GetContext<ITimeAbilityContext>();
18+
var timeContext = context.AbilityContextHolder.GetContext<ITurnAbilityContext>();
1919
return GetCooldownTimer(timeContext) == 0;
2020
}
2121

22-
public void Execute(IUnitId source, IUnitId? target, ICombatState context)
22+
public void Execute(UnitId source, UnitId? target, ICombatState context)
2323
{
24-
var timeContext = context.AbilityContextHolder.GetContext<ITimeAbilityContext>();
25-
_lastCastTime = timeContext.Time;
24+
var timeContext = context.AbilityContextHolder.GetContext<ITurnAbilityContext>();
25+
_lastCastTime = timeContext.Turn;
2626
}
2727

28-
public int GetCooldownTimer(ITimeAbilityContext timeContext)
28+
public int GetCooldownTimer(ITurnAbilityContext turnContext)
2929
{
30-
return Math.Max(0, _lastCastTime + _cooldown + 1 - timeContext.Time);
30+
return Math.Max(0, _lastCastTime + _cooldown + 1 - turnContext.Turn);
3131
}
3232

3333
public IAbilityCheck DeepClone()

NuclearAbilitySystem.Implementation/Features/Abilities/Checks/ICooldownAbilityCheck.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ namespace Nuclear.AbilitySystem
22
{
33
public interface ICooldownAbilityCheck : IAbilityCheck
44
{
5-
int GetCooldownTimer(ITimeAbilityContext context);
5+
int GetCooldownTimer(ITurnAbilityContext context);
66
}
77
}

NuclearAbilitySystem.Implementation/Features/Abilities/Checks/ITimeAbilityContext.cs

Lines changed: 0 additions & 8 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace Nuclear.AbilitySystem
2+
{
3+
public interface ITurnAbilityContext : IAbilityContext
4+
{
5+
int Turn { get; }
6+
void NextTurn();
7+
}
8+
}

NuclearAbilitySystem.Implementation/Features/Abilities/Checks/TimeAbilityContext.cs

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
namespace Nuclear.AbilitySystem
2+
{
3+
public sealed class TurnAbilityContext : ITurnAbilityContext
4+
{
5+
public TurnAbilityContext(int turn)
6+
{
7+
Turn = turn;
8+
}
9+
10+
public int Turn { get; private set; }
11+
public void NextTurn()
12+
{
13+
Turn++;
14+
}
15+
16+
public IAbilityContext DeepClone()
17+
{
18+
return new TurnAbilityContext(Turn);
19+
}
20+
21+
public void Connect(ICombatState combatState)
22+
{
23+
}
24+
25+
public void Disconnect()
26+
{
27+
}
28+
}
29+
}

NuclearAbilitySystem.Implementation/Features/Projectiles/DelayAbilityAction.cs renamed to NuclearAbilitySystem.Implementation/Features/Abilities/DelayAbilityAction/DelayAbilityAction.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public DelayAbilityAction(int time,
1414

1515
public int Time { get; }
1616
public ReadOnlyCollection<IAbilityAction> OnEnd { get; }
17-
public void Execute(IUnitId sourceId, IUnitId? targetId, ICombatState context)
17+
public void Execute(UnitId sourceId, UnitId? targetId, ICombatStateMutable context)
1818
{
1919

2020
context.CommandQueue.AddTimeEvent(context.CommandQueue.Time + Time, () =>

0 commit comments

Comments
 (0)