2023-08-08 07:08:41 +00:00
|
|
|
using System.Collections.Generic;
|
2023-08-15 20:36:04 +00:00
|
|
|
using BlueWaterProject;
|
2023-08-11 16:21:26 +00:00
|
|
|
using Sirenix.OdinInspector;
|
2023-10-17 07:31:10 +00:00
|
|
|
using Unity.VisualScripting;
|
2023-08-08 07:08:41 +00:00
|
|
|
using UnityEngine;
|
2023-10-05 04:11:46 +00:00
|
|
|
using UnityEngine.InputSystem;
|
2023-10-23 03:12:13 +00:00
|
|
|
using UnityEngine.Serialization;
|
2023-08-08 07:08:41 +00:00
|
|
|
|
2023-08-31 06:46:13 +00:00
|
|
|
// ReSharper disable once CheckNamespace
|
|
|
|
namespace BlueWaterProject
|
2023-08-08 07:08:41 +00:00
|
|
|
{
|
2023-09-20 09:06:45 +00:00
|
|
|
[DefaultExecutionOrder(-1)]
|
2023-08-31 06:46:13 +00:00
|
|
|
public class GameManager : Singleton<GameManager>
|
|
|
|
{
|
2023-10-23 03:12:13 +00:00
|
|
|
[field: Title("Player")]
|
|
|
|
public ShipPlayer ShipPlayer { get; private set; }
|
2023-10-17 07:31:10 +00:00
|
|
|
[field: Required("BlueWater Player Input Action을 넣어주세요.")]
|
2023-10-11 20:26:45 +00:00
|
|
|
[field: SerializeField] public InputActionAsset PlayerAction { get; private set; }
|
2023-10-23 03:12:13 +00:00
|
|
|
public InShipPlayer InShipPlayer { get; private set; }
|
2023-10-17 07:31:10 +00:00
|
|
|
public InIslandPlayer InIslandPlayer { get; set; }
|
|
|
|
[field: Required("Viking Prefab을 넣어주세요.")]
|
|
|
|
[field: SerializeField] public GameObject InIslandPlayerPrefab { get; set; }
|
|
|
|
[field: SerializeField] public List<Crewmate> CrewmatePrefabList { get; set; }
|
2023-08-11 16:21:26 +00:00
|
|
|
|
2023-08-31 06:46:13 +00:00
|
|
|
[Range(0f, 1f)]
|
|
|
|
[SerializeField] private float slowSpeed = 0.1f;
|
2023-10-05 04:11:46 +00:00
|
|
|
|
|
|
|
private const string IN_ISLAND_PLAYER_NAME = "InIslandPlayer";
|
2023-10-06 05:41:16 +00:00
|
|
|
|
|
|
|
[Title("Game State")]
|
|
|
|
[field: SerializeField] public bool IsInShipMode { get; set; }
|
|
|
|
[field: SerializeField] public bool IsDredgeMode { get; set; }
|
|
|
|
[field: SerializeField] public bool IsTakeAim { get; set; }
|
|
|
|
[field: SerializeField] public bool IsAssaultMode { get; set; }
|
2023-10-20 01:26:57 +00:00
|
|
|
[field: SerializeField] public bool IsShipDeckMode { get; set; }
|
2023-10-23 03:12:13 +00:00
|
|
|
[field: SerializeField] public bool IsConversation { get; set; }
|
2023-10-18 02:36:56 +00:00
|
|
|
[field: SerializeField] public GlobalValue.PlayerMode CurrentPlayerMode { get; set; }
|
2023-08-15 20:36:04 +00:00
|
|
|
|
2023-08-31 06:46:13 +00:00
|
|
|
private void Init()
|
|
|
|
{
|
2023-10-23 03:12:13 +00:00
|
|
|
ShipPlayer = FindAnyObjectByType<ShipPlayer>();
|
|
|
|
InShipPlayer = FindAnyObjectByType<InShipPlayer>();
|
2023-08-31 06:46:13 +00:00
|
|
|
}
|
|
|
|
protected override void OnAwake()
|
|
|
|
{
|
|
|
|
Init();
|
|
|
|
}
|
2023-08-11 19:57:41 +00:00
|
|
|
|
2023-08-31 06:46:13 +00:00
|
|
|
private void Start()
|
|
|
|
{
|
|
|
|
Cursor.lockState = CursorLockMode.Confined;
|
|
|
|
}
|
2023-10-06 05:41:16 +00:00
|
|
|
|
2023-08-31 06:46:13 +00:00
|
|
|
public void SlowSpeedMode()
|
|
|
|
{
|
|
|
|
Time.timeScale = slowSpeed;
|
|
|
|
Time.fixedDeltaTime = 0.02f * Time.timeScale;
|
|
|
|
}
|
2023-08-15 20:36:04 +00:00
|
|
|
|
2023-08-31 06:46:13 +00:00
|
|
|
public void DefaultSpeedMode()
|
|
|
|
{
|
|
|
|
Time.timeScale = 1f;
|
|
|
|
Time.fixedDeltaTime = 0.02f;
|
|
|
|
}
|
2023-10-06 05:41:16 +00:00
|
|
|
|
2023-10-18 02:36:56 +00:00
|
|
|
#region Player Mode State switch
|
2023-10-06 05:41:16 +00:00
|
|
|
|
|
|
|
public void SwitchDredgeMode(bool isOn)
|
|
|
|
{
|
|
|
|
if (isOn)
|
|
|
|
{
|
|
|
|
SwitchTakeAim(false);
|
|
|
|
SwitchAssaultMode(false);
|
|
|
|
SwitchInShipMode(false);
|
2023-10-23 03:32:29 +00:00
|
|
|
CameraManager.Inst.CamDredgeMode();
|
2023-10-06 05:41:16 +00:00
|
|
|
IsDredgeMode = true;
|
2023-10-18 02:36:56 +00:00
|
|
|
CurrentPlayerMode = GlobalValue.PlayerMode.DREDGE;
|
2023-10-06 05:41:16 +00:00
|
|
|
}
|
|
|
|
else if (IsDredgeMode)
|
|
|
|
{
|
|
|
|
IsDredgeMode = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SwitchInShipMode(bool isOn)
|
|
|
|
{
|
|
|
|
if (isOn)
|
|
|
|
{
|
|
|
|
SwitchTakeAim(false);
|
|
|
|
SwitchAssaultMode(false);
|
|
|
|
SwitchDredgeMode(false);
|
2023-10-23 03:32:29 +00:00
|
|
|
CameraManager.Inst.CamShipDeckMode();
|
2023-10-06 05:41:16 +00:00
|
|
|
IsInShipMode = true;
|
2023-10-18 02:36:56 +00:00
|
|
|
CurrentPlayerMode = GlobalValue.PlayerMode.IN_SHIP;
|
2023-10-06 05:41:16 +00:00
|
|
|
}
|
|
|
|
else if (IsInShipMode)
|
|
|
|
{
|
2023-10-23 03:32:29 +00:00
|
|
|
CameraManager.Inst.CamDredgeMode();
|
2023-10-06 05:41:16 +00:00
|
|
|
IsInShipMode = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SwitchAssaultMode(bool isOn)
|
|
|
|
{
|
|
|
|
if (isOn)
|
|
|
|
{
|
|
|
|
SwitchTakeAim(false);
|
|
|
|
SwitchInShipMode(false);
|
|
|
|
SwitchDredgeMode(false);
|
2023-10-23 03:32:29 +00:00
|
|
|
CameraManager.Inst.CamAssaultMode();
|
2023-10-06 05:41:16 +00:00
|
|
|
UiManager.Inst.CardLayoutGroupAnimator.Play();
|
|
|
|
IsAssaultMode = true;
|
2023-10-18 02:36:56 +00:00
|
|
|
CurrentPlayerMode = GlobalValue.PlayerMode.ASSAULT;
|
2023-10-06 05:41:16 +00:00
|
|
|
}
|
|
|
|
else if (IsAssaultMode)
|
|
|
|
{
|
2023-10-23 03:32:29 +00:00
|
|
|
CameraManager.Inst.CamDredgeMode();
|
2023-10-06 05:41:16 +00:00
|
|
|
UiManager.Inst.CardLayoutGroupAnimator.Reverse();
|
|
|
|
IsAssaultMode = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public void SwitchTakeAim(bool isOn)
|
|
|
|
{
|
|
|
|
if (isOn)
|
|
|
|
{
|
|
|
|
SwitchAssaultMode(false);
|
|
|
|
SwitchInShipMode(false);
|
|
|
|
SwitchDredgeMode(false);
|
2023-10-23 03:32:29 +00:00
|
|
|
CameraManager.Inst.CamTakeAim(true);
|
2023-10-06 05:41:16 +00:00
|
|
|
Cursor.visible = false;
|
|
|
|
Cursor.lockState = CursorLockMode.Locked;
|
|
|
|
IsTakeAim = true;
|
2023-10-18 02:36:56 +00:00
|
|
|
CurrentPlayerMode = GlobalValue.PlayerMode.TAKE_AIM;
|
2023-10-06 05:41:16 +00:00
|
|
|
}
|
|
|
|
else if (IsTakeAim)
|
|
|
|
{
|
2023-10-23 03:32:29 +00:00
|
|
|
CameraManager.Inst.CamTakeAim(false);
|
2023-10-06 05:41:16 +00:00
|
|
|
Cursor.visible = true;
|
|
|
|
Cursor.lockState = CursorLockMode.Confined;
|
|
|
|
IsTakeAim = false;
|
|
|
|
}
|
|
|
|
|
|
|
|
UiManager.Inst.AimOnOff(isOn);
|
|
|
|
}
|
|
|
|
|
|
|
|
#endregion
|
2023-08-15 20:36:04 +00:00
|
|
|
}
|
2023-08-08 07:08:41 +00:00
|
|
|
}
|