feat(ui): port retained widget foundations
This commit is contained in:
parent
44f9ec13d9
commit
d825572e31
44 changed files with 84813 additions and 292 deletions
|
|
@ -1,3 +1,4 @@
|
|||
using AcDream.App.UI;
|
||||
using AcDream.App.UI.Layout;
|
||||
namespace AcDream.App.Tests.UI.Layout;
|
||||
|
||||
|
|
@ -87,4 +88,42 @@ public class UiDatElementTests
|
|||
// No DefaultStateName, no "Normal" state → ActiveState stays "" (DirectState).
|
||||
Assert.Equal(0x06007777u, e.ActiveMedia().File);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NumericStateBridge_SetsNamedStateWithoutChangingGeometry()
|
||||
{
|
||||
var info = new ElementInfo { X = 4, Y = 5, Width = 30, Height = 40 };
|
||||
info.States[RetailUiStateIds.ShowDetail] = new UiStateInfo
|
||||
{
|
||||
Id = RetailUiStateIds.ShowDetail,
|
||||
Name = "ShowDetail",
|
||||
Image = new UiImageMedia(0x06000009u, 3),
|
||||
};
|
||||
info.StateMedia["ShowDetail"] = (0x06000009u, 3);
|
||||
var element = new UiDatElement(info, _ => (0u, 0, 0))
|
||||
{
|
||||
Left = info.X,
|
||||
Top = info.Y,
|
||||
Width = info.Width,
|
||||
Height = info.Height,
|
||||
};
|
||||
|
||||
Assert.True(element.TrySetRetailState(RetailUiStateIds.ShowDetail));
|
||||
|
||||
Assert.Equal(RetailUiStateIds.ShowDetail, element.ActiveRetailStateId);
|
||||
Assert.Equal((0x06000009u, 3), element.ActiveMedia());
|
||||
Assert.Equal((4f, 5f, 30f, 40f),
|
||||
(element.Left, element.Top, element.Width, element.Height));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NumericStateBridge_MissingStatePreservesCurrentState()
|
||||
{
|
||||
var info = new ElementInfo { DefaultStateName = "Normal" };
|
||||
info.StateMedia["Normal"] = (0x06000001u, 1);
|
||||
var element = new UiDatElement(info, _ => (0u, 0, 0));
|
||||
|
||||
Assert.False(element.TrySetRetailState(RetailUiStateIds.ShowDetail));
|
||||
Assert.Equal("Normal", element.ActiveState);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue