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())); }
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); } }
public static Type GetFieldValueTableValueType(IFieldValueTable table, string key) { object value = table.GetFieldValueTableValue(key); if (value == null) { return(null); } return(value.GetType()); }
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; } } }
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); }
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); }