From 06741f2a55ea0dd3a068a25751a4e32f982e92cc Mon Sep 17 00:00:00 2001 From: qornwh1 Date: Sun, 8 Mar 2026 22:01:55 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=ED=8C=8C=ED=8B=B0=EB=A7=A4=EB=8B=88?= =?UTF-8?q?=EC=A0=80=20=EC=B1=84=EB=84=90=EC=97=90=20=EC=A2=85=EC=86=8D?= =?UTF-8?q?=EB=90=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MMOTestServer/MMOserver/Game/Channel/Channel.cs | 10 ++++++++++ MMOTestServer/MMOserver/Game/GameServer.cs | 13 ++++++++++++- MMOTestServer/MMOserver/Game/Party/PartyManager.cs | 2 +- 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/MMOTestServer/MMOserver/Game/Channel/Channel.cs b/MMOTestServer/MMOserver/Game/Channel/Channel.cs index 944178f..cc6996f 100644 --- a/MMOTestServer/MMOserver/Game/Channel/Channel.cs +++ b/MMOTestServer/MMOserver/Game/Channel/Channel.cs @@ -1,5 +1,6 @@ using LiteNetLib; using MMOserver.Game.Channel.Maps; +using MMOserver.Game.Party; namespace MMOserver.Game.Channel; @@ -8,6 +9,9 @@ public class Channel // 로비 private Robby robby = new Robby(); + // 파티 + private PartyManager partyManager = new PartyManager(); + // 채널 내 유저 상태 (hashKey → Player) private Dictionary connectUsers = new Dictionary(); @@ -97,4 +101,10 @@ public class Channel { return robby; } + + // 파티매니저 가져옴 + public PartyManager GetPartyManager() + { + return partyManager; + } } diff --git a/MMOTestServer/MMOserver/Game/GameServer.cs b/MMOTestServer/MMOserver/Game/GameServer.cs index 95b769b..80e95be 100644 --- a/MMOTestServer/MMOserver/Game/GameServer.cs +++ b/MMOTestServer/MMOserver/Game/GameServer.cs @@ -468,7 +468,15 @@ public class GameServer : ServerBase private void OnRequestParty(NetPeer peer, int hashKey, byte[] payload) { RequestPartyPacket req = Serializer.Deserialize(new ReadOnlyMemory(payload)); - PartyManager pm = PartyManager.Instance; + + ChannelManager cm = ChannelManager.Instance; + int channelId = cm.HasUser(hashKey); + if (channelId < 0) + { + return; + } + + PartyManager pm = cm.GetChannel(channelId).GetPartyManager(); switch (req.Type) { @@ -525,7 +533,10 @@ public class GameServer : ServerBase }; byte[] data = PacketSerializer.Serialize((ushort)PacketCode.UPDATE_PARTY, notify); if (party != null) + { BroadcastToUsers(party.PartyMemberIds, data); // 남은 멤버들에게 + } + SendTo(peer, data); // 탈퇴자 본인에게 break; } diff --git a/MMOTestServer/MMOserver/Game/Party/PartyManager.cs b/MMOTestServer/MMOserver/Game/Party/PartyManager.cs index 41f5b7e..5b33445 100644 --- a/MMOTestServer/MMOserver/Game/Party/PartyManager.cs +++ b/MMOTestServer/MMOserver/Game/Party/PartyManager.cs @@ -2,7 +2,7 @@ using MMOserver.Utils; namespace MMOserver.Game.Party; -public class PartyManager : Singleton +public class PartyManager { private readonly UuidGenerator partyUuidGenerator = new UuidGenerator();