feat(player): port retail augmentation stat chain
This commit is contained in:
parent
0cb60d98a0
commit
461a1fb7b4
22 changed files with 953 additions and 138 deletions
|
|
@ -876,7 +876,7 @@ public class CharacterStatControllerTests
|
|||
|
||||
var meleeTexts = rows[0].Children.OfType<UiText>().ToList();
|
||||
Assert.Equal(Vector4.One, meleeTexts[1].LinesProvider()[0].Color);
|
||||
Assert.Equal(new Vector4(0.55f, 1f, 0.55f, 1f), meleeTexts[2].LinesProvider()[0].Color);
|
||||
Assert.Equal(new Vector4(0f, 1f, 0f, 1f), meleeTexts[2].LinesProvider()[0].Color);
|
||||
|
||||
var healingTexts = rows[5].Children.OfType<UiText>().ToList();
|
||||
Assert.Equal(Vector4.One, healingTexts[1].LinesProvider()[0].Color);
|
||||
|
|
@ -1314,6 +1314,42 @@ public class CharacterStatControllerTests
|
|||
Assert.Equal(50, CharacterStatController.GetSkillBuffOnlyDelta(skill));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SkillValueColor_SubtractsVitaeBeforeChoosingFontState()
|
||||
{
|
||||
var vitaeOnly = new CharacterSkill(
|
||||
1u, "S", 0u, CharacterSkillAdvancementClass.Trained,
|
||||
BaseLevel: 300, CurrentLevel: 201, UsableUntrained: true,
|
||||
TrainedCost: 0, SpecializedCost: 0, RaiseCost: 0,
|
||||
VitaeModifier: -99);
|
||||
var vitaeAndBuff = vitaeOnly with { CurrentLevel = 211 };
|
||||
|
||||
Assert.Equal(Vector4.One, CharacterStatController.SkillValueColor(vitaeOnly));
|
||||
Assert.Equal(
|
||||
new Vector4(0f, 1f, 0f, 1f),
|
||||
CharacterStatController.SkillValueColor(vitaeAndBuff));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AttributeAndVitalValueColors_FollowRetailResidualComparison()
|
||||
{
|
||||
var sheet = new CharacterSheet
|
||||
{
|
||||
Strength = 220,
|
||||
AttributeBaseValues = [200, 0, 0, 0, 0, 0],
|
||||
HealthMax = 170,
|
||||
VitalBaseMaxValues = [200, 0, 0],
|
||||
VitalVitaeModifiers = [-40, 0, 0],
|
||||
};
|
||||
|
||||
Assert.Equal(
|
||||
new Vector4(0f, 1f, 0f, 1f),
|
||||
CharacterStatController.AttributeValueColor(sheet, 0));
|
||||
Assert.Equal(
|
||||
new Vector4(0f, 1f, 0f, 1f),
|
||||
CharacterStatController.VitalValueColor(sheet, 0));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void RowClick_AttributeWithBuff_FooterTitleShowsPositiveDelta()
|
||||
{
|
||||
|
|
@ -1405,6 +1441,41 @@ public class CharacterStatControllerTests
|
|||
Assert.Equal("Test Skill: 251 (-99) (+50)", title.LinesProvider()[0].Text);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SkillFooter_UsesAuthoredPaletteForVitaeAndBuffRuns()
|
||||
{
|
||||
Vector4 normal = new(0.1f, 0.1f, 0.1f, 1f);
|
||||
Vector4 buff = new(0.2f, 0.3f, 0.4f, 1f);
|
||||
Vector4 debuff = new(0.5f, 0.6f, 0.7f, 1f);
|
||||
Vector4 vitae = new(127f / 255f, 1f, 1f, 1f);
|
||||
var list = new UiPanel { Width = 300 };
|
||||
var title = new UiText
|
||||
{
|
||||
FontColorPalette = [normal, buff, debuff, vitae],
|
||||
};
|
||||
var layout = Fake(
|
||||
(CharacterStatController.ListBoxId, list),
|
||||
(CharacterStatController.FooterTitleId, title));
|
||||
|
||||
CharacterSheet Sheet() => VitaeSkillSheet(
|
||||
currentLevel: 251,
|
||||
baseLevel: 300,
|
||||
vitaeModifier: -99);
|
||||
CharacterStatController.Bind(
|
||||
layout,
|
||||
Sheet,
|
||||
spriteResolve: id => (id, 16, 16));
|
||||
|
||||
ClickTab(layout, left: 92f);
|
||||
SkillRows(list)[0].OnClick!();
|
||||
|
||||
IReadOnlyList<UiText.TextRun> runs = title.RunsProvider!();
|
||||
Assert.Equal(3, runs.Count);
|
||||
Assert.Equal(("Test Skill: 251", normal), (runs[0].Text, runs[0].Color));
|
||||
Assert.Equal((" (-99)", vitae), (runs[1].Text, runs[1].Color));
|
||||
Assert.Equal((" (+50)", buff), (runs[2].Text, runs[2].Color));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SkillClick_ZeroDelta_NoParentheticals()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue