public String Connect(Guid playerId) { //TODO: Check duplicates var callback = OperationContext.Current.GetCallbackChannel <IGameServiceCallback>(); String session = OperationContext.Current.SessionId; CServerPlayer player = _players.Single(p => p.PlayerInfo.Id == playerId); player.Callback = callback; player.Session = session; player.Status = EGameStatus.PlayerSelecting; return(session); }
public void SelectHero(CHeroBase hero) { CServerPlayer player = GetPlayer(); player.Hero = hero; player.Status = EGameStatus.PlayerSelected; if (_players.All(p => p.Status == EGameStatus.PlayerSelected)) { var i = 0; CMap map = _serverMap.GetMap(); foreach (CServerPlayer playerCallback in _players) { i++; _serverMap.Spawn(playerCallback.Hero, i, i); } foreach (CServerPlayer playerCallback in _players) { playerCallback.Callback.GameHasStarted(map, playerCallback.Hero); } StartNewRound(); } }