Files
YJMPD-UWP/YJMPD-UWP/Model/ApiHandler.cs
T
2016-01-19 22:30:15 +01:00

118 lines
3.2 KiB
C#

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using YJMPD_UWP.Helpers;
using YJMPD_UWP.Views;
namespace YJMPD_UWP.Model
{
public class ApiHandler
{
public enum Command
{
Hi,
Name,
Picture,
Msg,
PlayerJoined,
PlayerRemoved,
PictureUrl
}
public ApiHandler()
{
}
public void HandleMessage(JObject o)
{
Debug.WriteLine(o.ToString());
Command c = (Command)Enum.Parse(typeof(Command), o["command"].ToString());
switch (c)
{
case Command.PlayerJoined:
Debug.WriteLine("Played joined");
PlayerJoined(o[Command.PlayerJoined.ToString()].ToString());
break;
case Command.PlayerRemoved:
Debug.WriteLine("Played removed");
PlayerRemoved(o[Command.PlayerRemoved.ToString()].ToString());
break;
case Command.Picture:
if (o["selected"].ToObject<bool>() == true)
{
Debug.WriteLine("Selected player taking picture");
App.Game.Selected = true;
App.Navigate(typeof(PhotoView));
}
else
App.Navigate(typeof(WaitingView));
App.Game.MoveToWaiting();
break;
default:
//Do nothing
break;
}
}
private void PlayerJoined(string username)
{
//Event will be handled by the game manager
App.Game.AddPlayer(username);
}
private void PlayerRemoved(string username)
{
//Event will be handled by the game manager
App.Game.RemovePlayer(username);
}
public JObject Message(Command c, string msg)
{
return JObject.FromObject(new
{
command = c.ToString(),
msg = msg
});
}
//API stuff
public async Task<bool> JoinGame()
{
JObject obj = JObject.FromObject(new
{
command = Command.Name.ToString(),
name = Settings.Username,
lon = App.Geo.Position.Coordinate.Point.Position.Longitude,
lat = App.Geo.Position.Coordinate.Point.Position.Latitude
});
Debug.WriteLine(obj.ToString(Formatting.None));
await App.Network.Write(obj.ToString(Formatting.None));
return true;
}
public async Task<bool> LeaveGame()
{
JObject obj = JObject.FromObject(new
{
command = Command.PlayerRemoved.ToString(),
name = Settings.Username
});
Debug.WriteLine(obj.ToString(Formatting.None));
await App.Network.Write(obj.ToString(Formatting.None));
return true;
}
}
}