GameSDKcraft/GamecraftRPC/Engines/PlayerCountEngine.cs

54 lines
1.7 KiB
C#
Raw Normal View History

2020-04-06 17:36:07 -04:00
using System;
using GamecraftModdingAPI.Tasks;
using GamecraftModdingAPI.Engines;
2020-04-06 17:36:07 -04:00
using Svelto.ECS;
namespace GamecraftRPC.Engines
{
class PlayerCountEngine : IApiEngine
{
public string Name => "GamecraftRPCPlayerCountGameEngine";
public EntitiesDB entitiesDB { set; private get; }
public bool isRemovable => false;
2020-04-06 17:36:07 -04:00
private bool Ok = false;
public void Dispose()
{
Ok = false;
PresenceUtility.PlayerCount = 0;
}
public void Ready()
{
Ok = true;
Scheduler.Schedule(new Repeatable(updatePlayerCount, () => { return Ok; }, delay: 5f));
2020-04-06 17:36:07 -04:00
}
private void updatePlayerCount()
{
uint count = GamecraftModdingAPI.Player.Count();
if (count != PresenceUtility.PlayerCount && count > 0)
2020-04-06 17:36:07 -04:00
{
if (PresenceUtility.Lobby.HasValue && Plugin.DiscordRPC != null)
{
Discord.LobbyManager lm = Plugin.DiscordRPC.GetLobbyManager();
Discord.LobbyTransaction lt = lm.GetLobbyUpdateTransaction(PresenceUtility.Lobby.Value.Id);
lt.SetCapacity(count * 2);
lm.UpdateLobby(PresenceUtility.Lobby.Value.Id, lt, CallbackUtility.NobodyCares);
}
PresenceUtility.PlayerCount = count;
2020-04-06 17:36:07 -04:00
PresenceUtility.Activity.Party.Size.CurrentSize = (int)count;
PresenceUtility.Activity.Party.Size.MaxSize = (int)count * 2;
Plugin.SetDiscordActivity(debug: "PlayerCountEngine-updatePlayerCount");
#if DEBUG
GamecraftModdingAPI.Utility.Logging.MetaLog($"Updated Player Count: {count}");
#endif
2020-04-06 17:36:07 -04:00
}
}
}
}