private static SortedSet<AbstractPlayerPower> loadDatabase() throws Exception { if (_pp == null) { _pp = new TreeSet<AbstractPlayerPower>(); FileData fd = DataLoaderService.loadFile("data/military_bonuses.txt"); Set<String> keys = fd.getKeys(); for (String key : keys) { List<String> data = fd.getList(key); int level = Integer.valueOf(data.get(0)); String name = data.get(1); String className = data.get(2); List<String> params = data.subList(3, data.size()); Class<? extends AbstractPlayerPower> clazz = (Class<? extends AbstractPlayerPower>) Class.forName("com.battlespace.domain.player." + className); Constructor<? extends AbstractPlayerPower> constructor = clazz.getConstructor(List.class); AbstractPlayerPower cp = constructor.newInstance(params); cp.level = level; cp.name = name; _pp.add(cp); } } return _pp; }
public static void upgrade(Booster booster, int militarySkill) throws Exception { SortedSet<AbstractPlayerPower> pp = loadDatabase(); for (AbstractPlayerPower app : pp) { if (app.level > militarySkill) break; app.upgrade(booster); } }