namespace MMOserver.Game.Channel; public class ChannelManager { // 일단은 채널은 서버 켤때 고정으로간다 1개 public static ChannelManager Instance { get; } = new ChannelManager(); // 채널 관리 private List channels = new List(); // 채널별 유저 관리 (유저 key, 채널 val) private Dictionary connectUsers = new Dictionary(); public ChannelManager() { Initializer(); } public void Initializer(int channelSize = 1) { for (int i = 0; i < channelSize; i++) { channels.Add(new Channel(i)); } } public Channel GetChannel(int channelId) { return channels[channelId]; } public List GetChannels() { return channels; } public void AddUser(int channelId, long userId, Player player) { // 유저 추가 connectUsers[userId] = channelId; // 채널에 유저 추가 channels[channelId].AddUser(userId, player); } public bool RemoveUser(long userId) { // 채널 있으면 int channelId = connectUsers[userId]; // 날린다. if (channelId >= 0) { channels[channelId].RemoveUser(userId); connectUsers.Remove(userId); return true; } return false; } public int HasUser(long userId) { int channelId = -1; if (connectUsers.ContainsKey(userId)) { channelId = connectUsers[userId]; } if (channelId != -1) { return channels[channelId].HasUser(userId); } return channelId; } public Dictionary GetConnectUsers() { return connectUsers; } }