Меню, дверь, цвет
This commit is contained in:
1 parent
c4ab11488b
commit
5da64a7b3d
29 files changed
+1581
-443
No files matched your search
@@ -2,11 +2,13 @@ using Code.App.StateMachine;
|
||||
using Code.Audio;
|
||||
using Code.Gameplay.Camera;
|
||||
using Code.Gameplay.Camera.CameraStates;
|
||||
using Code.Gameplay.Door;
|
||||
using Code.Input;
|
||||
using Code.Scenes;
|
||||
using Code.Scenes.SceneEnvironments;
|
||||
using Code.StateMachine;
|
||||
using Code.UI;
|
||||
using Code.UI.Panels;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Reflex.Extensions;
|
||||
using UnityEngine;
|
||||
@@ -24,13 +26,14 @@ namespace Code.App.AppStates
|
||||
{
|
||||
Context.UIService.LoadingScreen.Show();
|
||||
|
||||
Context.CameraStateMachine.SwitchState(CameraMode.Static);
|
||||
Context.CameraStateMachine.SwitchState(CameraMode.UltraStatic);
|
||||
|
||||
#pragma warning disable CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
WaitForSceneToLoad();
|
||||
#pragma warning restore CS4014 // Because this call is not awaited, execution of the current method continues before the call is completed
|
||||
}
|
||||
|
||||
private CinematicDoorOpening _damnDoor = new();
|
||||
private async UniTaskVoid WaitForSceneToLoad()
|
||||
{
|
||||
await UniTask.WhenAll(
|
||||
@@ -42,17 +45,20 @@ namespace Code.App.AppStates
|
||||
Context.AudioService.TransitToSnapshot(AudioSnapshotState.Menu);
|
||||
Context.AudioService.PlayRandomMusicUntilHumanityWillBeDestroyedForTheySins(MusicType.Menu);
|
||||
|
||||
((MainMenuPanel)Context.UIService.CurrentPanel).startButton.onClick.AddListener(StartGame);
|
||||
((MainMenuPanel)Context.UIService.CurrentPanel).exitButton.onClick.AddListener(ExitGame);
|
||||
|
||||
var hui = ((MainMenuEnvironment)SceneManager.GetActiveScene()
|
||||
.GetSceneContainer().Resolve<CurrentSceneEnvironment>());
|
||||
|
||||
((StaticState)Context.CameraStateMachine.CurrentBaseState).LookTarget =
|
||||
hui.cameraTarget;
|
||||
|
||||
((BaseCameraState)Context.CameraStateMachine.CurrentBaseState).SetFollowTransform(hui.cameraPosition);
|
||||
_damnDoor.DamnDoor = hui.damnDoor;
|
||||
_damnDoor.DamnDoor.SetPhysics(false);
|
||||
_damnDoor.DoorLight = hui.doorLight;
|
||||
|
||||
var menuPanel = (MainMenuPanel)Context.UIService.CurrentPanel;
|
||||
|
||||
menuPanel.startButton.button.onClick.AddListener(StartGame);
|
||||
menuPanel.exitButton.button.onClick.AddListener(ExitGame);
|
||||
menuPanel.CinematicDoorOpening = _damnDoor;
|
||||
|
||||
((UltraStaticState)Context.CameraStateMachine.CurrentBaseState).SetFollowTransform(hui.cameraPosition);
|
||||
|
||||
Context.UIService.LoadingScreen.Hide();
|
||||
|
||||
Context.InputService.EnableMap(ActionMappings.MainMenu);
|
||||
|
||||
@@ -12,6 +12,7 @@ namespace Code.Gameplay.Camera
|
||||
{
|
||||
Bogdan,
|
||||
Static,
|
||||
UltraStatic,
|
||||
FirstPerson,
|
||||
ThirdPerson,
|
||||
Cinematic
|
||||
|
||||
@@ -10,10 +10,11 @@ namespace Code.Gameplay.Camera
|
||||
public override void Initialize()
|
||||
{
|
||||
States.Add(CameraMode.Static, new StaticState(StateMachineContext));
|
||||
States.Add(CameraMode.UltraStatic, new UltraStaticState(StateMachineContext));
|
||||
States.Add(CameraMode.FirstPerson, new FirstPersonState(StateMachineContext));
|
||||
States.Add(CameraMode.ThirdPerson, new ThirdPersonState(StateMachineContext));
|
||||
|
||||
CurrentBaseState = States[CameraMode.Static];
|
||||
CurrentBaseState = States[CameraMode.UltraStatic];
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Camera.CameraStates
|
||||
{
|
||||
public class UltraStaticState : BaseCameraState, ICameraState
|
||||
{
|
||||
public UltraStaticState(CameraStateMachineContext context) : base(context) { }
|
||||
|
||||
public override void EnterState()
|
||||
{
|
||||
Debug.Log("Ultra static State Enter");
|
||||
base.EnterState();
|
||||
}
|
||||
|
||||
protected override void HandlePosition(float deltaTime, float zoomInput, Quaternion targetRotation)
|
||||
{
|
||||
Camera.transform.position = FollowTransform.position;
|
||||
}
|
||||
|
||||
public CameraMode GetCameraMode() => CameraMode.UltraStatic;
|
||||
|
||||
protected override void HandleRotationInput(float deltaTime, Vector3 rotationInput,
|
||||
out Quaternion targetRotation)
|
||||
{
|
||||
if(FollowTransform) Camera.transform.rotation = FollowTransform.rotation;
|
||||
targetRotation = Camera.transform.rotation;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8e4b2fa3af4b4ba78ab79ca154f05fb4
|
||||
timeCreated: 1763547110
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b7ba7b62b1aa47c48dc82ac8d8e8530e
|
||||
timeCreated: 1763548306
|
||||
@@ -0,0 +1,23 @@
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Door
|
||||
{
|
||||
public class CinematicDoorOpening
|
||||
{
|
||||
public DamnDoor DamnDoor;
|
||||
public Light DoorLight;
|
||||
|
||||
public void PreOpen(bool start)
|
||||
{
|
||||
DoorLight.DOColor(start ? Color.yellow : Color.red, 0.2f);
|
||||
|
||||
DamnDoor.Petlya.DORotate(new Vector3(0, -40, 0), 1f);
|
||||
}
|
||||
|
||||
public void Close()
|
||||
{
|
||||
DamnDoor.Petlya.DORotate(new Vector3(0, 0, 0), 1f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: deda0339570d44609dd62eafd9c6215f
|
||||
timeCreated: 1763548908
|
||||
@@ -0,0 +1,16 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace Code.Gameplay.Door
|
||||
{
|
||||
public class DamnDoor : MonoBehaviour
|
||||
{
|
||||
[SerializeField] Rigidbody rigidbody;
|
||||
[SerializeField] private Transform petlya;
|
||||
public Transform Petlya => petlya;
|
||||
|
||||
public void SetPhysics(bool active)
|
||||
{
|
||||
rigidbody.isKinematic = active;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 50a6b5e332704611b19f5a209d4dbffe
|
||||
timeCreated: 1763548314
|
||||
@@ -1,18 +1,21 @@
|
||||
using Code.Gameplay.Door;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
using UnityEngine.Experimental.GlobalIllumination;
|
||||
|
||||
namespace Code.Scenes.SceneEnvironments
|
||||
{
|
||||
[System.Serializable]
|
||||
public class MainMenuEnvironment : CurrentSceneEnvironment
|
||||
{
|
||||
public Transform cameraTarget;
|
||||
public Transform cameraPosition;
|
||||
public DamnDoor damnDoor;
|
||||
public Light doorLight;
|
||||
|
||||
public void TransitVariables(MainMenuEnvironment env)
|
||||
{
|
||||
cameraTarget = env.cameraTarget;
|
||||
cameraPosition = env.cameraPosition;
|
||||
damnDoor = env.damnDoor;
|
||||
doorLight = env.doorLight;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 14bf9dd380324bf49ea98fbeb8c94186
|
||||
timeCreated: 1763550884
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Code.UI.Panels.Etc
|
||||
{
|
||||
public class HoverButton : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler
|
||||
{
|
||||
public Button button;
|
||||
public Action OnPointerEnterEvent, OnPointerExitEvent;
|
||||
|
||||
public void OnPointerEnter(PointerEventData eventData) => OnPointerEnterEvent?.Invoke();
|
||||
public void OnPointerExit(PointerEventData eventData) => OnPointerExitEvent?.Invoke();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f97de34a1f6042128921ad728f153909
|
||||
timeCreated: 1763550895
|
||||
@@ -1,12 +1,22 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using Code.Gameplay.Door;
|
||||
using Code.UI.Panels.Etc;
|
||||
|
||||
namespace Code.UI
|
||||
namespace Code.UI.Panels
|
||||
{
|
||||
public class MainMenuPanel : UIElement
|
||||
{
|
||||
public Button startButton;
|
||||
public Button exitButton;
|
||||
public HoverButton startButton;
|
||||
public HoverButton exitButton;
|
||||
public CinematicDoorOpening CinematicDoorOpening;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
startButton.OnPointerEnterEvent = OpenStart;
|
||||
exitButton.OnPointerEnterEvent = OpenExit;
|
||||
startButton.OnPointerExitEvent = CloseDoor;
|
||||
exitButton.OnPointerExitEvent = CloseDoor;
|
||||
}
|
||||
|
||||
public override void Show()
|
||||
{
|
||||
}
|
||||
@@ -14,5 +24,18 @@ namespace Code.UI
|
||||
public override void Hide()
|
||||
{
|
||||
}
|
||||
|
||||
private void OpenExit()
|
||||
{
|
||||
CinematicDoorOpening.PreOpen(false);
|
||||
}
|
||||
private void OpenStart()
|
||||
{
|
||||
CinematicDoorOpening.PreOpen(true);
|
||||
}
|
||||
private void CloseDoor()
|
||||
{
|
||||
CinematicDoorOpening.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user