コード例 #1
0
ファイル: Lobby_Plugin.cs プロジェクト: Trithilon/UDRMS
        private void ClientConnected(object sender, ClientConnectedEventArgs e)
        {
            e.Client.MessageReceived += MessageReceived;
            Lobby_Player lP = new Lobby_Player(e.Client);

            players.Add(e.Client, lP);

            using (Message m = Message.CreateEmpty(UDRMS_Tags.connectedToMS))
                e.Client.SendMessage(m, SendMode.Reliable);
        }
コード例 #2
0
ファイル: Lobby_Plugin.cs プロジェクト: Trithilon/UDRMS
        //private bool playerIsOnAMatch(Lobby_Player lobby_Player)
        //{
        //    foreach (var item in matchs.Values)
        //    {
        //        if (item.matchPlayers.Contains(lobby_Player))
        //            return true;
        //    }
        //    return false;
        //}

        void CreateMatch(Lobby_Player matchOwner, ushort maxPlayersInMatch)
        {
            matchsCount++;
            if (matchs.ContainsKey(matchsCount))
            {
                matchsCount++;
            }

            Lobby_Match match = new Lobby_Match(matchsCount, maxPlayersInMatch, matchOwner);

            match.JoinMatch(matchOwner.client, true);

            matchs.Add(matchsCount, match);
        }
コード例 #3
0
ファイル: LobbyManager.cs プロジェクト: m1ur4soft/BankBattle
 /*-----------------------------------------------------------------------------------*/
 // プレイヤーリストに追加
 public void AddPlayer(GameObject player)
 {
     // ローカルプレイヤーではないならリストに追加する
     if (!player.GetComponent <Lobby_Player>().isLocalPlayer)
     {
         // 順序を設定しリストに追加
         int order = GetPlayerOrder();
         players.Insert(order, player);
         player.GetComponent <Lobby_Player>().nOrder = order;
         // UIアイコンに適用
         iconManager.SetUsingIcons(true, order);
         iconManager.SetReadyIcons(player.GetComponent <Lobby_Player>().isReady, order);
         iconManager.SetIsHost(player.GetComponent <Lobby_Player>().isHost, order);
     }
     else // ローカルプレイヤーならリストには追加せず、保持する。
     {
         localPlayer = player.GetComponent <Lobby_Player>();
     }
 }
コード例 #4
0
ファイル: LobbyManager.cs プロジェクト: m1ur4soft/BankBattle
    // プレイヤーアイコンの準備状態を設定する
    public void SetPlayerIconReady(Lobby_Player player)
    {
        int order = player.gameObject.GetComponent <Lobby_Player>().nOrder;

        iconManager.SetReadyIcons(player.isReady, order);
    }
コード例 #5
0
ファイル: Lobby_Plugin.cs プロジェクト: Trithilon/UDRMS
        private void MessageReceived(object sender, MessageReceivedEventArgs e)
        {
            using (Message message = e.GetMessage() as Message)
            {
                using (DarkRiftReader r = message.GetReader())
                {
                    if (message.Tag == UDRMS_Tags.getLobbyMatchs)
                    {
                        GetLobbyRequestAndSend(e, r);
                    }
                    if (message.Tag == UDRMS_Tags.connectLobbyMatch)
                    {
                        ushort matchToJoin = r.ReadUInt16();

                        bool canJoin = matchs[matchToJoin].AddPlayerToMatch(players[e.Client]);

                        matchs[matchToJoin].JoinMatch(e.Client, canJoin);
                    }
                    if (message.Tag == UDRMS_Tags.createLobbyMatch)
                    {
                        foreach (Lobby_Match match in matchs.Values)
                        {
                            if (match.matchOwner == players[e.Client])
                            {
                                //TODO: With Host is Already created a Match Destroy Current Match
                                return;
                            }
                        }
                        CreateMatch(players[e.Client], maxPlayersPerMatch);
                    }
                    if (message.Tag == UDRMS_Tags.refreshLobbyMatchs)
                    {
                        using (DarkRiftWriter w = DarkRiftWriter.Create())
                        {
                            ushort totalLobbyPages = GetLobbyPages();
                            w.Write(totalLobbyPages);
                            using (Message m = Message.Create(UDRMS_Tags.refreshLobbyMatchs, w))
                                e.Client.SendMessage(m, SendMode.Reliable);
                        }
                    }
                    if (message.Tag == UDRMS_Tags.getLobbyMatchInfo)
                    {
                        Lobby_Player lobby_Player = players[e.Client];

                        if (lobby_Player.getCurrentMatch() != null)
                        {
                            //TODO: connect to match
                            Lobby_Match.SendToPlayerLobbyMatchInformation(lobby_Player);
                        }
                        else
                        {
                            //TODO: Send Player to Lobby or Do Nothing or Send Refresh
                        }
                    }
                    if (message.Tag == UDRMS_Tags.LoginInfo)
                    {
                        string playerName = r.ReadString();
                        players[e.Client].playerName = playerName;

                        //TODO: Can Login
                        bool canLogin = true;
                        using (DarkRiftWriter w = DarkRiftWriter.Create())
                        {
                            w.Write(canLogin);
                            using (Message m = Message.Create(UDRMS_Tags.LoginInfo, w))
                                e.Client.SendMessage(m, SendMode.Reliable);
                        }
                    }
                }
            }
        }
コード例 #6
0
ファイル: Player_Manager.cs プロジェクト: Trithilon/UDRMS
 public void SetPlayer(Lobby_Player lby_Player)
 {
     this.lobby_Player = lby_Player;
 }
コード例 #7
0
 /*-----------------------------------------------------------------------------------*/
 // ローカルプレイヤーを設定
 public void SetLocalPlayer(Lobby_Player _Player)
 {
     localPlayer = _Player;
 }