using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.UI; // ReSharper disable once CheckNamespace namespace BlueWaterProject { public class OceanUi : MonoBehaviour { [Title("초기화 방식")] [SerializeField] private bool autoInit = true; [field: Title("UI")] [field: SerializeField] public ProcessBar ProcessBar { get; set; } [SerializeField] private Vector3 processBarOffset = Vector3.zero; [field: SerializeField] public Slider ShipBoostSlider { get; set; } [field: SerializeField] public GameObject SpeedLines { get; set; } [field: SerializeField] public DropItemGroupController DropItemGroupController { get; set; } [field: SerializeField] public WeatherUi WeatherUi { get; private set; } [field: SerializeField] public ItemInventoryUi OceanItemInventoryUi { get; set; } [field: SerializeField] public DiscardPopupUi DiscardPopupUi { get; set; } public Canvas MainCanvas { get; private set; } public Transform InstantiateUi { get; private set; } public Transform ItemsLoot { get; private set; } [Button("셋팅 초기화")] private void Init() { MainCanvas = GetComponent(); if (!MainCanvas) { Debug.LogError("canvas is null error"); return; } var processBar = MainCanvas.transform.Find("ProcessBar").gameObject; var fill = processBar.transform.Find("Fill").GetComponent(); var previousGaugeLine = processBar.transform.Find("PreviousGaugeLine").transform; var reloadSlider = MainCanvas.transform.Find("ReloadSlider").GetComponent(); ProcessBar = new ProcessBar(processBar, fill, previousGaugeLine, reloadSlider); ProcessBar.SetActiveReloadSlider(false); ShipBoostSlider = MainCanvas.transform.Find("ShipBoostSlider").GetComponent(); ShipBoostSlider.value = 0f; SpeedLines = MainCanvas.transform.Find("SpeedLines").gameObject; SpeedLines.SetActive(false); DropItemGroupController = MainCanvas.transform.Find("DropItemGroup").GetComponent(); WeatherUi = MainCanvas.transform.Find("WeatherUi").GetComponent(); OceanItemInventoryUi = MainCanvas.transform.Find("OceanItemInventoryUi").GetComponent(); DiscardPopupUi = MainCanvas.transform.Find("DiscardPopupUi").GetComponent(); InstantiateUi = MainCanvas.transform.Find("InstantiateUi"); if (!InstantiateUi) { InstantiateUi = new GameObject("InstantiateUi").transform; InstantiateUi.parent = MainCanvas.transform; } ItemsLoot = InstantiateUi.transform.Find("ItemsLoot"); if (!ItemsLoot) { ItemsLoot = new GameObject("ItemsLoot").transform; ItemsLoot.parent = InstantiateUi.transform; } } private void Awake() { if (autoInit) { Init(); } UiManager.Inst.OceanUi = this; ProcessBar.SetActive(false); } private void Update() { if (ProcessBar.Obj.activeSelf) { var mousePos = Input.mousePosition; var result = mousePos + processBarOffset; ProcessBar.SetPosition(result); } } public void SetActiveSpeedLine(bool value) => SpeedLines.SetActive(value); } }