From 3a4ec88cbcb45e529ac8f72d490e24f7c34e0f15 Mon Sep 17 00:00:00 2001 From: Ader Alisma 01 Date: Mon, 9 Jun 2025 16:29:48 -0400 Subject: [PATCH] Deselect fonctionne Bug avec tooltip quand clique sur upgrade rouge --- Assets/Scenes/Game.unity | 12 ++++++ Assets/Scripts/Ally/AllyUpgrade.cs | 20 ++------- Assets/Scripts/UnitTree/DeselectManager.cs | 47 +++++++++++++++------ Assets/Scripts/UnitTree/DeselectedAction.cs | 15 +++---- 4 files changed, 57 insertions(+), 37 deletions(-) diff --git a/Assets/Scenes/Game.unity b/Assets/Scenes/Game.unity index bae83e5..99ef001 100644 --- a/Assets/Scenes/Game.unity +++ b/Assets/Scenes/Game.unity @@ -4663,6 +4663,18 @@ MonoBehaviour: m_EditorClassIdentifier: _pauseButton: {fileID: 2019202048} _speedButton: {fileID: 1709530845} +--- !u!114 &1760532844 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829543639} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4c63e60a445cf4549999d898b25ab0ea, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1 &1761692192 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Ally/AllyUpgrade.cs b/Assets/Scripts/Ally/AllyUpgrade.cs index 624127e..a0352af 100644 --- a/Assets/Scripts/Ally/AllyUpgrade.cs +++ b/Assets/Scripts/Ally/AllyUpgrade.cs @@ -29,9 +29,7 @@ public class AllyUpgrade : MonoBehaviour, IPointerClickHandler { _instance = Instantiate(_upgradeUI, Camera.main.WorldToScreenPoint(transform.position), Quaternion.identity, canvas.transform); AssignUpgrades(canvas); - //EventSystem.current.SetSelectedGameObject(_instance); - //_instance.GetComponent().Select(); - //_instance.AddComponent(); + DeselectManager.Instance.SetAllyUpgrade(_instance); } } } @@ -45,7 +43,7 @@ public class AllyUpgrade : MonoBehaviour, IPointerClickHandler private void AssignUpgrades(Canvas canvas) { - // Assign upgrade Prefabs + // Assign upgrade Prefabs for (int i = 0; i < _instance.transform.childCount - 1; i++) { if (_upgradeList.Count > i && _upgradeList[i] != null) @@ -54,8 +52,8 @@ public class AllyUpgrade : MonoBehaviour, IPointerClickHandler if (upgradeEnfant.TryGetComponent(out UpgradePlacementButton button)) { button.Initialize(_upgradeList[i], gameObject, canvas); - button.GetComponent().Select(); - button.gameObject.AddComponent().Init(_instance); + //button.GetComponent().Select(); + //button.gameObject.AddComponent().Init(_instance); } } } @@ -70,14 +68,4 @@ public class AllyUpgrade : MonoBehaviour, IPointerClickHandler _instance = null; } } - - //public void OnDeselect(BaseEventData eventData) - //{ - // if (_instance != null) - // { - // Debug.Log("Destroying upgrade UI"); - // Destroy(_instance); - // _instance = null; - // } - //} } diff --git a/Assets/Scripts/UnitTree/DeselectManager.cs b/Assets/Scripts/UnitTree/DeselectManager.cs index a3d789e..496ad5a 100644 --- a/Assets/Scripts/UnitTree/DeselectManager.cs +++ b/Assets/Scripts/UnitTree/DeselectManager.cs @@ -2,25 +2,46 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; -public class DeselectManager : MonoBehaviour where T : SingletonBehaviour +public class DeselectManager : SingletonBehaviour { - public static T Instance - { - get; - private set; - } - - protected virtual void Awake() - { - if (!Instance) Instance = this as T; - else Destroy(this); - } + private GameObject _allyUpgrade; private void Update() { if (Input.GetMouseButton(0)) { - // Verif liste si click sur un enfant d'AllyUpgrade + // Verifie var si click est sur un enfant d'AllyUpgrade + + GameObject selectedObject = UnityEngine.EventSystems.EventSystem.current.currentSelectedGameObject; + if (selectedObject != null && _allyUpgrade != null && selectedObject.transform.IsChildOf(_allyUpgrade.transform)) + { + return; + } + else + { + Debug.Log("Called to deselect from Observer"); + if (_allyUpgrade != null) + { + Destroy(_allyUpgrade); + _allyUpgrade = null; + } + } } } + + public void SetAllyUpgrade(GameObject allyUpgradeInstance) + { + if (_allyUpgrade == null) + { + _allyUpgrade = allyUpgradeInstance; + } + else if (_allyUpgrade != allyUpgradeInstance) + { + Destroy(_allyUpgrade); + _allyUpgrade = allyUpgradeInstance; + } + Debug.Log("AllyUpgrade set: " + _allyUpgrade?.name); + } + + } diff --git a/Assets/Scripts/UnitTree/DeselectedAction.cs b/Assets/Scripts/UnitTree/DeselectedAction.cs index d816ffc..404b965 100644 --- a/Assets/Scripts/UnitTree/DeselectedAction.cs +++ b/Assets/Scripts/UnitTree/DeselectedAction.cs @@ -13,14 +13,13 @@ public class DeselectedAction : MonoBehaviour, IDeselectHandler public void OnDeselect(BaseEventData eventData) { - GameObject selectedObject = EventSystem.current.currentSelectedGameObject; - Debug.Log("DeselectedAction called on: " + selectedObject?.name); - if (selectedObject != null && selectedObject.transform.IsChildOf(_allyUpgrade.transform)) - { - //N'interrompt pas l'upgrade - return; - } - Debug.Log("Called to deselect"); + //GameObject selectedObject = EventSystem.current.currentSelectedGameObject; + //Debug.Log("DeselectedAction called on: " + selectedObject?.name); + //if (selectedObject != null && selectedObject.transform.IsChildOf(_allyUpgrade.transform)) + //{ + // return; + //} + //Debug.Log("Called to deselect"); //Destroy(_allyUpgrade); } } \ No newline at end of file