shit
This commit is contained in:
@@ -14,6 +14,7 @@ namespace YJMPD_UWP.Helpers
|
||||
{
|
||||
//Define default settings here
|
||||
Values["hostname"] = "imegumii.space";
|
||||
Values["port"] = "3333";
|
||||
|
||||
if (Values["username"] == null)
|
||||
Values["username"] = "Anon_" + Util.Random(5, Util.RandomType.ALPHANUMERIC);
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
using Windows.Foundation;
|
||||
using YJMPD_UWP.Helpers;
|
||||
using YJMPD_UWP.Helpers.EventArgs;
|
||||
using YJMPD_UWP.Model.Object;
|
||||
|
||||
@@ -70,17 +73,9 @@ namespace YJMPD_UWP.Model
|
||||
//Searching
|
||||
|
||||
public async Task<bool> Search()
|
||||
{
|
||||
return await SearchGame();
|
||||
}
|
||||
|
||||
private async Task<bool> SearchGame()
|
||||
{
|
||||
UpdateGameStatus(GameStatus.SEARCHING);
|
||||
|
||||
await App.Network.SearchGame();
|
||||
|
||||
return true;
|
||||
return await App.Network.SearchGame(this, Settings.Username);
|
||||
}
|
||||
|
||||
//Starting and Stopping
|
||||
@@ -101,15 +96,22 @@ namespace YJMPD_UWP.Model
|
||||
//Do stuff
|
||||
|
||||
UpdateGameStatus(GameStatus.SEARCHING);
|
||||
Search();
|
||||
|
||||
await Task.Delay(TimeSpan.FromSeconds(2));
|
||||
AddPlayer("Kenneth");
|
||||
await Task.Delay(TimeSpan.FromSeconds(1));
|
||||
AddPlayer("Yorick");
|
||||
IAsyncAction asyncAction = Windows.System.Threading.ThreadPool.RunAsync((workItem) =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
App.Network.WaitingForPlayers(this);
|
||||
|
||||
Debug.WriteLine("Searching");
|
||||
Task.Delay(TimeSpan.FromMilliseconds(50));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
UpdateGameStatus(GameStatus.WAITING);
|
||||
|
||||
await Task.Delay(TimeSpan.FromSeconds(3));
|
||||
|
||||
UpdateGameStatus(GameStatus.STARTED);
|
||||
|
||||
|
||||
@@ -5,11 +5,23 @@ using Windows.Networking.Sockets;
|
||||
using Windows.Storage.Streams;
|
||||
using YJMPD_UWP.Helpers;
|
||||
using YJMPD_UWP.Helpers.EventArgs;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
|
||||
namespace YJMPD_UWP.Model
|
||||
{
|
||||
public class NetworkHandler
|
||||
{
|
||||
|
||||
public enum Commands
|
||||
{
|
||||
Hi,
|
||||
Name,
|
||||
Picture
|
||||
}
|
||||
|
||||
public delegate void OnStatusUpdatedHandler(object sender, NetworkStatusUpdatedEventArgs e);
|
||||
public event OnStatusUpdatedHandler OnStatusUpdate;
|
||||
|
||||
@@ -18,7 +30,7 @@ namespace YJMPD_UWP.Model
|
||||
|
||||
private StreamSocket client;
|
||||
DataWriter dout;
|
||||
DataReader din;
|
||||
StreamReader din;
|
||||
|
||||
private void UpdateNetworkStatus(NetworkStatus status)
|
||||
{
|
||||
@@ -37,11 +49,44 @@ namespace YJMPD_UWP.Model
|
||||
|
||||
|
||||
//API stuff
|
||||
public async Task<bool> SearchGame()
|
||||
public async Task<bool> SearchGame(GameHandler g, string playername)
|
||||
{
|
||||
Random r = new Random();
|
||||
int l = r.Next(0, 2);
|
||||
return l < 1;
|
||||
JObject obj = JObject.FromObject(new
|
||||
{
|
||||
command = Commands.Name.ToString(),
|
||||
name = playername
|
||||
});
|
||||
Debug.WriteLine(obj.ToString(Formatting.None));
|
||||
Write(obj.ToString(Formatting.None));
|
||||
|
||||
var response = await Read();
|
||||
Debug.WriteLine(response);
|
||||
JObject o = JObject.Parse(response);
|
||||
if(o["msg"].ToString() == "ok")
|
||||
{
|
||||
g.AddPlayer(playername);
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public async Task<bool> WaitingForPlayers(GameHandler g)
|
||||
{
|
||||
bool added = false;
|
||||
|
||||
var response = await Read();
|
||||
Debug.WriteLine(response);
|
||||
JObject o = JObject.Parse(response);
|
||||
try {
|
||||
g.AddPlayer(o["player"].ToString());
|
||||
added = true;
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
Debug.WriteLine(e);
|
||||
}
|
||||
return added;
|
||||
}
|
||||
|
||||
|
||||
@@ -58,17 +103,13 @@ namespace YJMPD_UWP.Model
|
||||
|
||||
private async Task<string> ReadData()
|
||||
{
|
||||
uint length = din.ReadUInt32();
|
||||
string data = din.ReadString(length);
|
||||
|
||||
return data;
|
||||
return din.ReadLine();
|
||||
}
|
||||
|
||||
private async Task<bool> WriteData(string data)
|
||||
{
|
||||
dout.WriteUInt32((uint)data.Length);
|
||||
dout.WriteString(data);
|
||||
|
||||
dout.WriteString(data + Environment.NewLine);
|
||||
await dout.StoreAsync();
|
||||
await dout.FlushAsync();
|
||||
|
||||
return true;
|
||||
@@ -91,21 +132,20 @@ namespace YJMPD_UWP.Model
|
||||
UpdateNetworkStatus(NetworkStatus.CONNECTING);
|
||||
|
||||
UpdateNetworkStatus(NetworkStatus.CONNECTED);
|
||||
return false;
|
||||
|
||||
client = new StreamSocket();
|
||||
|
||||
StreamSocketControl controller = client.Control;
|
||||
controller.KeepAlive = true;
|
||||
|
||||
await client.ConnectAsync(new HostName(Settings.Values["hostname"] as string), "YJMPD-UWP-Server");
|
||||
await client.ConnectAsync(new HostName("imegumii.space"), "3333");
|
||||
|
||||
|
||||
din = new DataReader(client.InputStream);
|
||||
din = new StreamReader(client.InputStream.AsStreamForRead());
|
||||
dout = new DataWriter(client.OutputStream);
|
||||
|
||||
din.UnicodeEncoding = UnicodeEncoding.Utf8;
|
||||
din.ByteOrder = ByteOrder.LittleEndian;
|
||||
//din.UnicodeEncoding = UnicodeEncoding.Utf8;
|
||||
//din.ByteOrder = ByteOrder.LittleEndian;
|
||||
|
||||
dout.UnicodeEncoding = UnicodeEncoding.Utf8;
|
||||
dout.ByteOrder = ByteOrder.LittleEndian;
|
||||
|
||||
Reference in New Issue
Block a user