Browse Source

Added Tooltips to Activty Messages

jamesperet 2 years ago
parent
commit
d845e16789

+ 19 - 0
Prefabs/ActivityMessage.prefab

@@ -194,6 +194,7 @@ GameObject:
   - component: {fileID: 6758995290570285894}
   - component: {fileID: 892465510631762317}
   - component: {fileID: 763435978}
+  - component: {fileID: 77015926147624167}
   m_Layer: 0
   m_Name: ActivityMessage
   m_TagString: Untagged
@@ -357,6 +358,7 @@ MonoBehaviour:
   m_EditorClassIdentifier: 
   textUi: {fileID: 4102275887954244000}
   iconImage: {fileID: 7569242373842712088}
+  tooltipTrigger: {fileID: 77015926147624167}
   buttonImage: {fileID: 4493079208567175465}
   message:
     text: 
@@ -367,6 +369,8 @@ MonoBehaviour:
     time: 0
     sticky: 0
     hideOnClick: 0
+    tooltipHeader: 
+    tooltipBody: 
   autoHide: 0
   hideTimer: 5
   fadeIn: 1
@@ -401,6 +405,21 @@ MonoBehaviour:
   alphaDuration: 0.2
   alphaFrom: 0
   alphaTo: 1
+--- !u!114 &77015926147624167
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 3358351919906791836}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 460bbea74d2a0b1459abb106bd7882d4, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  header: 
+  content: 
+  tooltipType: 
 --- !u!1 &5001929249859582541
 GameObject:
   m_ObjectHideFlags: 0

+ 5 - 1
Runtime/ActivityMessages/ActivityMessage.cs

@@ -18,9 +18,11 @@ namespace KairoEngine.UI.ActivityMessages
         [FoldoutGroup("@GetTitle()")] public bool sticky;
         [FoldoutGroup("@GetTitle()")] public bool hideOnClick;
         [FoldoutGroup("@GetTitle()")] public Action action;
+        [FoldoutGroup("@GetTitle()")] public string tooltipHeader;
+        [FoldoutGroup("@GetTitle()")] public string tooltipBody;
 
         public ActivityMessage(string text, string id = "", string group = "", string prefab = "", Sprite icon = null, float time = 5f, bool sticky = false, 
-            bool hideOnClick = true, Action action = null)
+            bool hideOnClick = true, Action action = null, string tooltipHeader = "", string tooltipBody = "")
         {
             this.text = text;
             this.id = id;
@@ -31,6 +33,8 @@ namespace KairoEngine.UI.ActivityMessages
             this.sticky = sticky;
             this.hideOnClick = hideOnClick;
             this.action = action;
+            this.tooltipHeader = tooltipHeader;
+            this.tooltipBody = tooltipBody;
         }
 
         public string GetTitle()

+ 9 - 5
Runtime/ActivityMessages/ActivityMessageController.cs

@@ -86,25 +86,27 @@ namespace KairoEngine.UI.ActivityMessages
 
         private void NewTimedActivityMessage(string msg, float time)
         {
-            ActivityMessage message = new ActivityMessage(msg, "", "", "", null, time, false, true, null);
+            ActivityMessage message = new ActivityMessage(msg, "", "", "", null, time, false, true, null, "", "");
             CreateMessage(message, defaultGroupIndex, defaultPrefabIndex).Setup(this, message);
         }
 
         private void NewStickyActivityMessage(string msg, bool sticky)
         {
-            ActivityMessage message = new ActivityMessage(msg, "", "", "", null, 0f, true, true, null);
+            ActivityMessage message = new ActivityMessage(msg, "", "", "", null, 0f, true, true, null, "", "");
             CreateMessage(message, defaultGroupIndex, defaultPrefabIndex).Setup(this, message);
         }
 
-        private void NewFullMessage(string text, string id, string group, string prefab, Sprite icon, float time, bool sticky, bool hideOnClick, Action action)
+        private void NewFullMessage(string text, string id, string group, string prefab, Sprite icon, float time, bool sticky, bool hideOnClick, 
+            Action action, string tooltipHeader, string tooltipBody)
         {
-            ActivityMessage message = new ActivityMessage(text, id, group, prefab, icon, time, sticky, hideOnClick,action);
+            ActivityMessage message = new ActivityMessage(text, id, group, prefab, icon, time, sticky, hideOnClick, action, tooltipHeader, tooltipBody);
             int groupIndex = GetGroupIndexByTitle(group);
             int prefabIndex = GetPrefabIndexByTitle(prefab);
             CreateMessage(message, groupIndex, prefabIndex).Setup(this, message);
         }
 
-        private void UpdateActivityMessage(string id, string newText, Sprite newSprite, float time, bool sticky, bool hideOnClick, Action action)
+        private void UpdateActivityMessage(string id, string newText, Sprite newSprite, float time, bool sticky, bool hideOnClick, 
+            Action action, string tooltipHeader, string tooltipBody)
         {
             for (int i = 0; i < activeMessages.Count; i++)
             {
@@ -115,6 +117,8 @@ namespace KairoEngine.UI.ActivityMessages
                     activeMessages[i].message.time = time;
                     activeMessages[i].message.sticky = sticky;
                     activeMessages[i].message.hideOnClick = hideOnClick;
+                    activeMessages[i].message.tooltipHeader = tooltipHeader;
+                    activeMessages[i].message.tooltipBody = tooltipBody;
                     if(action != null) activeMessages[i].message.action = action;
                     activeMessages[i].Setup(this, activeMessages[i].message);
                     return;

+ 11 - 0
Runtime/ActivityMessages/ActivityMessageUi.cs

@@ -5,6 +5,7 @@ using UnityEngine.UI;
 using TMPro;
 using Sirenix.OdinInspector;
 using KairoEngine.Core;
+using KairoEngine.UI.Tooltips;
 
 namespace KairoEngine.UI.ActivityMessages
 {
@@ -12,6 +13,7 @@ namespace KairoEngine.UI.ActivityMessages
     {
         public TextMeshProUGUI textUi;
         public Image iconImage;
+        public TooltipTrigger tooltipTrigger;
         public Image buttonImage;
         public ActivityMessage message;
         public bool autoHide = true;
@@ -104,6 +106,15 @@ namespace KairoEngine.UI.ActivityMessages
                     Remove();
                 });
             }
+            if(tooltipTrigger != null && message.tooltipBody != "")
+            {
+                tooltipTrigger.header = message.tooltipHeader;
+                tooltipTrigger.content = message.tooltipBody;
+            }
+            else if (tooltipTrigger != null && message.tooltipBody == "")
+            {
+                tooltipTrigger.enabled = false;
+            }
         }
 
         public void Remove()

+ 1 - 0
Runtime/Tooltips/TooltipSystem.cs

@@ -18,6 +18,7 @@ namespace KairoEngine.UI.Tooltips
         {
             if(instance == null) instance = this;
             else Destroy(this.gameObject);
+            if(tooltip == null) tooltip = tooltipList[""];
             if(tooltip == null) Debug.LogError("No tooltip is assigned in TooltipSystem", this.gameObject);
             else tooltip.gameObject.SetActive(false);
         }