diff --git a/RH-Engine/Command.cs b/RH-Engine/Command.cs index d7de332..dd3d7ff 100644 --- a/RH-Engine/Command.cs +++ b/RH-Engine/Command.cs @@ -119,9 +119,9 @@ namespace RH_Engine panel = new { size = new int[] { 1, 1 }, - resolution = new int[] { 256, 256 }, - background = new int[] { 1, 1, 1, 1 }, - castShadow = true + resolution = new int[] { 512, 512 }, + background = new int[] { 1, 0, 0, 0 }, + castShadow = false } } @@ -140,7 +140,7 @@ namespace RH_Engine { id = uuidPanel, text = "Bike speed placeholder", - position = new int[] { 0, 0 }, + position = new int[] { 100, 100 }, size = 32.0, color = new int[] { 0, 0, 0, 1 }, font = "segoeui" @@ -150,6 +150,20 @@ namespace RH_Engine return JsonConvert.SerializeObject(Payload(payload)); } + public string SwapPanelCommand(string uuid) + { + dynamic payload = new + { + id = "scene/panel/swap", + data = new + { + id = uuid + } + }; + + return JsonConvert.SerializeObject(Payload(payload)); + } + public string ClearPanel(string uuid) { dynamic payload = new diff --git a/RH-Engine/Program.cs b/RH-Engine/Program.cs index 8a710c3..3951d32 100644 --- a/RH-Engine/Program.cs +++ b/RH-Engine/Program.cs @@ -19,16 +19,27 @@ namespace RH_Engine //new PC("DESKTOP-M2CIH87", "Fabian"), //new PC("T470S", "Shinichi"), //new PC("DESKTOP-DHS478C", "semme"), + new PC("HP-ZBOOK-SEM", "Sem"), //new PC("DESKTOP-TV73FKO", "Wouter"), new PC("DESKTOP-SINMKT1", "Ralf van Aert"), //new PC("NA", "Bart") }; + + private static ServerResponseReader serverResponseReader; private static void Main(string[] args) { TcpClient client = new TcpClient("145.48.6.10", 6666); CreateConnection(client.GetStream()); + serverResponseReader = new ServerResponseReader(client.GetStream()); + serverResponseReader.callback = HandleResponse; + + + } + + public static void HandleResponse(string message) + { } @@ -146,6 +157,8 @@ namespace RH_Engine Console.WriteLine(ReadPrefMessage(stream)); WriteTextMessage(stream, mainCommand.bikeSpeed(uuidPanel)); Console.WriteLine(ReadPrefMessage(stream)); + + WriteTextMessage(stream, mainCommand.SwapPanelCommand(uuidPanel)); } /// diff --git a/RH-Engine/ServerResponseReader.cs b/RH-Engine/ServerResponseReader.cs new file mode 100644 index 0000000..811352c --- /dev/null +++ b/RH-Engine/ServerResponseReader.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Net.Sockets; +using System.Text; +using System.Threading; + +namespace RH_Engine +{ + public delegate void OnResponse(string response); + class ServerResponseReader + { + public OnResponse callback + { + get;set; + } + public NetworkStream Stream { get; } + + public ServerResponseReader(NetworkStream stream) + { + this.Stream = stream; + } + + public void StartRead() + { + Thread t = new Thread(() => + { + if (this.callback == null) + { + throw new Exception("Callback not initialized!"); + } else + while (true) + { + string res = ReadPrefMessage(Stream); + this.callback(res); + } + }); + } + + public static string ReadPrefMessage(NetworkStream stream) + { + byte[] lengthBytes = new byte[4]; + + stream.Read(lengthBytes, 0, 4); + Console.WriteLine("read message.."); + + int length = BitConverter.ToInt32(lengthBytes); + + //Console.WriteLine("length is: " + length); + + byte[] buffer = new byte[length]; + int totalRead = 0; + + //read bytes until stream indicates there are no more + do + { + int read = stream.Read(buffer, totalRead, buffer.Length - totalRead); + totalRead += read; + //Console.WriteLine("ReadMessage: " + read); + } while (totalRead < length); + + return Encoding.UTF8.GetString(buffer, 0, totalRead); + } + } +}