aparently this is a feature now
This commit is contained in:
parent
7f0dc17590
commit
0780098192
1 changed files with 29 additions and 3 deletions
|
@ -85,6 +85,11 @@ public class CollabVMClient {
|
||||||
/// Fired when the VM requires account authentication. The provided string is the authentication server base URL.
|
/// Fired when the VM requires account authentication. The provided string is the authentication server base URL.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event EventHandler<string> VMUsesAccountAuth;
|
public event EventHandler<string> VMUsesAccountAuth;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Fired when the client encounters a non-fatal error
|
||||||
|
/// </summary>
|
||||||
|
public event EventHandler<string> Error;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Client for the CollabVM 1.x Server
|
/// Client for the CollabVM 1.x Server
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -159,6 +164,7 @@ public class CollabVMClient {
|
||||||
TurnUpdate += delegate { };
|
TurnUpdate += delegate { };
|
||||||
ConnectionClosed += delegate { };
|
ConnectionClosed += delegate { };
|
||||||
VMUsesAccountAuth += delegate { };
|
VMUsesAccountAuth += delegate { };
|
||||||
|
Error += delegate { };
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Connect to the CollabVM Server
|
/// Connect to the CollabVM Server
|
||||||
|
@ -278,11 +284,22 @@ public class CollabVMClient {
|
||||||
}
|
}
|
||||||
case "list": {
|
case "list": {
|
||||||
List<Node> nodes = new();
|
List<Node> nodes = new();
|
||||||
for (var i = 1; i < msgArr.Length; i += 3) {
|
for (var i = 1; i < msgArr.Length; i += 3)
|
||||||
|
{
|
||||||
|
byte[] thumbnail;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
thumbnail = Convert.FromBase64String(msgArr[i + 2]);
|
||||||
|
}
|
||||||
|
catch (FormatException ex)
|
||||||
|
{
|
||||||
|
Error.Invoke(this, "Server sent an invalid thumbnail.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
nodes.Add(new Node {
|
nodes.Add(new Node {
|
||||||
ID = msgArr[i],
|
ID = msgArr[i],
|
||||||
Name = msgArr[i+1],
|
Name = msgArr[i+1],
|
||||||
Thumbnail = Convert.FromBase64String(msgArr[i+2])
|
Thumbnail = thumbnail
|
||||||
});
|
});
|
||||||
this.GotNodeList.TrySetResult(nodes.ToArray());
|
this.GotNodeList.TrySetResult(nodes.ToArray());
|
||||||
}
|
}
|
||||||
|
@ -299,7 +316,16 @@ public class CollabVMClient {
|
||||||
}
|
}
|
||||||
case "png": {
|
case "png": {
|
||||||
if (msgArr[2] != "0") return;
|
if (msgArr[2] != "0") return;
|
||||||
Image rect = Image.Load(Convert.FromBase64String(msgArr[5]));
|
Image rect;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rect = Image.Load(Convert.FromBase64String(msgArr[5]));
|
||||||
|
}
|
||||||
|
catch (FormatException ex)
|
||||||
|
{
|
||||||
|
Error.Invoke(this, "Server sent an invalid screen rect");
|
||||||
|
return;
|
||||||
|
}
|
||||||
framebuffer.Mutate(f => f.DrawImage(rect, new Point(int.Parse(msgArr[3]), int.Parse(msgArr[4])), 1));
|
framebuffer.Mutate(f => f.DrawImage(rect, new Point(int.Parse(msgArr[3]), int.Parse(msgArr[4])), 1));
|
||||||
this.Rect.Invoke(this, new RectEventArgs {
|
this.Rect.Invoke(this, new RectEventArgs {
|
||||||
X = int.Parse(msgArr[3]),
|
X = int.Parse(msgArr[3]),
|
||||||
|
|
Loading…
Reference in a new issue