completed intro video and mainmenu scene

This commit is contained in:
Mausham
2026-05-28 15:37:33 +05:45
parent 86bf52ced4
commit 3f14d0b346
6 changed files with 74 additions and 122 deletions

View File

@@ -1,4 +1,5 @@
using System; using System;
using Darkmatter.Core.Data.Signals.Features.AppBoot;
using Darkmatter.Libs.Observer; using Darkmatter.Libs.Observer;
using UnityEngine; using UnityEngine;
using VContainer.Unity; using VContainer.Unity;
@@ -7,16 +8,12 @@ namespace Darkmatter.Features.Mainmenu
{ {
public class MainMenuPresenter : IStartable, IDisposable public class MainMenuPresenter : IStartable, IDisposable
{ {
<<<<<<<< HEAD:Assets/Darkmatter/Code/Features/MainMenu/UI/MainmenuPresenter.cs
private readonly MainmenuView _view;
private readonly IEventBus _eventBus; private readonly IEventBus _eventBus;
public MainmenuPresenter(MainmenuView view, IEventBus eventBus)
========
private readonly MainMenuView _view; private readonly MainMenuView _view;
public MainMenuPresenter(MainMenuView view)
>>>>>>>> origin/main:Assets/Darkmatter/Code/Features/MainMenu/UI/MainMenuPresenter.cs
public MainMenuPresenter(MainMenuView view, IEventBus eventBus)
{ {
_view = view; _view = view;
_eventBus = eventBus; _eventBus = eventBus;
@@ -25,6 +22,12 @@ namespace Darkmatter.Features.Mainmenu
public void Start() public void Start()
{ {
_view.OnPlayBtnClickedEvent += OnPlayBtnClicked; _view.OnPlayBtnClickedEvent += OnPlayBtnClicked;
_eventBus.Subscribe<IntroCompletedSignal>(OnIntroComplete);
}
private void OnIntroComplete(IntroCompletedSignal signal)
{
_view.PlayMascotIntro();
} }
private void OnPlayBtnClicked() private void OnPlayBtnClicked()

View File

@@ -10,10 +10,8 @@ namespace Darkmatter.Features.Mainmenu
public class MainMenuView : MonoBehaviour public class MainMenuView : MonoBehaviour
{ {
[Header("UI Elements")] [Header("UI Elements")]
[SerializeField] private Button playBtn; //[SerializeField] private Button playBtn;
[SerializeField] private ParticleSystem playBtnParticle; [SerializeField] private PlayButtonView playBtn;
[SerializeField] private Animator playBtnAnimator;
[SerializeField] private SkeletonGraphic mascotSkeletonGraphic; [SerializeField] private SkeletonGraphic mascotSkeletonGraphic;
[Header("Mascot Animations")] [Header("Mascot Animations")]
@@ -28,8 +26,7 @@ namespace Darkmatter.Features.Mainmenu
private void Start() private void Start()
{ {
playBtn.onClick.AddListener(OnPlayBtnClicked); playBtn.OnPlayBtnClickedEvent += () => OnPlayBtnClickedEvent?.Invoke();
PlayMascotIntro();
} }
private void OnDisable() private void OnDisable()
@@ -39,7 +36,7 @@ namespace Darkmatter.Features.Mainmenu
helloCts = null; helloCts = null;
} }
private void PlayMascotIntro() public void PlayMascotIntro()
{ {
var state = mascotSkeletonGraphic.AnimationState; var state = mascotSkeletonGraphic.AnimationState;
state.SetAnimation(0, jumpAnimation, false); state.SetAnimation(0, jumpAnimation, false);
@@ -59,19 +56,5 @@ namespace Darkmatter.Features.Mainmenu
state.AddAnimation(0, idleAnimation, true, 0f); state.AddAnimation(0, idleAnimation, true, 0f);
} }
} }
private void OnPlayBtnClicked()
{
playBtn.interactable = false;
playBtnAnimator.enabled = false;
PlayBtnSequenceAsync(this.GetCancellationTokenOnDestroy()).Forget();
}
private async UniTaskVoid PlayBtnSequenceAsync(CancellationToken token)
{
playBtnParticle.Play();
await UniTask.WaitUntil(() => !playBtnParticle.IsAlive(true), cancellationToken: token);
OnPlayBtnClickedEvent?.Invoke();
}
} }
} }

View File

@@ -1,9 +0,0 @@
using UnityEngine;
namespace Darkmatter.Features.Mainmenu
{
public class PlayBtnEffector : MonoBehaviour
{
}
}

View File

