OldBlueWater/BlueWater/Assets/02.Scripts/OceanUi.cs

85 lines
2.9 KiB
C#
Raw Normal View History

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 ItemLootUi ItemLootUi { get; set; }
[SerializeField] private Vector2 itemLootOffset;
private Canvas canvas;
private RectTransform canvasRectTransform;
private Transform itemsLoot;
[Button("셋팅 초기화")]
private void Init()
{
canvas = GetComponent<Canvas>();
if (!canvas)
{
Debug.LogError("canvas is null error");
return;
}
canvasRectTransform = canvas.GetComponent<RectTransform>();
var processBar = canvas.transform.Find("ProcessBar").gameObject;
var fill = processBar.transform.Find("Fill").GetComponent<Image>();
var previousGaugeLine = processBar.transform.Find("PreviousGaugeLine").transform;
var reloadSlider = canvas.transform.Find("ReloadSlider").GetComponent<Slider>();
ProcessBar = new ProcessBar(processBar, fill, previousGaugeLine, reloadSlider);
ProcessBar.SetActiveReloadSlider(false);
ShipBoostSlider = canvas.transform.Find("ShipBoostSlider").GetComponent<Slider>();
ShipBoostSlider.value = 0f;
SpeedLines = canvas.transform.Find("SpeedLines").gameObject;
SpeedLines.SetActive(false);
itemsLoot = canvas.transform.Find("ItemsLoot");
}
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 CreateItemLootUi(Vector3 lootPos, Sprite sprite = null)
{
var screenPos = CameraManager.Inst.MainCam.WorldToScreenPoint(lootPos);
var itemLootUi = Instantiate(ItemLootUi, screenPos, Quaternion.identity, itemsLoot);
itemLootUi.Init(lootPos);
}
public void SetActiveSpeedLine(bool value) => SpeedLines.SetActive(value);
}
}