GameSDKcraft/GamecraftRPC/Engines/PlayerCountEngine.cs

72 lines
2.2 KiB
C#
Raw Normal View History

2020-04-06 17:36:07 -04:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using GamecraftModdingAPI.Tasks;
using GamecraftModdingAPI.Engines;
2020-04-06 17:36:07 -04:00
using Svelto.ECS;
using RobocraftX.Character;
using RobocraftX.Physics;
namespace GamecraftRPC.Engines
{
class PlayerCountEngine : IApiEngine
{
public string Name => "GamecraftRPCPlayerCountGameEngine";
public EntitiesDB entitiesDB { set; private get; }
public bool isRemovable => false;
private Discord.Discord discordRPC = null;
2020-04-06 17:36:07 -04:00
private bool Ok = false;
public void Dispose()
{
Ok = false;
PresenceUtility.PlayerCount = 0;
PresenceUtility.Activity.Party.Size.CurrentSize = 0;
PresenceUtility.Activity.Party.Size.MaxSize = 0;
PresenceUtility.Activity.Party.Id = "";
}
public void Ready()
{
Ok = true;
Scheduler.Schedule(new Repeatable(updatePlayerCount, () => { return Ok; }, delay: 5f));
2020-04-06 17:36:07 -04:00
PresenceUtility.Activity.Party.Size.CurrentSize = 1;
PresenceUtility.Activity.Party.Size.MaxSize = 1;
2020-04-06 17:36:07 -04:00
PresenceUtility.Activity.Party.Id = "";//PresenceUtility.PartyId.ToString();
}
private void updatePlayerCount()
{
if (entitiesDB == null) return;
uint count = 0;
for (uint i = 0; i < CharacterExclusiveGroups.AllCharacters.count; i++)
2020-04-06 17:36:07 -04:00
{
count += entitiesDB.Count<RigidBodyEntityStruct>(CharacterExclusiveGroups.AllCharacters[i]);
}
if ((int)count != PresenceUtility.PlayerCount && count > 0)
2020-04-06 17:36:07 -04:00
{
PresenceUtility.PlayerCount = (int)count;
PresenceUtility.Activity.Party.Size.CurrentSize = (int)count;
PresenceUtility.Activity.Party.Size.MaxSize = (int)count;
2020-04-06 17:36:07 -04:00
Plugin.SetDiscordActivity(discordRPC, debug: "PlayerCountEngine-updatePlayerCount");
#if DEBUG
GamecraftModdingAPI.Utility.Logging.MetaLog($"Player Count: {count}");
#endif
2020-04-06 17:36:07 -04:00
}
}
public PlayerCountEngine(Discord.Discord discordRPC)
{
this.discordRPC = discordRPC;
}
}
}