PluralRichPresence/PluralRichPresnce/System.cs
2023-10-17 21:04:18 +13:00

72 lines
1.9 KiB
C#

using Newtonsoft.Json.Linq;
using PluralRichPresence.SimplyPlural;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace PluralRichPresence
{
public class System
{
public event EventHandler FronterChanged;
string token;
public Member[] Members;
public string SystemId;
private Socket sock;
private Rest rest;
private ManualResetEvent waitHandle = new ManualResetEvent(false);
public Member? LookupMember(string memberId)
{
foreach(Member member in this.Members)
if (member.Id == memberId) return member;
return null;
}
public async Task<Member[]> GetCurrentFronterInfo()
{
string[] fronters = await rest.GetCurrentFronters();
List<Member> members = new List<Member>();
foreach (string fronter in fronters)
{
Member? frontingMember = LookupMember(fronter);
if (frontingMember is not null) members.Add(frontingMember);
}
return members.ToArray();
}
private async Task setup()
{
this.SystemId = await rest.GetSystemId();
this.Members = await rest.GetMembers(this.SystemId);
this.sock.FronterChanged += OnFronterChange;
waitHandle.Set();
}
private void OnFronterChange(object? sender, EventArgs e)
{
if (FronterChanged is not null)
FronterChanged(sender, e);
}
public System(string simplyPluralToken)
{
this.token = simplyPluralToken;
this.rest = new Rest(this.token);
this.sock = new Socket(this.token);
_ = setup();
waitHandle.WaitOne();
}
}
}