using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
namespace GameplayIngredients.Editor
{
partial class WelcomeScreen : EditorWindow
{
void OnSetupGUI()
{
GUILayout.Label("First Time Setup", EditorStyles.boldLabel);
using (new GUILayout.VerticalScope(Styles.helpBox))
{
pages[currentPage].Invoke();
GUILayout.FlexibleSpace();
using (new GUILayout.HorizontalScope())
{
GUILayout.FlexibleSpace();
EditorGUI.BeginDisabledGroup(currentPage == 0);
if (GUILayout.Button("Back"))
{
currentPage--;
}
EditorGUI.EndDisabledGroup();
EditorGUI.BeginDisabledGroup(currentPage == pages.Length - 1);
if (GUILayout.Button("Next"))
{
currentPage++;
}
EditorGUI.EndDisabledGroup();
}
}
}
public int currentPage = 0;
public Action[] pages = new Action[]
{
WelcomePage, SettingAssetPage, UnpackPackagePage
};
static void WelcomePage()
{
GUILayout.Label("Welcome to Gameplay Ingredients !", Styles.title);
GUILayout.Space(12);
GUILayout.Label(@"This wizard will help you set up your project so you can use and customize scripts.", Styles.body);
}
public const string kSettingsAssetPath = "Assets/Resources/GameplayIngredientsSettings.asset";
static void SettingAssetPage()
{
GUILayout.Label("Creating a Settings Asset", Styles.title);
GUILayout.Space(12);
GUILayout.Label(@"GameplayIngredients is a framework that comes with a variety of features : these can be configured in a GameplayIngredientsSettings asset.
This asset needs to be stored in a Resources folder.
While this is not mandatory we advise you to create it in order to be able to modify it for your project's needs.
", Styles.body);
GUILayout.Space(16);
using (new GUILayout.HorizontalScope())
{
GUILayout.FlexibleSpace();
if (GUILayout.Button("Create GameplayIngredientsSettings Asset"))
{
bool create = true;
if(System.IO.File.Exists(Application.dataPath +"/../"+ kSettingsAssetPath))
{
if (!EditorUtility.DisplayDialog("GameplayIngredientsSettings Asset Overwrite", "A GameplayIngredientsSettings Asset already exists, do you want to overwrite it?", "Yes", "No"))
create = false;
}
if(create)
{
if(!System.IO.Directory.Exists(Application.dataPath+"/Resources"))
AssetDatabase.CreateFolder("Assets", "Resources");
GameplayIngredientsSettings asset = Instantiate(GameplayIngredientsSettings.defaultSettings);
AssetDatabase.CreateAsset(asset, kSettingsAssetPath);
Selection.activeObject = asset;
}
}
}
}
static void UnpackPackagePage()
{
GUILayout.Label("Unpacking Starter Content", Styles.title);
GUILayout.Space(12);
GUILayout.Label(@"In order to customize your project, you can create default assets that you will be able to customize.
Please select a package depending on your project's render loop. If you do not know about render loops, you will probably need the Legacy Package.", Styles.body);
GUILayout.Space(16);
using (new GUILayout.HorizontalScope())
{
GUILayout.FlexibleSpace();
using (new GUILayout.VerticalScope())
{
if (GUILayout.Button("Legacy Renderer"))
AssetDatabase.ImportPackage("Packages/net.peeweek.gameplay-ingredients/StarterAssets/GameplayIngredients-Starter-LegacyRenderer.unitypackage", false);
if (GUILayout.Button("HD Render Pipeline"))
AssetDatabase.ImportPackage("Packages/net.peeweek.gameplay-ingredients/StarterAssets/GameplayIngredients-Starter-HDRP.unitypackage", false);
if (GUILayout.Button("Lightweight Render Pipeline"))
AssetDatabase.ImportPackage("Packages/net.peeweek.gameplay-ingredients/StarterAssets/GameplayIngredients-Starter-LWRP.unitypackage", false);
}
}
}
}
}