Пример #1
0
    private GameObject LoadInsideShop(WealthLevelShop wealthLevelShop, SizeShop sizeShop, float wealthValue)
    {
        GameObject[] shops;
        if (wealthLevelShop == WealthLevelShop.Poor)
        {
            shops = (sizeShop == SizeShop.Small) ? poorSmall : poorBig;
        }
        else if (wealthLevelShop == WealthLevelShop.Normal)
        {
            shops = (sizeShop == SizeShop.Small) ? normalSmall : normalBig;
        }
        else
        {
            shops = (sizeShop == SizeShop.Small) ? richSmall : richBig;
        }

        var shopDict = new Dictionary <GameObject, float>();

        foreach (var obj in shops)
        {
            shopDict.Add(obj, obj.GetComponent <ProceduralEntity>().wealthValue);
        }

        return(Instantiate(ProceduralCalculations.GetRandomTFromPool(shopDict, wealthValue)));
    }
    public void OnGUI()
    {
        if (settings == null)
        {
            settings = AssetDatabase.LoadAssetAtPath <NestedPrefabCategorySettings>(pathToSetting);
            if (settings == null)
            {
                Debug.LogWarning("You need to create the NestedPrefabsCategories to be able to register your nested prefab");
                settings = CreateInstance <NestedPrefabCategorySettings>();
                AssetDatabase.CreateAsset(settings, pathToSetting);
                AssetDatabase.SaveAssets();
            }
        }

        if (onFirstOnGUI)
        {
            GetModelType();
            onFirstOnGUI = false;
        }

        EditorGUILayout.BeginVertical();
        EditorGUILayout.Space();
        GUILayout.Label("Catégorie :");
        EditorGUI.indentLevel++;
        if (EditorGUILayout.Toggle("Shop", selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Shop))
        {
            if (selectedNestedPrefabCategory.categoryNameNested != NestedPrefabCategoryName.Shop)
            {
                selectedNestedPrefabCategory = settings.shopNestPrefab;
                GetModelType();
            }
        }

        if (EditorGUILayout.Toggle("Mall", selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Mall))
        {
            if (selectedNestedPrefabCategory.categoryNameNested != NestedPrefabCategoryName.Mall)
            {
                selectedNestedPrefabCategory = settings.mallNestPrefab;
                GetModelType();
            }
        }

        if (EditorGUILayout.Toggle("Apartment", selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Apartment))
        {
            if (selectedNestedPrefabCategory.categoryNameNested != NestedPrefabCategoryName.Apartment)
            {
                selectedNestedPrefabCategory = settings.apartmentNestPrefab;
                GetModelType();
            }
        }

        EditorGUI.indentLevel--;
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.Space();
        EditorGUILayout.EndVertical();

        if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Shop)
        {
            GUILayout.Label("Wealth :");
            EditorGUI.indentLevel++;
            if (EditorGUILayout.Toggle("Poor", selectedWealthLevelShop == WealthLevelShop.Poor))
            {
                if (selectedWealthLevelShop != WealthLevelShop.Poor)
                {
                    selectedWealthLevelShop = WealthLevelShop.Poor;
                    GetModelType();
                }
            }

            if (EditorGUILayout.Toggle("Normal", selectedWealthLevelShop == WealthLevelShop.Normal))
            {
                if (selectedWealthLevelShop != WealthLevelShop.Normal)
                {
                    selectedWealthLevelShop = WealthLevelShop.Normal;
                    GetModelType();
                }
            }
            if (EditorGUILayout.Toggle("Rich", selectedWealthLevelShop == WealthLevelShop.Rich))
            {
                if (selectedWealthLevelShop != WealthLevelShop.Rich)
                {
                    selectedWealthLevelShop = WealthLevelShop.Rich;
                    GetModelType();
                }
            }
            EditorGUI.indentLevel--;

            EditorGUILayout.Space();

            GUILayout.Label("Size :");
            EditorGUI.indentLevel++;
            if (EditorGUILayout.Toggle("Small", selectedSizeShop == SizeShop.Small))
            {
                if (selectedSizeShop != SizeShop.Small)
                {
                    selectedSizeShop = SizeShop.Small;
                    GetModelType();
                }
            }
            if (EditorGUILayout.Toggle("Big", selectedSizeShop == SizeShop.Big))
            {
                if (selectedSizeShop != SizeShop.Big)
                {
                    selectedSizeShop = SizeShop.Big;
                    GetModelType();
                }
            }
            EditorGUI.indentLevel--;
            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();
        }
        else if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Apartment)
        {
            GUILayout.Label("Size :");
            EditorGUI.indentLevel++;
            if (EditorGUILayout.Toggle("Tiny", seletectedSizeApartment == SizeApartment.Tiny))
            {
                if (seletectedSizeApartment != SizeApartment.Tiny)
                {
                    seletectedSizeApartment = SizeApartment.Tiny;
                    GetModelType();
                }
            }
            if (EditorGUILayout.Toggle("Small", seletectedSizeApartment == SizeApartment.Small))
            {
                if (seletectedSizeApartment != SizeApartment.Small)
                {
                    seletectedSizeApartment = SizeApartment.Small;
                    GetModelType();
                }
            }
            if (EditorGUILayout.Toggle("Normal", seletectedSizeApartment == SizeApartment.Medium))
            {
                if (seletectedSizeApartment != SizeApartment.Medium)
                {
                    seletectedSizeApartment = SizeApartment.Medium;
                    GetModelType();
                }
            }
            if (EditorGUILayout.Toggle("Big", seletectedSizeApartment == SizeApartment.Big))
            {
                if (seletectedSizeApartment != SizeApartment.Big)
                {
                    seletectedSizeApartment = SizeApartment.Big;
                    GetModelType();
                }
            }
            EditorGUI.indentLevel--;

            EditorGUILayout.Space();
        }

        if (EditorGUILayout.Toggle("Center", centerNewObject))
        {
            if (!centerNewObject)
            {
                centerNewObject = !centerNewObject;
            }
        }
        else
        {
            if (centerNewObject)
            {
                centerNewObject = !centerNewObject;
            }
        }

        if (settings.shopNestPrefab.categoryNameNested == settings.mallNestPrefab.categoryNameNested &&
            settings.mallNestPrefab.categoryNameNested == settings.apartmentNestPrefab.categoryNameNested &&
            settings.apartmentNestPrefab.categoryNameNested == settings.shopNestPrefab.categoryNameNested)
        {
            GUILayout.Label("Please fill correctly NestedPrefabCategorySettings in the Editor Folder");
        }
        else
        {
            if (GUILayout.Button("Create prefab") && AskCreatePrefab())
            {
                foreach (Transform child in prefabParent.transform)
                {
                    RecursivelyRemoveProceduralEntitiesChildren(child.gameObject);
                }

                string localPath = selectedNestedPrefabCategory.pathFolder;

                if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Shop)
                {
                    localPath += selectedWealthLevelShop + "/" + selectedSizeShop + "/";
                }
                else if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Apartment)
                {
                    localPath += seletectedSizeApartment + "/";
                }
                else if (selectedNestedPrefabCategory.categoryNameNested == NestedPrefabCategoryName.Mall)
                {
                    localPath += "Mall/";
                }



                if (!Directory.Exists(localPath))
                {
                    Directory.CreateDirectory(localPath);
                }

                localPath += prefabParent.name + ".prefab";

                localPath = AssetDatabase.GenerateUniqueAssetPath(localPath);

                PrefabUtility.SaveAsPrefabAssetAndConnect(prefabParent, localPath,
                                                          InteractionMode.AutomatedAction);

                GetModelType();

                Debug.Log("Nested prefab created");
            }
        }
    }