public static List <MethodGenerationData> GenerateGetterMethods(PlayerDataEditorData data) { var methods = new List <MethodGenerationData>(); if (!data.shouldGenerateGetter) { return(methods); } methods.Add(PlayerDataGetterMethodGenerator.GenerateGetReactivePropertyMethod(data)); bool isVariableCollection = VariableTypeCheckerUtility.IsVariableCollection(data.baseDataType); bool IsVariableDictionary = VariableTypeCheckerUtility.IsVariableDictionary(data.baseDataType); bool isVariableNumeric = VariableTypeCheckerUtility.IsVariableNumeric(data.baseDataType); if (!isVariableCollection && !IsVariableDictionary) { methods.Add(PlayerDataGetterMethodGenerator.GenerateGetValueMethod(data)); } if (isVariableCollection) { methods.AddRange(PlayerDataGetterMethodGenerator.GenerateListGetterMethods(data)); } if (IsVariableDictionary) { methods.AddRange(PlayerDataGetterMethodGenerator.GenerateDictionaryGetterMethods(data)); } return(methods); }
public static string CreateReactivePropertyType(PlayerDataEditorData data) { return(VariableTypeCheckerUtility.IsVariableCollection(data.baseDataType) ? CreateReactiveCollectionPropertyType(data.valueDataType) : VariableTypeCheckerUtility.IsVariableDictionary(data.baseDataType) ? CreateReactiveDictionaryPropertyType(data.keyDataType, data.valueDataType) : CreateStandardReactivePropertyType(data.baseDataType)); }
public static string CreateValueReturnType(PlayerDataEditorData data) { if (VariableTypeCheckerUtility.IsVariableCollection(data.baseDataType)) { return($"List<{data.valueDataType}>"); } if (VariableTypeCheckerUtility.IsVariableDictionary(data.baseDataType)) { return($"Dictionary<{data.keyDataType}, {data.valueDataType}>"); } return(data.baseDataType); }
public static string GetPlayerDataVariableReferenceForSaver(PlayerDataEditorData data) { if (VariableTypeCheckerUtility.IsVariableCollection(data.baseDataType)) { return($"{PlayerDataCodeGeneratorConstants.PLAYER_DATA_REFERENCE_NAME}.{data.key.ToCamelCase(false)}.ToList()"); } if (VariableTypeCheckerUtility.IsVariableDictionary(data.baseDataType)) { return($"{PlayerDataCodeGeneratorConstants.PLAYER_DATA_REFERENCE_NAME}.{data.key.ToCamelCase(false)}.ToDictionary(t => t.Key, t => t.Value)"); } return($"{PlayerDataCodeGeneratorConstants.PLAYER_DATA_REFERENCE_NAME}.{data.key.ToCamelCase(false)}.Value"); }
public static MethodGenerationData GenerateLoadMethod(List <PlayerDataEditorData> datas, string category) { List <string> bodyStatement = new List <string>(); for (int i = 0; i < datas.Count; i++) { bool usesReactiveProperty = PlayerDataCodeGeneratorUtility.UsesReactiveProperty(datas[i].baseDataType); // Example: _playerData.Set_TestInt(_playerDataManager.TryLoad<int>(PlayerDataKeys.INT_TEST_INT)) string defaultValue = "default"; bool isVariableCollection = VariableTypeCheckerUtility.IsVariableCollection(datas[i].baseDataType); bool IsVariableDictionary = VariableTypeCheckerUtility.IsVariableDictionary(datas[i].baseDataType); string baseFormat = "{0}.{1} = {2}.TryLoad<{3}>({4}.{5}, {6}, {7});"; string loadType = datas[i].baseDataType; if (isVariableCollection) { defaultValue = $"new {datas[i].baseDataType}<{datas[i].valueDataType}>()"; baseFormat = "{0}.{1} = new " + ReactivePropertyEditorUtility.CreateReactivePropertyType(datas[i]) + "({2}.TryLoad<{3}>({4}.{5}, {6}, {7}));"; loadType = $"{datas[i].baseDataType}<{datas[i].valueDataType}>"; } else if (IsVariableDictionary) { defaultValue = $"new {datas[i].baseDataType}<{datas[i].keyDataType}, {datas[i].valueDataType}>()"; baseFormat = "{0}.{1} = new " + ReactivePropertyEditorUtility.CreateReactivePropertyType(datas[i]) + "({2}.TryLoad<{3}>({4}.{5}, {6}, {7}));"; loadType = $"{datas[i].baseDataType}<{datas[i].keyDataType},{datas[i].valueDataType}>"; } bodyStatement.Add(string.Format(baseFormat, PlayerDataCodeGeneratorConstants.PLAYER_DATA_REFERENCE_NAME, usesReactiveProperty ? datas[i].key.ToCamelCase(false) : datas[i].key.ToCamelCase(false) + ".Value", PlayerDataCodeGeneratorConstants.PLAYER_DATA_MANAGER_REFERENCE_NAME, loadType, PlayerDataCodeGeneratorConstants.PLAYER_DATA_KEYS_CLASS_NAME, datas[i].key, defaultValue, datas[i].isLocalOnly.ToString().ToLower())); } return(new MethodGenerationData { m_MethodName = PlayerDataCodeGeneratorConstants.LOADER_METHOD_NAME + category, m_MethodReturnType = "void", m_MethodBodyStatements = bodyStatement }); }
public static MethodGenerationData GenerateSetMethod(PlayerDataEditorData data) { return(new MethodGenerationData { m_MethodName = PlayerDataCodeGeneratorConstants.MUTATOR_SET_METHOD_NAME + data.key.ToCamelCase(true), m_MethodReturnType = "void", m_MethodParams = new List <MethodParameterData> { new MethodParameterData(PlayerDataCodeGeneratorUtility.CreateValueReturnType(data), "value") }, m_MethodBodyStatements = new List <string> { VariableTypeCheckerUtility.IsVariableCollection(data.baseDataType) ? $"{PlayerDataCodeGeneratorConstants.PLAYER_DATA_REFERENCE_NAME}.{data.key.ToCamelCase(false)} = value.ToReactiveCollection();" : VariableTypeCheckerUtility.IsVariableDictionary(data.baseDataType) ? $"{PlayerDataCodeGeneratorConstants.PLAYER_DATA_REFERENCE_NAME}.{data.key.ToCamelCase(false)} = value.ToReactiveDictionary();" : $"{PlayerDataCodeGeneratorConstants.PLAYER_DATA_REFERENCE_NAME}.{data.key.ToCamelCase(false)}.Value = value;" } }); }
public static List <MethodGenerationData> GenerateMutatorMethods(PlayerDataEditorData data) { var methods = new List <MethodGenerationData>(); if (!data.shouldGenerateMutator) { return(methods); } methods.Add(PlayerDataMutatorMethodGenerator.GenerateSetMethod(data)); bool isVariableCollection = VariableTypeCheckerUtility.IsVariableCollection(data.baseDataType); bool IsVariableDictionary = VariableTypeCheckerUtility.IsVariableDictionary(data.baseDataType); bool isVariableNumeric = VariableTypeCheckerUtility.IsVariableNumeric(data.baseDataType); if (isVariableNumeric) { methods.AddRange(PlayerDataMutatorMethodGenerator.GenerateNumericMutatorMethods(data)); } if (isVariableCollection) { methods.AddRange(PlayerDataMutatorMethodGenerator.GenerateListMutatorMethods(data)); } if (IsVariableDictionary) { methods.AddRange(PlayerDataMutatorMethodGenerator.GenerateDictionaryMutatorMethods(data)); if (VariableTypeCheckerUtility.IsVariableNumeric(data.valueDataType)) { methods.AddRange(PlayerDataMutatorMethodGenerator.GenerateDictionaryNumericMutatorMethods(data)); } } return(methods); }
public static bool UsesReactiveProperty(string varType) { return(VariableTypeCheckerUtility.IsVariableCollection(varType) || VariableTypeCheckerUtility.IsVariableDictionary(varType)); }