package tc.oc.pgm.modules;

import java.util.logging.Logger;

import org.jdom2.Document;
import org.jdom2.Element;
import tc.oc.pgm.map.MapModule;
import tc.oc.pgm.map.MapModuleContext;
import tc.oc.pgm.match.Match;
import tc.oc.pgm.match.MatchModuleFactory;
import tc.oc.pgm.module.ModuleDescription;
import tc.oc.pgm.regions.Region;
import tc.oc.pgm.regions.RegionParser;
import tc.oc.pgm.xml.InvalidXMLException;

@ModuleDescription(name="Playable Region")
public class PlayableRegionModule implements MapModule, MatchModuleFactory<PlayableRegionMatchModule> {
    protected final Region playableRegion;

    public PlayableRegionModule(Region playableRegion) {
        this.playableRegion = playableRegion;
    }

    @Override
    public PlayableRegionMatchModule createMatchModule(Match match) {
        return new PlayableRegionMatchModule(match, this.playableRegion);
    }

    public static PlayableRegionModule parse(MapModuleContext context, Logger log, Document doc) throws InvalidXMLException {
        Element playableRegionElement = doc.getRootElement().getChild("playable");
        if(playableRegionElement != null) {
            return new PlayableRegionModule(context.needModule(RegionParser.class).property(playableRegionElement).legacy().union());
        }
        return null;
    }
}