package tc.oc.pgm.damage; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; import com.google.common.collect.ImmutableList; import org.jdom2.Document; import org.jdom2.Element; import tc.oc.pgm.filters.Filter; import tc.oc.pgm.filters.parser.FilterParser; import tc.oc.pgm.map.MapModule; import tc.oc.pgm.map.MapModuleContext; import tc.oc.pgm.map.MapModuleFactory; import tc.oc.pgm.match.Match; import tc.oc.pgm.match.MatchModuleFactory; import tc.oc.pgm.module.ModuleDescription; import tc.oc.pgm.xml.InvalidXMLException; @ModuleDescription(name = "damage") public class DamageModule implements MapModule, MatchModuleFactory<DamageMatchModule> { public static class Factory extends MapModuleFactory<DamageModule> { @Override public DamageModule parse(MapModuleContext context, Logger logger, Document doc) throws InvalidXMLException { List<Filter> filters = new ArrayList<>(); for(Element elDamage : doc.getRootElement().getChildren("damage")) { for(Element elFilter : elDamage.getChildren()) { filters.add(context.needModule(FilterParser.class).parseElement(elFilter)); } } return new DamageModule(ImmutableList.copyOf(filters)); } } private final List<Filter> filters; public DamageModule(List<Filter> filters) { this.filters = filters; } @Override public DamageMatchModule createMatchModule(Match match) { return new DamageMatchModule(filters); } }