using BarRaider.SdTools; using BarRaider.SdTools.Wrappers; using ClipTrimDotNet.Client; using System.Text.Json.Serialization; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Drawing; using System.Dynamic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ClipTrimDotNet { [PluginActionId("com.michal-courson.cliptrim.player")] public class Player : KeypadBase { private ClipMetadata? metadata; private KeyCoordinates coordinates; public Player(SDConnection connection, InitialPayload payload) : base(connection, payload) { this.coordinates = payload.Coordinates; GlobalSettingsManager.Instance.RequestGlobalSettings(); CheckFile(); } public void Instance_OnReceivedGlobalSettings(object sender, ReceivedGlobalSettingsPayload e) { Tools.AutoPopulateSettings(GlobalSettings.Instance, e.Settings); } public int GetIndex() { return Math.Max((coordinates.Row - 1) * 5 + coordinates.Column, 0); } private async void CheckFile() { metadata = ClipTrimClient.Instance.GetClipByPagedIndex(GetIndex()); await Connection.SetTitleAsync($"{metadata?.Name ?? ""}"); } public override void Dispose() { } public override void KeyPressed(KeyPayload payload) { ClipTrimClient.Instance.PlayClip(metadata); } public override void OnTick() { CheckFile(); } public override void ReceivedGlobalSettings(ReceivedGlobalSettingsPayload payload) { if (payload.Settings == null || payload.Settings.Count == 0) { var inst = GlobalSettings.Instance; //GlobalSettingsManager.Instance.SetGlobalSettings(JObject.FromObject(inst)); } else { GlobalSettings.Instance = payload.Settings.ToObject(); } } public override void KeyReleased(KeyPayload payload) { } public override void ReceivedSettings(ReceivedSettingsPayload payload) { } } }