コード例 #1
0
        public void AddPlayerToLobbyFromManager()
        {
            string        nick         = "default";
            DeckSettings  deckSettings = new DeckSettings();
            ILobbyManager lobbyManager = new LobbyManager();
            var           lobbyId      = Guid.Empty;

            lobbyId = lobbyManager.AddPlayer("0", GameType.Usual, 4, nick);
            for (int i = 1; i < 4; i++)
            {
                var returnedId = lobbyManager.AddPlayer(i.ToString(), GameType.Usual, 4, nick);
                Assert.IsTrue(returnedId.Equals(lobbyId));
            }
            var newLobbyId = lobbyManager.AddPlayer("5", GameType.Usual, 4, nick);

            Assert.IsFalse(newLobbyId.Equals(lobbyId));
            var lobbyIdForCustomGame = lobbyManager.AddPlayer("6", GameType.Custom, 4, nick);

            Assert.IsFalse(lobbyId.Equals(lobbyIdForCustomGame) && lobbyIdForCustomGame.Equals(newLobbyId));
            var lobbyIdWithNewSizeAndGameTypeIsUsual = lobbyManager.AddPlayer("7", GameType.Usual, 5, nick);

            Assert.IsFalse(lobbyIdWithNewSizeAndGameTypeIsUsual.Equals(lobbyIdForCustomGame) &&
                           lobbyIdWithNewSizeAndGameTypeIsUsual.Equals(newLobbyId) &&
                           lobbyIdWithNewSizeAndGameTypeIsUsual.Equals(lobbyId));
        }
コード例 #2
0
ファイル: Server.cs プロジェクト: eXperion17/SaveTheAce
    void OnClientConnected(NetworkMessage netMessage)
    {
        // Do stuff when a client connects to this server

        //Add dummy
        lobbyManager.AddPlayer(new ConnectedPlayer(netMessage.conn.connectionId, AceRules.Unnamed_Player, true), netMessage.conn.connectionId);
    }
コード例 #3
0
    private LobbyManager _lobbyManager = null; // ロビーマネージャー

    /*-----------------------------------------------------------------------------------*/
    void Start()
    {
        // ロビーで不必要なコンポーネントを非アクティブにする
        this.GetComponent <Game_PlayerControl>().enabled = false;

        // ロビーマネージャーの取得と自身をリストに追加
        _lobbyManager = GameObject.Find("LobbyManager").GetComponent <LobbyManager>();
        _lobbyManager.AddPlayer(this.gameObject);
    }
コード例 #4
0
    //------------------------------------------------------------------------------------------------------------------------------
    //Event Calls
    //------------------------------------------------------------------------------------------------------------------------------
    #region
    //public override void OnLobbyServerConnect(NetworkConnection conn)
    //{
    //    if (!((LobbyManager)lobbyManager).GetBeenInitialized())
    //    {
    //        lobbyManager.Init();
    //    }

    //    Debug.Log("LOBBY SERVER CONNECT");
    //    lobbyManager.AddPlayer(conn);

    //    base.OnLobbyServerConnect(conn);
    //}

    //public override void OnServerConnect(NetworkConnection conn)
    //{
    //    base.OnServerConnect(conn);

    //    Debug.LogWarning("SERVER CONNECT");
    //    if (!((LobbyManager)lobbyManager).GetBeenInitialized())
    //    {
    //        lobbyManager.Init();
    //    }

    //    lobbyManager.AddPlayer(conn);
    //}

    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        base.OnServerAddPlayer(conn, playerControllerId);

        if (!((LobbyManager)lobbyManager).GetBeenInitialized())
        {
            lobbyManager.Init();
        }

        Debug.Log("PLAYER ADDED");
        lobbyManager.AddPlayer(conn);
    }
コード例 #5
0
        public void AddPlayerWithAnotherNickName()
        {
            //arrange
            string        nick         = "default";
            DeckSettings  deckSettings = new DeckSettings();
            ILobbyManager lobbyManager = new LobbyManager();
            var           lobbyToken   = Guid.Empty;
            var           players      = new[] { new Player("1", nick),
                                                 new Player("2", nick),
                                                 new Player("3", nick),
                                                 new Player("4", nick), };

            foreach (var player in players)
            {
                lobbyToken = lobbyManager.AddPlayer(player.Token, GameType.Usual, 4, player.NickName);
            }
            //Act
            var tokenFromManager = lobbyManager.AddPlayer("5", GameType.Usual, 4, nick);

            Assert.IsFalse(tokenFromManager.Equals(lobbyToken));
        }
コード例 #6
0
ファイル: Server.cs プロジェクト: f13rce/SaveTheAce
    void OnJoinLobby(NetworkMessage netMessage)
    {
        var player = netMessage.ReadMessage <JoinLobbyMessage>();

        lobbyManager.AddPlayer(new ConnectedPlayer(netMessage.conn.connectionId, player.playerName, player.isPlayer), netMessage.conn.connectionId);

        //Send confirmation back to client
        var confirmation = new LobbyJoinedSuccessfulMessage();

        confirmation.successful         = true;
        confirmation.clientConnectionID = netMessage.conn.connectionId;
        NetworkServer.SendToClient(netMessage.conn.connectionId, AceMsgTypes.LobbyJoinedSuccessful, confirmation);

        //Send the updated lobby list to everyone connected
        var lobbyUpdate = new LobbyUpdateMessage();

        lobbyUpdate.connectedPlayers = lobbyManager.ParseToString();
        NetworkServer.SendToAll(AceMsgTypes.LobbyInfoUpdate, lobbyUpdate);
    }
コード例 #7
0
    private void Update()
    {
        if (GameState == GameStates.Lobby)
        {
            foreach (var player in Server.Players)
            {
                if (LobbyManager.ContainsPlayer(player))
                {
                    LobbyManager.UpdatePlayer(player);
                }
                else
                {
                    LobbyManager.AddPlayer(player);
                }
            }

            var removePlayer = LobbyManager.GetDisconnectedPlayer(Server.Players);
            foreach (var player in removePlayer)
            {
                LobbyManager.RemovePlayer(player);
            }
        }
        else
        {
            foreach (var item in Server.Players)
            {
                var a = _playerAchievements[item];

                if (a.IsAchieved())
                {
                    var cmd = new Command(item, "MISSION", a.Name + "\n" + a.Description + ";SUCC");
                    Server.SendPlayerMessage(item, cmd);

                    a = Achievements.GetNextAchievement(item.Id, a);
                    _playerAchievements[item] = a;

                    cmd = new Command(item, "MISSION", a.Name + "\n" + a.Description);
                    Server.SendPlayerMessage(item, cmd);
                }
            }
        }
    }
