First commit for private source control. Older commits available on Github.
This commit is contained in:
BIN
Assets/Scripts/Framework/Managers/Achievements/.DS_Store
vendored
Normal file
BIN
Assets/Scripts/Framework/Managers/Achievements/.DS_Store
vendored
Normal file
Binary file not shown.
3
Assets/Scripts/Framework/Managers/Achievements/Data.meta
Normal file
3
Assets/Scripts/Framework/Managers/Achievements/Data.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b4956f4efd45455b907a6183ed3d06f1
|
||||
timeCreated: 1773830079
|
||||
@@ -0,0 +1,18 @@
|
||||
using BriarQueen.Data.Identifiers;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BriarQueen.Framework.Managers.Achievements.Data
|
||||
{
|
||||
[CreateAssetMenu(fileName = "New Achievement", menuName = "Briar Queen/Achievements/New Achievement")]
|
||||
public class AchievementSo : ScriptableObject
|
||||
{
|
||||
[Header("Achievement Details")]
|
||||
public AchievementID Achievement;
|
||||
|
||||
public string Name;
|
||||
public string Description;
|
||||
|
||||
[Header("Steam Integration")]
|
||||
public string SteamUniqueIdentifier;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ef4d39885de444d9840717db9173c5b5
|
||||
timeCreated: 1772721525
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9f220a47c48b444abc68a41e0aa5cf9f
|
||||
timeCreated: 1772728857
|
||||
@@ -0,0 +1,69 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using BriarQueen.Framework.Coordinators.Events;
|
||||
using BriarQueen.Framework.Events.Progression;
|
||||
using BriarQueen.Framework.Registries;
|
||||
using Steamworks;
|
||||
using UnityEngine;
|
||||
using VContainer;
|
||||
|
||||
namespace BriarQueen.Framework.Managers.Achievements.Steam
|
||||
{
|
||||
public class SteamManager : IDisposable, IManager
|
||||
{
|
||||
private const uint STEAM_APP_ID = 0;
|
||||
private readonly AchievementRegistry _achievementRegistry;
|
||||
|
||||
private readonly EventCoordinator _eventCoordinator;
|
||||
|
||||
public bool Initialized { get; private set; }
|
||||
|
||||
[Inject]
|
||||
public SteamManager(EventCoordinator eventCoordinator, AchievementRegistry achievementRegistry)
|
||||
{
|
||||
_eventCoordinator = eventCoordinator;
|
||||
_achievementRegistry = achievementRegistry;
|
||||
}
|
||||
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_eventCoordinator.Unsubscribe<UnlockAchievementEvent>(OnUnlockAchievement);
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
try
|
||||
{
|
||||
SteamClient.Init(STEAM_APP_ID);
|
||||
Initialized = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Debug.Log($"[Steam Manager] Steam Failed to Init {e.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
_eventCoordinator.Subscribe<UnlockAchievementEvent>(OnUnlockAchievement);
|
||||
}
|
||||
|
||||
private void OnUnlockAchievement(UnlockAchievementEvent evt)
|
||||
{
|
||||
if (!_achievementRegistry.TryGetAchievement(evt.AchievementID, out var achievement))
|
||||
return;
|
||||
|
||||
var steamAch =
|
||||
SteamUserStats.Achievements.FirstOrDefault(x => x.Identifier == achievement.SteamUniqueIdentifier);
|
||||
|
||||
if (string.IsNullOrEmpty(steamAch.Identifier))
|
||||
{
|
||||
Debug.LogWarning($"Steam achievement '{evt.AchievementID}' not found in Steamworks.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (steamAch.State) return;
|
||||
|
||||
steamAch.Trigger();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 91a1d462420f49cb8cb6428d41848983
|
||||
timeCreated: 1772728857
|
||||
Reference in New Issue
Block a user