fix: complete retail parity stability pass
This commit is contained in:
parent
d3df4cb20a
commit
f7aa8e0eb7
131 changed files with 7765 additions and 1190 deletions
|
|
@ -385,11 +385,13 @@ public sealed class UiButton : UiElement, IUiGlobalTimeListener, IUiDatStateful
|
|||
if (ToggleBehavior && stateId is UiButtonStateMachine.Normal or UiButtonStateMachine.Highlight)
|
||||
{
|
||||
Selected = stateId == UiButtonStateMachine.Highlight;
|
||||
ApplyStateVisibility(stateId);
|
||||
return true;
|
||||
}
|
||||
if (stateId == UiButtonStateMachine.Ghosted)
|
||||
{
|
||||
Enabled = false;
|
||||
ApplyStateVisibility(stateId);
|
||||
return true;
|
||||
}
|
||||
if (!Enabled && stateId != UiButtonStateMachine.Ghosted)
|
||||
|
|
@ -424,12 +426,14 @@ public sealed class UiButton : UiElement, IUiGlobalTimeListener, IUiDatStateful
|
|||
if (!HasStateMedia(""))
|
||||
return false;
|
||||
ActiveState = "";
|
||||
ApplyStateVisibility(stateId);
|
||||
CascadeStateToChildren(stateId);
|
||||
return true;
|
||||
}
|
||||
if (TryFindState(stateId, out var state))
|
||||
{
|
||||
ActiveState = state.Name;
|
||||
ApplyStateVisibility(stateId);
|
||||
CascadeStateToChildren(stateId);
|
||||
return true;
|
||||
}
|
||||
|
|
@ -439,12 +443,28 @@ public sealed class UiButton : UiElement, IUiGlobalTimeListener, IUiDatStateful
|
|||
if (!string.IsNullOrEmpty(stateName) && HasStateMedia(stateName))
|
||||
{
|
||||
ActiveState = stateName;
|
||||
ApplyStateVisibility(stateId);
|
||||
CascadeStateToChildren(stateId);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// #408: UIElement::SetState applies the committed descriptor's properties
|
||||
/// through UIElement::OnSetAttribute for buttons too. Property 0x3B is the
|
||||
/// shared Invisible switch; it is not a generic-container-only behavior.
|
||||
/// </summary>
|
||||
private void ApplyStateVisibility(uint stateId)
|
||||
{
|
||||
if (_info.States.TryGetValue(stateId, out var state)
|
||||
&& state.Properties.Values.TryGetValue(0x3Bu, out var invisible)
|
||||
&& invisible.Kind == UiPropertyKind.Bool)
|
||||
{
|
||||
Visible = !invisible.BoolValue;
|
||||
}
|
||||
}
|
||||
|
||||
/// <param name="info">Merged <see cref="ElementInfo"/> for this element.</param>
|
||||
/// <param name="resolve">Dat file-id → (GL texture handle, native px width, native px height).
|
||||
/// Returns (0,0,0) when the texture is not yet uploaded.</param>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue