void DrawChangelogInfo() { bool isChanged = false; string tmpString = ""; changelogFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(changelogFoldout, "Changelog"); if (changelogFoldout) { scrollPosChangelog = EditorGUILayout.BeginScrollView(scrollPosChangelog); ++EditorGUI.indentLevel; changelog.updateName = DrawStringField("Update name", changelog.updateName); --EditorGUI.indentLevel; EditorGUILayout.EndScrollView(); } EditorGUILayout.EndFoldoutHeaderGroup(); if (isChanged) { ChangelogData.SaveChangelog(changelog); } string DrawStringField(string label, string text) { tmpString = EditorGUILayout.TextField(label, text); if (text != tmpString) { isChanged = true; } return(tmpString); } }
void DrawChangelogInfo() { bool oldChangelogFoldoutValue = changelogFoldout; changelogFoldout = EditorGUILayout.BeginFoldoutHeaderGroup(changelogFoldout, "Changelog"); EditorGUILayout.EndFoldoutHeaderGroup(); if (changelogFoldout) { scrollPosChangelog = EditorGUILayout.BeginScrollView(scrollPosChangelog /*, GUILayout.Height(800f)*/); ++EditorGUI.indentLevel; EditorGUILayout.LabelField("Readme"); changelog.readme = EditorGUILayout.TextArea(changelog.readme); GUILayout.Space(10f); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Changelog file:", GUILayout.Width(100)); if (GUILayout.Button($"Add version")) { changelog.versions.Add(new ChangelogData.ChangelogVersionEntry()); } EditorGUILayout.EndHorizontal(); for (int i = changelog.versions.Count - 1; i >= 0; --i) { ChangelogData.ChangelogVersionEntry version = changelog.versions[i]; EditorGUILayout.BeginHorizontal(); version.foldout = EditorGUILayout.BeginFoldoutHeaderGroup(version.foldout, $"{version.version} - {version.date}"); EditorGUILayout.EndFoldoutHeaderGroup(); if (GUILayout.Button($"Remove version", GUILayout.Width(100))) { changelog.versions.RemoveAt(i); return; } EditorGUILayout.EndHorizontal(); if (string.IsNullOrEmpty(version.version)) { version.version = PlayerSettings.bundleVersion; } if (string.IsNullOrEmpty(version.date)) { version.date = System.DateTime.Now.ToShortDateString(); } if (version.foldout) { ++EditorGUI.indentLevel; EditorGUILayout.BeginHorizontal(); version.version = EditorGUILayout.TextField("Version", version.version); if (GUILayout.Button($"Curr", GUILayout.Width(70))) { version.version = PlayerSettings.bundleVersion; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); version.date = EditorGUILayout.TextField("Date", version.date); if (GUILayout.Button($"Now", GUILayout.Width(70))) { version.date = System.DateTime.Now.ToShortDateString(); } EditorGUILayout.EndHorizontal(); version.updateName = EditorGUILayout.TextField("Update name", version.updateName); version.descriptionText = EditorGUILayout.TextField("Description", version.descriptionText); EditorGUILayout.LabelField("Notes: "); ++EditorGUI.indentLevel; EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Type", GUILayout.Width(150)); EditorGUILayout.LabelField("Scope", GUILayout.Width(125)); EditorGUILayout.LabelField("Community", GUILayout.Width(100)); EditorGUILayout.LabelField("Description"); EditorGUILayout.EndHorizontal(); for (int j = 0; j < version.notes.Count; ++j) { ChangelogData.ChangelogNoteEntry note = version.notes[j]; EditorGUILayout.BeginHorizontal(); ChangelogData.ChangelogEntryType newType = (ChangelogData.ChangelogEntryType)EditorGUILayout.EnumPopup(note.type, GUILayout.Width(150)); ChangelogData.ChangelogEntryScope newScope = (ChangelogData.ChangelogEntryScope)EditorGUILayout.EnumPopup(note.scope, GUILayout.Width(150)); note.isCommunityFeedback = EditorGUILayout.Toggle(note.isCommunityFeedback, GUILayout.Width(70)); note.text = EditorGUILayout.TextField(note.text); if (note.type != newType || note.scope != newScope) { note.type = newType; note.scope = newScope; version.notes = version.notes.OrderBy(_note => _note.type).ThenBy(_note => _note.scope).ToList(); return; } if (GUILayout.Button($"-", GUILayout.Width(25))) { version.notes.RemoveAt(j); return; } EditorGUILayout.EndHorizontal(); } --EditorGUI.indentLevel; if (GUILayout.Button($"Add note")) { version.notes.Add(new ChangelogData.ChangelogNoteEntry()); } --EditorGUI.indentLevel; } EditorGUILayout.Space(10); } --EditorGUI.indentLevel; EditorGUILayout.EndScrollView(); } if (oldChangelogFoldoutValue != changelogFoldout) { ChangelogData.SaveChangelog(changelog); #if GAME_TEMPLATE TemplateGameManager.Instance.buildNameString = changelog.GetLastVersion().GetVersionHeader();; TemplateGameManager.Instance.productName = PlayerSettings.productName; EditorUtility.SetDirty(TemplateGameManager.Instance); #endif } if (changelogFoldout) { EditorGUILayout.Space(20); } }