コード例 #1
0
        private void StartObservingImpl(StartObservingReq req, StartObservingResp resp)
        {
            Team         team = Server.TeamRegistry.GetTeam(req.Auth.TeamName);
            GameDetails  gd   = Server.GameManager.GetGameDetails(req.GameId, team);
            GameViewInfo gv   = Server.GameManager.StartObserving(req.ObserverId, req.GameId, req.Auth.GetClientCode(), team);

            resp.GameDetails  = new EnGameDetails(gd);
            resp.Turn         = gv.Turn;
            resp.MapData      = new EnMapData(gv.Map);
            resp.PlayerStates = gv.PlayerStates.Select(ps => new EnPlayerState(ps)).ToArray();
        }
コード例 #2
0
 public StartObservingResp StartObserving(StartObservingReq req)
 {
     return(HandleServiceCall(req, new StartObservingResp(), StartObservingImpl));
 }
コード例 #3
0
        public async Task <Match> GetMatchAsync(int gameId)
        {
            using (var adminService = new AdminServiceClient(new BasicHttpBinding(), new EndpointAddress(ConnectionData.Url)))
            {
                int sequenceNumber = SequenceNumber;

                var req = new StartObservingReq
                {
                    Auth = new ReqAuth
                    {
                        ClientName     = ConnectionData.Username,
                        TeamName       = ConnectionData.TeamName,
                        SessionId      = _sessionId,
                        SequenceNumber = sequenceNumber,
                        AuthCode       =
                            GetAuthCode(string.Format("{0}:{1}:{2}:{3}{4}", ConnectionData.TeamName, ConnectionData.Username,
                                                      _sessionId, sequenceNumber, ConnectionData.Password)),
                    },
                    GameId     = gameId,
                    ObserverId = _observerId,
                };

                _stopwatch.Start();

                var resp = await adminService.StartObservingAsync(req);

                _stopwatch.Stop();
                LastCallTime = _stopwatch.ElapsedMilliseconds;
                _stopwatch.Reset();

                if (resp.Status != "OK")
                {
                    throw new Exception(resp.Message);
                }

                return(new Match
                {
                    Map = new Map
                    {
                        Rows = resp.MapData.Rows,
                        Width = resp.MapData.Width,
                        Height = resp.MapData.Height,
                        TecmanPosition = new Point(resp.TecmanPosition.Col, resp.TecmanPosition.Row),
                        GhostPositions = resp.GhostPositions.Select(p => new Point(p.Col, p.Row)).ToArray(),
                    },
                    Game = new Models.Game
                    {
                        GameId = resp.GameDetails.GameId,
                        Label = resp.GameDetails.Label,
                        State = resp.GameDetails.State,
                        Players = resp.GameDetails.Players.Select(p => new Player
                        {
                            GameId = p.GameId,
                            Name = p.Name,
                            Team = p.Team,
                            PlayerId = p.PlayerId,
                        })
                    },
                    PlayerStates = resp.PlayerStates.Select(p => new PlayerState
                    {
                        Condition = p.Condition,
                        //Position = new Point(p.Position.Col, p.Position.Row),
                    }).ToList(),
                });
            }
        }