// using System.Collections.Generic; // using BlueWater.Npcs.Customers; // using BlueWater.Tycoons; // using Sirenix.OdinInspector; // using UnityEngine; // // namespace BlueWater.Uis // { // public class IndicatorUi : MonoBehaviour // { // [SerializeField, Required] // private GameObject _uiIndicator; // // [SerializeField] // private Vector2 _widthPadding; // // [SerializeField] // private Vector2 _heightPadding; // // private RectTransform _canvasRectTransform; // private Camera _mainCamera; // private Dictionary _customerindicators = new(); // private int _screenWidth; // private int _screenHeight; // // private void Start() // { // _canvasRectTransform = GetComponent(); // _mainCamera = TycoonCameraManager.Instance.MainCamera; // // //EventManager.OnCreateCustomer += AddUiIndicator; // } // // private void OnDestroy() // { // //EventManager.OnCreateCustomer -= AddUiIndicator; // } // // private void LateUpdate() // { // _screenWidth = Screen.width; // _screenHeight = Screen.height; // // foreach (var element in _customerindicators) // { // var customer = element.Key; // var indicator = element.Value; // if (!customer) // { // _customerindicators.Remove(customer); // Destroy(indicator.gameObject); // return; // } // var target = customer.BalloonUi.transform; // var screenPosition = _mainCamera.WorldToScreenPoint(target.position); // // if (!target.gameObject.activeSelf) // { // indicator.SetActive(false); // continue; // } // // if (screenPosition.z > 0 && screenPosition.x > 0 && screenPosition.x < _screenWidth && screenPosition.y > 0 && screenPosition.y < _screenHeight) // { // indicator.SetActive(false); // } // else // { // indicator.SetActive(true); // var clampedScreenPosition = screenPosition; // clampedScreenPosition.x = Mathf.Clamp(screenPosition.x, 0f + _widthPadding.x, _screenWidth - _widthPadding.y); // clampedScreenPosition.y = Mathf.Clamp(screenPosition.y, 0f + _heightPadding.x, _screenHeight - _heightPadding.y); // RectTransformUtility.ScreenPointToLocalPointInRectangle(_canvasRectTransform, clampedScreenPosition, _mainCamera, out var localPoint); // indicator.transform.localPosition = localPoint; // // var cameraCenterPosition = new Vector3(_screenWidth * 0.5f, _screenHeight * 0.5f, screenPosition.z); // var direction = (screenPosition - cameraCenterPosition).normalized; // var angle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg; // indicator.transform.localRotation = Quaternion.Euler(0f, 0f, angle - 90f); // } // } // } // // private void AddUiIndicator(Customer customer) // { // var newUiIndicator = Instantiate(_uiIndicator, transform); // newUiIndicator.SetActive(false); // _customerindicators.Add(customer, newUiIndicator); // } // } // }