예제 #1
0
    public void UpdateVariableWindow()
    {
        if (_processor != null)
        {
            foreach (Transform child in variableWindow)
            {
                if (child != variableTemplate.transform)
                {
                    Destroy(child.gameObject);
                }
            }

            var first = true;
            foreach (KeyValuePair <string, IScriptType> pair in _processor.CurrentScope.Variables)
            {
                TMP_Text tmpText = Instantiate(variableTemplate, variableWindow);
                tmpText.gameObject.SetActive(true);
                tmpText.text = $"{pair.Key}\n{IDEColorCoding.RunColorCode(pair.Value.ToString())}";
                tmpText.GetComponentInChildren <Image>().enabled = !first;
                if (first)
                {
                    first = false;
                }
            }
        }
    }
예제 #2
0
    public void UpdateOpCodeText()
    {
        if (_opCodes == null)
        {
            opCodeText.text = string.Empty;
            return;
        }

        var builder = new StringBuilder();

        for (var i = 0; i < _opCodes.Length; i++)
        {
            IOpCode opCode = _opCodes[i];

            string opCodeTrueStr = opCode.ToString();
            string opCodeStr     = Regex.Replace(opCodeTrueStr, @"^([a-zA-Z]+)(.*)$",
                                                 $@"<size=70%>{i}</size><indent=20><b>$1</b><color=#999><i>$2</i></color></indent>");

            int open = opCodeStr.IndexOf('{');
            if (open != -1)
            {
                int close = opCodeStr.LastIndexOf('}');
                int len   = close - open;
                opCodeStr = opCodeStr.Substring(0, open + 1) +
                            IDEColorCoding.RunColorCode(opCodeStr.Substring(open + 1, len - 1)) +
                            opCodeStr.Substring(close);
            }

            if (i == 0 && _processor?.ProgramCounter == -1)
            {
                builder.AppendLine($"<color=#{ColorUtility.ToHtmlStringRGBA(nextOpCodeColor)}>{opCodeStr}</color>");
            }
            else if (i == _processor?.ProgramCounter)
            {
                builder.AppendLine($"<color=#{ColorUtility.ToHtmlStringRGBA(currentOpCodeColor)}>{opCodeStr}</color>");
            }
            else
            {
                builder.AppendLine(opCodeStr);
            }
        }

        opCodeText.text = builder.ToString();
    }
예제 #3
0
 public void UpdateColoredOutput(string text)
 {
     output.text = IDEColorCoding.RunColorCode(text);
 }