Files
HelperLib/OmegaLeo.HelperLib.Steamworks/SteamManager.cs
T

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";
}
}
}