AnimancerReadMe.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. // Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik //
  2. #pragma warning disable CS0649 // Field is never assigned to, and will always have its default value.
  3. #if UNITY_EDITOR
  4. using System;
  5. using UnityEditor;
  6. using UnityEngine;
  7. namespace Animancer.Editor
  8. {
  9. /// <summary>[Editor-Only] A welcome screen for <see cref="Animancer"/>.</summary>
  10. /// https://kybernetik.com.au/animancer/api/Animancer.Editor/AnimancerReadMe
  11. ///
  12. // [CreateAssetMenu]
  13. [AnimancerHelpUrl(typeof(AnimancerReadMe))]
  14. public class AnimancerReadMe : ReadMe
  15. {
  16. /************************************************************************************************************************/
  17. /// <summary>The release ID of the current version.</summary>
  18. /// <example><list type="bullet">
  19. /// <item>[ 1] = v1.0.0: 2018-05-02.</item>
  20. /// <item>[ 2] = v1.1.0: 2018-05-29.</item>
  21. /// <item>[ 3] = v1.2.0: 2018-08-14.</item>
  22. /// <item>[ 4] = v1.3.0: 2018-09-12.</item>
  23. /// <item>[ 5] = v2.0.0: 2018-10-08.</item>
  24. /// <item>[ 6] = v3.0.0: 2019-05-27.</item>
  25. /// <item>[ 7] = v3.1.0: 2019-08-12.</item>
  26. /// <item>[ 8] = v4.0.0: 2020-01-28.</item>
  27. /// <item>[ 9] = v4.1.0: 2020-02-21.</item>
  28. /// <item>[10] = v4.2.0: 2020-03-02.</item>
  29. /// <item>[11] = v4.3.0: 2020-03-13.</item>
  30. /// <item>[12] = v4.4.0: 2020-03-27.</item>
  31. /// <item>[13] = v5.0.0: 2020-07-17.</item>
  32. /// <item>[14] = v5.1.0: 2020-07-27.</item>
  33. /// <item>[15] = v5.2.0: 2020-09-16.</item>
  34. /// <item>[16] = v5.3.0: 2020-10-06.</item>
  35. /// <item>[17] = v6.0.0: 2020-12-04.</item>
  36. /// <item>[18] = v6.1.0: 2021-04-13.</item>
  37. /// <item>[19] = v7.0.0: 2021-07-29.</item>
  38. /// <item>[20] = v7.1.0: 2021-08-13.</item>
  39. /// <item>[21] = v7.2.0: 2021-10-17.</item>
  40. /// <item>[22] = v7.3.0: 2022-07-03.</item>
  41. /// <item>[23] = v7.4.0: 2023-01-26.</item>
  42. /// <item>[24] = v7.4.1: 2023-01-28.</item>
  43. /// <item>[25] = v7.4.2: 2023-01-31.</item>
  44. /// <item>[26] = v7.4.3: 2023-04-16.</item>
  45. /// <item>[27] = v8.0.0: 2024-08-17.</item>
  46. /// <item>[28] = v8.0.1: 2024-09-08.</item>
  47. /// <item>[29] = v8.0.2: 2024-11-02.</item>
  48. /// </list></example>
  49. public override int ReleaseNumber => 29;
  50. /// <inheritdoc/>
  51. public override string VersionName => Strings.DocsURLs.VersionName;
  52. /// <inheritdoc/>
  53. public override string PrefKey => nameof(Animancer);
  54. /// <inheritdoc/>
  55. public override string BaseProductName => Strings.ProductName;
  56. /// <inheritdoc/>
  57. public override string ProductName => Strings.ProductName + " Pro";
  58. /// <inheritdoc/>
  59. public override string DocumentationURL => Strings.DocsURLs.Documentation;
  60. /// <inheritdoc/>
  61. public override string ChangeLogURL => Strings.DocsURLs.ChangeLogURL;
  62. /// <inheritdoc/>
  63. public override string SamplesURL => Strings.DocsURLs.Samples;
  64. /// <inheritdoc/>
  65. public override string UpdateURL => Strings.DocsURLs.LatestVersion;
  66. /************************************************************************************************************************/
  67. public AnimancerReadMe() : base(
  68. new("Issues",
  69. "for questions, suggestions, and bug reports",
  70. Strings.DocsURLs.Issues),
  71. new("Discussions",
  72. "for general discussions, feedback, and news",
  73. Strings.DocsURLs.Discussions),
  74. new("Email",
  75. "for anything private",
  76. GetEmailURL(Strings.DocsURLs.DeveloperEmail, Strings.ProductName),
  77. Strings.DocsURLs.DeveloperEmail))
  78. {
  79. ExtraSamples = new LinkSection[]
  80. {
  81. new("Platformer Game Kit", null, "https://kybernetik.com.au/platformer"),
  82. };
  83. }
  84. /************************************************************************************************************************/
  85. /// <summary>[Editor-Only] A custom Inspector for <see cref="AnimancerReadMe"/>.</summary>
  86. [CustomEditor(typeof(AnimancerReadMe), editorForChildClasses: true)]
  87. public new class Editor : ReadMe.Editor
  88. {
  89. /************************************************************************************************************************/
  90. /// <summary>A callback to execute data migration.</summary>
  91. public static event Action<string> MigrateOldAssetData;
  92. /************************************************************************************************************************/
  93. /// <inheritdoc/>
  94. protected override void DoNewVersionDetails()
  95. {
  96. base.DoNewVersionDetails();
  97. if (MigrateOldAssetData == null)
  98. return;
  99. var text = $"Migrate old asset data to {Target.BaseProductName} {Target.VersionName}";
  100. if (GUILayout.Button(text))
  101. MigrateOldAssetData(text);
  102. }
  103. /************************************************************************************************************************/
  104. }
  105. }
  106. }
  107. #endif