@@ -0,0 +1,43 @@
using System;
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
namespace Darkmatter.Features.Mainmenu
{
public class PlayButtonView : MonoBehaviour
{
private Button playBtn;
private Animator playBtnAnimator;
[SerializeField] private ParticleSystem playBtnParticle;
public event Action OnPlayBtnClickedEvent;
private void Awake()
{
playBtnAnimator = GetComponent<Animator>();
playBtn = GetComponent<Button>();
}
private void Start()
{
playBtn.onClick.AddListener(OnPlayBtnClicked);
}
private void OnPlayBtnClicked()
{
playBtn.interactable = false;
playBtnAnimator.enabled = false;
PlayBtnSequenceAsync(this.GetCancellationTokenOnDestroy()).Forget();
}
private async UniTaskVoid PlayBtnSequenceAsync(CancellationToken token)
{
playBtnParticle.Play();
await UniTask.WaitUntil(() => !playBtnParticle.IsAlive(true), cancellationToken: token);
OnPlayBtnClickedEvent?.Invoke();
}
}
}

View File

@@ -5547,9 +5547,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b2e90f858cdbce54abda9b9150c05a27, type: 3} m_Script: {fileID: 11500000, guid: b2e90f858cdbce54abda9b9150c05a27, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Features.Mainmenu::Darkmatter.Features.Mainmenu.MainmenuView m_EditorClassIdentifier: Features.Mainmenu::Darkmatter.Features.Mainmenu.MainmenuView
playBtn: {fileID: 944146709} playBtn: {fileID: 944146713}
playBtnParticle: {fileID: 247050072}
playBtnAnimator: {fileID: 944146712}
mascotSkeletonGraphic: {fileID: 1313981500} mascotSkeletonGraphic: {fileID: 1313981500}
jumpAnimation: jump jumpAnimation: jump
idleAnimation: Idle idleAnimation: Idle
@@ -5944,6 +5942,7 @@ GameObject:
- component: {fileID: 944146710} - component: {fileID: 944146710}
- component: {fileID: 944146709} - component: {fileID: 944146709}
- component: {fileID: 944146712} - component: {fileID: 944146712}
- component: {fileID: 944146713}
m_Layer: 5 m_Layer: 5
m_Name: PlayBtn m_Name: PlayBtn
m_TagString: Untagged m_TagString: Untagged
@@ -6074,6 +6073,19 @@ Animator:
m_AllowConstantClipSamplingOptimization: 1 m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0 m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0 m_WriteDefaultValuesOnDisable: 0
--- !u!114 &944146713
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 944146707}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 26f12f86a29f25046a03d5f29e123beb, type: 3}
m_Name:
m_EditorClassIdentifier: Features.Mainmenu::Darkmatter.Features.Mainmenu.PlayBtnEffector
playBtnParticle: {fileID: 247050072}
--- !u!1 &1027389573 --- !u!1 &1027389573
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -6239,86 +6251,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 11551a88f8a7aed4ea3d9b1333736a95, type: 3} m_Script: {fileID: 11500000, guid: 11551a88f8a7aed4ea3d9b1333736a95, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: Features.Mainmenu::Darkmatter.Features.Mainmenu.MainmenuInstallers m_EditorClassIdentifier: Features.Mainmenu::Darkmatter.Features.Mainmenu.MainmenuInstallers
mainmenuView: {fileID: 710324176} mainMenuView: {fileID: 710324176}
--- !u!1 &1141530807
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1141530810}
- component: {fileID: 1141530809}
- component: {fileID: 1141530808}
m_Layer: 0
m_Name: EventSystem
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1141530808
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1141530807}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.InputSystem::UnityEngine.InputSystem.UI.InputSystemUIInputModule
m_SendPointerHoverToParent: 1
m_MoveRepeatDelay: 0.5
m_MoveRepeatRate: 0.1
m_XRTrackingOrigin: {fileID: 0}
m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3}
m_DeselectOnBackgroundClick: 1
m_PointerBehavior: 0
m_CursorLockBehavior: 0
m_ScrollDeltaPerTick: 6
--- !u!114 &1141530809
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1141530807}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3}
m_Name:
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.EventSystems.EventSystem
m_FirstSelected: {fileID: 0}
m_sendNavigationEvents: 1
m_DragThreshold: 10
--- !u!4 &1141530810
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1141530807}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1313981498 --- !u!1 &1313981498
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@@ -6468,7 +6401,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: Darkmatter.App::MainmenuLifetimeScope m_EditorClassIdentifier: Darkmatter.App::MainmenuLifetimeScope
parentReference: parentReference:
TypeName: Darkmatter.App.LifetimeScopes.GameLifetimeScope TypeName: Darkmatter.App.LifetimeScopes.RootLifetimeScope
autoRun: 1 autoRun: 1
autoInjectGameObjects: [] autoInjectGameObjects: []
serviceModules: serviceModules:
@@ -26676,4 +26609,3 @@ SceneRoots:
- {fileID: 1407834210} - {fileID: 1407834210}
- {fileID: 619394802} - {fileID: 619394802}
- {fileID: 2069155641} - {fileID: 2069155641}
- {fileID: 1141530810}