private void RPCListener() { if (gameRoomKey != null) { FirebaseDBFacade.CreateTableChildAddedListener("RPCListener", reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_RPC)); } }
private void InitialStateListener() { if (gameRoomKey != null) { FirebaseDBFacade.CreateTableChildAddedListener("InitialStateListener", reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_INITITAL_STATE)); } }
public void AttackPhase(AttackModel param) { SetParam(MyConst.RPC_DATA_ATTACK, (param)); GetLatestKey(2, delegate(string resultString) { FirebaseDBFacade.RunTransaction(reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_BATTLE_STATUS).Child(resultString), delegate(MutableData mutableData) { mutableData.Value = PhaseMutate(mutableData, MyConst.BATTLE_STATUS_ATTACK); }); }); }
private void InitializeFirebase() { SystemLoadScreenController.Instance.StopLoadingScreen(); #if UNITY_EDITOR // Set this before calling into the realtime database. FirebaseApp.DefaultInstance.SetEditorDatabaseUrl(MyConst.URL_FIREBASE_DATABASE); #endif SetReference(); FirebaseDBFacade.CheckDBConnection(FirebaseDatabase.DefaultInstance.GetReferenceFromUrl(MyConst.URL_FIREBASE_DATABASE_CONNECTION)); }
public void SearchRoom(Action <bool> onResult) { searchingRoom = true; RPCDicObserver.AddObserver(this); RPCQueryObserver.AddObserver(this); //Order first to search fast FirebaseDBFacade.QueryTable("SearchRoom", roomReference.OrderByChild(MyConst.GAMEROOM_STATUS).EqualTo("0")); onSuccessMatchMake = onResult; }
public void JoinRoom() { FirebaseDBFacade.RunTransaction(reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_STATUS), delegate(MutableData mutableData) { int playerCount = int.Parse(mutableData.Value.ToString()); playerCount++; joinCounter++; mutableData.Value = playerCount.ToString(); }); StartCoroutine(StartJoinDelay()); }
public void AnswerPhase(string param) { GetLatestKey(1, delegate(string resultString) { FirebaseDBFacade.RunTransaction(reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_BATTLE_STATUS).Child(resultString), delegate(MutableData mutableData) { mutableData.Value = PhaseMutate(mutableData, MyConst.BATTLE_STATUS_ANSWER, delegate(Dictionary <string, System.Object> battleStatus, int battleCount) { if (GameManager.isHost) { battleStatus [MyConst.RPC_DATA_PLAYER_ANSWER_PARAM] = param; } else { battleStatus [MyConst.RPC_DATA_ENEMY_ANSWER_PARAM] = param; } }); }); }); }
//gets the latest push key from the database private void GetLatestKey(int numMod, Action <string> action) { FirebaseDBFacade.GetTableValueAsync(reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_BATTLE_STATUS), delegate(DataSnapshot dataSnapshot) { if (dataSnapshot != null) { Dictionary <string, System.Object> battleStatus = (Dictionary <string, System.Object>)dataSnapshot.Value; switch (numMod) { case 1: LatestKeyCompute(battleStatus, 1, 1, action); break; case 2: LatestKeyCompute(battleStatus, 2, 0, action); break; } } }); }
public void SetParam <T> (string objectName, T myObject) { string rpcKey = reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_RPC).Push().Key; Dictionary <string, System.Object> result = new Dictionary <string, System.Object> (); result [MyConst.RPC_DATA_USERHOME] = GameManager.isHost; Dictionary <string, System.Object> jsonResult = new Dictionary <string, System.Object> (); jsonResult [objectName] = JsonUtility.ToJson(myObject); result [MyConst.RPC_DATA_PARAM] = jsonResult; string directory = "/" + MyConst.GAMEROOM_ROOM + "/" + gameRoomKey + "/" + MyConst.GAMEROOM_RPC + "/" + rpcKey; FirebaseDBFacade.CreateTableChildrenAsync(directory, reference, result); }
public void UpdateBattleStatus(string stateName, int stateCount, string playerParam = "", string enemyParam = "") { Dictionary <string, System.Object> entryValues = new Dictionary <string, System.Object> (); entryValues.Add(MyConst.BATTLE_STATUS_STATE, stateName); entryValues.Add(MyConst.BATTLE_STATUS_COUNT, stateCount.ToString()); if (!string.IsNullOrEmpty(playerParam)) { entryValues.Add(MyConst.RPC_DATA_PLAYER_ANSWER_PARAM, playerParam); } if (!string.IsNullOrEmpty(enemyParam)) { entryValues.Add(MyConst.RPC_DATA_ENEMY_ANSWER_PARAM, enemyParam); } battleStatusKey = reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_BATTLE_STATUS).Push().Key; string directory = "/" + MyConst.GAMEROOM_ROOM + "/" + gameRoomKey + "/" + MyConst.GAMEROOM_BATTLE_STATUS + "/" + battleStatusKey + "/"; FirebaseDBFacade.CreateTableChildrenAsync(directory, reference, entryValues); }
private void CheckInitialPhase() { FirebaseDBFacade.GetTableValueAsync(reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_BATTLE_STATUS), delegate(DataSnapshot dataSnapshot) { if (dataSnapshot.Value == null) { UpdateBattleStatus(MyConst.BATTLE_STATUS_ANSWER, 0, "0", "0"); } else { Dictionary <string, System.Object> battleStatus = (Dictionary <string, System.Object>)dataSnapshot.Value; foreach (KeyValuePair <string, System.Object> battleKey in battleStatus) { battleStatusKey = battleKey.Key; } } FirebaseDBFacade.CreateTableChildAddedListener("BattleStatusChildAdded", reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_BATTLE_STATUS)); FirebaseDBFacade.CreateTableValueChangedListener("BattleStatusValueChanged", reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_BATTLE_STATUS)); }); }
public void CancelRoomSearch() { if (!isMatchMakeSuccess) { if (GameManager.isHost) { DeleteRoom(); GameManager.isHost = false; //return; } } RPCDicObserver.RemoveObserver(this); RPCQueryObserver.RemoveObserver(this); gameRoomKey = null; searchingRoom = false; onSuccessMatchMake(false); FirebaseDBFacade.RemoveQuery("SearchRoom"); FirebaseDBFacade.RemoveReference("InitialStateListener"); FirebaseDBFacade.RemoveReference("BattleStatusValueChanged"); FirebaseDBFacade.RemoveReference("BattleStatusChildAdded"); FirebaseDBFacade.RemoveReference("RPCListener"); }
private void RoomCreateJoin(bool isHost, string userPlace) { GameManager.isHost = isHost; RPCListener(); Dictionary <string, System.Object> result = new Dictionary <string, System.Object> (); result [MyConst.RPC_DATA_PLAYER] = JsonUtility.ToJson(MyConst.player); Dictionary <string, System.Object> entryValues = result; string directory = MyConst.GAMEROOM_ROOM + "/" + gameRoomKey + "/" + MyConst.GAMEROOM_INITITAL_STATE + "/" + userPlace + "/" + MyConst.RPC_DATA_PARAM + "/"; FirebaseDBFacade.CreateTableChildrenAsync(directory, reference, entryValues); //set room status to open when create room if (isHost) { FirebaseDBFacade.SetTableValueAsync(reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey).Child(MyConst.GAMEROOM_STATUS), "0"); } //set battle status to answer when start of game CheckInitialPhase(); InitialStateListener(); }
private void DeleteRoom() { //add check room deleted successfully using childremove in fdfacade FirebaseDBFacade.RemoveTableValueAsync(reference.Child(MyConst.GAMEROOM_ROOM).Child(gameRoomKey)); }
private void CreateRoom() { gameRoomKey = FirebaseDBFacade.CreateKey(reference.Child(MyConst.GAMEROOM_ROOM)); RoomCreateJoin(true, MyConst.GAMEROOM_HOME); }