فهرست منبع

Fix leaving game + send position

Kenneth van Ewijk 10 سال پیش
والد
کامیت
b0cf690c0e
2فایلهای تغییر یافته به همراه25 افزوده شده و 20 حذف شده
  1. 16 1
      YJMPD-UWP/Model/ApiHandler.cs
  2. 9 19
      YJMPD-UWP/Model/GameHandler.cs

+ 16 - 1
YJMPD-UWP/Model/ApiHandler.cs

@@ -97,11 +97,26 @@ namespace YJMPD_UWP.Model
         }
 
         //API stuff
-        public async Task<bool> SearchGame()
+        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));

+ 9 - 19
YJMPD-UWP/Model/GameHandler.cs

@@ -56,15 +56,15 @@ namespace YJMPD_UWP.Model
 
         public void RemovePlayer(string username)
         {
-            Players.ForEach(p => {
-                if(p.Username == username)
+            for(int i=Players.Count-1; i>=0; i--)
+            {
+                if (Players[i].Username == username)
                 {
-                    Players.Remove(p);
-                    UpdateGamePlayers(p);
+                    UpdateGamePlayers(Players[i]);
+                    Players.RemoveAt(i);
                     return;
                 }
-            });
-            
+            }         
         }
 
         public void Reset()
@@ -86,15 +86,6 @@ namespace YJMPD_UWP.Model
             }
         }
 
-
-        //Searching
-
-        public async Task<bool> Search()
-        {
-            UpdateGameStatus(GameStatus.SEARCHING);
-            return await App.Api.SearchGame();
-        }
-
         //Starting and Stopping
 
         public async Task<bool> Start()
@@ -110,14 +101,13 @@ namespace YJMPD_UWP.Model
         private async Task<bool> StartGame()
         {
             UpdateGameStatus(GameStatus.SEARCHING);
-
-            Search();
-
-            return true;
+            return await App.Api.JoinGame();
         }
 
         private async Task<bool> StopGame()
         {
+            App.Api.LeaveGame();
+
             Reset();
 
             UpdateGameStatus(GameStatus.STOPPED);