package handling.world;
import client.MapleClient;
import constants.ServerConstants;
import handling.cashshop.CashShopServer;
import handling.channel.ChannelServer;
import handling.channel.PlayerStorage;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import server.shops.HiredMerchant;
import tools.CollectionUtil;
public class World {
public static void init() {
WorldFindService.getInstance();
WorldBroadcastService.getInstance();
WrodlPartyService.getInstance();
WorldSidekickService.getInstance();
WorldBuddyService.getInstance();
WorldGuildService.getInstance();
WorldMessengerService.getInstance();
}
public static String getStatus() {
StringBuilder ret = new StringBuilder();
int totalUsers = 0;
for (ChannelServer cs : ChannelServer.getAllInstances()) {
ret.append("频道 ");
ret.append(cs.getChannel());
ret.append(": ");
int channelUsers = cs.getConnectedClients();
totalUsers += channelUsers;
ret.append(channelUsers);
ret.append(" 玩家\n");
}
ret.append("总计在线: ");
ret.append(totalUsers);
ret.append("\n");
return ret.toString();
}
public static Map<Integer, Integer> getConnected() {
Map ret = new LinkedHashMap();
int total = 0;
for (ChannelServer ch : ChannelServer.getAllInstances()) {
int chOnline = ch.getConnectedClients();
ret.put(ch.getChannel(), chOnline);
total += chOnline;
}
int csOnline = CashShopServer.getConnectedClients();
ret.put(-10, csOnline);
total += csOnline;
ret.put(0, total);
return ret;
}
public static List<CheaterData> getCheaters() {
List allCheaters = new ArrayList();
Collections.sort(allCheaters);
return CollectionUtil.copyFirst(allCheaters, 20);
}
public static List<CheaterData> getReports() {
List allCheaters = new ArrayList();
Collections.sort(allCheaters);
return CollectionUtil.copyFirst(allCheaters, 20);
}
public static boolean isConnected(String charName) {
return WorldFindService.getInstance().findChannel(charName) > 0;
}
public static void toggleMegaphoneMuteState() {
for (ChannelServer cs : ChannelServer.getAllInstances()) {
cs.toggleMegaphoneMuteState();
}
}
public static void ChannelChange_Data(CharacterTransfer Data, int characterid, int toChannel) {
getStorage(toChannel).registerPendingPlayer(Data, characterid);
}
public static boolean isCharacterListConnected(List<String> charName) {
for (ChannelServer cs : ChannelServer.getAllInstances()) {
for (String c : charName) {
if (cs.getPlayerStorage().getCharacterByName(c) != null) {
return true;
}
}
}
ChannelServer cs;
return false;
}
public static boolean hasMerchant(int accountID) {
for (ChannelServer cs : ChannelServer.getAllInstances()) {
if (cs.containsMerchant(accountID)) {
return true;
}
}
return false;
}
public static boolean hasMerchant(int accountID, int characterID) {
for (ChannelServer cs : ChannelServer.getAllInstances()) {
if (cs.containsMerchant(accountID, characterID)) {
return true;
}
}
return false;
}
public static HiredMerchant getMerchant(int accountID, int characterID) {
for (ChannelServer cs : ChannelServer.getAllInstances()) {
if (cs.containsMerchant(accountID, characterID)) {
return cs.getHiredMerchants(accountID, characterID);
}
}
return null;
}
public static PlayerStorage getStorage(int channel) {
if (channel == -10) {
return CashShopServer.getPlayerStorage();
}
return ChannelServer.getInstance(channel).getPlayerStorage();
}
public static int getPendingCharacterSize() {
int ret = CashShopServer.getPlayerStorage().pendingCharacterSize(); /*+ AuctionServer.getPlayerStorage().pendingCharacterSize()*///拍卖注释掉
for (ChannelServer cserv : ChannelServer.getAllInstances()) {
ret += cserv.getPlayerStorage().pendingCharacterSize();
}
return ret;
}
public static boolean isChannelAvailable(int ch) {
if ((ChannelServer.getInstance(ch) == null) || (ChannelServer.getInstance(ch).getPlayerStorage() == null)) {
return false;
}
return ChannelServer.getInstance(ch).getPlayerStorage().getConnectedClients() < (ch == 1 ? 600 : 400);
}
public static class Client {
private static final ArrayList<MapleClient> clients = new ArrayList();
public static void addClient(MapleClient c) {
if (!clients.contains(c)) {
clients.add(c);
}
}
public static boolean removeClient(MapleClient c) {
return clients.remove(c);
}
public static ArrayList<MapleClient> getClients() {
return clients;
}
}
}