В инфраструктуре начался сущий кошмар
This commit is contained in:
1 parent
346dc97fef
commit
e67fea2051
51 files changed
+659
-140
No files matched your search
@@ -4,26 +4,35 @@ using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Player;
|
||||
using Code.Input;
|
||||
using Code.Scenes;
|
||||
using Code.Scenes.SceneEnvironments;
|
||||
using Code.StateMachine;
|
||||
using Code.UI;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Reflex.Extensions;
|
||||
using UnityEngine;
|
||||
using UnityEngine.InputSystem;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace Code.App.AppStates
|
||||
{
|
||||
public class GameplayState : BaseState<AppStateMachineContext>
|
||||
{
|
||||
// DEBUG
|
||||
private Transform _testSFXTransform;
|
||||
// DEBUG
|
||||
|
||||
private PlayerHealth _playerHealth;
|
||||
private PlayerMoney _playerMoney;
|
||||
|
||||
private bool _uiLoaded, _sceneLoaded, _onGameplayMusicLoaded, _onActionMusicLoaded;
|
||||
|
||||
private bool _uiLoaded, _sceneLoaded, _onGameplayMusicLoaded, _onSFXLoaded;
|
||||
|
||||
public GameplayState(AppStateMachineContext context) : base(context)
|
||||
{
|
||||
}
|
||||
|
||||
public override void EnterState()
|
||||
{
|
||||
_uiLoaded = _sceneLoaded = _onActionMusicLoaded = _onGameplayMusicLoaded = false;
|
||||
_uiLoaded = _sceneLoaded = _onGameplayMusicLoaded = _onSFXLoaded = false;
|
||||
|
||||
Context.UIService.LoadingScreen.Show();
|
||||
|
||||
@@ -32,52 +41,101 @@ namespace Code.App.AppStates
|
||||
|
||||
_playerHealth.OnDeath += EndGame;
|
||||
|
||||
Context.SceneLoaderService.LoadSceneAsync((int)SceneIds.MovementDev, callBack: OnSceneLoaded); // TODO Фабрика игрока Nada
|
||||
// TODO
|
||||
// Context.SceneLoaderService.LoadSceneAsync((int)SceneIds.MovementDev, callBack: OnSceneLoaded); // TODO Фабрика игрока Nada
|
||||
|
||||
Context.UIService.SwitchPanelTo(UIPanel.Gameplay, callback: PostUILoaded);
|
||||
// Context.UIService.SwitchPanelTo(UIPanel.Gameplay, callback: PostUILoaded);
|
||||
|
||||
Context.AudioFactory.WarmGameplayMusic(OnGameplayMusicLoaded);
|
||||
// Context.AudioFactory.WarmGameplayMusic(OnGameplayMusicLoaded);
|
||||
// Context.AudioFactory.WarmSFX(OnSFXLoaded);
|
||||
// TODO
|
||||
Context.AudioService.TransitToSnapshot(AudioSnapshotState.Peaceful);
|
||||
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.GiveHealth, GiveHealth);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.GiveMoney, GiveMoney);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.LooseHealth, LooseHealth);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.LooseMoney, LooseMoney);
|
||||
}
|
||||
|
||||
private void OnGameplayMusicLoaded()
|
||||
{
|
||||
_onGameplayMusicLoaded = true;
|
||||
|
||||
// Context.AudioService.();
|
||||
|
||||
CheckIfLoaded();
|
||||
}
|
||||
private void OnSceneLoaded()
|
||||
{
|
||||
_sceneLoaded = true;
|
||||
CheckIfLoaded();
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug1, GiveHealth);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug3, GiveMoney);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, LooseHealth);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, LooseMoney);
|
||||
Context.InputService.DebugBindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, PlayDebugSFX);
|
||||
|
||||
WaitForSceneToLoad();
|
||||
}
|
||||
|
||||
private void PostUILoaded()
|
||||
private async UniTaskVoid WaitForSceneToLoad()
|
||||
{
|
||||
await UniTask.WhenAll(
|
||||
Context.SceneLoaderService.LoadSceneAsyncAwaitable((int)SceneIds.MovementDev),
|
||||
Context.UIService.AsyncSwitchPanelTo(UIPanel.Gameplay),
|
||||
Context.AudioFactory.WarmGameplayMusic(),
|
||||
Context.AudioFactory.WarmSFX()
|
||||
);
|
||||
|
||||
Context.AudioService.PlayRandomPeacefulMusicUntilHumanityWillBeDestroyedForTheySins();
|
||||
Context.AudioService.PlayRandomActionMusicUntilHumanityWillBeDestroyedForTheySins();
|
||||
|
||||
var sceneEnvironment = ((GameplaySceneEnvironment)SceneManager.GetActiveScene()
|
||||
.GetSceneContainer().Resolve<CurrentSceneEnvironment>());
|
||||
|
||||
_testSFXTransform = sceneEnvironment.debugSfxTarget;
|
||||
|
||||
((GameplayPanel)Context.UIService.CurrentPanel).Initialize(_playerMoney, _playerHealth);
|
||||
_uiLoaded = true;
|
||||
CheckIfLoaded();
|
||||
}
|
||||
|
||||
private void CheckIfLoaded()
|
||||
{
|
||||
if(!_uiLoaded || !_sceneLoaded) return;
|
||||
|
||||
Context.UIService.LoadingScreen.Hide();
|
||||
|
||||
Context.CameraStateMachine.SwitchState(CameraMode.FirstPerson);
|
||||
Context.InputService.EnableMap(ActionMappings.Gameplay);
|
||||
|
||||
Context.UIService.LoadingScreen.Hide();
|
||||
}
|
||||
|
||||
// private void OnGameplayMusicLoaded()
|
||||
// {
|
||||
// _onGameplayMusicLoaded = true;
|
||||
//
|
||||
// Context.AudioService.PlayRandomPeacefulMusicUntilHumanityWillBeDestroyedForTheySins();
|
||||
// Context.AudioService.PlayRandomActionMusicUntilHumanityWillBeDestroyedForTheySins();
|
||||
//
|
||||
// CheckIfLoaded();
|
||||
// }
|
||||
// private void OnSFXLoaded()
|
||||
// {
|
||||
// _onSFXLoaded = true;
|
||||
//
|
||||
// CheckIfLoaded();
|
||||
// }
|
||||
// private void OnSceneLoaded()
|
||||
// {
|
||||
// _sceneLoaded = true;
|
||||
//
|
||||
// var sceneEnvironment = ((GameplaySceneEnvironment)SceneManager.GetActiveScene()
|
||||
// .GetSceneContainer().Resolve<CurrentSceneEnvironment>());
|
||||
//
|
||||
// _testSFXTransform = sceneEnvironment.debugSfxTarget;
|
||||
//
|
||||
// CheckIfLoaded();
|
||||
// }
|
||||
//
|
||||
// private void PostUILoaded()
|
||||
// {
|
||||
// ((GameplayPanel)Context.UIService.CurrentPanel).Initialize(_playerMoney, _playerHealth);
|
||||
// _uiLoaded = true;
|
||||
// CheckIfLoaded();
|
||||
// }
|
||||
//
|
||||
// private void CheckIfLoaded()
|
||||
// {
|
||||
// if(!_uiLoaded || !_sceneLoaded || !_onGameplayMusicLoaded || !_onSFXLoaded) return;
|
||||
//
|
||||
// Context.UIService.LoadingScreen.Hide();
|
||||
//
|
||||
// Context.CameraStateMachine.SwitchState(CameraMode.FirstPerson);
|
||||
// Context.InputService.EnableMap(ActionMappings.Gameplay);
|
||||
// }
|
||||
|
||||
|
||||
// Debug
|
||||
// DEBUG
|
||||
|
||||
private void PlayDebugSFX(InputAction.CallbackContext context)
|
||||
{
|
||||
Context.AudioService.PlaySFX(SFXSounds.Crowbar, _testSFXTransform.position);
|
||||
}
|
||||
private void GiveHealth(InputAction.CallbackContext context)
|
||||
{
|
||||
_playerHealth.GetDamage(-1);
|
||||
@@ -99,7 +157,7 @@ namespace Code.App.AppStates
|
||||
_playerMoney.LooseMoney(100);
|
||||
((GameplayPanel)(Context.UIService.CurrentPanel)).CloseDispatcher();
|
||||
}
|
||||
|
||||
// DEBUG
|
||||
public override void Tick()
|
||||
{
|
||||
}
|
||||
@@ -116,11 +174,13 @@ namespace Code.App.AppStates
|
||||
_playerMoney = null;
|
||||
|
||||
Context.InputService.DisableMap(ActionMappings.Gameplay);
|
||||
Context.AudioService.GladlyAskToStopGameplayMusic(Context.AudioFactory.ReleaseGameplayMusic);
|
||||
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.GiveHealth, GiveHealth);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.GiveMoney, GiveHealth);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.LooseHealth, LooseHealth);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.LooseMoney, LooseMoney);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug1, GiveHealth);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug3, GiveHealth);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug2, LooseHealth);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug4, LooseMoney);
|
||||
Context.InputService.DebugUnbindAction((int)ActionMappings.Debug, (int)DebugActions.Debug5, PlayDebugSFX);
|
||||
|
||||
base.ExitState();
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ using Code.Scenes;
|
||||
using Code.Scenes.SceneEnvironments;
|
||||
using Code.StateMachine;
|
||||
using Code.UI;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Reflex.Extensions;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
@@ -15,47 +16,42 @@ namespace Code.App.AppStates
|
||||
{
|
||||
public class MainMenuState : BaseState<AppStateMachineContext>
|
||||
{
|
||||
private bool _uiLoaded, _sceneLoaded, _menuMusicLoaded;
|
||||
// private bool _uiLoaded, _sceneLoaded, _menuMusicLoaded;
|
||||
public MainMenuState(AppStateMachineContext context) : base(context)
|
||||
{
|
||||
}
|
||||
|
||||
public override void EnterState()
|
||||
{
|
||||
_uiLoaded = _sceneLoaded = _menuMusicLoaded = false;
|
||||
// _uiLoaded = _sceneLoaded = _menuMusicLoaded = false;
|
||||
|
||||
Context.UIService.LoadingScreen.Show();
|
||||
|
||||
Context.SceneLoaderService.LoadSceneAsync((int)SceneIds.MainMenu, callBack: SceneLoaded);
|
||||
|
||||
Context.UIService.SwitchPanelTo(UIPanel.MainMenu, PostUILoaded);
|
||||
|
||||
Context.AudioFactory.WarmMenuMusic(MenuMusicLoaded);
|
||||
// Context.SceneLoaderService.LoadSceneAsync((int)SceneIds.MainMenu);
|
||||
//
|
||||
// Context.UIService.SwitchPanelTo(UIPanel.MainMenu, PostUILoaded);
|
||||
//
|
||||
// Context.AudioFactory.WarmMenuMusic(MenuMusicLoaded);
|
||||
|
||||
Context.CameraStateMachine.SwitchState(CameraMode.Static);
|
||||
|
||||
WaitForSceneToLoad();
|
||||
}
|
||||
|
||||
private void MenuMusicLoaded()
|
||||
private async UniTaskVoid WaitForSceneToLoad()
|
||||
{
|
||||
_menuMusicLoaded = true;
|
||||
await UniTask.WhenAll(
|
||||
Context.SceneLoaderService.LoadSceneAsyncAwaitable((int)SceneIds.MainMenu),
|
||||
Context.UIService.AsyncSwitchPanelTo(UIPanel.MainMenu),
|
||||
Context.AudioFactory.WarmMenuMusic()
|
||||
);
|
||||
|
||||
Context.AudioService.TransitToSnapshot(AudioSnapshotState.Peaceful);
|
||||
Context.AudioService.PlayRandomMenuMusicUntilHumanityWillBeDestroyedForTheySins();
|
||||
|
||||
CheckIfLoaded();
|
||||
}
|
||||
private void PostUILoaded()
|
||||
{
|
||||
|
||||
((MainMenuPanel)Context.UIService.CurrentPanel).startButton.onClick.AddListener(StartGame);
|
||||
((MainMenuPanel)Context.UIService.CurrentPanel).exitButton.onClick.AddListener(ExitGame);
|
||||
|
||||
_uiLoaded = true;
|
||||
|
||||
CheckIfLoaded();
|
||||
}
|
||||
|
||||
private void SceneLoaded()
|
||||
{
|
||||
var hui = ((MainMenuEnvironment)SceneManager.GetActiveScene()
|
||||
.GetSceneContainer().Resolve<CurrentSceneEnvironment>());
|
||||
|
||||
@@ -64,22 +60,56 @@ namespace Code.App.AppStates
|
||||
|
||||
((BaseCameraState)Context.CameraStateMachine.CurrentBaseState).SetFollowTransform(hui.cameraPosition);
|
||||
|
||||
|
||||
_sceneLoaded = true;
|
||||
|
||||
CheckIfLoaded();
|
||||
}
|
||||
|
||||
private void CheckIfLoaded()
|
||||
{
|
||||
if(!_uiLoaded || !_sceneLoaded || !_menuMusicLoaded) return;
|
||||
|
||||
Context.UIService.LoadingScreen.Hide();
|
||||
|
||||
Context.InputService.EnableMap(ActionMappings.MainMenu);
|
||||
|
||||
base.EnterState();
|
||||
}
|
||||
|
||||
// private void MenuMusicLoaded()
|
||||
// {
|
||||
// _menuMusicLoaded = true;
|
||||
//
|
||||
// Context.AudioService.TransitToSnapshot(AudioSnapshotState.Peaceful);
|
||||
// Context.AudioService.PlayRandomMenuMusicUntilHumanityWillBeDestroyedForTheySins();
|
||||
//
|
||||
// CheckIfLoaded();
|
||||
// }
|
||||
// private void PostUILoaded()
|
||||
// {
|
||||
// ((MainMenuPanel)Context.UIService.CurrentPanel).startButton.onClick.AddListener(StartGame);
|
||||
// ((MainMenuPanel)Context.UIService.CurrentPanel).exitButton.onClick.AddListener(ExitGame);
|
||||
//
|
||||
// _uiLoaded = true;
|
||||
//
|
||||
// CheckIfLoaded();
|
||||
// }
|
||||
//
|
||||
// private void SceneLoaded()
|
||||
// {
|
||||
// var hui = ((MainMenuEnvironment)SceneManager.GetActiveScene()
|
||||
// .GetSceneContainer().Resolve<CurrentSceneEnvironment>());
|
||||
//
|
||||
// ((StaticState)Context.CameraStateMachine.CurrentBaseState).LookTarget =
|
||||
// hui.cameraTarget;
|
||||
//
|
||||
// ((BaseCameraState)Context.CameraStateMachine.CurrentBaseState).SetFollowTransform(hui.cameraPosition);
|
||||
//
|
||||
//
|
||||
// _sceneLoaded = true;
|
||||
//
|
||||
// CheckIfLoaded();
|
||||
// }
|
||||
//
|
||||
// private void CheckIfLoaded()
|
||||
// {
|
||||
// if(!_uiLoaded || !_sceneLoaded || !_menuMusicLoaded) return;
|
||||
//
|
||||
// Context.UIService.LoadingScreen.Hide();
|
||||
//
|
||||
// Context.InputService.EnableMap(ActionMappings.MainMenu);
|
||||
//
|
||||
// base.EnterState();
|
||||
// }
|
||||
|
||||
public override void Tick()
|
||||
{
|
||||
|
||||
@@ -79,18 +79,13 @@ namespace Code.App
|
||||
containerBuilder.AddSingleton(staticDataService.SFXListConfig, typeof(SFXListConfig));
|
||||
containerBuilder.AddSingleton(staticDataService.DispatcherSoundListConfig, typeof(DispatcherSoundListConfig));
|
||||
containerBuilder.AddSingleton(staticDataService.EnemiesSoundListConfig, typeof(EnemiesSoundListConfig));
|
||||
// containerBuilder.AddSingleton(staticDataService.UIConfig.canvasPrefab, typeof(Canvas));
|
||||
// containerBuilder.AddSingleton(staticDataService.UIConfig.uiElementsPrefabs, typeof(UIElement[]));
|
||||
}
|
||||
|
||||
private bool _onAudioLoaded;
|
||||
private AppStateMachine _appStateMachine;
|
||||
|
||||
private void Bootstrap(Container container)
|
||||
{
|
||||
container.Resolve<IAudioFactory>();
|
||||
IAudioService audioService = container.Resolve<IAudioService>();
|
||||
audioService.Initialize(OnAudioLoaded);
|
||||
|
||||
_appStateMachine = container.Resolve<AppStateMachine>();
|
||||
_appStateMachine.Initialize();
|
||||
AttributeInjector.Inject(_appStateMachine.StateMachineContext, container);
|
||||
@@ -98,28 +93,24 @@ namespace Code.App
|
||||
CameraStateMachine cameraStateMachine = container.Resolve<CameraStateMachine>();
|
||||
AttributeInjector.Inject(cameraStateMachine.StateMachineContext, container);
|
||||
cameraStateMachine.Initialize();
|
||||
|
||||
BootstrapFinish(container);
|
||||
}
|
||||
private async UniTaskVoid BootstrapFinish(Container container)
|
||||
{
|
||||
// container.Resolve<IAudioFactory>();
|
||||
|
||||
var loadingScreen = GameObject.FindWithTag(Tags.LoadingScreen);
|
||||
DontDestroyOnLoad(loadingScreen);
|
||||
|
||||
IUIService uiService = container.Resolve<IUIService>();
|
||||
uiService.Initialize(loadingScreen.GetComponent<LoadingScreen>());
|
||||
await UniTask.WhenAll(
|
||||
container.Resolve<IUIService>().Initialize(loadingScreen.GetComponent<LoadingScreen>()),
|
||||
container.Resolve<IAudioService>().Initialize()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
private void TryStartGame()
|
||||
{
|
||||
if (!_onAudioLoaded) return;
|
||||
// TODO: поменяно для теста
|
||||
_appStateMachine
|
||||
.SwitchState(AppState.MainMenu)
|
||||
.AllowStateTransition(AppState.Gameplay);
|
||||
}
|
||||
|
||||
private void OnAudioLoaded()
|
||||
{
|
||||
_onAudioLoaded = true;
|
||||
TryStartGame();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
using Code.Scenes;
|
||||
using Code.Scenes.SceneEnvironments;
|
||||
using Reflex.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.App.SceneInstallers
|
||||
{
|
||||
public class GameplaySceneInstaller : MonoBehaviour, IInstaller
|
||||
{
|
||||
[SerializeField] private GameplaySceneEnvironment _gameplaySceneEnvironment;
|
||||
|
||||
public void InstallBindings(ContainerBuilder containerBuilder)
|
||||
{
|
||||
containerBuilder.AddScoped(typeof(GameplaySceneEnvironment), typeof(CurrentSceneEnvironment));
|
||||
|
||||
containerBuilder.OnContainerBuilt += Initialize;
|
||||
}
|
||||
|
||||
private void Initialize(Container container)
|
||||
{
|
||||
GameplaySceneEnvironment env = (GameplaySceneEnvironment)container.Resolve<CurrentSceneEnvironment>();
|
||||
|
||||
env.TransitVariables(_gameplaySceneEnvironment);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 88584fd4361b46f6a7326440cd95ce69
|
||||
timeCreated: 1763144580
|
||||
@@ -2,6 +2,7 @@ using Code.Scenes;
|
||||
using Code.Scenes.SceneEnvironments;
|
||||
using Reflex.Core;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace Code.App.SceneInstallers
|
||||
{
|
||||
|
||||
@@ -66,14 +66,13 @@ namespace Code.Audio
|
||||
public async UniTask LoadAudioSourcePrefab(Action<GameObject> callback) =>
|
||||
callback?.Invoke(await Addressables.LoadAssetAsync<GameObject>(_audioSourcePrefab));
|
||||
|
||||
public async UniTaskVoid WarmGameplayMusic(Action callback)
|
||||
public async UniTask WarmGameplayMusic( )
|
||||
{
|
||||
_actionMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_actionSoundtrack, OnActionTrackLoaded);
|
||||
_peacefulMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_peacefulSoundtrack, OnPeacefulTrackLoaded);
|
||||
_actionMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_actionSoundtrack, OnActionTrackLoaded, Addressables.MergeMode.None);
|
||||
_peacefulMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_peacefulSoundtrack, OnPeacefulTrackLoaded, Addressables.MergeMode.None);
|
||||
|
||||
await UniTask.WhenAll(_actionMusicHandle.ToUniTask(), _peacefulMusicHandle.ToUniTask());
|
||||
|
||||
callback?.Invoke();
|
||||
|
||||
}
|
||||
|
||||
public void ReleaseGameplayMusic()
|
||||
@@ -85,13 +84,12 @@ namespace Code.Audio
|
||||
_peacefulMusicHandle.Release();
|
||||
}
|
||||
|
||||
public async UniTaskVoid WarmMenuMusic(Action callback)
|
||||
public async UniTask WarmMenuMusic( )
|
||||
{
|
||||
_menuMusicHandle = Addressables.LoadAssetsAsync<AudioClip>(_menuSoundtrack, OnMenuTrackLoaded, Addressables.MergeMode.None);
|
||||
// foreach (var assetReference in _menuSoundtrack) MenuMusic.Add(await assetReference.LoadAssetAsync<AudioClip>());
|
||||
await _menuMusicHandle.ToUniTask();
|
||||
|
||||
callback?.Invoke();
|
||||
|
||||
}
|
||||
|
||||
public void ReleaseMenuMusic()
|
||||
@@ -100,13 +98,12 @@ namespace Code.Audio
|
||||
// foreach (var assetReference in _menuSoundtrack) assetReference.ReleaseAsset();
|
||||
_menuMusicHandle.Release();
|
||||
}
|
||||
public async UniTaskVoid WarmSFX(Action callback)
|
||||
public async UniTask WarmSFX( )
|
||||
{
|
||||
_SFXHandle = Addressables.LoadAssetsAsync<AudioClip>(_SFX, OnSFXLoaded);
|
||||
_SFXHandle = Addressables.LoadAssetsAsync<AudioClip>(_SFX, OnSFXLoaded, Addressables.MergeMode.None);
|
||||
|
||||
await _SFXHandle.ToUniTask();
|
||||
|
||||
callback?.Invoke();
|
||||
|
||||
}
|
||||
|
||||
public void ReleaseSFX()
|
||||
@@ -114,13 +111,12 @@ namespace Code.Audio
|
||||
SFXAudios.Clear();
|
||||
_SFXHandle.Release();
|
||||
}
|
||||
public async UniTaskVoid WarmEnemies(Action callback)
|
||||
public async UniTask WarmEnemies( )
|
||||
{
|
||||
_enemiesHandle = Addressables.LoadAssetsAsync<AudioClip>(_enemies, OnEnemiesLoaded);
|
||||
_enemiesHandle = Addressables.LoadAssetsAsync<AudioClip>(_enemies, OnEnemiesLoaded, Addressables.MergeMode.None);
|
||||
|
||||
await _enemiesHandle.ToUniTask();
|
||||
|
||||
callback?.Invoke();
|
||||
|
||||
}
|
||||
|
||||
public void ReleaseEnemies()
|
||||
@@ -129,13 +125,12 @@ namespace Code.Audio
|
||||
_enemiesHandle.Release();
|
||||
}
|
||||
|
||||
public async UniTaskVoid WarmDispatcher(Action callback)
|
||||
public async UniTask WarmDispatcher( )
|
||||
{
|
||||
_dispatcherHandle = Addressables.LoadAssetsAsync<AudioClip>(_dispatcher, OnDispatcherLoaded);
|
||||
_dispatcherHandle = Addressables.LoadAssetsAsync<AudioClip>(_dispatcher, OnDispatcherLoaded, Addressables.MergeMode.None);
|
||||
|
||||
await _dispatcherHandle.ToUniTask();
|
||||
|
||||
callback?.Invoke();
|
||||
|
||||
}
|
||||
|
||||
public void ReleaseDispatcher()
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace Code.Audio
|
||||
_audioFactory = audioFactory;
|
||||
}
|
||||
|
||||
public async UniTaskVoid Initialize(Action callback)
|
||||
public async UniTask Initialize()
|
||||
{
|
||||
// _mixer = await _audioFactory.CreateMixer();
|
||||
_mixer = _audioFactory.AudioMixer;
|
||||
@@ -62,8 +62,6 @@ namespace Code.Audio
|
||||
await _audioFactory.LoadAudioSourcePrefab(_audioSourcePool.Initialize);
|
||||
|
||||
InitializeMusicSources();
|
||||
|
||||
callback?.Invoke();
|
||||
}
|
||||
|
||||
private void InitializeMusicSources()
|
||||
@@ -180,6 +178,20 @@ namespace Code.Audio
|
||||
callback?.Invoke();
|
||||
}
|
||||
|
||||
public async UniTaskVoid GladlyAskToStopGameplayMusic(Action callback = null)
|
||||
{
|
||||
TransitToSnapshot(AudioSnapshotState.None);
|
||||
|
||||
await UniTask.WaitForSeconds(1f);
|
||||
|
||||
_actionMusicSource.Stop();
|
||||
_peacefulMusicSource.Stop();
|
||||
|
||||
_actionMusicTokenSource.Cancel();
|
||||
_peacefulMusicTokenSource.Cancel();
|
||||
|
||||
callback?.Invoke();
|
||||
}
|
||||
public async UniTaskVoid GladlyAskToStopActionMusic(Action callback = null)
|
||||
{
|
||||
TransitToSnapshot(AudioSnapshotState.None);
|
||||
|
||||
@@ -16,15 +16,15 @@ namespace Code.Audio
|
||||
List<AudioClip> DispatcherAudios { get; }
|
||||
AudioMixer AudioMixer { get; }
|
||||
UniTask LoadAudioSourcePrefab(Action<GameObject> callback);
|
||||
UniTaskVoid WarmGameplayMusic(Action callback);
|
||||
UniTask WarmGameplayMusic();
|
||||
void ReleaseGameplayMusic();
|
||||
UniTaskVoid WarmMenuMusic(Action callback);
|
||||
UniTask WarmMenuMusic();
|
||||
void ReleaseMenuMusic();
|
||||
UniTaskVoid WarmSFX(Action callback);
|
||||
UniTask WarmSFX();
|
||||
void ReleaseSFX();
|
||||
UniTaskVoid WarmEnemies(Action callback);
|
||||
UniTask WarmEnemies();
|
||||
void ReleaseEnemies();
|
||||
UniTaskVoid WarmDispatcher(Action callback);
|
||||
UniTask WarmDispatcher();
|
||||
void ReleaseDispatcher();
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ namespace Code.Audio
|
||||
{
|
||||
public interface IAudioService
|
||||
{
|
||||
UniTaskVoid Initialize(Action callback);
|
||||
UniTask Initialize();
|
||||
void PlayRandomGameplayMusic();
|
||||
void TransitToSnapshot(AudioSnapshotState state, float time = 1f);
|
||||
void PlaySFX(SFXSounds sfxId, Vector3 position);
|
||||
@@ -19,5 +19,8 @@ namespace Code.Audio
|
||||
UniTaskVoid GladlyAskToStopMenuMusic(Action callback = null);
|
||||
UniTaskVoid GladlyAskToStopActionMusic(Action callback = null);
|
||||
UniTaskVoid GladlyAskToStopPeacefulMusic(Action callback = null);
|
||||
UniTaskVoid PlayRandomPeacefulMusicUntilHumanityWillBeDestroyedForTheySins();
|
||||
UniTaskVoid PlayRandomActionMusicUntilHumanityWillBeDestroyedForTheySins();
|
||||
UniTaskVoid GladlyAskToStopGameplayMusic(Action callback = null);
|
||||
}
|
||||
}
|
||||
@@ -8,9 +8,11 @@ namespace Code.Input
|
||||
}
|
||||
public enum DebugActions
|
||||
{
|
||||
GiveHealth,
|
||||
LooseHealth,
|
||||
GiveMoney,
|
||||
LooseMoney
|
||||
Debug1,
|
||||
Debug2,
|
||||
Debug3,
|
||||
Debug4,
|
||||
Debug5,
|
||||
Debug6
|
||||
}
|
||||
}
|
||||
@@ -7,5 +7,6 @@ namespace Code.Scenes
|
||||
{
|
||||
UniTaskVoid LoadSceneAsync(string sceneName, float waitFor = 0f, Action callBack = null);
|
||||
UniTaskVoid LoadSceneAsync(int sceneId, float waitFor = 0f, Action callBack = null);
|
||||
UniTask LoadSceneAsyncAwaitable(int sceneId, float waitFor = 0f);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace Code.Scenes.SceneEnvironments
|
||||
{
|
||||
[System.Serializable]
|
||||
public class GameplaySceneEnvironment : CurrentSceneEnvironment
|
||||
{
|
||||
[FormerlySerializedAs("sfxTarget")] public Transform debugSfxTarget;
|
||||
|
||||
public void TransitVariables(GameplaySceneEnvironment env)
|
||||
{
|
||||
debugSfxTarget = env.debugSfxTarget;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 286a31cf64d54f509b13784d928d8842
|
||||
timeCreated: 1763144375
|
||||
@@ -29,5 +29,12 @@ namespace Code.Scenes
|
||||
SceneManager.LoadSceneAsync(sceneId, LoadSceneMode.Single).ToUniTask());
|
||||
callBack?.Invoke();
|
||||
}
|
||||
|
||||
public async UniTask LoadSceneAsyncAwaitable(int sceneId, float waitFor = 0)
|
||||
{
|
||||
await UniTask.WhenAll(
|
||||
UniTask.Delay(TimeSpan.FromSeconds(waitFor)),
|
||||
SceneManager.LoadSceneAsync(sceneId, LoadSceneMode.Single).ToUniTask());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,15 @@
|
||||
using System;
|
||||
using Code.UI.Panels;
|
||||
using Cysharp.Threading.Tasks;
|
||||
|
||||
namespace Code.UI
|
||||
{
|
||||
public interface IUIService
|
||||
{
|
||||
void SwitchPanelTo(UIPanel uiPanel, Action callback = null);
|
||||
UniTask AsyncSwitchPanelTo(UIPanel uiPanel);
|
||||
UIElement CurrentPanel { get; }
|
||||
LoadingScreen LoadingScreen { get; }
|
||||
void Initialize(LoadingScreen loadingScreen);
|
||||
UniTask Initialize(LoadingScreen loadingScreen);
|
||||
}
|
||||
}
|
||||
@@ -12,7 +12,8 @@ namespace Code.UI
|
||||
{
|
||||
private Canvas _canvas;
|
||||
private IUIFactory _factory;
|
||||
|
||||
|
||||
|
||||
public UIElement CurrentPanel { get; private set; }
|
||||
|
||||
public LoadingScreen LoadingScreen { get; private set; }
|
||||
@@ -22,7 +23,7 @@ namespace Code.UI
|
||||
_factory = factory;
|
||||
}
|
||||
|
||||
public async void Initialize(LoadingScreen loadingScreen)
|
||||
public async UniTask Initialize(LoadingScreen loadingScreen)
|
||||
{
|
||||
LoadingScreen = loadingScreen;
|
||||
LoadingScreen.Show();
|
||||
@@ -30,9 +31,17 @@ namespace Code.UI
|
||||
_canvas = await _factory.CreateCanvas();
|
||||
}
|
||||
|
||||
public async UniTask AsyncSwitchPanelTo(UIPanel uiPanel)
|
||||
{
|
||||
// if (!_canvas) await UniTask.WaitUntil(() => _canvas );
|
||||
|
||||
if(CurrentPanel) Addressables.ReleaseInstance(CurrentPanel.gameObject);//Object.Destroy(CurrentPanel.gameObject);
|
||||
|
||||
CurrentPanel = await _factory.CreatePanel(_canvas, uiPanel);
|
||||
}
|
||||
public async void SwitchPanelTo(UIPanel uiPanel, Action callback = null)
|
||||
{
|
||||
if (!_canvas) await UniTask.WaitUntil(() => _canvas );
|
||||
// if (!_canvas) await UniTask.WaitUntil(() => _canvas );
|
||||
|
||||
if(CurrentPanel) Addressables.ReleaseInstance(CurrentPanel.gameObject);//Object.Destroy(CurrentPanel.gameObject);
|
||||
|
||||
|
||||
Reference in new issue
Block a user