80 lines
2.1 KiB
C#
80 lines
2.1 KiB
C#
using System;
|
|
|
|
namespace OmegaLeo.HelperLib.Steamworks
|
|
{
|
|
public class SteamManager
|
|
{
|
|
private static SteamManager _instance;
|
|
private static uint? _configuredAppId;
|
|
public static SteamManager Instance => _instance ??= new SteamManager();
|
|
|
|
public static bool ConfigureAppId(uint appId)
|
|
{
|
|
if (appId == 0)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// AppId must be configured before the singleton is created.
|
|
if (_instance != null)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
_configuredAppId = appId;
|
|
SteamNativeApi.ConfigureAppId(appId);
|
|
return true;
|
|
}
|
|
|
|
public bool IsSteamworksInitialized { get; private set; }
|
|
|
|
private SteamManager()
|
|
{
|
|
try
|
|
{
|
|
// Attempt to initialize Steamworks
|
|
if (SteamNativeApi.Initialize(_configuredAppId))
|
|
{
|
|
IsSteamworksInitialized = true;
|
|
Console.WriteLine("Steamworks Initialized Successfully!");
|
|
}
|
|
else
|
|
{
|
|
Console.WriteLine("Steamworks Initialization Failed. Is Steam running?");
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine($"An exception occurred during Steamworks initialization: {e.Message}");
|
|
}
|
|
}
|
|
|
|
// This must be called from your game's main loop (e.g., Update in Unity/Godot)
|
|
public void Update()
|
|
{
|
|
if (IsSteamworksInitialized)
|
|
{
|
|
SteamNativeApi.RunCallbacks();
|
|
}
|
|
}
|
|
|
|
public void Shutdown()
|
|
{
|
|
if (IsSteamworksInitialized)
|
|
{
|
|
SteamNativeApi.Shutdown();
|
|
IsSteamworksInitialized = false;
|
|
}
|
|
}
|
|
|
|
public string GetSteamName()
|
|
{
|
|
if (IsSteamworksInitialized)
|
|
{
|
|
return SteamNativeApi.GetPersonaName();
|
|
}
|
|
return "Player";
|
|
}
|
|
}
|
|
}
|