From 724161c45547d1184d3853887f149031c612160a Mon Sep 17 00:00:00 2001 From: ThomasCharester Date: Tue, 28 Oct 2025 14:07:50 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D0=BE=D1=85=20=D0=B2=20=D0=BA=D0=B0=D0=BC=D0=B5=D1=80=D0=B5,?= =?UTF-8?q?=20=D0=BD=D0=B0=D1=81=D1=80=D0=B0=D0=BD=D0=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Code/App/AppStates/GameplayState.cs | 2 +- .../Assets/Code/App/BootstrapInstaller.cs | 2 + .../Assets/Code/Configs/AppConfig.cs | 6 --- ...aracterCameraConfig.cs => CameraConfig.cs} | 4 +- ...eraConfig.cs.meta => CameraConfig.cs.meta} | 0 .../{CharacterCamera.cs => CameraService.cs} | 46 +++++++++++-------- ...erCamera.cs.meta => CameraService.cs.meta} | 0 .../Controller/CustomCharacterController.cs | 2 +- .../Gameplay/Character/Core/CameraMode.cs | 2 +- .../Code/Gameplay/Character/Core/Character.cs | 19 ++++---- .../Code/Gameplay/Player/PlayerFactory.cs | 4 +- .../Assets/Code/Gameplay/Player/PlayerHP.cs | 27 ----------- .../Code/Gameplay/Player/PlayerHP.cs.meta | 3 -- .../Code/StaticData/IStaticDataService.cs | 2 +- .../Code/StaticData/StaticDataService.cs | 4 +- 15 files changed, 48 insertions(+), 75 deletions(-) rename Game/CourierOld/Assets/Code/Configs/{CharacterCameraConfig.cs => CameraConfig.cs} (94%) rename Game/CourierOld/Assets/Code/Configs/{CharacterCameraConfig.cs.meta => CameraConfig.cs.meta} (100%) rename Game/CourierOld/Assets/Code/Gameplay/Character/Camera/{CharacterCamera.cs => CameraService.cs} (88%) rename Game/CourierOld/Assets/Code/Gameplay/Character/Camera/{CharacterCamera.cs.meta => CameraService.cs.meta} (100%) delete mode 100644 Game/CourierOld/Assets/Code/Gameplay/Player/PlayerHP.cs delete mode 100644 Game/CourierOld/Assets/Code/Gameplay/Player/PlayerHP.cs.meta diff --git a/Game/CourierOld/Assets/Code/App/AppStates/GameplayState.cs b/Game/CourierOld/Assets/Code/App/AppStates/GameplayState.cs index 60b078c..83d4b51 100644 --- a/Game/CourierOld/Assets/Code/App/AppStates/GameplayState.cs +++ b/Game/CourierOld/Assets/Code/App/AppStates/GameplayState.cs @@ -10,7 +10,7 @@ namespace Code.App.AppStates { public class GameplayState : BaseState { - private PlayerHealthPoints _playerHealthPoints; + private PlayerHealth _playerHealthPoints; public GameplayState(AppStateMachineContext context) : base(context) { diff --git a/Game/CourierOld/Assets/Code/App/BootstrapInstaller.cs b/Game/CourierOld/Assets/Code/App/BootstrapInstaller.cs index 753e8e2..b6cc559 100644 --- a/Game/CourierOld/Assets/Code/App/BootstrapInstaller.cs +++ b/Game/CourierOld/Assets/Code/App/BootstrapInstaller.cs @@ -1,4 +1,5 @@ using Code.App.StateMachine; +using Code.Configs; using Code.Input; using Code.Scenes; using Code.StaticData; @@ -45,6 +46,7 @@ namespace Code.App containerBuilder.AddSingleton(staticDataService, typeof(IStaticDataService)); containerBuilder.AddSingleton(staticDataService.InputConfig.inputActionAsset, typeof(InputActionAsset)); containerBuilder.AddSingleton(staticDataService.UIConfig.canvasPrefab, typeof(Canvas)); + containerBuilder.AddSingleton(staticDataService.CameraConfig, typeof(CameraConfig)); containerBuilder.AddSingleton(staticDataService.UIConfig.uiElementsPrefabs, typeof(UIElement[])); } diff --git a/Game/CourierOld/Assets/Code/Configs/AppConfig.cs b/Game/CourierOld/Assets/Code/Configs/AppConfig.cs index 9dfef08..6bcaba3 100644 --- a/Game/CourierOld/Assets/Code/Configs/AppConfig.cs +++ b/Game/CourierOld/Assets/Code/Configs/AppConfig.cs @@ -7,10 +7,4 @@ namespace Code.Configs { public GameObject infrastructureUnitPrefab; } - [CreateAssetMenu(menuName = "Config/Player", fileName = "PlayerConfig")] - public class PlayerConfig : ScriptableObject - { - public Player playerPrefab; - public int maxHealth; - } } \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/Configs/CharacterCameraConfig.cs b/Game/CourierOld/Assets/Code/Configs/CameraConfig.cs similarity index 94% rename from Game/CourierOld/Assets/Code/Configs/CharacterCameraConfig.cs rename to Game/CourierOld/Assets/Code/Configs/CameraConfig.cs index 6ad8eb5..98a5552 100644 --- a/Game/CourierOld/Assets/Code/Configs/CharacterCameraConfig.cs +++ b/Game/CourierOld/Assets/Code/Configs/CameraConfig.cs @@ -4,7 +4,7 @@ using UnityEngine; namespace Code.Configs { [CreateAssetMenu(fileName = "CharacterCameraConfig", menuName = "Config/CharacterCameraConfig")] - public class CharacterCameraConfig : ScriptableObject + public class CameraConfig : ScriptableObject { public float // Расстояния от персонажа до камеры @@ -30,7 +30,7 @@ namespace Code.Configs defaultVerticalAngle = 10f; // Стандартный угол наклона камеры // Текущий режим камеры - public CameraMode defaultCameraMode = CameraMode.MainMenu; + public CameraMode defaultCameraMode = CameraMode.Bogdan; // Позиция следования по умолчанию (для меню) public Vector3 defaultFollowPosition = Vector3.zero; diff --git a/Game/CourierOld/Assets/Code/Configs/CharacterCameraConfig.cs.meta b/Game/CourierOld/Assets/Code/Configs/CameraConfig.cs.meta similarity index 100% rename from Game/CourierOld/Assets/Code/Configs/CharacterCameraConfig.cs.meta rename to Game/CourierOld/Assets/Code/Configs/CameraConfig.cs.meta diff --git a/Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CharacterCamera.cs b/Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CameraService.cs similarity index 88% rename from Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CharacterCamera.cs rename to Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CameraService.cs index b68b33e..c5914e4 100644 --- a/Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CharacterCamera.cs +++ b/Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CameraService.cs @@ -1,4 +1,5 @@ using System; +using Code.Configs; using Code.Gameplay.Character.Core; using Code.StaticData; using Reflex.Attributes; @@ -13,9 +14,9 @@ namespace Code.Gameplay.Character.Camera * * Источник: Tvtig, https://www.youtube.com/watch?v=9ibpY64wBYM */ - public class CharacterCamera : MonoBehaviour + public class CameraService : MonoBehaviour { - // Параметры загружаются из CharacterCameraConfig + // Параметры загружаются из CameraConfig private float _defaultDistance, _minDistance, @@ -52,27 +53,26 @@ namespace Code.Gameplay.Character.Camera // Текущий режим работы камеры public CameraMode CurrentMode { get; private set; } - // DI для загрузки конфига - [Inject] private IStaticDataService _staticDataService; + // Конфиг из DI + [Inject] private CameraConfig _config; // Загрузка конфига для камеры private void LoadConfig() { - // Загрузка значений из конфигов - var config = _staticDataService.CharacterCameraConfig; + // Загрузка значений из конфига - _defaultDistance = config.defaultDistance; - _minDistance = config.minDistance; - _maxDistance = config.maxDistance; - _distanceMovementSpeed = config.distanceMovementSpeed; - _rotationSpeed = config.rotationSpeed; - _rotationSharpness = config.rotationSharpness; - _followSharpness = config.followSharpness; - _minVerticalAngle = config.minVerticalAngle; - _maxVerticalAngle = config.maxVerticalAngle; - _defaultVerticalAngle = config.defaultVerticalAngle; - CurrentMode = config.defaultCameraMode; - _defaultFollowPosition = config.defaultFollowPosition; + _defaultDistance = _config.defaultDistance; + _minDistance = _config.minDistance; + _maxDistance = _config.maxDistance; + _distanceMovementSpeed = _config.distanceMovementSpeed; + _rotationSpeed = _config.rotationSpeed; + _rotationSharpness = _config.rotationSharpness; + _followSharpness = _config.followSharpness; + _minVerticalAngle = _config.minVerticalAngle; + _maxVerticalAngle = _config.maxVerticalAngle; + _defaultVerticalAngle = _config.defaultVerticalAngle; + CurrentMode = _config.defaultCameraMode; + _defaultFollowPosition = _config.defaultFollowPosition; // Валидация значений (на случай ручного редактирования конфига) _defaultDistance = Mathf.Clamp(_defaultDistance, _minDistance, _maxDistance); @@ -166,7 +166,7 @@ namespace Code.Gameplay.Character.Camera public void UpdateWithInput(float deltaTime, float zoomInput, Vector3 rotationInput) { // Проверка наличия цели для следования и проверка на режим главного меню - if (!_followTransform || CurrentMode == CameraMode.MainMenu) return; + if (!_followTransform || CurrentMode == CameraMode.Bogdan) return; // Обработка ввода и позиционирования HandleRotationInput(deltaTime, rotationInput, out var targetRotation); @@ -204,7 +204,13 @@ namespace Code.Gameplay.Character.Camera _targetDistance = _defaultDistance; break; // Заготовка на будущее (если понадобится) - case CameraMode.MainMenu: + case CameraMode.Bogdan: + _minDistance = 0f; + _maxDistance = 0f; + _defaultDistance = 0f; + _targetDistance = 0f; + _currentDistance = 0f; + break; case CameraMode.Static: case CameraMode.Cinematic: default: diff --git a/Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CharacterCamera.cs.meta b/Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CameraService.cs.meta similarity index 100% rename from Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CharacterCamera.cs.meta rename to Game/CourierOld/Assets/Code/Gameplay/Character/Camera/CameraService.cs.meta diff --git a/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/CustomCharacterController.cs b/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/CustomCharacterController.cs index 50b9159..80ba62b 100644 --- a/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/CustomCharacterController.cs +++ b/Game/CourierOld/Assets/Code/Gameplay/Character/Controller/CustomCharacterController.cs @@ -127,7 +127,7 @@ namespace Code.Gameplay.Character.Controller // Заготовка на будущее (если понадобится) case CameraMode.Static: case CameraMode.Cinematic: - case CameraMode.MainMenu: // Скорее всего юзлес, но пускай будет + case CameraMode.Bogdan: // Скорее всего юзлес, но пускай будет default: break; } diff --git a/Game/CourierOld/Assets/Code/Gameplay/Character/Core/CameraMode.cs b/Game/CourierOld/Assets/Code/Gameplay/Character/Core/CameraMode.cs index 355aaad..7104921 100644 --- a/Game/CourierOld/Assets/Code/Gameplay/Character/Core/CameraMode.cs +++ b/Game/CourierOld/Assets/Code/Gameplay/Character/Core/CameraMode.cs @@ -10,7 +10,7 @@ namespace Code.Gameplay.Character.Core */ public enum CameraMode { - MainMenu, + Bogdan, Static, FirstPerson, ThirdPerson, diff --git a/Game/CourierOld/Assets/Code/Gameplay/Character/Core/Character.cs b/Game/CourierOld/Assets/Code/Gameplay/Character/Core/Character.cs index 1dc024f..525396a 100644 --- a/Game/CourierOld/Assets/Code/Gameplay/Character/Core/Character.cs +++ b/Game/CourierOld/Assets/Code/Gameplay/Character/Core/Character.cs @@ -3,6 +3,7 @@ using Code.Gameplay.Character.Controller; using Code.Input; using Reflex.Attributes; using UnityEngine; +using UnityEngine.Serialization; namespace Code.Gameplay.Character.Core { @@ -14,7 +15,7 @@ namespace Code.Gameplay.Character.Core */ public class Character : MonoBehaviour { - [SerializeField] private CharacterCamera characterCamera; // Компонент камеры персонажа + [FormerlySerializedAs("characterCamera")] [SerializeField] private CameraService cameraService; // Компонент камеры персонажа [SerializeField] private CustomCharacterController customCharacterController; // Компонент управления персонажем [SerializeField] private Transform cameraFollowPoint; // Точка следования камеры (уровень глаз для FirstPerson) @@ -27,8 +28,8 @@ namespace Code.Gameplay.Character.Core private void Start() { // Настройка камеры для следования за точкой камеры - characterCamera.SetFollowTransform(cameraFollowPoint); - characterCamera.SetCameraMode(CameraMode.FirstPerson); + cameraService.SetFollowTransform(cameraFollowPoint); + cameraService.SetCameraMode(CameraMode.FirstPerson); // Включение Gameplay мапа ввода _inputService.EnableMap(ActionMappings.Gameplay); @@ -42,7 +43,7 @@ namespace Code.Gameplay.Character.Core var scrollInput = _inputService.ZoomInput; // Передаем данные в камеру - characterCamera.UpdateWithInput(Time.deltaTime, scrollInput, + cameraService.UpdateWithInput(Time.deltaTime, scrollInput, new Vector3(lookInput.x, lookInput.y, 0)); } @@ -61,9 +62,9 @@ namespace Code.Gameplay.Character.Core inputs.SlidePressed = _inputService.SlidePressed; // Слайд (Ctrl) // Передаем информацию о камере для адаптивного поведения - inputs.CameraRotation = characterCamera.transform.rotation; - inputs.CameraMode = characterCamera.CurrentMode; - inputs.CameraPlanarDirection = characterCamera.PlanarDirection; + inputs.CameraRotation = cameraService.transform.rotation; + inputs.CameraMode = cameraService.CurrentMode; + inputs.CameraPlanarDirection = cameraService.PlanarDirection; // Передаем ввод в контроллер персонажа customCharacterController.SetInputs(ref inputs); @@ -92,10 +93,10 @@ namespace Code.Gameplay.Character.Core // Метод для переключения режимов камеры private void ToggleCameraMode() { - var currentMode = characterCamera.CurrentMode; + var currentMode = cameraService.CurrentMode; var newMode = currentMode == CameraMode.FirstPerson ? CameraMode.ThirdPerson : CameraMode.FirstPerson; - characterCamera.SetCameraMode(newMode); + cameraService.SetCameraMode(newMode); } // Обновление логики каждый кадр diff --git a/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerFactory.cs b/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerFactory.cs index b38f512..f91c407 100644 --- a/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerFactory.cs +++ b/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerFactory.cs @@ -8,11 +8,11 @@ namespace Code.Gameplay.Player { [Inject] PlayerConfig _playerConfig; - public PlayerHealthPoints CreatePlayerHP(int count = -1) + public PlayerHealth CreatePlayerHP(int count = -1) { if (count < 0) count = _playerConfig.maxHealth; - return new PlayerHealthPoints(count); + return new PlayerHealth(count); } } } \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerHP.cs b/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerHP.cs deleted file mode 100644 index 0add76f..0000000 --- a/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerHP.cs +++ /dev/null @@ -1,27 +0,0 @@ -namespace Code.Gameplay.Player -{ - public class PlayerHealthPoints - { - public delegate void OnDeathDelegate(); - - public event OnDeathDelegate OnDeath; - - public delegate void OnDamageDelegate(int damage); - - public event OnDamageDelegate OnDamage; - - private int _healthPoints; - - public int HealthPoints => _healthPoints; - - public void GetDamage(int count) - { - _healthPoints -= count; - OnDamage?.Invoke(count); - - if (_healthPoints <= 0) OnDeath?.Invoke(); - } - - public PlayerHealthPoints(int healthPoints = 1) => _healthPoints = healthPoints; - } -} \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerHP.cs.meta b/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerHP.cs.meta deleted file mode 100644 index ca0c2a0..0000000 --- a/Game/CourierOld/Assets/Code/Gameplay/Player/PlayerHP.cs.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: 105512e4d3af4b36932a0d569b87c68e -timeCreated: 1761059874 \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/StaticData/IStaticDataService.cs b/Game/CourierOld/Assets/Code/StaticData/IStaticDataService.cs index e7e5bfb..db3e4a4 100644 --- a/Game/CourierOld/Assets/Code/StaticData/IStaticDataService.cs +++ b/Game/CourierOld/Assets/Code/StaticData/IStaticDataService.cs @@ -9,6 +9,6 @@ namespace Code.StaticData InputConfig InputConfig { get; } AppConfig AppConfig { get; } UIConfig UIConfig { get; } - CharacterCameraConfig CharacterCameraConfig { get; } + CameraConfig CameraConfig { get; } } } \ No newline at end of file diff --git a/Game/CourierOld/Assets/Code/StaticData/StaticDataService.cs b/Game/CourierOld/Assets/Code/StaticData/StaticDataService.cs index 315ab25..425aab6 100644 --- a/Game/CourierOld/Assets/Code/StaticData/StaticDataService.cs +++ b/Game/CourierOld/Assets/Code/StaticData/StaticDataService.cs @@ -9,13 +9,13 @@ namespace Code.StaticData public AppConfig AppConfig { get; private set; } public InputConfig InputConfig { get; private set; } public UIConfig UIConfig { get; private set; } - public CharacterCameraConfig CharacterCameraConfig { get; private set; } + public CameraConfig CameraConfig { get; private set; } public void Load() { InputConfig = Resources.Load(string.Format(StringPaths.ConfigSingle, "App", "InputConfig")); AppConfig = Resources.Load(string.Format(StringPaths.ConfigSingle, "App", "AppConfig")); - CharacterCameraConfig = Resources.Load(string.Format(StringPaths.ConfigSingle, "App", "CharacterCameraConfig")); + CameraConfig = Resources.Load(string.Format(StringPaths.ConfigSingle, "App", "CharacterCameraConfig")); UIConfig = Resources.Load(string.Format(StringPaths.ConfigSingle, "App", "UIConfig")); } }