コード例 #8
0
ファイル: Misc.cs プロジェクト: ConnorW1998/Slab
        public async Task Test([Remainder] string arg = "")
        {
            SocketUser author = Context.Message.Author;

            string[] args = arg.Split(' '); //! Seperate multiple args

            var embed = new EmbedBuilder();

            embed.WithTitle("Lobby Message:");
            embed.WithColor(new Color(0, 255, 0));

            if (args[0].ToLower() == "create" || args[0].ToLower() == "new")
            {
                Lobby createdLobby = new Lobby
                {
                    Owner          = author,
                    PlayerCapacity = 10,
                    Players        = new List <SocketUser>()
                };
                LobbyManager.AddPlayer(createdLobby, author);

                try
                {
                    if (args[1] != null)
                    {
                        LobbyManager.ChangeTitle(args[1], author);
                    }
                }
                catch (IndexOutOfRangeException)
                {
                    LobbyManager.ChangeTitle($"{author.Username}'s lobby", author);
                }

                List <SocketUser> additionalPlayers = null;
                if (Context.Message.MentionedUsers.Count >= 1)
                {
                    additionalPlayers = new List <SocketUser>();
                    foreach (SocketUser su in Context.Message.MentionedUsers)
                    {
                        additionalPlayers.Add(su);
                    }
                }

                try
                {
                    if (args[2] != null)
                    {
                        LobbyManager.SetCapacity(author, Convert.ToInt32(args[2]));
                    }
                    embed.WithDescription($"Created lobby: {createdLobby.GameTitle}");
                    embed.WithFooter($"{createdLobby.CurrentPlayers} / {createdLobby.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
                catch
                {
                    LobbyManager.SetCapacity(author, 10);
                    embed.WithDescription($"Created lobby: {createdLobby.GameTitle}");
                    embed.WithFooter($"{createdLobby.CurrentPlayers} / {createdLobby.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
            }
            if (args[0].ToLower() == "join")
            {
                if (Context.Message.MentionedUsers.Count >= 1)
                {
                    try
                    {
                        Lobby target = LobbyManager.FindLobby(Context.Message.MentionedUsers.FirstOrDefault <SocketUser>());
                        LobbyManager.AddPlayer(target, author);

                        embed.WithDescription($"{author.Username} joined {target.Owner.Username}'s lobby: {target.GameTitle}");
                        embed.AddInlineField("In-lobby players:", target.Players);
                        embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                    }
                    catch (NullReferenceException)
                    {
                        await Context.Channel.SendMessageAsync("No lobby exists! Creating new lobby.");

                        List <SocketUser> additionalPlayers = null;

                        if (Context.Message.MentionedUsers.Count >= 1)
                        {
                            additionalPlayers = new List <SocketUser>();
                            foreach (SocketUser su in Context.Message.MentionedUsers)
                            {
                                additionalPlayers.Add(su);
                            }
                        }

                        LobbyManager.AddLobby(author, $"{author.Username}'s lobby", additionalPlayers);
                        Lobby target = LobbyManager.FindLobby(author);

                        embed.WithDescription($"{author.Username} created a lobby.");
                        embed.AddInlineField("In-lobby players:", target.Players);
                        embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                    }
                }
                else
                {
                    try
                    {
                        Lobby target = LobbyManager.FindLobby(args[1]);
                        LobbyManager.AddPlayer(target, author);

                        embed.WithDescription($"{author.Username} joined {target.Owner.Username}'s lobby: {target.GameTitle}");
                        embed.AddInlineField("In-lobby players:", target.Players);
                        embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                    }
                    catch (NullReferenceException)
                    {
                        await Context.Channel.SendMessageAsync("No lobby exists! Creating new lobby.");

                        List <SocketUser> additionalPlayers = null;

                        if (Context.Message.MentionedUsers.Count >= 1)
                        {
                            additionalPlayers = new List <SocketUser>();
                            foreach (SocketUser su in Context.Message.MentionedUsers)
                            {
                                additionalPlayers.Add(su);
                            }
                        }

                        LobbyManager.AddLobby(author, args[1], additionalPlayers);
                        Lobby target = LobbyManager.FindLobby(author);

                        embed.WithDescription($"{author.Username} created a lobby.");
                        embed.AddInlineField("In-lobby players:", target.Players);
                        embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                    }
                }
            }
            if (args[0].ToLower() == "leave" || args[0].ToLower() == "exit")
            {
                try
                {
                    Lobby target = LobbyManager.FindLobby(author);
                    LobbyManager.RemovePlayer(target, author);

                    embed.WithDescription($"{author.Username} left {target.Owner.Username}'s lobby: {target.GameTitle}");
                    embed.AddInlineField("In-lobby players:", target.Players);
                    embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
                catch (NullReferenceException)
                {
                    await Context.Channel.SendMessageAsync("You're not in a lobby!");
                }
            }
            if (args[0].ToLower() == "edit" || args[0].ToLower() == "change")
            {
                Lobby target = LobbyManager.FindLobby(author);
                if (args[1].ToLower() == "cap" || args[1].ToLower() == "capacity")
                {
                    LobbyManager.SetCapacity(author, Convert.ToInt32(args[2]));

                    embed.WithDescription($"{author.Username} changed his lobby's capacity to: {target.PlayerCapacity}");
                    embed.AddInlineField("In-lobby players:", target.Players);
                    embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
                else if (args[1].ToLower() == "name" || args[1].ToLower() == "title")
                {
                    LobbyManager.ChangeTitle(args[2], author);

                    embed.WithDescription($"{author.Username} changed his lobby's title to: {target.GameTitle}");
                    embed.AddInlineField("In-lobby players:", target.Players);
                    embed.WithFooter($"{target.CurrentPlayers} / {target.PlayerCapacity} users", "https://i.imgur.com/9Y0vuCO.png");
                }
            }
            await Context.Channel.SendMessageAsync("", false, embed);
        }