112 lines
2.8 KiB
C#
112 lines
2.8 KiB
C#
using System;
|
|
using Epic.OnlineServices;
|
|
using Epic.OnlineServices.Logging;
|
|
using Epic.OnlineServices.Platform;
|
|
using UnityEngine;
|
|
|
|
namespace RoR2;
|
|
|
|
public class EOSPlatformManager : PlatformManager
|
|
{
|
|
private static PlatformInterface _platformInterface;
|
|
|
|
private string _productName = Application.productName;
|
|
|
|
private string _productVersion = Application.version;
|
|
|
|
private string _productId = "3bf8fc77540f41b5bb253d9563eec679";
|
|
|
|
private string _sandboxId = "0dfcaeede0214b80b597f08fd7d64b1b";
|
|
|
|
private string _deploymentId = "f2ca672e660a4792a17b124291408566";
|
|
|
|
private string _clientId;
|
|
|
|
private string _clientSecret;
|
|
|
|
private EOSLibraryManager libManager;
|
|
|
|
public EOSPlatformManager()
|
|
{
|
|
libManager = new EOSLibraryManager();
|
|
InitializePlatformInterface();
|
|
SetupLogging();
|
|
CreatePlatformInterface();
|
|
}
|
|
|
|
public override void InitializePlatformManager()
|
|
{
|
|
RoR2Application.onShutDown = (Action)Delegate.Combine(RoR2Application.onShutDown, new Action(Shutdown));
|
|
RoR2Application.onUpdate += UpdatePlatformManager;
|
|
}
|
|
|
|
public static PlatformInterface GetPlatformInterface()
|
|
{
|
|
if (_platformInterface == null)
|
|
{
|
|
throw new Exception("_platformInterface has not been set. Initialize EOSPlatformManager before attempting to access _platformInterface.");
|
|
}
|
|
return _platformInterface;
|
|
}
|
|
|
|
private void InitializePlatformInterface()
|
|
{
|
|
InitializeOptions initializeOptions = default(InitializeOptions);
|
|
initializeOptions.ProductName = _productName;
|
|
initializeOptions.ProductVersion = _productVersion;
|
|
InitializeOptions options = initializeOptions;
|
|
Result result = PlatformInterface.Initialize(ref options);
|
|
if (result != 0 && result != Result.AlreadyConfigured)
|
|
{
|
|
throw new Exception("Failed to initialize platform: " + result);
|
|
}
|
|
}
|
|
|
|
private void SetupLogging()
|
|
{
|
|
LoggingInterface.SetLogLevel(LogCategory.AllCategories, LogLevel.VeryVerbose);
|
|
LoggingInterface.SetCallback(delegate(ref LogMessage logMessage)
|
|
{
|
|
System.Console.WriteLine(logMessage.Message);
|
|
});
|
|
}
|
|
|
|
private void CreatePlatformInterface()
|
|
{
|
|
Options options = default(Options);
|
|
options.ProductId = _productId;
|
|
options.SandboxId = _sandboxId;
|
|
options.DeploymentId = _deploymentId;
|
|
options.ClientCredentials = new ClientCredentials
|
|
{
|
|
ClientId = "xyza7891fuF5aodDdJ1ITnkYeRbyJbnT",
|
|
ClientSecret = "QMwgx1LJIkRt25iA9YjXldcMD/8aAeQTke7a5FVU3no"
|
|
};
|
|
Options options2 = options;
|
|
_platformInterface = PlatformInterface.Create(ref options2);
|
|
if (_platformInterface == null)
|
|
{
|
|
throw new Exception("Failed to create platform");
|
|
}
|
|
}
|
|
|
|
private void Shutdown()
|
|
{
|
|
if (_platformInterface != null)
|
|
{
|
|
_platformInterface.Release();
|
|
_platformInterface = null;
|
|
PlatformInterface.Shutdown();
|
|
}
|
|
libManager.Shutdown();
|
|
}
|
|
|
|
protected override void UpdatePlatformManager()
|
|
{
|
|
if (_platformInterface != null)
|
|
{
|
|
_platformInterface.Tick();
|
|
}
|
|
}
|
|
}
|