public static void CreateGame(Settings ga, GA_SignUp signup, int studioIndex, string gameTitle, string googlePlayPublicKey, GAPlatformSignUp platform, AppFiguresGame appFiguresGame)
		{
			Hashtable jsonTable = new Hashtable();

			if(appFiguresGame != null)
			{
				jsonTable["title"] = gameTitle;
				jsonTable["store_id"] = appFiguresGame.AppID;
				jsonTable["store"] = appFiguresGame.Store;
				jsonTable["googleplay_key"] = string.IsNullOrEmpty(googlePlayPublicKey) ? null : googlePlayPublicKey;
			}
			else
			{
				jsonTable["title"] = gameTitle;
				jsonTable["store_id"] = null;
				jsonTable["store"] = null;
				jsonTable["googleplay_key"] = string.IsNullOrEmpty(googlePlayPublicKey) ? null : googlePlayPublicKey;
			}
			byte[] data = System.Text.Encoding.UTF8.GetBytes(GA_MiniJSON.JsonEncode(jsonTable));

			string url = _gaUrl + "studios/" + ga.Studios[studioIndex].ID + "/games";
			WWW www = new WWW(url, data, GA_EditorUtilities.WWWHeadersWithAuthorization(ga.TokenGA));
			GA_ContinuationManager.StartCoroutine(CreateGameFrontend(www, ga, signup, platform, appFiguresGame), () => www.isDone);
		}
		private static IEnumerator<WWW> CreateGameFrontend(WWW www, Settings ga, GA_SignUp signup, GAPlatformSignUp platform, AppFiguresGame appFiguresGame)
		{
			yield return www;
			
			try
			{
				Hashtable returnParam = null;
				string error = "";
				if(!string.IsNullOrEmpty(www.text))
				{
					returnParam = (Hashtable)GA_MiniJSON.JsonDecode(www.text);
					if(returnParam.ContainsKey("errors"))
					{
						ArrayList errorList = (ArrayList)returnParam["errors"];
						if(errorList != null && errorList.Count > 0)
						{
							Hashtable errors = (Hashtable)errorList[0];
							if(errors.ContainsKey("msg"))
							{
								error = errors["msg"].ToString();
							}
						}
					}
				}

				if(string.IsNullOrEmpty(www.error))
				{
					if(!String.IsNullOrEmpty(error))
					{
						Debug.LogError(error);
						SetLoginStatus("Failed to create game.", ga);
						signup.CreateGameFailed();
					}
					else
					{
						ga.LastCreatedGamePlatform = (GAPlatform)((int)(platform + 1));
						GetUserData(ga);
						signup.CreateGameComplete();
					}
				}
				else
				{
					Debug.LogError("Failed to create game: " + www.error + " " + error);
					SetLoginStatus("Failed to create game.", ga);
					signup.CreateGameFailed();
				}
			}
			catch
			{
				Debug.LogError("Failed to create game");
				SetLoginStatus("Failed to create game.", ga);
				signup.CreateGameFailed();
			}
		}
