Update
This commit is contained in:
@@ -50,6 +50,7 @@ namespace Hallucinate.UI
|
||||
|
||||
private void ResetLogoPosition()
|
||||
{
|
||||
if (_logo == null) return;
|
||||
_logo.style.left = (Screen.width / 2f) - 100;
|
||||
_logo.style.top = (Screen.height / 2f) - 100;
|
||||
_logo.style.width = 200;
|
||||
@@ -78,10 +79,21 @@ namespace Hallucinate.UI
|
||||
|
||||
public override async Task PlayTransitionIn()
|
||||
{
|
||||
if (root != null) root.style.translate = new StyleTranslate(new Translate(0, 0));
|
||||
Show();
|
||||
UnityEngine.Cursor.visible = true;
|
||||
await Task.CompletedTask;
|
||||
// 1. Đưa về trạng thái Idle và reset vị trí Logo về giữa trước khi hiện
|
||||
_currentState = MenuState.Idle;
|
||||
ResetLogoPosition();
|
||||
if (_ribbon != null)
|
||||
{
|
||||
_ribbon.style.display = DisplayStyle.None;
|
||||
_ribbon.style.opacity = 0;
|
||||
}
|
||||
|
||||
// 2. Chạy hiệu ứng bay vào từ bên phải của Base class
|
||||
// Hàm này sẽ gọi Show() và chạy Tween di chuyển toàn bộ root
|
||||
await base.PlayTransitionIn();
|
||||
|
||||
// 3. Sau khi bay vào xong, tự động kích hoạt Ribbon
|
||||
TransitionToRibbon();
|
||||
}
|
||||
|
||||
public override async Task PlayTransitionOut()
|
||||
@@ -99,16 +111,21 @@ namespace Hallucinate.UI
|
||||
|
||||
private async void TransitionToRibbon()
|
||||
{
|
||||
// Tránh chạy đè nếu đang ở Ribbon rồi
|
||||
if (_currentState == MenuState.Ribbon) return;
|
||||
_currentState = MenuState.Ribbon;
|
||||
|
||||
// Hiện Ribbon
|
||||
_ribbon.style.display = DisplayStyle.Flex;
|
||||
_ribbon.style.opacity = 0;
|
||||
Tween.Custom(0f, 1f, duration: 0.3f, onValueChange: val => _ribbon.style.opacity = val);
|
||||
|
||||
// Đợi UI Toolkit cập nhật layout
|
||||
await Task.Yield();
|
||||
|
||||
if (_logoSpace == null) return;
|
||||
Rect targetBounds = _logoSpace.worldBound;
|
||||
|
||||
// Di chuyển Logo vào vị trí trong Ribbon
|
||||
Tween.Custom(_logo.style.left.value.value, targetBounds.x, duration: 0.5f, ease: Ease.OutQuad,
|
||||
onValueChange: val => _logo.style.left = val);
|
||||
|
||||
@@ -120,10 +137,13 @@ namespace Hallucinate.UI
|
||||
|
||||
Tween.Custom(_logo.style.height.value.value, 120f, duration: 0.5f, ease: Ease.OutQuad,
|
||||
onValueChange: val => _logo.style.height = val);
|
||||
|
||||
_lastInteractionTime = Time.time;
|
||||
}
|
||||
|
||||
private void TransitionToIdle()
|
||||
{
|
||||
if (_currentState == MenuState.Idle) return;
|
||||
_currentState = MenuState.Idle;
|
||||
|
||||
float targetX = (Screen.width / 2f) - 100;
|
||||
|
||||
Reference in New Issue
Block a user