Axel Nordh %!s(int64=5) %!d(string=hai) anos
pai
achega
fe62797bc0

+ 35 - 9
Assets/Scripts/Database/OnlineDatabase.cs

@@ -148,9 +148,9 @@ public class OnlineDatabase : MonoBehaviour {
         public string lastPlayedDate;
         public string lastPlayedDate;
         public string finishedDate;
         public string finishedDate;
         public string status;
         public string status;
-        public int userId;
+        public string userId;
         public string username;
         public string username;
-        public int userLockedQuestions;
+        public string userLockedQuestions;
     }
     }
 
 
     [Serializable]
     [Serializable]
@@ -299,12 +299,37 @@ public class OnlineDatabase : MonoBehaviour {
         GameObject onlineGameObject;
         GameObject onlineGameObject;
         OnlineGameScript ogs = null;
         OnlineGameScript ogs = null;
         List<OnlineGameScript> games = new List<OnlineGameScript>();
         List<OnlineGameScript> games = new List<OnlineGameScript>();
+        int gameId = -1;
+        string playerToAct = "";
+
         foreach (OnlineGame game in og.onlineGamesList) {
         foreach (OnlineGame game in og.onlineGamesList) {
-            onlineGameObject = Instantiate(prefab, new Vector2(0, 0), Quaternion.identity) as GameObject;
-            ogs = onlineGameObject.GetComponent<OnlineGameScript>();
-            ogs.CurrentPlayer = game.currentPlayer;
+            Int32.TryParse(game.id, out int currentGameId);
+            if (gameId != currentGameId) {
+                if (ogs != null) {
+                    games.Add(ogs);
+                }
+                onlineGameObject = Instantiate(prefab, new Vector2(0, 0), Quaternion.identity) as GameObject;
+                ogs = onlineGameObject.GetComponent<OnlineGameScript>();
+                gameId = currentGameId;
+
+                if (game.currentPlayer.Equals(game.userId)) {
+                    playerToAct = game.username;
+                    ogs.CurrentPlayer = game.username;
+                    ogs.addPlayer(game.username);
+                    ogs.SetGameStatus("YOUR_TURN");
+                }
+            } else {
+                ogs.addPlayer(game.username);
+                if (game.currentPlayer.Equals(game.userId)) {
+                    ogs.SetGameStatus("YOUR_TURN");
+                    playerToAct = game.username;
+                    ogs.CurrentPlayer = game.username;
+                    ogs.addPlayer(game.username);
+                }
+            }
+            
             ogs.SetGameStatus(game.status);
             ogs.SetGameStatus(game.status);
-            Int32.TryParse(game.id, out int gameId);
+            //ogs.CurrentPlayer = game.currentPlayer;
             List<KeyValuePair<string, string>> playerInfos = GetGameInfo(gameId);
             List<KeyValuePair<string, string>> playerInfos = GetGameInfo(gameId);
             if (game.status.Equals("PENDING")) {
             if (game.status.Equals("PENDING")) {
                 string extraInfo = "";
                 string extraInfo = "";
@@ -320,9 +345,9 @@ public class OnlineDatabase : MonoBehaviour {
                 ogs.SetGameStatusText(extraInfo);
                 ogs.SetGameStatusText(extraInfo);
 
 
             } else if (game.status.Equals("OTHERS_TURN")) {
             } else if (game.status.Equals("OTHERS_TURN")) {
-                ogs.SetGameStatusText(game.playerToAct);
+                ogs.SetGameStatusText(ogs.CurrentPlayer);
             } else if (game.status.Equals("ACTIVE")) {
             } else if (game.status.Equals("ACTIVE")) {
-                ogs.SetGameStatusText(game.playerToAct);
+                ogs.SetGameStatusText(ogs.CurrentPlayer);
             } else {
             } else {
                 ogs.SetGameStatusText();
                 ogs.SetGameStatusText();
             }
             }
@@ -335,10 +360,11 @@ public class OnlineDatabase : MonoBehaviour {
             ogs.StartDate = game.startDate;
             ogs.StartDate = game.startDate;
             ogs.LastPlayedDate = game.lastPlayedDate;
             ogs.LastPlayedDate = game.lastPlayedDate;
 
 
-            games.Add(ogs);
             ogs.PlayerInfos = playerInfos;
             ogs.PlayerInfos = playerInfos;
         }
         }
 
 
+        games.Add(ogs);
+        
         return games;
         return games;
     }
     }
 
 

+ 13 - 2
Assets/Scripts/NewGameScene/OnlineGameScript.cs

@@ -21,6 +21,8 @@ public class OnlineGameScript : MonoBehaviour {
     private string lastPlayedDate;
     private string lastPlayedDate;
     private string finishedDate;
     private string finishedDate;
 
 
+    private List<String> players;
+
     private List<KeyValuePair<string, string>> playerInfos;
     private List<KeyValuePair<string, string>> playerInfos;
 
 
     public int GetId() {
     public int GetId() {
@@ -50,6 +52,7 @@ public class OnlineGameScript : MonoBehaviour {
     }
     }
 
 
     public List<KeyValuePair<string, string>> PlayerInfos { get => playerInfos; set => playerInfos = value; }
     public List<KeyValuePair<string, string>> PlayerInfos { get => playerInfos; set => playerInfos = value; }
+    public List<string> Players { get => players; set => players = value; }
 
 
     private string PENDING_TITLE = "ONLINE_GAME_STATUS_TITLE_VALUE_PENDING";
     private string PENDING_TITLE = "ONLINE_GAME_STATUS_TITLE_VALUE_PENDING";
     private string ACTIVE_TITLE = "ONLINE_GAME_STATUS_TITLE_ACTIVE";
     private string ACTIVE_TITLE = "ONLINE_GAME_STATUS_TITLE_ACTIVE";
@@ -83,6 +86,13 @@ public class OnlineGameScript : MonoBehaviour {
         gameInfoScript.Show();
         gameInfoScript.Show();
     }
     }
 
 
+    public void addPlayer(string playerName) {
+        if (Players == null) {
+            Players = new List<String>();
+        }
+        Players.Add(playerName);
+    }
+
     public string gameStatus;
     public string gameStatus;
 
 
     private void SetColor(string status) {
     private void SetColor(string status) {
@@ -98,8 +108,9 @@ public class OnlineGameScript : MonoBehaviour {
         } else if ("INVITED".Equals(status)) {
         } else if ("INVITED".Equals(status)) {
             image.color = statusColors[4];
             image.color = statusColors[4];
         } else if ("ACTIVE".Equals(status)) {
         } else if ("ACTIVE".Equals(status)) {
-            Int32.TryParse(CurrentPlayer, out int currentPlayerId);
-            if (currentPlayerId == Database.Instance.GetSignedInUser().Key) {
+            //Int32.TryParse(CurrentPlayer, out int currentPlayerId);
+            //if (currentPlayerId == Database.Instance.GetSignedInUser().Key) {
+            if (CurrentPlayer != null && CurrentPlayer.Equals(Database.Instance.GetSignedInUser().Value)) {
                 image.color = statusColors[2];
                 image.color = statusColors[2];
             } else {
             } else {
                 image.color = statusColors[1];
                 image.color = statusColors[1];

+ 8 - 6
dbFiles/OnlineGames.php

@@ -18,17 +18,19 @@
 	$userId = $conn->query("SELECT id FROM users where username = '$userName'")->fetch_assoc()['id'];
 	$userId = $conn->query("SELECT id FROM users where username = '$userName'")->fetch_assoc()['id'];
 	
 	
 	if ($callFunction === "list"){	
 	if ($callFunction === "list"){	
-		$sql = "SELECT game.*, users.username as playerToAct FROM game " .
+		/* OLD SQL
+		 $sql = "SELECT game.*, users.username as playerToAct FROM game " .
 				"LEFT JOIN users on currentPlayer = users.id " .
 				"LEFT JOIN users on currentPlayer = users.id " .
 				"WHERE game.id IN (SELECT gameId FROM gamePlayers WHERE playerId = $userId) " .
 				"WHERE game.id IN (SELECT gameId FROM gamePlayers WHERE playerId = $userId) " .
 				"AND game.status != 'FINISHED' ".
 				"AND game.status != 'FINISHED' ".
 				"ORDER BY FIELD(PlayerToAct, '$userName') DESC, lastPlayedDate DESC";
 				"ORDER BY FIELD(PlayerToAct, '$userName') DESC, lastPlayedDate DESC";
+*/
 
 
-		$newSql = "SELECT game.*, users.id as userId, users.username as username, gamePlayers.userLockedQuestions FROM game " + 
-			"INNER JOIN gamePlayers ON gamePlayers.gameId = game.id " + 
-			"INNER JOIN users ON users.id = playerId " +
-			"WHERE game.id IN (SELECT gameId FROM gamePlayers WHERE playerId = $userId) " + 
-			"AND game.status NOT IN ('FINISHED') " + 
+		$sql = "SELECT game.*, users.id as userId, users.username as username, gamePlayers.userLockedQuestions FROM game " . 
+			"INNER JOIN gamePlayers ON gamePlayers.gameId = game.id " . 
+			"INNER JOIN users ON users.id = playerId " .
+			"WHERE game.id IN (SELECT gameId FROM gamePlayers WHERE playerId = $userId) " .
+			"AND game.status NOT IN ('FINISHED') " .
 			"ORDER BY FIELD(currentPlayer, $userId) DESC, lastPlayedDate DESC";
 			"ORDER BY FIELD(currentPlayer, $userId) DESC, lastPlayedDate DESC";
 		$result = $conn->query($sql);
 		$result = $conn->query($sql);