using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using BlueWater.Audios; using BlueWater.Tycoons; using Sirenix.OdinInspector; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.InputSystem; using UnityEngine.UI; using Random = UnityEngine.Random; namespace BlueWater.Uis { public class TycoonSelectCard : PopupUi { [SerializeField] private GameObject _panel; [SerializeField] private Transform _contents; [SerializeField] private string _openSfxName = "OpenNormalRewardBox"; private List _tycoonCards = new(3); private LevelData _currentLevelData; private TycoonManager _tycoonManager; private TycoonCardController _tycoonCardController; private InputAction _interactionEAction; private void Start() { _panel.SetActive(false); _interactionEAction = PlayerInputKeyManager.Instance.GetAction(InputActionMaps.TycoonUi, TycoonUiActions.InteractionE); _tycoonManager = TycoonManager.Instance; _tycoonCardController = _tycoonManager.TycoonCardController; EventManager.OnOpenedNormalRewardBox += CreateCard; } private void OnDestroy() { EventManager.OnOpenedNormalRewardBox -= CreateCard; if (_interactionEAction != null) { _interactionEAction.performed -= OnInteractionE; } } public override void Open() { AudioManager.Instance.PlaySfx(_openSfxName, ignoreTimeScale: true); VisualFeedbackManager.Instance.SetBaseTimeScale(0.0f); PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.TycoonUi); PopupUiController.RegisterPopup(this); _panel.SetActive(true); IsOpened = true; } public override void Close() { _panel.SetActive(false); PopupUiController.UnregisterPopup(this); PlayerInputKeyManager.Instance.SwitchCurrentActionMap(InputActionMaps.Tycoon); IsOpened = false; VisualFeedbackManager.Instance.ResetTimeScale(); } public override void EnableInput() { _interactionEAction.performed += OnInteractionE; this.GetComponent().EnableAutoNavigate(); } public override void DisableInput() { _interactionEAction.performed -= OnInteractionE; this.GetComponent().DisableAutoNavigate(); } public void OnInteractionE(InputAction.CallbackContext context) { var current = EventSystem.current.currentSelectedGameObject; if (!current) return; var currenButton = current.GetComponent