refactor(net): converge live session state reset
This commit is contained in:
parent
78a9223b65
commit
4f31a5085f
35 changed files with 1460 additions and 83 deletions
|
|
@ -436,4 +436,45 @@ public sealed class LocalPlayerStateTests
|
|||
s.OnProperties(props);
|
||||
Assert.False(s.DebitInt64Property(2u, 100L)); // already 0 — no negative banking
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Clear_ReturnsEveryCharacterSnapshotToPreLoginState()
|
||||
{
|
||||
var s = new LocalPlayerState();
|
||||
var properties = new PropertyBundle();
|
||||
properties.Ints[1u] = 42;
|
||||
s.OnVitalUpdate(7u, 1u, 2u, 3u, 4u);
|
||||
s.OnAttributeUpdate(1u, 5u, 6u, 7u);
|
||||
s.OnSkillUpdate(8u, 9u, 2u, 10u, 11u, 12u, 13d, 14u);
|
||||
s.OnPositions(new Dictionary<uint, AcDream.Core.Physics.Position>
|
||||
{
|
||||
[1u] = new AcDream.Core.Physics.Position(
|
||||
0xA9B40001u,
|
||||
new System.Numerics.Vector3(1f, 2f, 3f),
|
||||
System.Numerics.Quaternion.Identity),
|
||||
});
|
||||
s.OnProperties(properties);
|
||||
int characterChanges = 0;
|
||||
var vitalChanges = new List<LocalPlayerState.VitalKind>();
|
||||
var attributeChanges = new List<LocalPlayerState.AttributeKind>();
|
||||
s.CharacterChanged += () => characterChanges++;
|
||||
s.Changed += vitalChanges.Add;
|
||||
s.AttributeChanged += attributeChanges.Add;
|
||||
|
||||
s.Clear();
|
||||
|
||||
Assert.Null(s.Get(LocalPlayerState.VitalKind.Health));
|
||||
Assert.Null(s.GetAttribute(LocalPlayerState.AttributeKind.Strength));
|
||||
Assert.Empty(s.Skills);
|
||||
Assert.Empty(s.Positions);
|
||||
Assert.Empty(s.Properties.Ints);
|
||||
Assert.Equal(Enum.GetValues<LocalPlayerState.VitalKind>(), vitalChanges);
|
||||
Assert.Equal(Enum.GetValues<LocalPlayerState.AttributeKind>(), attributeChanges);
|
||||
Assert.Equal(1, characterChanges);
|
||||
|
||||
s.Clear();
|
||||
Assert.Null(s.Get(LocalPlayerState.VitalKind.Health));
|
||||
Assert.Empty(s.Skills);
|
||||
Assert.Empty(s.Properties.Ints);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue