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(); }
public StartObservingResp StartObserving(StartObservingReq req) { return(HandleServiceCall(req, new StartObservingResp(), StartObservingImpl)); }
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(), }); } }