public HintRankPair(Hint h) { hint = h; }
/// <summary> /// Display a hint. /// </summary> /// <param name="text">Text to be displayed/</param> /// <param name="button">A ButtonID to display the hint.</param> public void DisplayHint(string text, ButtonID button) { if (activeHints == null) { activeHints = new List <HintRankPair>(); } GameObject newHint = GameObject.Instantiate(HintPrefab); newHint.name = button.ToString() + " Hint"; Hint hint = newHint.GetComponent <Hint>(); hint.SetText(text); hint.HintButton = button; /* Check if the hint hooks was loaded before. If not load it now. */ if (hintHooks == null) { hint.LoadHintHooks(); } /* This hint should be on the right hand. */ if (button.ToString().Contains("Right")) { newHint.transform.SetParent(ControllerManager.Instance.GetControllerAttachPosition(true).transform); } else if (button.ToString().Contains("Left")) { newHint.transform.SetParent(ControllerManager.Instance.GetControllerAttachPosition(false).transform); } else { Debug.LogError("HintManager: Something is wrong, can't figure out which hand to place hint."); } /* Position the hint */ hint.SetPosition(hintHooks.Find(h => h.Button.Equals(button)).HintPosition); /* Draw the line linking hint and controller */ hint.DrawLine(hintHooks.Find(h => h.Button.Equals(button)).LinePosition); List <HintRankPair> hintsOnTheSameButton = activeHints.FindAll(h => h.hint.HintButton.Equals(button)); HintRankPair rankPair = new HintRankPair(hint); rankPair.rank = hintsOnTheSameButton.Count + 1; if (hintsOnTheSameButton.Count == 0) { /* Add hint to actives*/ activeHints.Add(rankPair); } else { /* Protect the activeHints from spamming. (If a rogue programmer misuse this method). */ if (hintsOnTheSameButton.Find(h => h.hint.GetText().Equals(text)) != null) { Destroy(newHint); return; } /* Disable the active hint with rank below and add new hint. */ HintRankPair hintToDisable; hintToDisable = hintsOnTheSameButton.Find(h => h.rank == hintsOnTheSameButton.Count); hintToDisable.hint.gameObject.SetActive(false); activeHints.Add(rankPair); } }