Esempio n. 1
0
        public LobbyMember(HanksiteSession session, LobbyManager lobby)
        {
            this.session = session;
            this.lobby   = lobby;

            this.session.LobbyMember = this;
        }
Esempio n. 2
0
        public RealPlayer(HanksiteSession session, GameManager game) : base(session.User, game)
        {
            this.session = session;
            session.SendGameStarted();

            this.isClientReady = false;

            session.RealPlayer = this;
        }
Esempio n. 3
0
        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);
            }
        }
Esempio n. 4
0
        /// <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);
        }
Esempio n. 5
0
        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);
            }
        }
Esempio n. 6
0
        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);
            }
        }
Esempio n. 7
0
        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);
            }
        }
Esempio n. 8
0
        public RealPlayer(HanksiteSession session, DisconnectedPlayer player) : base(player)
        {
            this.session = session;

            session.RealPlayer = this;
        }
Esempio n. 9
0
 public static LobbyManager CreateLobbyManager(HanksiteSession ownerSession, LobbySettings settings)
 {
     return(new LobbyManager(ownerSession, settings, new LobbyMemberFactory(), new LobbyManagerRepositoryDependecies()));
 }
Esempio n. 10
0
 public ILobbyMember CreateLobbyMember(HanksiteSession session, LobbyManager lobbyManager)
 {
     return(new LobbyMember(session, lobbyManager));
 }