fix(ui): port live experience quality updates (#217)
Parse retail PrivateUpdatePropertyInt64 and route authoritative Total/Available Experience through both local-player projections so Attributes, the level meter, and Skills refresh together. Preserve the existing retail XP curve and right-align the Total XP value. Close the user-confirmed item-give gate for #216 and record the named-retail/ACE/holtburger conformance evidence. Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
parent
30d294506c
commit
84b7d2d7cd
15 changed files with 391 additions and 29 deletions
|
|
@ -99,6 +99,23 @@ public sealed class CharacterSheetProviderTests
|
|||
Assert.Equal(90L, sheet.AttributeRaise10Costs[0]);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildSheet_AfterLiveInt64Updates_RefreshesBothXpWindowsAndMeter()
|
||||
{
|
||||
var h = new Harness();
|
||||
h.AddPlayerObject(unassignedXp: 0L);
|
||||
|
||||
Assert.True(h.Table.UpdateInt64Property(PlayerGuid, 1u, 200L));
|
||||
Assert.True(h.Table.UpdateInt64Property(PlayerGuid, 2u, 75L));
|
||||
|
||||
var sheet = h.Provider.BuildSheet();
|
||||
|
||||
Assert.Equal(200L, sheet.TotalXp);
|
||||
Assert.Equal(75L, sheet.UnassignedXp);
|
||||
Assert.Equal(50L, sheet.XpToNextLevel);
|
||||
Assert.Equal(2f / 3f, sheet.XpFraction, precision: 4);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildSheet_Skills_MapsAdvancementAndCurveCosts()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1366,6 +1366,19 @@ public class CharacterStatControllerTests
|
|||
Assert.False(lbl.RightAligned, "TotalXpLabel must be left-justified (RightAligned=false)");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Bind_TotalXpValue_IsRightAligned()
|
||||
{
|
||||
var value = new UiText { Centered = true };
|
||||
var layout = Fake((CharacterStatController.TotalXpId, value));
|
||||
|
||||
CharacterStatController.Bind(layout, SampleData.SampleCharacter);
|
||||
|
||||
Assert.Equal((1_250_000_000L).ToString("N0"), value.LinesProvider()[0].Text);
|
||||
Assert.False(value.Centered);
|
||||
Assert.True(value.RightAligned);
|
||||
}
|
||||
|
||||
// ── Polish Commit 1: name white, Infinity!, white footer title ─────────────
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue