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); }
//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); }
/*-----------------------------------------------------------------------------------*/ // プレイヤーリストに追加 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>(); } }
// プレイヤーアイコンの準備状態を設定する public void SetPlayerIconReady(Lobby_Player player) { int order = player.gameObject.GetComponent <Lobby_Player>().nOrder; iconManager.SetReadyIcons(player.isReady, order); }
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); } } } } }
public void SetPlayer(Lobby_Player lby_Player) { this.lobby_Player = lby_Player; }
/*-----------------------------------------------------------------------------------*/ // ローカルプレイヤーを設定 public void SetLocalPlayer(Lobby_Player _Player) { localPlayer = _Player; }