Skip to content

Commit

Permalink
Add Agraris.Tools.Core namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
magicjar committed Oct 27, 2021
1 parent 407c9bf commit 9794ef0
Show file tree
Hide file tree
Showing 4 changed files with 354 additions and 342 deletions.
181 changes: 92 additions & 89 deletions Editor/BuildPipelines/AndroidBuildPipeline.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,111 +6,114 @@
using System.Reflection;
using System.IO;

[InitializeOnLoad]
sealed class AndroidBuildPipeline : IPostprocessBuildWithReport
namespace Agraris.Tools.Core
{
public int callbackOrder => 100;

public enum BuildType { Production, Development }

static void AndroidBuild(BuildType buildType, bool includeARM64 = false)
[InitializeOnLoad]
sealed class AndroidBuildPipeline : IPostprocessBuildWithReport
{
PlayerSettings.Android.targetArchitectures |= AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64;
public int callbackOrder => 100;

switch (buildType)
public enum BuildType { Production, Development }

static void AndroidBuild(BuildType buildType, bool includeARM64 = false)
{
case BuildType.Production:
EditorUserBuildSettings.buildAppBundle = true;
EditorUserBuildSettings.development = false;
break;
default:
EditorUserBuildSettings.buildAppBundle = false;
if (!includeARM64)
PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7;
break;
PlayerSettings.Android.targetArchitectures |= AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64;

switch (buildType)
{
case BuildType.Production:
EditorUserBuildSettings.buildAppBundle = true;
EditorUserBuildSettings.development = false;
break;
default:
EditorUserBuildSettings.buildAppBundle = false;
if (!includeARM64)
PlayerSettings.Android.targetArchitectures = AndroidArchitecture.ARMv7;
break;
}

EditorUserBuildSettings.SetBuildLocation(EditorUserBuildSettings.activeBuildTarget, GetBuildPath(buildType));

BuildPlayerOptions options = GetBuildPlayerOptions();
options.options |= BuildOptions.DetailedBuildReport;

if (buildType == BuildType.Production)
{
options.options |= BuildOptions.CompressWithLz4HC;
}
else
{
options.options |= BuildOptions.Development;
options.options |= BuildOptions.CompressWithLz4;
}

BuildReport report = BuildPipeline.BuildPlayer(options);
BuildSummary summary = report.summary;

switch (summary.result)
{
case BuildResult.Cancelled:
break;
case BuildResult.Failed:
Debug.Log("Build failed.");
break;
case BuildResult.Succeeded:
Debug.Log("Build succeeded. " + summary.outputPath);
EditorUtility.RevealInFinder(summary.outputPath);
break;
case BuildResult.Unknown:
break;
default:
break;
}
}

EditorUserBuildSettings.SetBuildLocation(EditorUserBuildSettings.activeBuildTarget, GetBuildPath(buildType));

BuildPlayerOptions options = GetBuildPlayerOptions();
options.options |= BuildOptions.DetailedBuildReport;

if (buildType == BuildType.Production)
static string GetBuildPath(BuildType buildType)
{
options.options |= BuildOptions.CompressWithLz4HC;
string defaultFolder = Path.Combine(Directory.GetParent(Application.dataPath).FullName, "Builds");
// Based on semantic versioning
string defaultName = $"{Application.productName} {PlayerSettings.bundleVersion}{(buildType == BuildType.Development ? "-dev" : "")}+{PlayerSettings.Android.bundleVersionCode}";
string extension = (EditorUserBuildSettings.buildAppBundle ? ".aab" : ".apk");
return Path.Combine(defaultFolder, defaultName + extension).Replace("\\", "/");
}
else

static BuildPlayerOptions GetBuildPlayerOptions(bool askForLocation = false, BuildPlayerOptions defaultOptions = new BuildPlayerOptions())
{
options.options |= BuildOptions.Development;
options.options |= BuildOptions.CompressWithLz4;
// Get static internal "GetBuildPlayerOptionsInternal" method
MethodInfo method = typeof(BuildPlayerWindow.DefaultBuildMethods).GetMethod(
"GetBuildPlayerOptionsInternal",
BindingFlags.NonPublic | BindingFlags.Static);

// invoke internal method
return (BuildPlayerOptions)method.Invoke(
null,
new object[] { askForLocation, defaultOptions });
}

BuildReport report = BuildPipeline.BuildPlayer(options);
BuildSummary summary = report.summary;

switch (summary.result)
public void OnPostprocessBuild(BuildReport report)
{
case BuildResult.Cancelled:
break;
case BuildResult.Failed:
Debug.Log("Build failed.");
break;
case BuildResult.Succeeded:
Debug.Log("Build succeeded. " + summary.outputPath);
EditorUtility.RevealInFinder(summary.outputPath);
break;
case BuildResult.Unknown:
break;
default:
break;
PlayerSettings.Android.targetArchitectures |= AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64;
}
}

static string GetBuildPath(BuildType buildType)
{
string defaultFolder = Path.Combine(Directory.GetParent(Application.dataPath).FullName, "Builds");
// Based on semantic versioning
string defaultName = $"{Application.productName} {PlayerSettings.bundleVersion}{(buildType == BuildType.Development ? "-dev" : "")}+{PlayerSettings.Android.bundleVersionCode}";
string extension = (EditorUserBuildSettings.buildAppBundle ? ".aab" : ".apk");
return Path.Combine(defaultFolder, defaultName + extension).Replace("\\", "/");
}

static BuildPlayerOptions GetBuildPlayerOptions(bool askForLocation = false, BuildPlayerOptions defaultOptions = new BuildPlayerOptions())
{
// Get static internal "GetBuildPlayerOptionsInternal" method
MethodInfo method = typeof(BuildPlayerWindow.DefaultBuildMethods).GetMethod(
"GetBuildPlayerOptionsInternal",
BindingFlags.NonPublic | BindingFlags.Static);

// invoke internal method
return (BuildPlayerOptions)method.Invoke(
null,
new object[] { askForLocation, defaultOptions });
}

public void OnPostprocessBuild(BuildReport report)
{
PlayerSettings.Android.targetArchitectures |= AndroidArchitecture.ARMv7 | AndroidArchitecture.ARM64;
}

#region MENU
[MenuItem("Agraris/Build/Android - Development", false, 1)]
public static void DevelopmentAndroidBuild()
{
AndroidBuild(BuildType.Development);
}
#region MENU
[MenuItem("Agraris/Build/Android - Development", false, 1)]
public static void DevelopmentAndroidBuild()
{
AndroidBuild(BuildType.Development);
}

[MenuItem("Agraris/Build/Android - Development + ARM64 (Slow)", false, 2)]
public static void Development64AndroidBuild()
{
AndroidBuild(BuildType.Development, true);
}
[MenuItem("Agraris/Build/Android - Development + ARM64 (Slow)", false, 2)]
public static void Development64AndroidBuild()
{
AndroidBuild(BuildType.Development, true);
}

[MenuItem("Agraris/Build/Android - Production", false, 3)]
public static void ProductionAndroidBuild()
{
AndroidBuild(BuildType.Production);
[MenuItem("Agraris/Build/Android - Production", false, 3)]
public static void ProductionAndroidBuild()
{
AndroidBuild(BuildType.Production);
}
#endregion
}
#endregion
}
#endif
43 changes: 23 additions & 20 deletions Editor/GameData/GameDataEditor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,33 @@
using System.Linq;
using System.IO;

public class GameDataEditor : Editor
namespace Agraris.Tools.Core
{
// [MenuItem("Agraris/Game Data/Save", false, 50)]
static void SaveGameData()
public class GameDataEditor : Editor
{
GameData.Init();
GameData.Save();
}
// [MenuItem("Agraris/Game Data/Save", false, 50)]
static void SaveGameData()
{
GameData.Init();
GameData.Save();
}

[MenuItem("Agraris/Game Data/Clear", false, 51)]
static void ClearGameData()
{
GameData.DeleteSave();
}
[MenuItem("Agraris/Game Data/Clear", false, 51)]
static void ClearGameData()
{
GameData.DeleteSave();
}

[MenuItem("Agraris/Game Data/Open in Explorer", false, 52)]
static void OpenGameDataInExplorer()
{
string path = Directory.CreateDirectory(GameData.SaveDirectory).FullName;
string file = Directory.EnumerateFiles(path).FirstOrDefault();
[MenuItem("Agraris/Game Data/Open in Explorer", false, 52)]
static void OpenGameDataInExplorer()
{
string path = Directory.CreateDirectory(GameData.SaveDirectory).FullName;
string file = Directory.EnumerateFiles(path).FirstOrDefault();

if (!string.IsNullOrEmpty(file))
EditorUtility.RevealInFinder(Path.Combine(path, file));
else
EditorUtility.RevealInFinder(path);
if (!string.IsNullOrEmpty(file))
EditorUtility.RevealInFinder(Path.Combine(path, file));
else
EditorUtility.RevealInFinder(path);
}
}
}
Loading

0 comments on commit 9794ef0

Please sign in to comment.