public LobbyMember(HanksiteSession session, LobbyManager lobby) { this.session = session; this.lobby = lobby; this.session.LobbyMember = this; }
public RealPlayer(HanksiteSession session, GameManager game) : base(session.User, game) { this.session = session; session.SendGameStarted(); this.isClientReady = false; session.RealPlayer = this; }
public bool CreateLobby(HanksiteSession ownerSession, LobbySettings settings) { lock (syncObject) { if (lobbyManagers.Any(manager => manager.Name == settings.Name)) { return(false); } lobbyManagers.Add(LobbyManager.CreateLobbyManager(ownerSession, settings)); return(true); } }
/// <summary> /// Do NOT use, only for tests. /// </summary> public LobbyManager(HanksiteSession ownerSession, LobbySettings settings, ILobbyMemberFactory lobbyMemberFactory, ILobbyManagerRepositoryDependencies repositoryDependencies) { this.lobbyMemberFactory = lobbyMemberFactory; this.repositoryDependencies = repositoryDependencies; this.owner = lobbyMemberFactory.CreateLobbyMember(ownerSession, this); this.settings = settings; this.numberOfPlayers = settings.NumberOfPlayers - settings.BotNumbers.Sum(botNumber => botNumber.Number); this.connectedPlayers = new List <ILobbyMember>(); this.connectedPlayers.Add(owner); }
public bool ConnectPlayer(HanksiteSession playerSession) { lock (syncObject) { if (connectedPlayers.Count == numberOfPlayers) { return(false); } ILobbyMember newMember = lobbyMemberFactory.CreateLobbyMember(playerSession, this); connectedPlayers.Add(newMember); sendMembersSnapshot(newMember); return(true); } }
public LobbySettingsWithMembersSnapshot ConnectToLobby(HanksiteSession playerSession, string lobbyName) { lock (syncObject) { LobbyManager lobbyManager = lobbyManagers.SingleOrDefault(lobby => lobby.Name == lobbyName); if (lobbyManager == null) { return(null); } if (!lobbyManager.ConnectPlayer(playerSession)) { return(null); } return(lobbyManager.Snapshot); } }
public Common.Game.GameSnapshot ReconnectToGame(HanksiteSession hanksiteSession) { lock (syncObject) { if (isGameOver) { return(null); } int playerNum = players.FindIndex(player => player.ID == hanksiteSession.User.ID); if (playerNum == -1) { return(null); } players[playerNum] = new RealPlayer(hanksiteSession, players[playerNum] as DisconnectedPlayer); sendToAllPlayers(player => player.SendGamePlayersSnapshot(), players[playerNum]); return(Snapshot); } }
public RealPlayer(HanksiteSession session, DisconnectedPlayer player) : base(player) { this.session = session; session.RealPlayer = this; }
public static LobbyManager CreateLobbyManager(HanksiteSession ownerSession, LobbySettings settings) { return(new LobbyManager(ownerSession, settings, new LobbyMemberFactory(), new LobbyManagerRepositoryDependecies())); }
public ILobbyMember CreateLobbyMember(HanksiteSession session, LobbyManager lobbyManager) { return(new LobbyMember(session, lobbyManager)); }