122 lines
4.4 KiB
C#
122 lines
4.4 KiB
C#
#if UNITY_EDITOR
|
|
using ConjureOS.MetadataWindow;
|
|
using ConjureOS.CustomWindow;
|
|
using UnityEditor;
|
|
using UnityEngine;
|
|
|
|
namespace ConjureOS.UploaderWindow
|
|
{
|
|
public class ConjureArcadeGameUploaderWindow : EditorWindow
|
|
{
|
|
private const string WindowName = "Arcade Game Uploader";
|
|
|
|
// Game Metadata
|
|
private static ConjureArcadeMetadata metadata;
|
|
private ConjureArcadeMetadataValidator metadataValidator;
|
|
private ConjureArcadeUploadProcessor uploadProcessor;
|
|
|
|
private void OnEnable()
|
|
{
|
|
metadataValidator = new ConjureArcadeMetadataValidator();
|
|
uploadProcessor = new ConjureArcadeUploadProcessor();
|
|
titleContent = new GUIContent(WindowName);
|
|
|
|
if (!metadata)
|
|
{
|
|
OnLoad();
|
|
}
|
|
}
|
|
|
|
private static void OnLoad()
|
|
{
|
|
if (!metadata)
|
|
{
|
|
metadata = AssetDatabase.LoadAssetAtPath<ConjureArcadeMetadata>(ConjureArcadeMetadata.MetadataAssetPath);
|
|
|
|
// Data exists
|
|
if (metadata)
|
|
{
|
|
return;
|
|
}
|
|
|
|
metadata = CreateInstance<ConjureArcadeMetadata>();
|
|
|
|
AssetDatabase.CreateAsset(metadata, ConjureArcadeMetadata.MetadataAssetPath);
|
|
AssetDatabase.Refresh();
|
|
}
|
|
}
|
|
|
|
private void OnGUI()
|
|
{
|
|
// Add padding to the window
|
|
int sectionSpace = 20;
|
|
int uniformPadding = ConjureArcadeGUI.Style.UniformPadding;
|
|
RectOffset padding = new RectOffset(uniformPadding, uniformPadding, 0, 0);
|
|
Rect area = new Rect(
|
|
padding.right,
|
|
padding.top,
|
|
position.width - (padding.left),
|
|
position.height - (padding.top + padding.bottom));
|
|
|
|
GUILayout.BeginArea(area);
|
|
|
|
// Web Server Info section
|
|
GUILayout.Label("WEB SERVER INFO", EditorStyles.boldLabel);
|
|
// TODO Add server connection data / fields
|
|
|
|
GUILayout.Space(sectionSpace);
|
|
|
|
// Metadata section
|
|
GUILayout.Label("METADATA", EditorStyles.boldLabel);
|
|
GUILayout.Label("Be sure to have valid metadata before uploading the game to the web server.", EditorStyles.wordWrappedLabel);
|
|
|
|
ShowValidationResultMessage();
|
|
if (GUILayout.Button("Validate Metadata", GUILayout.Width(150)))
|
|
{
|
|
metadataValidator.ValidateMetadata(metadata);
|
|
}
|
|
|
|
GUILayout.Space(sectionSpace);
|
|
|
|
// Build and Upload section
|
|
GUILayout.Label("BUILD AND UPLOAD", EditorStyles.boldLabel);
|
|
GUILayout.Label("When ready, you can build and upload the game to the web server.", EditorStyles.wordWrappedLabel);
|
|
if (GUILayout.Button("Build & Upload", GUILayout.Width(150)))
|
|
{
|
|
uploadProcessor.BuildAndUpload(metadata, metadataValidator);
|
|
GUIUtility.ExitGUI();
|
|
}
|
|
|
|
GUILayout.EndArea();
|
|
}
|
|
|
|
private void ShowValidationResultMessage()
|
|
{
|
|
MetadataValidationStateType validationState = metadataValidator.GetValidationStateType();
|
|
|
|
switch (validationState)
|
|
{
|
|
case MetadataValidationStateType.NotVerified:
|
|
// No message is displayed
|
|
return;
|
|
|
|
case MetadataValidationStateType.Validated:
|
|
// No error, means it's a success
|
|
GUILayout.Label(ConjureArcadeGUI.Message.MetadataConfirmedMessage, ConjureArcadeGUI.Style.SuccessStyle);
|
|
GUILayout.Space(3);
|
|
break;
|
|
|
|
case MetadataValidationStateType.Failed:
|
|
// Errors were detected
|
|
string plural = (metadataValidator.ErrorCount > 1) ? "s" : "";
|
|
string formatedMessage =
|
|
string.Format(ConjureArcadeGUI.Message.MetadataFailedMessage, metadataValidator.ErrorCount, plural) +
|
|
string.Format(" Please, fix the error{0} in the Game Metadata window ('Arcade > Game Metadata Editor').", plural);
|
|
GUILayout.Label(formatedMessage, ConjureArcadeGUI.Style.ErrorStyle);
|
|
GUILayout.Space(3);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif |