public void AddElement(ref BSTNode node, HighscorePlayer HSPlayer) { //Check root if (node == null) { node = new BSTNode(HSPlayer); nodeCount++; } //Root's already ocupied, check left and right children //to fit new data //I consider an equal score to be a left child //Just because of being the first person to achieve a specific score //deserves to be over someone who got the same score later else if (node.playerInfo.score >= HSPlayer.score) { AddElement(ref node.leftchild, HSPlayer); } else if (node.playerInfo.score < HSPlayer.score) { AddElement(ref node.rightchild, HSPlayer); } }
//Tested, works public void InsertPlayerIntoRanking(HighscorePlayer hsP) { string query = string.Format("INSERT INTO PlayerScoresDataTable" + "(Score,Nickname)" + "VALUES ({0},'{1}')", hsP.score, hsP.nickname); PostQuery(query); }
public static void Save(int score, string nickname) { Debug.Log($"stored name is gonna be {nickname}"); HighscorePlayer newHSPlayer = new HighscorePlayer(score, nickname); Debug.Log($"New player is {newHSPlayer.nickname} and has a score of {newHSPlayer.score}"); if (scoresDatabase == null) { LoadDataBase(); } scoresDatabase.InsertPlayerIntoRanking(newHSPlayer); }
public List <HighscorePlayer> GetPlayersRankingList() { List <HighscorePlayer> listOfPlayers = new List <HighscorePlayer>(); try { dbConn.Open(); IDbCommand dbCommand = dbConn.CreateCommand(); string consultQuery = "SELECT * FROM PlayerScoresDataTable"; dbCommand.CommandText = consultQuery; IDataReader reader = dbCommand.ExecuteReader(); while (reader.Read()) { int score = reader.GetInt32(1); string nickname = reader.GetString(2); HighscorePlayer p = new HighscorePlayer(score, nickname); listOfPlayers.Add(p); } reader.Close(); reader = null; dbCommand.Dispose(); dbCommand = null; } catch (Exception e) { Debug.LogError(e.Message); } finally { dbConn.Close(); } return(listOfPlayers); }
public void DeleteElement(ref BSTNode node, HighscorePlayer HSPlayer) { if (node != null) { //if selected node has no children, just make it null if (node.playerInfo.score == HSPlayer.score && (node.leftchild == null) && (node.rightchild == null)) { node = null; } //Reorder left side branch else if (node.playerInfo.score == HSPlayer.score && node.leftchild != null) { node.playerInfo = this.Bigger(node.leftchild); DeleteElement(ref node.leftchild, node.playerInfo); } //Reorder right side branch else if (node.playerInfo.score == HSPlayer.score && node.leftchild == null) { root.playerInfo = this.Smaller(node.rightchild); DeleteElement(ref node.rightchild, node.playerInfo); } //Desired deleteable node is the right children else if (node.playerInfo.score < HSPlayer.score) { DeleteElement(ref node.rightchild, HSPlayer); } //Desired deleteable node is the left children else { DeleteElement(ref node.leftchild, HSPlayer); } } }
public void SetData(HighscorePlayer player) { Nickname.text = player.nickname; Score.text = player.score.ToString(); }
public BSTNode(HighscorePlayer HSPlayer) { this.playerInfo = HSPlayer; }