mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-02-13 09:13:07 +00:00
46 lines
1.3 KiB
GDScript3
46 lines
1.3 KiB
GDScript3
|
class_name SteamManager
|
||
|
extends Node
|
||
|
|
||
|
## A class that manages Steam-specific functionalities. Currently only unlocks achievements.
|
||
|
## On non-Steam builds, this node gets automatically freed.
|
||
|
|
||
|
## The Steam app id of Pixelorama.
|
||
|
const APP_ID := 2779170
|
||
|
## We are using a variable instead of the `Steam` singleton directly,
|
||
|
## because it is not available in non-Steam builds.
|
||
|
static var steam_class
|
||
|
|
||
|
|
||
|
func _init() -> void:
|
||
|
if not ClassDB.class_exists(&"Steam"):
|
||
|
queue_free()
|
||
|
return
|
||
|
steam_class = ClassDB.instantiate(&"Steam")
|
||
|
OS.set_environment("SteamAppID", str(APP_ID))
|
||
|
OS.set_environment("SteamGameID", str(APP_ID))
|
||
|
|
||
|
|
||
|
func _ready() -> void:
|
||
|
if not is_instance_valid(steam_class):
|
||
|
return
|
||
|
var response: Dictionary = steam_class.steamInitEx(true, APP_ID)
|
||
|
print(response)
|
||
|
if not steam_class.isSteamRunning():
|
||
|
print("Steam is not running!")
|
||
|
return
|
||
|
#var id: int = steam_class.getSteamID()
|
||
|
#var username: String = steam_class.getFriendPersonaName(id)
|
||
|
|
||
|
|
||
|
## Unlocks an achievement on Steam based on its [param achievement_name].
|
||
|
static func set_achievement(achievement_name: String) -> void:
|
||
|
if not is_instance_valid(steam_class):
|
||
|
return
|
||
|
if not steam_class.isSteamRunning():
|
||
|
return
|
||
|
var status: Dictionary = steam_class.getAchievement(achievement_name)
|
||
|
if status["achieved"]:
|
||
|
return
|
||
|
steam_class.setAchievement(achievement_name)
|
||
|
steam_class.storeStats()
|