using Google.Protobuf; using Google.Protobuf.WellKnownTypes; using ServerCore; using ServerBase; using ServerCommon; using ServerCommon.BusinessLogDomain; using MetaAssets; namespace GameServer; public class GameChannel { public Int32 channel = 0; public Int32 trafficlevel = 0; } public class ChannelManager { public List m_channels = new List(1000); public ChannelManager() { } public async Task updateChannels() { m_channels.Clear(); var server_logic = GameServerApp.getServerLogic(); (var result, var server_infos) = await server_logic.getServerInfosByServerType(ServerType.Channel, server_logic.getWorldId()); foreach (var channel in server_infos) { if (GameServerApp.getServerLogic().getWorldId() != channel.WorldId) continue; GameChannel gameChannel = new GameChannel(); gameChannel.channel = channel.Channel; var curr_users = channel.Sessions + channel.Reservation + channel.ReturnCount; gameChannel.trafficlevel = getTrafficLevel(curr_users, channel.Capacity); m_channels.Add(gameChannel); } } public List getWholeChannels() { return m_channels; } public int getTrafficLevel(int CurUser, int MaxUser) { double trafficPercent = (double)CurUser / (double)MaxUser * (double)100; int trafficLevel = 0; if (0 <= trafficPercent && trafficPercent < 80.0f) { trafficLevel = 0; } else if (80.0f <= trafficPercent && trafficPercent < 100.0f) { trafficLevel = 1; } else if (100.0f <= trafficPercent) { trafficLevel = 2; } return trafficLevel; } }