예제 #1
0
파일: GameBL.cs 프로젝트: assafrot/TalkBack
 public GameBL()
 {
     server = ServerBL.Instance;
     server.gameHubProxy.On("StartGame", (string roomId, Board board) => OnStartGame?.Invoke(roomId, board));
     server.gameHubProxy.On("GetPlayerColor", (string roomId, CheckerColor color) => OnGetPlayerColor?.Invoke(roomId, color));
     server.gameHubProxy.On("GetGameInvitation", (string room, string sender) => OnGameInvitation?.Invoke(room, sender));
     server.gameHubProxy.On("DenyGame", (string username) => OnDenyInitation?.Invoke(username));
     server.gameHubProxy.On("CurrentTurn", (string roomId, string username) => OnCurrentTurn?.Invoke(roomId, username));
     server.gameHubProxy.On("GetUserName", (string userName) => OnGetPlayerName?.Invoke(userName));
     server.gameHubProxy.On("UpdateBoard", (string roomId, Board board) => OnBoardUpdate?.Invoke(roomId, board));
     server.gameHubProxy.On("DiceResult", (string room, int[] dice) => OnDiceResult?.Invoke(room, dice));
     server.gameHubProxy.On("ChangeTurnStatus",
                            (string roomId, TurnStatus turnStatus) => OnTurnStatusChange?.Invoke(roomId, turnStatus));
     server.gameHubProxy.On("GameOver", (string roomid, string username) => OnGameOver?.Invoke(roomid, username));
     server.gameHubProxy.On("GameClosed", (string room, string sender) => OnGameClosed?.Invoke(room, sender));
 }
예제 #2
0
        public void UpdateBoardWithObservations(CvModel[] Observations)
        {
            lock (mutex)
            {
                Transformer.GetBoardState(Observations);
                LastDeterminedBoardModels[CurrentDeterminedBoardModelIndex++] = Transformer.GetBoardState(Observations);
                if (CurrentDeterminedBoardModelIndex > ConsistencyBuffer - 1)
                {
                    BufferFull = true;
                    CurrentDeterminedBoardModelIndex = 0;
                }

                if (CurrentDeterminedBoardModelIndex % ConsistencyUpdatesPerCheck == 0 && BufferFull)
                {
                    // Check for most agreed consistent data
                    var dict = new Dictionary <BoardModel, int>();

                    foreach (var value in LastDeterminedBoardModels)
                    {
                        if (dict.ContainsKey(value))
                        {
                            dict[value]++;
                        }
                        else
                        {
                            dict[value] = 1;
                        }
                    }

                    KeyValuePair <BoardModel, int> MostOccuredModel = new KeyValuePair <BoardModel, int>(new BoardModel(), 0);
                    foreach (var pair in dict)
                    {
                        if (pair.Key.CardsOnBoard() >= MostOccuredModel.Key.CardsOnBoard())
                        {
                            if (pair.Value > MostOccuredModel.Value && pair.Value > MinConsistencyRequired)
                            {
                                MostOccuredModel = pair;
                            }
                        }
                    }

                    Board = MostOccuredModel.Key;
                    OnBoardUpdate?.Invoke(Board);
                }
            }
        }
예제 #3
0
 public void receiveBoardData(string boardJson)
 {
     Debug.Log("board data received");
     boardState = manager.GetBoardFromJson(boardJson);
     OnBoardUpdate.Invoke();
 }