Пример #1
0
        public static string GetFieldKeyTableText(StringBuilder builder, IFieldValueTable table)
        {
            if (table.IsNullTable())
            {
                return(string.Empty);
            }
            builder.Clear();
            ushort layer     = (ushort)(table.GetLayer() + 1);
            string tabString = GetTabString(layer);

            FieldValueTableInfo[] array = table.GetFieldValueTableInfo();
            for (int index = 0; index < array.Length; index++)
            {
                FieldValueTableInfo keyValue = array[index];
                object value = table.GetFieldValueTableValue(keyValue.key);
                if (keyValue.type != ValueType.Table)
                {
                    if (value != null)
                    {
                        SetBaseValueTableString(builder, keyValue, tabString, value);
                    }
                    continue;
                }
                ITable valueTable = value as ITable;
                if (!valueTable.IsNullTable())
                {
                    builder.Append(valueTable.ToString());
                }
            }
            return(GetTableText(table, builder.ToString()));
        }
Пример #2
0
        private void PriorityFrameDataTitleUI(int index, FrameType frameType)
        {
            switch (frameType)
            {
            case FrameType.PlayEffect:
                SpaceWithLabel(LabelEffect);
                break;

            case FrameType.Hit:
                SpaceWithLabel(LabelCollision);
                break;

            case FrameType.Grab:
                SpaceWithLabel(LabelGrab);
                break;

            case FrameType.Ungrab:
                SpaceWithLabel(LabelUngrab);
                break;

            case FrameType.BlockStart:
                SpaceWithLabel(LabelBlockStart);
                break;

            case FrameType.BlockEnd:
                SpaceWithLabel(LabelBlockEnd);
                break;

            case FrameType.Block:
                SpaceWithLabel(LabelBlock);
                break;

            case FrameType.TrackChange:
                SpaceWithLabel(LabelTrack);
                break;

            default:
                SpaceWithLabel(frameType.ToString());
                break;
            }
            SpaceWithLabel(LabelPriority);
            FrameData        frameData      = GetFrameData(index);
            IFieldValueTable table          = (IFieldValueTable)frameData.GetFieldValueTableValue(frameType.ToString());
            ushort           originPriority = (ushort)table.GetFieldValueTableValue(CommonFrameData.Key_Priority);
            ushort           newPriority    = (ushort)TextField(originPriority);

            if (newPriority != originPriority)
            {
                Controller.SetFramePriorityData(index, frameType, newPriority);
            }
            SpaceWithLabel(LabelLoop);
            ICommonFrameData commonFrameData = (ICommonFrameData)table;
            bool             isLoop          = Toggle(commonFrameData.GetLoop());

            Controller.SetFrameLoopData(index, frameType, isLoop);
            if (SpaceWithButton(BtnDelete))
            {
                Controller.DeletePriorityFrameData(index, frameType);
            }
        }
Пример #3
0
        public static Type GetFieldValueTableValueType(IFieldValueTable table, string key)
        {
            object value = table.GetFieldValueTableValue(key);

            if (value == null)
            {
                return(null);
            }
            return(value.GetType());
        }
Пример #4
0
        private void FrameDataListUI(int frameIndex, FrameType frameType)
        {
            FrameData               frameData         = GetFrameData(frameIndex);
            IFieldValueTable        table             = (IFieldValueTable)frameData.GetFieldValueTableValue(frameType.ToString());
            CustomData <EffectData> defaultCustomData = default;
            object     customData               = table.GetFieldValueTableValue(defaultCustomData.GetKey());
            MethodInfo getTableListMethod       = customData.GetType().GetMethod("GetTableList");
            Array      dataList                 = getTableListMethod.Invoke(customData, null) as Array;
            Func <int, object, bool> uiFunction = default;

            switch (frameType)
            {
            case FrameType.PlayEffect:
                uiFunction = EffectDataUI;
                break;

            case FrameType.Hit:
                uiFunction = HitDataUI;
                break;

            case FrameType.Buff:
                uiFunction = BuffDataUI;
                break;

            case FrameType.Grab:
                uiFunction = GrabDataUI;
                break;

            case FrameType.Block:
                uiFunction = BlockDataUI;
                break;
            }
            if (dataList == null)
            {
                return;
            }
            for (int index = 0; index < dataList.Length; index++)
            {
                if (HorizontalLayoutUI(uiFunction, frameData.index - 1, dataList.GetValue(index)))
                {
                    break;
                }
            }
        }
Пример #5
0
        private static void SetFixedFieldTableValue(string luaText, ref int valueIndex, FieldValueTableInfo keyValue, ref IFieldValueTable table)
        {
            object value = default;

            switch (keyValue.type)
            {
            case ValueType.Int:
                value = GetLuaTextInt(luaText, ref valueIndex);
                break;

            case ValueType.Number:
                value = GetLuaTextNumber(luaText, ref valueIndex);
                break;

            case ValueType.String:
                value = GetLuaTextString(luaText, ref valueIndex);
                break;

            case ValueType.Reference:
                value = GetLuaTextReferenceString(luaText, ref valueIndex);
                break;;

            case ValueType.Table:
                Type valueType = LuaTable.GetFieldValueTableValueType(table, keyValue.key);
                if (valueType == null)
                {
                    return;
                }
                SetTypeCache(valueType);
                MethodInfo readLuaFileTableMethod = m_readLuaFileTableMethod.MakeGenericMethod(GetTypeCache());
                SetThreeArgMethodArg(luaText, valueIndex);
                object[] args = GetThreeArgMethodArg();
                value      = readLuaFileTableMethod.Invoke(null, args);
                valueIndex = (int)args[1];
                break;
            }
            table.SetFieldValueTableValue(keyValue.key, value);
        }
Пример #6
0
        private static IFieldValueTable ReadFixedFieldTableValue(string luaText, ref int index, IFieldValueTable table)
        {
            int endIndex = FindLuaTableEndIndex(luaText, index);

            FieldValueTableInfo[] array = table.GetFieldValueTableInfo();
            foreach (FieldValueTableInfo keyValue in array)
            {
                int valueIndex = luaText.IndexOf(keyValue.key, index);
                if (valueIndex == Config.ErrorIndex || valueIndex >= endIndex || !IsRangeInSameLayer(luaText, index, valueIndex))
                {
                    continue;
                }
                valueIndex += keyValue.KeyLength;
                FilterSpaceSymbol(luaText, ref valueIndex);
                if (luaText[valueIndex] != LuaFormat.EqualSymbol)
                {
                    PrintErrorWhithLayer("关键帧配置表关键帧 Lua table 配置错误", valueIndex);
                    break;
                }
                valueIndex++;
                FilterSpaceSymbol(luaText, ref valueIndex);
                SetFixedFieldTableValue(luaText, ref valueIndex, keyValue, ref table);
            }
            index = --endIndex;
            return(table);
        }