GameSDKcraft/GamecraftRPC/Events/GamePresenceHandler.cs
2020-04-06 17:36:07 -04:00

50 lines
2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GamecraftModdingAPI.Events;
using Svelto.ECS;
using RobocraftX.Common;
using Discord;
namespace GamecraftRPC.Events
{
class GamePresenceHandler : SimpleEventHandlerEngine
{
public static readonly string HandlerName = "GamecraftRPCGamePresenceEventHandler";
//private Discord.Discord discordRPC = null;
public static void OnAdd(Discord.Discord discordRPC)
{
PresenceUtility.LastGameStart = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
LobbyTransaction ltxn = discordRPC.GetLobbyManager().GetLobbyCreateTransaction();
UserManager um = discordRPC.GetUserManager();
um.OnCurrentUserUpdate += () =>
{
ltxn.SetOwner(um.GetCurrentUser().Id);
ltxn.SetCapacity((uint)PresenceUtility.LobbySize);
ltxn.SetType(LobbyType.Private);
ltxn.SetMetadata("ownerSteamId", Steamworks.SteamClient.SteamId.AccountId.ToString());
discordRPC.GetLobbyManager().CreateLobby(ltxn,
(Result result, ref Lobby lobby) =>
{
GamecraftModdingAPI.Utility.Logging.LogDebug($"Lobby status: {result}");
PresenceUtility.LobbyId = lobby.Id;
PresenceUtility.GameSecret = lobby.Secret;
});
};
Plugin.SetDiscordActivity(discordRPC, state: "In-Game", details: $"Editing {GameMode.SaveGameDetails.Name}", start: PresenceUtility.LastGameStart, partyId: PresenceUtility.PartyId.ToString(), partyCurrentSize: 1, partyMaxSize: PresenceUtility.LobbySize, debug: "GamePresence-OnAdd");
}
public GamePresenceHandler(Discord.Discord _discordRPC) : base((db) => { OnAdd(_discordRPC); }, (db) => { }, EventType.GameSwitchedTo, HandlerName)
{
//this.discordRPC = _discordRPC;
}
}
}