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);
        }
Example #2
0
 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));
 }
Example #3
0
        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);
        }
Example #4
0
        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
            });
        }
Example #6
0
 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);
        }
Example #8
0
 public static bool UsesReactiveProperty(string varType)
 {
     return(VariableTypeCheckerUtility.IsVariableCollection(varType) || VariableTypeCheckerUtility.IsVariableDictionary(varType));
 }