Exemple #1
0
        void LoadValueScopes(SubstringOptimizedString subcode, ICompilerValues currentCode)
        {
            int currentSubValue = 0;

            var scopeBeginIndex = 0;

            while (scopeBeginIndex != -1)
            {
                if (currentSubValue != 0)
                {
                    scopeBeginIndex = subcode.Length > 0 && subcode[0] == CodeValueBegin ? 0 : -1;
                }

                if (scopeBeginIndex != -1)
                {
                    var scopeEndIndex = -1;
                    var scopeAmount   = 1;

                    for (int i = scopeBeginIndex + 1; i < subcode.Length; i++)
                    {
                        if (subcode[i] == CodeValueBegin)
                        {
                            scopeAmount++;
                        }
                        else if (subcode[i] == CodeValueEnd)
                        {
                            scopeAmount--;

                            if (scopeAmount == 0)
                            {
                                scopeEndIndex = i;
                                break;
                            }
                        }
                    }

                    var scopeCode = subcode.Substring(scopeBeginIndex + 1, scopeEndIndex - scopeBeginIndex - 1);
                    //print(scopeCode);

                    if (scopeCode.Length > 0)
                    {
                        LoadValues(scopeCode, currentCode, currentSubValue);
                    }

                    subcode = subcode.Substring(scopeEndIndex + 1);

                    currentSubValue++;
                }
                else
                {
                    break;
                }
            }
        }
Exemple #2
0
        void ValueDelete(ICompilerValues value)
        {
            foreach (var v in value.Values)
            {
                if (v != null)
                {
                    ValueDelete(v);
                }
            }

            Destroy(value.Transform.gameObject);
        }
Exemple #3
0
        void LoadValues(SubstringOptimizedString subcode, ICompilerValues currentCode, int value = 0)
        {
            var valueIndex = -1;
            var scopeIndex = subcode.Length;

            // Type:&"Text"(sub values)
            // This reads until (
            for (int i = 0; i < subcode.Length; i++)
            {
                if (subcode[i] == CodeValueQuote)
                {
                    valueIndex = i;
                }
                else if (subcode[i] == CodeValueBegin)
                {
                    scopeIndex = i;
                    break;
                }
            }

            var valueName = valueIndex == -1 ? subcode.Substring(0, scopeIndex) : subcode.Substring(0, valueIndex);

            var valueParent = currentCode.Transform.Find("Block")
                              .Find($"Value{(value == 0 ? "" : (value + 1).ToString())}");
            var valueObject  = Instantiate(CodeIdPrefabs[valueName.ToString()], valueParent);
            var currentValue = valueObject.GetComponent <ICompilerValue>();

            currentCode.Values[value] = currentValue;

            var loadedValue = valueIndex == -1 ? "" : subcode.Substring(valueIndex + 1, scopeIndex - valueIndex - 1).ToString();

            currentValue.LoadValue(loadedValue);

            // Event Offset
            var offset = valueObject.gameObject.AddComponent <ValueOffset>();

            (currentValue as IUseOffset).Offset = offset;
            offset.Connection = valueParent;

            if (scopeIndex < subcode.Length)
            {
                var newCode = subcode.Substring(scopeIndex);
                LoadValueScopes(newCode, currentValue);
            }
        }
Exemple #4
0
 public ValueCon(ICompilerValues con, int index, Transform lastParent)
 {
     this.con     = con;
     this.index   = index;
     this.lastCon = lastParent;
 }