private void SendMeToDatabase() { //Aktif oyuncunun position bilgilerini Database'e göndermesini sağlar. Player.PlayerPosition myPosition = new Player.PlayerPosition(); myPosition.position = player.position; roomRef.Child("GameScene").Child(auth.CurrentUser.UserId).Child("Transform").SetRawJsonValueAsync(JsonUtility.ToJson(myPosition)); //Aktif oyuncunun bitiş noktasına olan mesafesini de Database'e gönderir. Böylelikle bu mesafelere göre anlık sıralama yapılır. GameSceneDistances myDistance = new GameSceneDistances(); myDistance.nick = DatabaseManager.nick; myDistance.distance = Vector3.Distance(player.position, finishObject.position); roomRef.Child("GameSceneDistances").Child(auth.CurrentUser.UserId).SetRawJsonValueAsync(JsonUtility.ToJson(myDistance)); }
private void OrderByDistance() { //Databaseden oyuncuların distance değerine göre sırayla çekilmesini sağlar. roomRef.Child("GameSceneDistances").OrderByChild("distance").GetValueAsync().ContinueWithOnMainThread(task => { DataSnapshot snapshot = task.Result; if (snapshot.GetRawJsonValue() != null) { int i = 0; foreach (DataSnapshot ds in snapshot.Children) { GameSceneDistances playerDistance = JsonUtility.FromJson <GameSceneDistances>(ds.GetRawJsonValue()); //Eğer oyuncuların sıralama tablosundaki yeri aynı ise tekrar güncellenmez. if (placeList[i] != ((i + 1) + ". " + playerDistance.nick)) { placeList[i] = ((i + 1) + ". " + playerDistance.nick); UpdatePlaceText(); } i++; } } }); }