コード例 #1
0
        private void WaitNextTurnImpl(WaitNextTurnReq req, WaitNextTurnResp resp)
        {
            WaitTurnInfo wi = Server.GameManager.WaitNextTurn(req.PlayerId, req.RefTurn, req.Auth.GetClientCode(), DateTime.Now);

            resp.TurnComplete    = wi.TurnComplete;
            resp.GameFinished    = wi.GameFinished;
            resp.FinishCondition = wi.FinishCondition.ToString();
            resp.FinishComment   = wi.FinishComment;
        }
コード例 #2
0
        public WaitNextTurnResp WaitNextTurn(int playerId, int refTurn)
        {
            var addr = _serverUrl + "/ClientService.svc/json/WaitNextTurn";
            var createPlayerRequest = new WaitNextTurnReq()
            {
                PlayerId = playerId,
                RefTurn  = refTurn,
                Auth     = GetAuth()
            };
            var            data       = Newtonsoft.Json.JsonConvert.SerializeObject(createPlayerRequest);
            var            response   = RestHelper.SendPost(new Uri(addr), data);
            JsonSerializer serializer = new JsonSerializer();

            using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
            {
                return((WaitNextTurnResp)serializer.Deserialize(streamReader, typeof(WaitNextTurnResp)));
            }
        }
コード例 #3
0
        public bool WaitNextTurn()
        {
            var req = new WaitNextTurnReq
            {
                Auth = new ReqAuth
                {
                    TeamName       = Settings.TeamName,
                    AuthCode       = Settings.AuthCode,
                    ClientName     = Settings.UserName,
                    SequenceNumber = Settings.SequenceNumber,
                    SessionId      = Settings.SessionId
                },
                PlayerId = Settings.PlayerId,
                RefTurn  = Settings.Turn
            };

            while (true)
            {
                req.Auth.AuthCode       = Settings.AuthCode;
                req.Auth.SequenceNumber = Settings.SequenceNumber;
                req.RefTurn             = Settings.Turn;

                Console.WriteLine($"WaitNextTurn RefTurn={req.RefTurn}");
                var waitNextTurnResp = Program.ServiceCallInvoker.InvokeAsync <WaitNextTurnReq, WaitNextTurnResp>(Settings.ServerUrl.TrimEnd('/') + "/json/WaitNextTurn", req).Result;
                Settings.SequenceNumber++;

                if (waitNextTurnResp.IsOk())
                {
                    if (waitNextTurnResp.GameFinished)
                    {
                        return(false);
                    }

                    if (waitNextTurnResp.TurnComplete)
                    {
                        return(true);
                    }
                }
                else
                {
                    throw new ApplicationException("WaitNextTurn() Failed");
                }
            }
        }
コード例 #4
0
        private async Task <WaitNextTurnResp> WaitNextTurn()
        {
            var waitNextTurnReq = new WaitNextTurnReq
            {
                Auth = new ReqAuth
                {
                    TeamName       = TeamName,
                    AuthCode       = AuthCode,
                    ClientName     = Username,
                    SequenceNumber = SequenceNumber,
                    SessionId      = SessionId
                },
                PlayerId = PlayerId,
                RefTurn  = Turn
            };

            var waitNextTurnResp = await ServiceCallInvoker.InvokeAsync <WaitNextTurnReq, WaitNextTurnResp>(ServiceUrl.TrimEnd('/') + "/json/WaitNextTurn", waitNextTurnReq);

            CommonDataManager.SequenceNumber++;
            return(waitNextTurnResp);
        }
コード例 #5
0
 public WaitNextTurnResp WaitNextTurn(WaitNextTurnReq req)
 {
     return(HandleServiceCall(req, new WaitNextTurnResp(), WaitNextTurnImpl));
 }