Parcourir la source

Uppdatera categori display

Axel Nordh il y a 5 ans
Parent
commit
41a7f1ae69

+ 0 - 1
.gitignore

@@ -49,4 +49,3 @@ sysinfo.txt
 
 # Crashlytics generated file
 crashlytics-build.properties
-Assets/narKampenLocal.db

+ 1 - 0
Assets/Scenes/narKampen.unity

@@ -2760,6 +2760,7 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 923cbfd2c7b2c4142991b1c5b36157df, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+  gameManager: {fileID: 225506176}
 --- !u!114 &1368877381
 MonoBehaviour:
   m_ObjectHideFlags: 0

+ 2 - 2
Assets/Scripts/Database/Database.cs

@@ -33,9 +33,9 @@ public class Database : MonoBehaviour {
 
     IDbConnection conn;
 
-    internal void GetCategories(List<CategoryPanel.Category> list, string gameMode) {
+    internal void GetCategories(List<CategoryPanel.Category> list, string gameMode, int gameId) {
         if (gameMode.Equals("Online")) {
-            OnlineDatabase.Instance.GetCategories(list);
+            OnlineDatabase.Instance.GetCategories(list, gameId);
         } else {
             //string sql = "SELECT name, r, g, b, a, id FROM category";
             string sql = "SELECT category.*, count(*) as count FROM questions " +

+ 8 - 4
Assets/Scripts/Database/OnlineDatabase.cs

@@ -25,8 +25,11 @@ public class OnlineDatabase : MonoBehaviour {
         }
     }
 
-    internal List<CategoryPanel.Category> GetCategories(List<CategoryPanel.Category> list) {
-        string response = CallOnlineDatabaseWithResponse("Categories.php", null);
+    internal List<CategoryPanel.Category> GetCategories(List<CategoryPanel.Category> list, int gameId) {
+        WWWForm form = new WWWForm();
+        form.AddField("gameId", gameId);
+
+        string response = CallOnlineDatabaseWithResponse("Categories.php", form);
 
         response = "{\"categoryList\" :  " + response + " }";
 
@@ -495,7 +498,7 @@ public class OnlineDatabase : MonoBehaviour {
     public NewQuestionData GetNewQuestion(List<int> userAnsweredQuestions, string userName) {
         int gameId = GameObject.Find("GameManager").GetComponent<GameManagerScript>().GameId;
 
-        Question q = GetQuestionData(false);
+        Question q = GetQuestionData(gameId);
 
         Color32 categoryColor = new Color32((byte)q.r, (byte)q.g, (byte)q.b, (byte)q.a);
         //            Color32 questionCategoryColor = new Color32((byte)q.r, (byte)q.g, (byte)q.b, (byte)q.a);
@@ -554,8 +557,9 @@ public class OnlineDatabase : MonoBehaviour {
         return questions;
     }
 
-    private Question GetQuestionData(bool showAnswer) {
+    private Question GetQuestionData(int gameId) {
         WWWForm form = new WWWForm();
+        form.AddField("gameId", gameId);
 
         string response = CallOnlineDatabaseWithResponse("Question.php", form);
         

+ 2 - 14
Assets/Scripts/MainGame/CategoryPanel.cs

@@ -16,6 +16,7 @@ public class CategoryPanel : MonoBehaviour
         public int questionCount;
     }
 
+    [SerializeField] GameObject gameManager;
     string gameMode;
     GameManagerScript gms;
     List<Category> categories;
@@ -28,7 +29,7 @@ public class CategoryPanel : MonoBehaviour
     private void PopulatePanel() {
         if (categories == null) {
             categories = new List<Category>();
-            Database.Instance.GetCategories(categories, GetGameMode());
+            Database.Instance.GetCategories(categories, GetGameMode(), gameManager.GetComponent<GameManagerScript>().GameId);
         }
         foreach (Category cat in categories) {
             AddText(cat.name, cat.color);
@@ -50,19 +51,6 @@ public class CategoryPanel : MonoBehaviour
         newText.alignment = TextAnchor.MiddleCenter;
     }
 
-    public Category GetCategoryById(int id) {
-        if (categories == null) {
-            categories = new List<Category>();
-            Database.Instance.GetCategories(categories, GetGameMode());
-        }
-        foreach (Category cat in categories) {
-            if (cat.id == id) {
-                return cat;
-            }
-        }
-        return null;
-    }
-
     private string GetGameMode() {
         if (gameMode == null) {
             gameMode = PlayerPrefs.GetString("GameMode");

+ 1 - 1
Assets/SelectCategoryScript.cs

@@ -26,7 +26,7 @@ public class SelectCategoryScript : MonoBehaviour
             categories = new List<CategoryPanel.Category>();
         }
 
-        categories = OnlineDatabase.Instance.GetCategories(categories);
+        categories = OnlineDatabase.Instance.GetCategories(categories, -1);
 
         foreach (CategoryPanel.Category cat in categories)
         {

BIN
Assets/narKampenLocal.db


+ 10 - 1
dbFiles/Categories.php

@@ -11,8 +11,17 @@
 	}
 	mysqli_set_charset($conn,'utf8');
 		
+	$gameId = $_POST['gameId'];
+
+	$categoryFilter = "";
+	if ($gameId == -1) {
+		$categoryFilter = "(SELECT categoryId FROM categories)";
+	} else {
+		$categoryFilter = "(SELECT categoryId FROM gameCategories WHERE gameId = $gameId)";
+	}
+
 	//$sql = "SELECT id, name, r, g, b ,a FROM category";
-	$sql = "SELECT category.*, count(*) as count FROM questions INNER JOIN questionToCategory ON questions.id = questionToCategory.questionId INNER JOIN category ON questionToCategory.categoryId = category.id GROUP BY category.name";
+	$sql = "SELECT category.*, count(*) as count FROM questions INNER JOIN questionToCategory ON questions.id = questionToCategory.questionId INNER JOIN category ON questionToCategory.categoryId = category.id WHERE category.id IN $categoryFilter GROUP BY category.name";
 	$result = $conn->query($sql);
 	
 	if ($result->num_rows > 0) {

+ 3 - 1
dbFiles/Question.php

@@ -7,12 +7,14 @@
 
 	$conn = new mysqli($hostname, $username, $pass, $database);
 	
+	$gameId = $_POST["gameId"];
+
 	if (!$conn) {
 		die("Connection Failed. ". mysqli_connect_error());
 	}
 	mysqli_set_charset($conn,'utf8');
 	
-	$sql = 'SELECT questions.id, question, answer, categoryId as category, name, r,g,b,a FROM questions INNER JOIN questionToCategory ON questions.id = questionToCategory.questionId INNER JOIN category on category.id = questionToCategory.categoryId ORDER BY RAND() limit 1';
+	$sql = 'SELECT questions.id, question, answer, categoryId as category, name, r,g,b,a FROM questions INNER JOIN questionToCategory ON questions.id = questionToCategory.questionId INNER JOIN category on category.id = questionToCategory.categoryId WHERE questionToCategory.categoryId IN (SELECT categoryId FROM gameCategories WHERE gameId = $gameId) ORDER BY RAND() limit 1';
 	
 	$result = mysqli_query($conn, $sql);