Example #1
0
        public async void SendTestRequest()
        {
            var request = NetRequest.CreateAndSend(connection, "Test request data");
            var result  = await request.WaitForResponse();

            Log.D(result.data);
        }
Example #2
0
        public async void SendMatchRequest()
        {
            var             request  = NetRequest.CreateAndSend(BBClient.Instance.connection, new MatchMakingRequest(playerId, new MatchMakingSettings()));
            NetReceivedData response = await request.WaitForResponse();

            Log.D(response.data);
        }
Example #3
0
        public async Task <bool> TryAuthenticate(Credentials credentials)
        {
            if (isConnected == false)
            {
                return(false);
            }

            Log.Info(LogTag, $"Attempting to authenticate player. Username: {credentials.username}.");
            NetReceivedData response = await NetRequest.CreateAndSend(connection, credentials).WaitForResponse();

            if (response.data is AuthenticationResult authenticationResult)
            {
                if (authenticationResult.authenticationSuccessfull)
                {
                    authToken = authenticationResult.authToken;
                    playerId  = authenticationResult.playerId;

                    state = ClientState.Authenticated;

                    Log.Info(LogTag, "Authentication successfull.");
                    return(true);
                }
                else
                {
                    Log.Info(LogTag, "Authentication failed.");
                }
            }
            else
            {
                Log.Error(LogTag, "Authentication error: Unexpected response type.");
            }

            return(false);
        }
Example #4
0
        protected async Task <bool> SendBoth(object serializableData)
        {
            var request1 = NetRequest.CreateAndSend(player1.NetworkingClient.Connection, serializableData);
            var request2 = NetRequest.CreateAndSend(player2.NetworkingClient.Connection, serializableData);
            await Task.WhenAll(request1.WaitForResponse(), request2.WaitForResponse());

            return(request1.response.GetDataOrDefault <bool>() && request2.response.GetDataOrDefault <bool>());
        }
Example #5
0
        private async void SendUnitOrderStop(BattleUnit battleUnit)
        {
            UnitOrderStop order = new UnitOrderStop(battleData.id, battleUnit.unitInstanceId);

            var request  = NetRequest.CreateAndSend(BBClient.Instance.connection, order);
            var response = await request.WaitForResponse();

            if (response.error == null)
            {
                if (response.GetDataOrDefault <bool>())
                {
                    selectedUnit.HideOrderArrow();
                }
            }
        }
Example #6
0
        private async void SendUnitOrderMove(int x, int y)
        {
            UnitOrderMove order = new UnitOrderMove(battleData.id, selectedUnit.unitInstanceId, x, y);

            var request  = NetRequest.CreateAndSend(BBClient.Instance.connection, order);
            var response = await request.WaitForResponse();

            if (response.error == null)
            {
                if (response.GetDataOrDefault <bool>())
                {
                    selectedUnit.ShowOrderArrow(x, y);
                }
            }
        }
Example #7
0
        public async void Start()
        {
            battlePhase = BattlePhase.Starting;

            // Register data handlers
            unitOrderMoveDataHandler = DataHandler.New(HandleUnitOrderMove, new NetDataFilterUnitOrder(battleData.id).And(new NetDataFilterType(typeof(UnitOrderMove))));
            unitOrderStopDataHandler = DataHandler.New(HandleUnitOrderStop, new NetDataFilterUnitOrder(battleData.id).And(new NetDataFilterType(typeof(UnitOrderStop))));
            NetDataEventManager.Instance.RegisterHandler(unitOrderMoveDataHandler);
            NetDataEventManager.Instance.RegisterHandler(unitOrderStopDataHandler);


            // Load players
            LoadBattleRequestData loadBattleRequestData = new LoadBattleRequestData()
            {
                battle = battleData
            };

            NetRequest request1 = NetRequest.CreateAndSend(player1.NetworkingClient.Connection, loadBattleRequestData, Channel.ReliableFragmented);
            NetRequest request2 = NetRequest.CreateAndSend(player2.NetworkingClient.Connection, loadBattleRequestData, Channel.ReliableFragmented);

            await Task.WhenAll(request1.WaitForResponse(), request2.WaitForResponse());

            bool player01Loaded = request1.response.GetDataOrDefault <bool>();
            bool player02Loaded = request2.response.GetDataOrDefault <bool>();

            if (player01Loaded == false || player02Loaded == false)
            {
                Log.Error(LogTag, $"Failed to start BattleSession for BattleData: {battleData}.");
                return;
            }

            // Start battle phases loop
            while (battlePhase != BattlePhase.BattleEnded)
            {
                StartPlanningPhase();
                await WaitForEndOfPhase();

                StartActionPhase();
                await WaitForEndOfPhase();

                if (battleData.unitsOnBoard.Count == 0)
                {
                    battlePhase = BattlePhase.BattleEnded;
                }
            }
        }