Интерфейс, конфиги камер

This commit is contained in:
ThomasCharester committed 2025-11-23 00:51:58 +03:00
1 parent efad72b4d9
commit e5f4f292c2
66 files changed
+11465 -9059

No files matched your search

@@ -1,41 +1,51 @@
using Code.App.Loading;
using Code.App.StateMachine;
using Code.Scenes;
using Code.StateMachine;
using Code.UI;
using UnityEngine;
using Cysharp.Threading.Tasks;
namespace Code.App.AppStates
{
public class GameOverState : BaseState<AppStateMachineContext>
{
public GameOverState(AppStateMachineContext context) : base(context)
{ }
{
}
private float damnTimer = 3f; // TODO Удалить при первой возможности
public override void EnterState()
{
Context.UIService.SwitchPanelTo(UIPanel.GameOver);
GameOver();
base.EnterState();
}
private async UniTaskVoid GameOver()
{
await UniTask.WhenAll(
Context.UIService.AsyncSwitchPanelTo(UIPanel.GameOver),
UniTask.WaitForSeconds(damnTimer)
);
ToMainMenu();
}
private void ToMainMenu()
{
Context.StateMachine.SwitchState(AppState.MainMenu)
.AllowStateTransition(AppState.Gameplay);
}
public override void Tick()
{
damnTimer -= Time.deltaTime;
if (damnTimer <= float.Epsilon) ToMainMenu();
}
// public override void Tick()
// {
// damnTimer -= Time.deltaTime;
// if (damnTimer <= float.Epsilon) ToMainMenu();
// }
public override void ExitState()
{
damnTimer = 5f;
Context.UIService.LoadingScreen.Show();
base.ExitState();
}
}
@@ -1,5 +1,6 @@
using System.Globalization;
using System.Reflection.Emit;
using Code.App.Loading;
using Code.App.StateMachine;
using Code.Audio;
using Code.Gameplay.Camera;
@@ -41,7 +42,13 @@ namespace Code.App.AppStates
public override void EnterState()
{
Context.UIService.LoadingScreen.Show();
Context.LoadingManager
.RegisterLoading(LoadingWork.LoadScene)
.RegisterLoading(LoadingWork.WaitForSceneInstaller)
.RegisterLoading(LoadingWork.LoadUI)
.RegisterLoading(LoadingWork.LoadModelResource)
.RegisterLoading(LoadingWork.LoadAudio);
// Context.UIService.LoadingScreen.Show();
_playerMoney = Context.PlayerFactory.CreatePlayerMoney();
_playerHealth = Context.PlayerFactory.CreatePlayerHealth();
@@ -79,7 +86,6 @@ namespace Code.App.AppStates
WaitForPlayerArmsToInitialize(),
WaitForPlayerCharacterLoad()
);
MusicInitialize();
Container sceneContainer = SceneManager.GetActiveScene().GetSceneContainer();
@@ -87,24 +93,35 @@ namespace Code.App.AppStates
PlayerInitialize(sceneEnvironment);
UIInitialize();
CameraInitialize();
InputServiceInitialize();
GameplayServicesInitialize(sceneContainer);
MusicInitialize();
UIInitialize();
_tickEnabled = true;
Context.UIService.LoadingScreen.Hide();
Context.LoadingManager
.UnregisterLoading(LoadingWork.LoadScene)
.UnregisterLoading(LoadingWork.LoadUI)
.UnregisterLoading(LoadingWork.LoadModelResource)
.UnregisterLoading(LoadingWork.LoadAudio);
// Context.UIService.LoadingScreen.Hide();
}
private async UniTask WaitForPlayerArmsToInitialize() => _armsMesh = await Context.PlayerFactory.CreateArms(Context.CameraStateMachine.Camera.transform);
private void OrderGiven(float time)
{
_gameplayPanel.ShowTimer();
}
private void OrderFailure()
{
_playerHealth.InstaKill();
}
private void OrderRecieved(float time)
{
@@ -112,6 +129,8 @@ namespace Code.App.AppStates
}
private void OrderDelivered(int score, float time)
{
_gameplayPanel.HideTimer();
if(time < 0f) Context.AudioService.PlayDispatcher((DispatcherSounds)Random.Range((int)DispatcherSounds.Late1,(int)DispatcherSounds.Late2));
_playerMoney.GiveMoney(score);
}
@@ -145,8 +164,7 @@ namespace Code.App.AppStates
{
if (!_tickEnabled) return;
// TODO ГРЯЗь
_gameplayPanel.Timer.text = ((int)_orderService.DecreaseTimer(Time.deltaTime)).ToString(CultureInfo.CurrentCulture);
_orderService.DecreaseTimer(Time.deltaTime);
}
private void EndGame()
@@ -166,6 +184,7 @@ namespace Code.App.AppStates
_playerCharacter = null;
Context.PlayerFactory.ReleaseArms(_armsMesh);
_armsMesh = null;
_orderService = null;
Context.InputService.DisableMap(ActionMappings.Gameplay);
Context.AudioService.GladlyAskToStopMusic(MusicType.Action, callback: Context.AudioFactory.ReleaseActionMusic);
@@ -198,7 +217,9 @@ namespace Code.App.AppStates
private void UIInitialize()
{
_gameplayPanel = (GameplayPanel)Context.UIService.CurrentPanel;
_gameplayPanel.Initialize(_playerMoney, _playerHealth);
_gameplayPanel.Initialize(_playerMoney, _playerHealth, _orderService);
Context.AudioService.OnDispatcherStarted += _gameplayPanel.SummonDispatcher;
Context.AudioService.OnDispatcherEnded += _gameplayPanel.CloseDispatcher;
}
private void MusicInitialize()
{
@@ -218,6 +239,7 @@ namespace Code.App.AppStates
_orderService.OnOrderGiven += OrderGiven;
_orderService.OnOrderRecieved += OrderRecieved;
_orderService.OnOrderDelivered += OrderDelivered;
_orderService.OnOrderFailure += OrderFailure;
}
private GameplaySceneEnvironment SceneEnvironmentVariables(Container sceneContainer)
{
@@ -1,3 +1,4 @@
using Code.App.Loading;
using Code.App.StateMachine;
using Code.Audio;
using Code.Gameplay.Camera;
@@ -24,9 +25,15 @@ namespace Code.App.AppStates
public override void EnterState()
{
Context.UIService.LoadingScreen.Show();
Context.LoadingManager
.RegisterLoading(LoadingWork.LoadScene)
.RegisterLoading(LoadingWork.WaitForSceneInstaller)
.RegisterLoading(LoadingWork.LoadUI)
.RegisterLoading(LoadingWork.LoadAudio);
// Context.UIService.LoadingScreen.Show();
Context.CameraStateMachine.SwitchState(CameraMode.UltraStatic);
Context.CameraStateMachine.SwitchState(CameraMode.MainMenu);
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
WaitForSceneToLoad();
@@ -40,11 +47,15 @@ namespace Code.App.AppStates
Context.UIService.AsyncSwitchPanelTo(UIPanel.MainMenu),
Context.AudioFactory.WarmMenuMusic()
);
Context.LoadingManager
.UnregisterLoading(LoadingWork.LoadScene)
.UnregisterLoading(LoadingWork.LoadUI)
.UnregisterLoading(LoadingWork.LoadAudio);
InitializeAudio();
var mainMenuEnvironment = ((MainMenuEnvironment)SceneManager.GetActiveScene()
.GetSceneContainer().Resolve<CurrentSceneEnvironment>());
var mainMenuEnvironment = (MainMenuEnvironment)SceneManager.GetActiveScene()
.GetSceneContainer().Resolve<CurrentSceneEnvironment>();
InitializeUI(mainMenuEnvironment);
@@ -52,12 +63,12 @@ namespace Code.App.AppStates
InitializeInput();
Context.UIService.LoadingScreen.Hide();
// Context.UIService.LoadingScreen.Hide();
}
private void InitializeCamera(MainMenuEnvironment mainMenuEnvironment)
{
((UltraStaticState)Context.CameraStateMachine.CurrentBaseState).SetFollowTransform(mainMenuEnvironment
((Gameplay.Camera.CameraStates.MainMenuState)Context.CameraStateMachine.CurrentBaseState).SetFollowTransform(mainMenuEnvironment
.cameraPosition);
}