В инфраструктуре начался сущий кошмар

This commit is contained in:
ThomasCharester committed 2025-11-14 22:21:51 +03:00
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();
}