public void Configure(EntityTypeBuilder <Game> builder) { builder.ToTable(nameof(Game)); builder.HasKey(h => h.Id); builder.Property(h => h.Name).IsRequired(); builder.Property(h => h.CreationDate); builder.HasData(GameSeed.DefaultGames()); }
private void onButtonNewGameClick(Base control, EventArgs args) { Program.Game = new GameState(); GameSeed seed = new GameSeed(); /*seed.pName = nd.namePlayer; * seed.gName = nd.galaxyName; * seed.gType = nd.getGalaxyType(); * seed.gSize = nd.getGalaxySize(); * seed.gStarsCount = nd.getStarsCount(); * seed.gGenerateRandomEvent = nd.getGalaxyRandomEvents(); * * Program.Game.New(seed); * * UpdateControls(); * * panel1.Enabled = true; * mainMenuSave.Enabled = true; * MainMenuTechTree.Enabled = true; * systemsButton.Enabled = true; * fleetsButton.Enabled = true; * GameTimer.Start(); */ seed.pName = "Anton"; seed.gName = "Milky Way"; seed.gType = GalaxyType.Spiral; seed.gSize = 4; seed.gStarsCount = 20; seed.gGenerateRandomEvent = true; Program.Game.New(seed); Program.screenManager.LoadScreen("gamescreen"); }
// GET: Play public ActionResult Play(Region?region = null, long?summonerId = null) { if (!summonerId.HasValue || !region.HasValue) { return(RedirectToAction("Index", "Home")); } var apiConnection = new RiotAPIConnection(); // get last game(s) of given summoner var recentGamesRequest = new RecentGamesRequest(region.Value, summonerId.Value); var recentGamesResult = apiConnection.PerformRequest <Games>(recentGamesRequest); // generate game seed var gameSeed = GameSeed.GenerateGameSeed(recentGamesResult.value.games); if (!recentGamesResult.isSuccess || gameSeed == null) { return(RedirectToAction("Index", "Home", new { error = ErrorMessage })); } // get main champion of player from seed var topMasteryRequest = new TopChampionMasteryRequest(region.Value, gameSeed.FellowPlayerId); var topMasteryResult = apiConnection.PerformRequest <List <Mastery> >(topMasteryRequest); if (!topMasteryResult.isSuccess || topMasteryResult.value.Count == 0) { return(RedirectToAction("Index", "Home", new { error = ErrorMessage })); } var targetChampionId = topMasteryResult.value.FirstOrDefault().championId; gameSeed.TargetChampionId = targetChampionId; Session[TargetChampionId] = targetChampionId; // get name of player from seed var summonerRequest = new GetSummonerRequest(region.Value, gameSeed.FellowPlayerId); var summonersResult = apiConnection.PerformRequest <Dictionary <string, Summoner> >(summonerRequest); if (!summonersResult.isSuccess || summonersResult.value == null || summonersResult.value.Count == 0) { return(RedirectToAction("Index", "Home", new { error = ErrorMessage })); } var fellowName = summonersResult.value[gameSeed.FellowPlayerId.ToString()].name; Session[FellowName] = fellowName; var fellowIconId = summonersResult.value[gameSeed.FellowPlayerId.ToString()].profileIconId; Session[FellowIcon] = fellowIconId; // prepare view model var allChampionsRequest = new AllChampionsRequest(region.Value); var allChampionsResult = apiConnection.PerformRequest <Champions>(allChampionsRequest); if (!allChampionsResult.isSuccess) { return(RedirectToAction("Index", "Home", new { error = ErrorMessage })); } var gameVersionsRequest = new GameVersionsRequest(region.Value); var gameVersionsResult = apiConnection.PerformRequest <List <string> >(gameVersionsRequest); if (!gameVersionsResult.isSuccess || gameVersionsResult.value.Count == 0) { return(RedirectToAction("Index", "Home", new { error = ErrorMessage })); } var gameVersion = gameVersionsResult.value.First(); Session[GameVersion] = gameVersion; return(View(new GameViewModel() { Champions = allChampionsResult.value.data.Values.OrderBy(x => x.name), PlayerChampionName = KnownChampionUtility.ChampionIdToName(gameSeed.PlayerChampionId), FellowPlayerChampionName = KnownChampionUtility.ChampionIdToName(gameSeed.FellowPlayerChampionId), FellowPlayerName = fellowName, FellowPlayerIconId = fellowIconId, SameTeam = gameSeed.SameTeam, NGamesAgo = gameSeed.NGamesAgo, GameVersion = gameVersion })); }
private void OnGUI() { EditorGUIUtility.labelWidth = 225f; EditorGUILayout.BeginHorizontal(); _gameSeedLoadText = (TextAsset)EditorGUILayout.ObjectField("Game Seed File", _gameSeedLoadText, typeof(TextAsset), false); if (_gameSeedLoadText) { if (GUILayout.Button("Load", GUILayout.ExpandWidth(false))) { try { var gameSeed = JsonConvert.DeserializeObject <GameSeed>(_gameSeedLoadText.text); _gameSeed = gameSeed; SetFoldOut(); } catch (Exception ex) { _gameSeed = null; var error = $"Invalid game seed file. {ex}"; Debug.LogError(error); EditorUtility.DisplayDialog("Edit Game Seed", error, "OK"); return; } } } EditorGUILayout.EndHorizontal(); if (_gameSeed != null) { _gameSeed.game = EditorGUILayout.TextField("Name", _gameSeed.game ?? string.Empty, EditorStyles.textField); _showAchievements = EditorGUILayout.Foldout(_showAchievements, "Achievements"); if (_showAchievements) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); for (var i = 0; i < _gameSeed.achievements.Length; i++) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); _showAchievementList[i] = EditorGUILayout.Foldout(_showAchievementList[i], _gameSeed.achievements[i].Name); if (_showAchievementList[i]) { _gameSeed.achievements[i].Name = EditorGUILayout.TextField("Name", _gameSeed.achievements[i].Name ?? string.Empty, EditorStyles.textField); _gameSeed.achievements[i].Description = EditorGUILayout.TextField("Description", _gameSeed.achievements[i].Description ?? string.Empty, EditorStyles.textField); _gameSeed.achievements[i].Token = EditorGUILayout.TextField("Token", _gameSeed.achievements[i].Token ?? string.Empty, EditorStyles.textField); _gameSeed.achievements[i].ActorType = (ActorType)EditorGUILayout.EnumPopup("ActorType", _gameSeed.achievements[i].ActorType ?? 0, EditorStyles.popup); _showAchievementCriteria[i] = EditorGUILayout.Foldout(_showAchievementCriteria[i], "Evaluation Criteria"); EditorGUILayout.HelpBox(CreateSummary(_gameSeed.achievements[i].EvaluationCriterias), MessageType.Info); if (_showAchievementCriteria[i]) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); for (var j = 0; j < _gameSeed.achievements[i].EvaluationCriterias.Count; j++) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); _showAchievementCriteriaList[i][j] = EditorGUILayout.Foldout(_showAchievementCriteriaList[i][j], _gameSeed.achievements[i].EvaluationCriterias[j].EvaluationDataKey); if (_showAchievementCriteriaList[i][j]) { _gameSeed.achievements[i].EvaluationCriterias[j].EvaluationDataKey = EditorGUILayout.TextField("EvaluationDataKey", _gameSeed.achievements[i].EvaluationCriterias[j].EvaluationDataKey ?? string.Empty, EditorStyles.textField); _gameSeed.achievements[i].EvaluationCriterias[j].EvaluationDataCategory = (EvaluationDataCategory)EditorGUILayout.EnumPopup("EvaluationDataCategory", _gameSeed.achievements[i].EvaluationCriterias[j].EvaluationDataCategory ?? 0, EditorStyles.popup); _gameSeed.achievements[i].EvaluationCriterias[j].ComparisonType = (ComparisonType)EditorGUILayout.EnumPopup("ComparisonType", _gameSeed.achievements[i].EvaluationCriterias[j].ComparisonType ?? 0, EditorStyles.popup); _gameSeed.achievements[i].EvaluationCriterias[j].CriteriaQueryType = (CriteriaQueryType)EditorGUILayout.EnumPopup("CriteriaQueryType", _gameSeed.achievements[i].EvaluationCriterias[j].CriteriaQueryType ?? 0, EditorStyles.popup); _gameSeed.achievements[i].EvaluationCriterias[j].EvaluationDataType = (EvaluationDataType)EditorGUILayout.EnumPopup("EvaluationDataType", _gameSeed.achievements[i].EvaluationCriterias[j].EvaluationDataType ?? 0, EditorStyles.popup); _gameSeed.achievements[i].EvaluationCriterias[j].Scope = (CriteriaScope)EditorGUILayout.EnumPopup("Scope", _gameSeed.achievements[i].EvaluationCriterias[j].Scope ?? 0, EditorStyles.popup); _gameSeed.achievements[i].EvaluationCriterias[j].Value = EditorGUILayout.TextField("Value", _gameSeed.achievements[i].EvaluationCriterias[j].Value ?? string.Empty, EditorStyles.textField); EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 2) * 35); if (GUILayout.Button("Remove Criteria", GUILayout.ExpandWidth(false))) { _gameSeed.achievements[i].EvaluationCriterias.RemoveAt(j); _showAchievementCriteriaList[i].RemoveAt(j); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 2) * 35); if (GUILayout.Button("Add Criteria", GUILayout.ExpandWidth(false))) { _gameSeed.achievements[i].EvaluationCriterias.Add(new EvaluationCriteriaCreateRequest()); _showAchievementCriteriaList[i].Add(false); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } _showAchievementReward[i] = EditorGUILayout.Foldout(_showAchievementReward[i], "Rewards"); EditorGUILayout.HelpBox(CreateSummary(_gameSeed.achievements[i].Rewards), MessageType.Info); if (_showAchievementReward[i]) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); for (var j = 0; j < _gameSeed.achievements[i].Rewards.Count; j++) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); _showAchievementRewardList[i][j] = EditorGUILayout.Foldout(_showAchievementRewardList[i][j], _gameSeed.achievements[i].Rewards[j].EvaluationDataKey); if (_showAchievementRewardList[i][j]) { _gameSeed.achievements[i].Rewards[j].EvaluationDataKey = EditorGUILayout.TextField("EvaluationDataKey", _gameSeed.achievements[i].Rewards[j].EvaluationDataKey ?? string.Empty, EditorStyles.textField); _gameSeed.achievements[i].Rewards[j].EvaluationDataCategory = (EvaluationDataCategory)EditorGUILayout.EnumPopup("EvaluationDataCategory", _gameSeed.achievements[i].Rewards[j].EvaluationDataCategory ?? 0, EditorStyles.popup); _gameSeed.achievements[i].Rewards[j].EvaluationDataType = (EvaluationDataType)EditorGUILayout.EnumPopup("EvaluationDataType", _gameSeed.achievements[i].Rewards[j].EvaluationDataType ?? 0, EditorStyles.popup); _gameSeed.achievements[i].Rewards[j].Value = EditorGUILayout.TextField("Value", _gameSeed.achievements[i].Rewards[j].Value ?? string.Empty, EditorStyles.textField); EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 2) * 35); if (GUILayout.Button("Remove Reward", GUILayout.ExpandWidth(false))) { _gameSeed.achievements[i].Rewards.RemoveAt(j); _showAchievementRewardList[i].RemoveAt(j); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 2) * 35); if (GUILayout.Button("Add Reward", GUILayout.ExpandWidth(false))) { _gameSeed.achievements[i].Rewards.Add(new RewardCreateRequest()); _showAchievementRewardList[i].Add(false); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 1) * 35); if (GUILayout.Button("Remove Achievement", GUILayout.ExpandWidth(false))) { var list = _gameSeed.achievements.ToList(); list.RemoveAt(i); _showAchievementList.RemoveAt(i); _showAchievementCriteria.RemoveAt(i); _showAchievementReward.RemoveAt(i); _showAchievementCriteriaList.RemoveAt(i); _showAchievementRewardList.RemoveAt(i); _gameSeed.achievements = list.ToArray(); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } if (GUILayout.Button("Add Achievement", GUILayout.ExpandWidth(false))) { var list = _gameSeed.achievements.ToList(); list.Add(new EvaluationCreateRequest()); list.Last().EvaluationCriterias = new List <EvaluationCriteriaCreateRequest>(); list.Last().Rewards = new List <RewardCreateRequest>(); _showAchievementList.Add(false); _showAchievementCriteria.Add(false); _showAchievementReward.Add(false); _showAchievementCriteriaList.Add(new List <bool>()); _showAchievementRewardList.Add(new List <bool>()); _gameSeed.achievements = list.ToArray(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } _showSkills = EditorGUILayout.Foldout(_showSkills, "Skills"); if (_showSkills) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); for (var i = 0; i < _gameSeed.skills.Length; i++) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); _showSkillList[i] = EditorGUILayout.Foldout(_showSkillList[i], _gameSeed.skills[i].Name); if (_showSkillList[i]) { _gameSeed.skills[i].Name = EditorGUILayout.TextField("Name", _gameSeed.skills[i].Name ?? string.Empty, EditorStyles.textField); _gameSeed.skills[i].Description = EditorGUILayout.TextField("Description", _gameSeed.skills[i].Description ?? string.Empty, EditorStyles.textField); _gameSeed.skills[i].Token = EditorGUILayout.TextField("Token", _gameSeed.skills[i].Token ?? string.Empty, EditorStyles.textField); _gameSeed.skills[i].ActorType = (ActorType)EditorGUILayout.EnumPopup("ActorType", _gameSeed.skills[i].ActorType ?? 0, EditorStyles.popup); _showSkillCriteria[i] = EditorGUILayout.Foldout(_showSkillCriteria[i], "Evaluation Criteria"); EditorGUILayout.HelpBox(CreateSummary(_gameSeed.skills[i].EvaluationCriterias), MessageType.Info); if (_showSkillCriteria[i]) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); for (var j = 0; j < _gameSeed.skills[i].EvaluationCriterias.Count; j++) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); _showSkillCriteriaList[i][j] = EditorGUILayout.Foldout(_showSkillCriteriaList[i][j], _gameSeed.skills[i].EvaluationCriterias[j].EvaluationDataKey); if (_showSkillCriteriaList[i][j]) { _gameSeed.skills[i].EvaluationCriterias[j].EvaluationDataKey = EditorGUILayout.TextField("EvaluationDataKey", _gameSeed.skills[i].EvaluationCriterias[j].EvaluationDataKey ?? string.Empty, EditorStyles.textField); _gameSeed.skills[i].EvaluationCriterias[j].EvaluationDataCategory = (EvaluationDataCategory)EditorGUILayout.EnumPopup("EvaluationDataCategory", _gameSeed.skills[i].EvaluationCriterias[j].EvaluationDataCategory ?? 0, EditorStyles.popup); _gameSeed.skills[i].EvaluationCriterias[j].ComparisonType = (ComparisonType)EditorGUILayout.EnumPopup("ComparisonType", _gameSeed.skills[i].EvaluationCriterias[j].ComparisonType ?? 0, EditorStyles.popup); _gameSeed.skills[i].EvaluationCriterias[j].CriteriaQueryType = (CriteriaQueryType)EditorGUILayout.EnumPopup("CriteriaQueryType", _gameSeed.skills[i].EvaluationCriterias[j].CriteriaQueryType ?? 0, EditorStyles.popup); _gameSeed.skills[i].EvaluationCriterias[j].EvaluationDataType = (EvaluationDataType)EditorGUILayout.EnumPopup("EvaluationDataType", _gameSeed.skills[i].EvaluationCriterias[j].EvaluationDataType ?? 0, EditorStyles.popup); _gameSeed.skills[i].EvaluationCriterias[j].Scope = (CriteriaScope)EditorGUILayout.EnumPopup("Scope", _gameSeed.skills[i].EvaluationCriterias[j].Scope ?? 0, EditorStyles.popup); _gameSeed.skills[i].EvaluationCriterias[j].Value = EditorGUILayout.TextField("Value", _gameSeed.skills[i].EvaluationCriterias[j].Value ?? string.Empty, EditorStyles.textField); EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 2) * 35); if (GUILayout.Button("Remove Criteria", GUILayout.ExpandWidth(false))) { _gameSeed.skills[i].EvaluationCriterias.RemoveAt(j); _showSkillCriteriaList[i].RemoveAt(j); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 2) * 35); if (GUILayout.Button("Add Criteria", GUILayout.ExpandWidth(false))) { _gameSeed.skills[i].EvaluationCriterias.Add(new EvaluationCriteriaCreateRequest()); _showSkillCriteriaList[i].Add(false); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } _showSkillReward[i] = EditorGUILayout.Foldout(_showSkillReward[i], "Rewards"); EditorGUILayout.HelpBox(CreateSummary(_gameSeed.skills[i].Rewards), MessageType.Info); if (_showSkillReward[i]) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); for (var j = 0; j < _gameSeed.skills[i].Rewards.Count; j++) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); _showSkillRewardList[i][j] = EditorGUILayout.Foldout(_showSkillRewardList[i][j], _gameSeed.skills[i].Rewards[j].EvaluationDataKey); if (_showSkillRewardList[i][j]) { _gameSeed.skills[i].Rewards[j].EvaluationDataKey = EditorGUILayout.TextField("EvaluationDataKey", _gameSeed.skills[i].Rewards[j].EvaluationDataKey ?? string.Empty, EditorStyles.textField); _gameSeed.skills[i].Rewards[j].EvaluationDataCategory = (EvaluationDataCategory)EditorGUILayout.EnumPopup("EvaluationDataCategory", _gameSeed.skills[i].Rewards[j].EvaluationDataCategory ?? 0, EditorStyles.popup); _gameSeed.skills[i].Rewards[j].EvaluationDataType = (EvaluationDataType)EditorGUILayout.EnumPopup("EvaluationDataType", _gameSeed.skills[i].Rewards[j].EvaluationDataType ?? 0, EditorStyles.popup); _gameSeed.skills[i].Rewards[j].Value = EditorGUILayout.TextField("Value", _gameSeed.skills[i].Rewards[j].Value ?? string.Empty, EditorStyles.textField); EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 2) * 35); if (GUILayout.Button("Remove Reward", GUILayout.ExpandWidth(false))) { _gameSeed.skills[i].Rewards.RemoveAt(j); _showSkillRewardList[i].RemoveAt(j); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 2) * 35); if (GUILayout.Button("Add Reward", GUILayout.ExpandWidth(false))) { _gameSeed.skills[i].Rewards.Add(new RewardCreateRequest()); _showSkillRewardList[i].Add(false); } EditorGUILayout.EndHorizontal(); EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 1) * 35); if (GUILayout.Button("Remove Skill", GUILayout.ExpandWidth(false))) { var list = _gameSeed.skills.ToList(); list.RemoveAt(i); _showSkillList.RemoveAt(i); _showSkillCriteria.RemoveAt(i); _showSkillReward.RemoveAt(i); _showSkillCriteriaList.RemoveAt(i); _showSkillRewardList.RemoveAt(i); _gameSeed.skills = list.ToArray(); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } if (GUILayout.Button("Add Skill", GUILayout.ExpandWidth(false))) { var list = _gameSeed.skills.ToList(); list.Add(new EvaluationCreateRequest()); list.Last().EvaluationCriterias = new List <EvaluationCriteriaCreateRequest>(); list.Last().Rewards = new List <RewardCreateRequest>(); _showSkillList.Add(false); _showSkillCriteria.Add(false); _showSkillReward.Add(false); _showSkillCriteriaList.Add(new List <bool>()); _showSkillRewardList.Add(new List <bool>()); _gameSeed.skills = list.ToArray(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } _showLeaderboards = EditorGUILayout.Foldout(_showLeaderboards, "Leaderboards"); if (_showLeaderboards) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); for (var i = 0; i < _gameSeed.leaderboards.Length; i++) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); _showLeaderboardList[i] = EditorGUILayout.Foldout(_showLeaderboardList[i], _gameSeed.leaderboards[i].Name); if (_showLeaderboardList[i]) { _gameSeed.leaderboards[i].Token = EditorGUILayout.TextField("Token", _gameSeed.leaderboards[i].Token ?? string.Empty, EditorStyles.textField); _gameSeed.leaderboards[i].Name = EditorGUILayout.TextField("Name", _gameSeed.leaderboards[i].Name ?? string.Empty, EditorStyles.textField); _gameSeed.leaderboards[i].Key = EditorGUILayout.TextField("Key", _gameSeed.leaderboards[i].Key ?? string.Empty, EditorStyles.textField); _gameSeed.leaderboards[i].ActorType = (ActorType)EditorGUILayout.EnumPopup("ActorType", _gameSeed.leaderboards[i].ActorType ?? 0, EditorStyles.popup); EditorGUILayout.HelpBox(CreateSummary(_gameSeed.leaderboards[i]), MessageType.Info); _gameSeed.leaderboards[i].EvaluationDataCategory = (EvaluationDataCategory)EditorGUILayout.EnumPopup("EvaluationDataCategory", _gameSeed.leaderboards[i].EvaluationDataCategory ?? 0, EditorStyles.popup); _gameSeed.leaderboards[i].EvaluationDataType = (EvaluationDataType)EditorGUILayout.EnumPopup("EvaluationDataType", _gameSeed.leaderboards[i].EvaluationDataType ?? 0, EditorStyles.popup); _gameSeed.leaderboards[i].CriteriaScope = (CriteriaScope)EditorGUILayout.EnumPopup("CriteriaScope", _gameSeed.leaderboards[i].CriteriaScope ?? 0, EditorStyles.popup); _gameSeed.leaderboards[i].LeaderboardType = (LeaderboardType)EditorGUILayout.EnumPopup("LeaderboardType", _gameSeed.leaderboards[i].LeaderboardType ?? 0, EditorStyles.popup); EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 1) * 35); if (GUILayout.Button("Remove Leaderboard", GUILayout.ExpandWidth(false))) { var list = _gameSeed.leaderboards.ToList(); list.RemoveAt(i); _showLeaderboardList.RemoveAt(i); _gameSeed.leaderboards = list.ToArray(); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } if (GUILayout.Button("Add Leaderboard", GUILayout.ExpandWidth(false))) { var list = _gameSeed.leaderboards.ToList(); list.Add(new LeaderboardRequest()); _showLeaderboardList.Add(false); _gameSeed.leaderboards = list.ToArray(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } _showGroups = EditorGUILayout.Foldout(_showGroups, "Groups"); if (_showGroups) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); for (var i = 0; i < _gameSeed.groups.Length; i++) { EditorGUI.indentLevel++; EditorGUILayout.BeginVertical(); _showGroupList[i] = EditorGUILayout.Foldout(_showGroupList[i], _gameSeed.groups[i].Name); if (_showGroupList[i]) { _gameSeed.groups[i].Name = EditorGUILayout.TextField("Name", _gameSeed.groups[i].Name ?? string.Empty, EditorStyles.textField); _gameSeed.groups[i].Description = EditorGUILayout.TextField("Description", _gameSeed.groups[i].Description ?? string.Empty, EditorStyles.textField); EditorGUILayout.HelpBox(CreateSummary(_gameSeed.groups[i]), MessageType.Info); EditorGUILayout.BeginHorizontal(); GUILayout.Space((EditorGUI.indentLevel - 1) * 35); if (GUILayout.Button("Remove Group", GUILayout.ExpandWidth(false))) { var list = _gameSeed.groups.ToList(); list.RemoveAt(i); _showGroupList.RemoveAt(i); _gameSeed.groups = list.ToArray(); } EditorGUILayout.EndHorizontal(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } if (GUILayout.Button("Add Group", GUILayout.ExpandWidth(false))) { var list = _gameSeed.groups.ToList(); list.Add(new GroupRequest()); _showGroupList.Add(false); _gameSeed.groups = list.ToArray(); } EditorGUI.indentLevel--; EditorGUILayout.EndVertical(); } EditorGUILayout.BeginHorizontal(); _gameSeedSaveText = (TextAsset)EditorGUILayout.ObjectField("Save File", _gameSeedSaveText, typeof(TextAsset), false); if (_gameSeedSaveText != null) { if (GUILayout.Button("Save", GUILayout.ExpandWidth(false))) { string message; try { var seedJson = JsonConvert.SerializeObject(_gameSeed, Formatting.Indented, new StringEnumConverter()); var seedPath = AssetDatabase.GetAssetPath(_gameSeedSaveText); File.WriteAllText(seedPath, seedJson); AssetDatabase.Refresh(); message = $"Success! \n\nSeed Saved to: \n{seedPath}"; } catch (Exception ex) { message = $"Failed: Could not save seed to file. {ex}"; Debug.LogError($"Edit Game Seed Save: {message}"); } EditorUtility.DisplayDialog("Edit Game Seed", message, "OK"); } } EditorGUILayout.EndHorizontal(); } else { if (GUILayout.Button("Create Game Seed", GUILayout.ExpandWidth(false))) { _gameSeed = new GameSeed { achievements = new EvaluationCreateRequest[0], skills = new EvaluationCreateRequest[0], leaderboards = new LeaderboardRequest[0] }; SetFoldOut(); } } }