Пример #3
0
        void OnGUI()
        {
            switch(TourStep)
            {
                #region sign up
                case 0: // sign up

                    GUILayout.Space(20);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(GameAnalytics.SettingsGA.UserIcon, new GUILayoutOption[] {
                        GUILayout.Width(40),
                        GUILayout.MaxHeight(40)
                    });
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.Space(5);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Create your account", EditorStyles.whiteLargeLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();

                // first name

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(_firstNameLabel, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GameAnalytics.SettingsGA.FirstName = EditorGUILayout.TextField("", GameAnalytics.SettingsGA.FirstName, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();

                // last name

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(_lastNameLabel, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GameAnalytics.SettingsGA.LastName = EditorGUILayout.TextField("", GameAnalytics.SettingsGA.LastName, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();

                // e-mail

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(_emailLabel, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GameAnalytics.SettingsGA.EmailGA = EditorGUILayout.TextField("", GameAnalytics.SettingsGA.EmailGA, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();

                // password

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(_passwordLabel, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GameAnalytics.SettingsGA.PasswordGA = EditorGUILayout.PasswordField("", GameAnalytics.SettingsGA.PasswordGA, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();

                // confirm password

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(_passwordConfirmLabel, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GameAnalytics.SettingsGA.PasswordConfirm = EditorGUILayout.PasswordField("", GameAnalytics.SettingsGA.PasswordConfirm, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();

                // studio name

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(_studioNameLabel, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GameAnalytics.SettingsGA.StudioName = EditorGUILayout.TextField("", GameAnalytics.SettingsGA.StudioName, GUILayout.Width(INPUT_WIDTH));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();

                // email opt in

                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GameAnalytics.SettingsGA.EmailOptIn = EditorGUILayout.Toggle("", GameAnalytics.SettingsGA.EmailOptIn, GUILayout.Width(15));
                    GUILayout.Label(_emailOptInLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();

                // terms of service

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("By activating your account you agree with our", GUILayout.Width(248));
                    GUILayout.Space(-5);
                    GUILayout.BeginVertical();
                    GUILayout.Space(2);
                    if(GUILayout.Button("Terms of Service", EditorStyles.boldLabel, GUILayout.Width(105)))
                    {
                        Application.OpenURL("http://www.gameanalytics.com/terms.html");
                    }
                    EditorGUIUtility.AddCursorRect(GUILayoutUtility.GetLastRect(), MouseCursor.Link);
                    GUILayout.EndVertical();
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();

                // create account button

                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUI.enabled = !_signUpInProgress;
                    if(GUILayout.Button("Create account", new GUILayoutOption[] {
                        GUILayout.Width(200),
                        GUILayout.MaxHeight(30)
                    }))
                    {
                        _signUpInProgress = true;
                        GA_SettingsInspector.SignupUser(GameAnalytics.SettingsGA, this);
                    }
                    GUI.enabled = true;
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    break;
                #endregion // sign up

                #region add your game
                case 1: // add your game

                    GUILayout.Space(20);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(GameAnalytics.SettingsGA.GameIcon, new GUILayoutOption[] {
                        GUILayout.Width(40),
                        GUILayout.MaxHeight(40)
                    });
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.Space(5);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Add your game", EditorStyles.whiteLargeLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("You can quickly add your game by searching the app store.");
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                // game name

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(_gameNameLabel, GUILayout.Width(500));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    int tmpFontSize = GUI.skin.textField.fontSize;
                    Vector2 tmpOffset = GUI.skin.textField.contentOffset;
                    GUI.skin.textField.fontSize = 12;
                    GUI.skin.textField.contentOffset = new Vector2(6, 6);
                    GameAnalytics.SettingsGA.GameName = EditorGUILayout.TextField("", GameAnalytics.SettingsGA.GameName, new GUILayoutOption[] {
                        GUILayout.Width(300),
                        GUILayout.Height(30)
                    });
                    GUI.skin.textField.fontSize = tmpFontSize;
                    GUI.skin.textField.contentOffset = tmpOffset;
                    if(GUILayout.Button("Find your game", new GUILayoutOption[] {
                        GUILayout.Width(200),
                        GUILayout.MaxHeight(30)
                    }))
                    {
                        GA_SettingsInspector.GetAppFigures(GameAnalytics.SettingsGA, this);
                    }
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GA_SettingsInspector.Splitter(new Color(0.35f, 0.35f, 0.35f), 1, 30);

                    if(_appFiguresGames != null && _appFiguresGames.Count > 0)
                    {
                        EditorGUILayout.Space();

                        GUILayout.BeginHorizontal();
                        GUILayout.FlexibleSpace();
                        GUILayout.Label("'" + _appFigName + "' matched " + _appFiguresGames.Count + " titles.", EditorStyles.boldLabel);
                        GUILayout.FlexibleSpace();
                        GUILayout.EndHorizontal();

                        EditorGUILayout.Space();

                        GUILayout.BeginHorizontal();
                        GUILayout.FlexibleSpace();
                        _appScrollPos = GUILayout.BeginScrollView(_appScrollPos, GUI.skin.box, GUILayout.Width(571));

                        for(int i = 0; i < _appFiguresGames.Count; i++)
                        {
                            GUILayout.BeginHorizontal();
                            if(_appFiguresGames[i].Icon != null)
                            {
                                GUILayout.Label(_appFiguresGames[i].Icon, new GUILayoutOption[] {
                                    GUILayout.Width(32),
                                    GUILayout.Height(32)
                                });
                            }
                            else
                            {
                                GUILayout.Label("", new GUILayoutOption[] {
                                    GUILayout.Width(32),
                                    GUILayout.Height(32)
                                });
                            }
                            Rect lastRect = GUILayoutUtility.GetLastRect();
                            Vector2 tmpOffsetLabel = GUI.skin.label.contentOffset;
                            GUI.skin.label.contentOffset = new Vector2(0, 9);
                            GUILayout.Label(_appFiguresGames[i].Name, GUILayout.Width(200));
                            GUILayout.Label(_appFiguresGames[i].Developer, GUILayout.Width(200));

                            PaintAppStoreIcon(_appFiguresGames[i].Store);

                            GUI.skin.label.contentOffset = tmpOffsetLabel;
                            GUILayout.EndHorizontal();
                            GA_SettingsInspector.Splitter(new Color(0.35f, 0.35f, 0.35f), 1, 10);

                            Rect appFigRect = new Rect(lastRect.x - 5, lastRect.y - 5, lastRect.width + 520, lastRect.height + 10);
                            if(GUI.Button(appFigRect, "", GUIStyle.none))
                            {
                                _appFiguresGame = _appFiguresGames[i];
                                TourStep = 3;
                            }
                            EditorGUIUtility.AddCursorRect(appFigRect, MouseCursor.Link);
                        }

                        GUILayout.EndScrollView();
                        GUILayout.FlexibleSpace();
                        GUILayout.EndHorizontal();
                    }

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("If your game is still in development or not in the app store, please add it manually.");
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                // create new game button

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if(GUILayout.Button("Create new game", new GUILayoutOption[] {
                        GUILayout.Width(200),
                        GUILayout.Height(30)
                    }))
                    {
                        TourStep = 2;
                    }
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    break;
                #endregion // add your game

                #region create new game
                case 2: // create new game

                    GUILayout.Space(20);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(GameAnalytics.SettingsGA.GameIcon, new GUILayoutOption[] {
                        GUILayout.Width(40),
                        GUILayout.MaxHeight(40)
                    });
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.Space(5);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Create new game", EditorStyles.whiteLargeLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                // game name

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(_gameNameLabel, GUILayout.Width(300));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    int tmpFontSize2 = GUI.skin.textField.fontSize;
                    Vector2 tmpOffset2 = GUI.skin.textField.contentOffset;
                    GUI.skin.textField.fontSize = 12;
                    GUI.skin.textField.contentOffset = new Vector2(5, 5);
                    GameAnalytics.SettingsGA.GameName = EditorGUILayout.TextField("", GameAnalytics.SettingsGA.GameName, new GUILayoutOption[] {
                        GUILayout.Width(300),
                        GUILayout.Height(30)
                    });
                    GUI.skin.textField.fontSize = tmpFontSize2;
                    GUI.skin.textField.contentOffset = tmpOffset2;
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    this._selectedStudio = EditorGUILayout.Popup("", this._selectedStudio, Studio.GetStudioNames(GameAnalytics.SettingsGA.Studios, false), GUILayout.Width(200));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    this._selectedPlatform = (GAPlatformSignUp)EditorGUILayout.Popup("", (int)this._selectedPlatform, System.Enum.GetNames(typeof(GAPlatformSignUp)), GUILayout.Width(200));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    if(this._selectedPlatform == GAPlatformSignUp.Android)
                    {
                        GUILayout.BeginHorizontal();
                        EditorGUILayout.HelpBox("PLEASE NOTICE: If you want to validate your Android in-app purchase please enter your Google Play License key (public key). Click here to learn more about the Google Play License key.", MessageType.Info);

                        if(GUI.Button(GUILayoutUtility.GetLastRect(), "", GUIStyle.none))
                        {
                            //Application.OpenURL("https://github.com/GameAnalytics/GA-SDK-UNITY/wiki/Configure%20XCode");
                        }
                        EditorGUIUtility.AddCursorRect(GUILayoutUtility.GetLastRect(), MouseCursor.Link);

                        GUILayout.EndHorizontal();

                        EditorGUILayout.Space();
                        EditorGUILayout.Space();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Google Play License key", GUILayout.Width(150));
                        this._googlePlayPublicKey = GUILayout.TextField(this._googlePlayPublicKey);
                        GUILayout.EndHorizontal();
                    }

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                // create game button

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUI.enabled = !_createGameInProgress;
                    if(GUILayout.Button("Create game", new GUILayoutOption[] {
                        GUILayout.Width(200),
                        GUILayout.MaxHeight(30)
                    }))
                    {
                        _createGameInProgress = true;
                        GA_SettingsInspector.CreateGame(GameAnalytics.SettingsGA, this, this._selectedStudio, GameAnalytics.SettingsGA.GameName, this._googlePlayPublicKey, this._selectedPlatform, null);
                    }
                    GUI.enabled = true;
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GA_SettingsInspector.Splitter(new Color(0.35f, 0.35f, 0.35f), 1, 30);

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Go back to ");
                    Rect r1 = GUILayoutUtility.GetLastRect();
                    GUILayout.Space(-5);
                    GUILayout.BeginVertical();
                    GUILayout.Space(2);
                    GUILayout.Label("Add your game", EditorStyles.boldLabel);
                    GUILayout.EndVertical();
                    Rect r2 = GUILayoutUtility.GetLastRect();
                    Rect r3 = new Rect(r1.x, r1.y, r1.width + r2.width, r2.height);
                    if(GUI.Button(r3, "", GUIStyle.none))
                    {
                        TourStep = 1;
                    }
                    EditorGUIUtility.AddCursorRect(r3, MouseCursor.Link);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    break;
                #endregion // create new game

                #region  app figures add game
                case 3: // app figures add game

                    GUILayout.Space(20);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(GameAnalytics.SettingsGA.GameIcon, new GUILayoutOption[] {
                        GUILayout.Width(40),
                        GUILayout.MaxHeight(40)
                    });
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.Space(5);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Is this your game?", EditorStyles.whiteLargeLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Please confirm that this is the game you want to add.");
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                // game name

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();

                    if(_appFiguresGame.Icon != null)
                    {
                        GUILayout.Label(_appFiguresGame.Icon, new GUILayoutOption[] {
                            GUILayout.Width(100),
                            GUILayout.Height(100)
                        });
                    }
                    else
                    {
                        GUILayout.Label("", new GUILayoutOption[] {
                            GUILayout.Width(100),
                            GUILayout.Height(100)
                        });
                    }
                    GUILayout.Label("", GUILayout.Width(25));
                    GUILayout.BeginVertical();
                    GUILayout.Label(_appFiguresGame.Name, EditorStyles.whiteLargeLabel, GUILayout.Width(200));
                    GUILayout.Label(_appFiguresGame.Developer, GUILayout.Width(200));
                    GUILayout.Label("", GUILayout.Height(20));
                    PaintAppStoreIcon(_appFiguresGame.Store);
                    GUILayout.EndVertical();

                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    if(_appFiguresGame.Store.Equals("google_play"))
                    {
                        GUILayout.BeginHorizontal();
                        EditorGUILayout.HelpBox("PLEASE NOTICE: If you want to validate your Android in-app purchase please enter your Google Play License key (public key). Click here to learn more about the Google Play License key.", MessageType.Info);

                        if(GUI.Button(GUILayoutUtility.GetLastRect(), "", GUIStyle.none))
                        {
                            //Application.OpenURL("https://github.com/GameAnalytics/GA-SDK-UNITY/wiki/Configure%20XCode");
                        }
                        EditorGUIUtility.AddCursorRect(GUILayoutUtility.GetLastRect(), MouseCursor.Link);

                        GUILayout.EndHorizontal();

                        EditorGUILayout.Space();
                        EditorGUILayout.Space();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Google Play License key", GUILayout.Width(150));
                        this._googlePlayPublicKey = GUILayout.TextField(this._googlePlayPublicKey);
                        GUILayout.EndHorizontal();
                    }

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    this._selectedStudio = EditorGUILayout.Popup("", this._selectedStudio, Studio.GetStudioNames(GameAnalytics.SettingsGA.Studios, false), GUILayout.Width(200));
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                // create game button

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUI.enabled = !_createGameInProgress;
                    if(GUILayout.Button("Add game", new GUILayoutOption[] {
                        GUILayout.Width(200),
                        GUILayout.MaxHeight(30)
                    }))
                    {
                        _createGameInProgress = true;
                        this._selectedPlatform = _appFiguresGame.Store.Equals("google_play") || _appFiguresGame.Store.Equals("amazon_appstore") ? GAPlatformSignUp.Android : GAPlatformSignUp.iOS;
                        GA_SettingsInspector.CreateGame(GameAnalytics.SettingsGA, this, this._selectedStudio, _appFiguresGame.Name, this._googlePlayPublicKey, this._selectedPlatform, _appFiguresGame);
                    }
                    GUI.enabled = true;
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Go back to ");
                    Rect r21 = GUILayoutUtility.GetLastRect();
                    GUILayout.Space(-5);
                    GUILayout.BeginVertical();
                    GUILayout.Space(2);
                    GUILayout.Label("results", EditorStyles.boldLabel);
                    GUILayout.EndVertical();
                    Rect r22 = GUILayoutUtility.GetLastRect();
                    Rect r23 = new Rect(r21.x, r21.y, r21.width + r22.width, r22.height);
                    if(GUI.Button(r23, "", GUIStyle.none))
                    {
                        TourStep = 1;
                    }
                    EditorGUIUtility.AddCursorRect(r23, MouseCursor.Link);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GA_SettingsInspector.Splitter(new Color(0.35f, 0.35f, 0.35f), 1, 30);

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("If your game is still in development or not in the app store, please add it manually.");
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                // create new game button

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if(GUILayout.Button("Create new game", new GUILayoutOption[] {
                        GUILayout.Width(200),
                        GUILayout.MaxHeight(30)
                    }))
                    {
                        TourStep = 2;
                    }
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    break;
                #endregion // app figures add game

                #region game created
                case 4:

                    GUILayout.Space(20);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(GameAnalytics.SettingsGA.Logo, new GUILayoutOption[] {
                        GUILayout.Width(40),
                        GUILayout.Height(40)
                    });
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.Space(5);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Congratulations!", EditorStyles.whiteLargeLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Your game has been created successfully.");
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GA_SettingsInspector.Splitter(new Color(0.35f, 0.35f, 0.35f), 1, 30);

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    TextAnchor tmpLA = GUI.skin.label.alignment;
                    GUI.skin.label.alignment = TextAnchor.UpperCenter;
                    GUILayout.Label("We've put together a simple guide to help you instrument GameAnalytics in your game.", GUILayout.MaxWidth(540));
                    GUI.skin.label.alignment = tmpLA;
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                // create game button

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if(GUILayout.Button("Start guide", new GUILayoutOption[] {
                        GUILayout.Width(200),
                        GUILayout.MaxHeight(30)
                    }))
                    {
                        TourStep = 5;
                    }
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    break;
                #endregion // game created

                #region guide
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                case 10:
                case 11:
                case 12:
                case 13:
                case 14:

                    int guideStep = TourStep - 4;

                    GUILayout.Space(20);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label(GameAnalytics.SettingsGA.InstrumentIcon, new GUILayoutOption[] {
                        GUILayout.Width(40),
                        GUILayout.Height(40)
                    });
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    GUILayout.Space(5);

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Start instrumenting", EditorStyles.whiteLargeLabel);
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.Label("Let us guide you through getting properly setup with GameAnalytics.");
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GA_SettingsInspector.Splitter(new Color(0.35f, 0.35f, 0.35f), 1, 30);

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    if(guideStep == 10)
                        GUILayout.Label(GetGuideStepTitle(guideStep), EditorStyles.whiteLargeLabel, GUILayout.Width(464));
                    else
                        GUILayout.Label(GetGuideStepTitle(guideStep), EditorStyles.whiteLargeLabel, GUILayout.Width(470));
                    GUILayout.BeginVertical();
                    GUILayout.Space(7);
                    if(guideStep == 10)
                        GUILayout.Label("STEP " + (guideStep) + " OF 10", GUILayout.Width(87));
                    else
                        GUILayout.Label("STEP " + (guideStep) + " OF 10", GUILayout.Width(80));
                    GUILayout.EndVertical();
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GUILayout.BeginHorizontal();
                    GUILayout.FlexibleSpace();
                    GUILayout.BeginVertical();
                    StringWithType[] guideStepTexts = GetGuideStepText(guideStep);
                    foreach(StringWithType s in guideStepTexts)
                    {
                        if(s.Type == StringType.Label)
                        {
                            GUILayout.Label(s.Text, EditorStyles.wordWrappedLabel, GUILayout.MaxWidth(550));
                        }
                        else if(s.Type == StringType.TextBox)
                        {
                            TextAnchor tmpA = GUI.skin.textField.alignment;
                            int tmpFS = GUI.skin.textField.fontSize;
                            GUI.skin.textField.alignment = TextAnchor.MiddleLeft;
                            GUI.skin.textField.fontSize = 12;
                            GUI.skin.textField.padding = new RectOffset(10, 1, 10, 10);
                            GUILayout.TextField(s.Text, new GUILayoutOption[] {
                                GUILayout.MaxWidth(550),
                                GUILayout.Height(34)
                            });
                            GUI.skin.textField.alignment = tmpA;
                            GUI.skin.textField.fontSize = tmpFS;
                            GUI.skin.textField.padding = new RectOffset(3, 3, 1, 2);
                        }
                        else if(s.Type == StringType.Link)
                        {
                            GUI.skin.label.fontStyle = FontStyle.Bold;
                            float sl = GUI.skin.button.CalcSize(new GUIContent(s.Text)).x;
                            if(GUILayout.Button(s.Text, EditorStyles.whiteLabel, GUILayout.MaxWidth(sl)))
                            {
                                Application.OpenURL(s.Link);
                            }
                            GUI.skin.label.fontStyle = FontStyle.Normal;

                            EditorGUIUtility.AddCursorRect(GUILayoutUtility.GetLastRect(), MouseCursor.Link);
                        }
                    }
                    GUILayout.EndVertical();
                    GUILayout.FlexibleSpace();
                    GUILayout.EndHorizontal();

                    EditorGUILayout.Space();
                    EditorGUILayout.Space();
                    EditorGUILayout.Space();

                    GA_SettingsInspector.Splitter(new Color(0.35f, 0.35f, 0.35f), 1, 30);

                // create game button

                    string buttonText = "Next step";
                    if(TourStep == 14)
                    {
                        buttonText = "Done";
                    }

                    GUI.BeginGroup(new Rect(0, 420, 640, 50));
                //GUILayout.BeginHorizontal();
                //GUILayout.FlexibleSpace();
                //GUILayout.BeginVertical();
                //GUILayout.Space(7);
                    GUI.Label(new Rect(43, 7, 500, 50), GetGuideStepNext(guideStep));
                //GUILayout.EndVertical();
                    if(guideStep > 1 && GUI.Button(new Rect(454, 0, 30, 30), "<"))
                    {
                        TourStep--;
                    }
                    if(GUI.Button(new Rect(489, 0, 100, 30), buttonText))
                    {
                        if(TourStep < 14)
                            TourStep++;
                        else
                            Close();
                    }
                //GUILayout.FlexibleSpace();
                //GUILayout.EndHorizontal();
                    GUI.EndGroup();

                    break;
                #endregion // guide
            }
        }