private bool IsDuplicate(InputIconSO inputIconSo)
 {
     for (int i = 0; i < ModeIcons.Length; i++)
     {
         if (ModeIcons[i].inputMode == inputIconSo.inputMode)
         {
             return(true);
         }
     }
     return(false);
 }
 private InputIconSO GetIconSet(InputMode mode)
 {
     for (int i = 0; i < ModeIcons.Length; i++)
     {
         InputIconSO so = ModeIcons[i];
         if (so.inputMode == mode)
         {
             return(so);
         }
     }
     return(null);
 }
        private void UpdateIcon()
        {
            if (InputManager.GetMode() == InputMode.None)
            {
                return;
            }

            InputIconSO iconSet = GetCurrentIconSet();
            Func <string, TMP_SpriteAssetContainer> getContainer = action => GetCurrentSpriteContainer(action);
            string s = StringFormatter.ConvertActionTagsToRichText(text, iconSet, getContainer);

            if (TextMesh == null)
            {
                Debug.Log("Text mesh is null");
                return;
            }
            TextMesh.text = s;
            TextMesh.gameObject.SetActive(false);
            TextMesh.gameObject.SetActive(true);
        }
Пример #4
0
        public static string ConvertActionTagsToRichText(string input, InputIconSO iconSet, Func <string, TMP_SpriteAssetContainer> getContainer)
        {
            if (input == string.Empty)
            {
                return(input);
            }
            string s = input;

            List <string> actions = InputManager.GetCurrentActions();

            for (int i = 0; i < actions?.Count; i++)
            {
                string            action = actions[i];
                string            check;
                ActionCombination inputCombo = InputManager.GetBinding(action);
                if (inputCombo == null)
                {
                    Debug.Log($"No ActionCombination found for {action}");
                    return(input);
                }

                check = $"[:{action}]";
                if (s.Contains(check))
                {
                    s = s.Replace(check, $"<color=#00FFFF>{action}</color>");
                }

                if (iconSet == null)
                {
                    continue;
                }

                List <Sprite>            sprites   = iconSet.GetSprites(inputCombo);
                TMP_SpriteAssetContainer container = getContainer(action);
                if (container == null)
                {
                    Debug.Log($"Sprite Container not found for {action}.");
                    return(input);
                }
                List <TMP_SpriteAsset> assets = container?.spriteAssets;

                check = $"[{action}]";
                if (s.Contains(check))
                {
                    string tmpIconString = "";
                    for (int j = 0; j < sprites.Count; j++)
                    {
                        assets[j].spriteSheet          = sprites[j].texture;
                        assets[j].material.mainTexture = assets[j].spriteSheet;
                        tmpIconString += $"<sprite=\"{assets[j].name}\" index=0>";
                        if (j != sprites.Count - 1)
                        {
                            tmpIconString += " + ";
                        }
                    }
                    s = s.Replace(check, $"{tmpIconString} <color=#00FFFF>{action}</color>");
                }

                check = $"[{action}:]";
                if (s.Contains(check))
                {
                    string tmpIconString = "";
                    for (int j = 0; j < sprites.Count; j++)
                    {
                        assets[j].spriteSheet          = sprites[j].texture;
                        assets[j].material.mainTexture = assets[j].spriteSheet;
                        tmpIconString += $"<sprite=\"{assets[j].name}\" index=0>";
                        if (j != sprites.Count - 1)
                        {
                            tmpIconString += " + ";
                        }
                    }
                    s = s.Replace(check, tmpIconString);
                }
            }

            return(s);
        }