package handling.login; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import provider.MapleData; import provider.MapleDataProvider; import provider.MapleDataProviderFactory; import provider.MapleDataTool; import tools.Triple; public class LoginInformationProvider { private static final LoginInformationProvider instance = new LoginInformationProvider(); protected List<String> ForbiddenName = new ArrayList(); protected List<String> Curse = new ArrayList(); protected List<Integer> makeCharInfoItemIds = new ArrayList(); protected Map<Triple<Integer, Integer, Integer>, List<Integer>> makeCharInfo = new HashMap(); public static LoginInformationProvider getInstance() { return instance; } protected LoginInformationProvider() { MapleDataProvider prov = MapleDataProviderFactory.getDataProvider(new File(System.getProperty("wzpath", "wz") + "/Etc.wz")); MapleData nameData = prov.getData("ForbiddenName.img"); for (MapleData data : nameData.getChildren()) { this.ForbiddenName.add(MapleDataTool.getString(data)); } nameData = prov.getData("Curse.img"); for (MapleData data : nameData.getChildren()) { this.Curse.add(MapleDataTool.getString(data).split(",")[0]); this.ForbiddenName.add(MapleDataTool.getString(data).split(",")[0]); } MapleData infoData = prov.getData("MakeCharInfo.img"); List our; for (MapleData dat : infoData) { if ((dat.getName().endsWith("Male")) || (dat.getName().endsWith("Female")) || (dat.getName().endsWith("Adventurer")) || (dat.getName().equals("10112_Dummy"))) { continue; } int type; if (dat.getName().equals("000_1")) { type = JobType.getById(1).type; } else { if (dat.getName().equals("3001_Dummy")) { type = JobType.getById(6).type; } else { type = JobType.getById(Integer.parseInt(dat.getName())).type; } } for (MapleData d : dat) { if (d.getName().equals(d.getName())) { continue; } int gender = 0; if ((d.getName().equals("male")) || (d.getName().startsWith("male"))) { gender = 0; } else if ((d.getName().equals("female")) || (d.getName().startsWith("female"))) { gender = 1; } for (MapleData da : d) { Triple key = new Triple(Integer.valueOf(gender), Integer.valueOf(Integer.parseInt(da.getName())), Integer.valueOf(type)); our = (List) this.makeCharInfo.get(key); if (our == null) { our = new ArrayList(); this.makeCharInfo.put(key, our); } for (MapleData dd : da) { if (!dd.getName().equals("name")) { our.add(MapleDataTool.getInt(dd, -1)); } } } } } // int type; // int gender; // List our; for (MapleData data : infoData) { if (data.getName().equalsIgnoreCase("UltimateAdventurer")) { continue; } if ((data.getName().endsWith("Male")) || (data.getName().endsWith("Female"))) { for (MapleData dat : data) { for (MapleData da : dat) { int itemId = MapleDataTool.getInt(da, -1); if ((itemId > 1000000) && (!this.makeCharInfoItemIds.contains(itemId))) { this.makeCharInfoItemIds.add(itemId); } } } } else { for (MapleData dat : data) { if ((dat.getName().startsWith("male")) || (dat.getName().startsWith("female"))) { for (MapleData da : dat) { for (MapleData dd : da) { if (!dd.getName().equals("name")) { int itemId = MapleDataTool.getInt(dd, -1); if ((itemId > 1000000) && (!this.makeCharInfoItemIds.contains(itemId))) { this.makeCharInfoItemIds.add(itemId); } } } } } } } } } public boolean isForbiddenName(String in) { for (String name : this.ForbiddenName) { if (in.toLowerCase().contains(name.toLowerCase())) { return true; } } return false; } public boolean isCurseMsg(String in) { for (String name : this.Curse) { if (in.toLowerCase().contains(name.toLowerCase())) { return true; } } return false; } public boolean isEligibleItem(int gender, int val, int job, int item) { if (item < 0) { return false; } Triple key = new Triple(Integer.valueOf(gender), Integer.valueOf(val), Integer.valueOf(job)); List our = (List) this.makeCharInfo.get(key); if (our == null) { return false; } return our.contains(item); } public boolean isEligibleItem(int itemId) { if (itemId < 0) { return false; } return (itemId == 0) || (this.makeCharInfoItemIds.contains(itemId)); } }