-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfrmTest.cs
148 lines (136 loc) · 4.75 KB
/
frmTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
using DiscordRichPresence.constructors;
using DiscordRichPresence.enums;
using DiscordRichPresence.modules;
using NLog;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DiscordRichPresence
{
public partial class frmTest : Form
{
private static readonly Logger logger = LogManager.GetCurrentClassLogger();
private static Discord.Discord? discord = null;
private bool sdkTestTerminate = false;
public frmTest()
{
InitializeComponent();
}
private void frmTest_Load(object sender, EventArgs e)
{
logger.Debug("Initialize form frmTest");
}
private void frmTest_Shown(object sender, EventArgs e)
{
AppConf appConf = modUtil.GetAppConf();
if(appConf.DiscordClientId == 0)
{
modUtil.throwError("Please provide a Discord OAuth2 client id before testing the rich presence!");
this.Close();
}
}
private void btnTest_Click(object sender, EventArgs e)
{
sdkTestTerminate = false;
if(discord == null)
{
discord = new Discord.Discord(modUtil.GetAppConf().DiscordClientId, (UInt64)Discord.CreateFlags.Default);
#if DEBUG
discord.SetLogHook(Discord.LogLevel.Debug, (level, message) =>
{
switch (level)
{
case Discord.LogLevel.Debug: { logger.Debug(message); break; }
case Discord.LogLevel.Info: { logger.Info(message); break; }
case Discord.LogLevel.Warn: { logger.Warn(message); break; }
case Discord.LogLevel.Error: { logger.Error(message); break; }
}
});
#else
discord.SetLogHook(Discord.LogLevel.Info, (level, message) =>
{
switch (level)
{
case Discord.LogLevel.Debug: { logger.Debug(message); break; }
case Discord.LogLevel.Info: { logger.Info(message); break; }
case Discord.LogLevel.Warn: { logger.Warn(message); break; }
case Discord.LogLevel.Error: { logger.Error(message); break; }
}
});
#endif
UpdateActivity();
Task.Run(() =>
{
var lobbyManager = discord.GetLobbyManager();
try
{
while (!sdkTestTerminate)
{
discord.RunCallbacks();
lobbyManager.FlushNetwork();
Thread.Sleep(1000 / 60);
}
}
finally
{
discord.Dispose();
discord = null;
}
});
}
else
{
UpdateActivity();
}
btnEnd.Enabled = true;
}
private void UpdateActivity()
{
var activityManager = discord?.GetActivityManager();
var activity = new Discord.Activity
{
State = tbxState.Text,
Details = tbxDetails.Text,
Timestamps =
{
Start = DateTimeOffset.Now.ToUnixTimeSeconds(),
End = chkAudible.Checked ? DateTimeOffset.Now.AddMinutes(10).ToUnixTimeSeconds() : 0
},
Assets =
{
LargeImage = tbxLargeImage.Text,
LargeText = tbxLargeText.Text,
SmallImage = tbxSmallImage.Text,
SmallText = tbxSmallText.Text,
},
Instance = true
};
activityManager?.UpdateActivity(activity, result =>
{
logger.Info("Update Activity {0}", result);
});
}
private void btnEnd_Click(object sender, EventArgs e)
{
if(discord != null)
{
discord.GetActivityManager().ClearActivity((result) =>
{
sdkTestTerminate = true;
});
}
btnEnd.Enabled = false;
}
private void btnClose_Click(object sender, EventArgs e)
{
btnEnd_Click(sender, e);
this.Close();
}
}
}