package org.mctourney.autoreferee.goals;
import java.util.Set;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.mctourney.autoreferee.AutoRefMatch;
import org.mctourney.autoreferee.AutoRefTeam;
import org.mctourney.autoreferee.regions.AutoRefRegion;
import org.mctourney.autoreferee.regions.CuboidRegion;
import org.mctourney.autoreferee.util.BlockData;
import org.mctourney.autoreferee.util.LocationUtil;
import org.jdom2.Element;
import com.google.common.collect.Sets;
public class ScoreRegionGoal extends ScoreGoal
{
protected final Set<AutoRefRegion> regions = Sets.newHashSet();
protected Location tpto = null;
protected double score = 0;
public ScoreRegionGoal(AutoRefTeam team, AutoRefRegion ...regions)
{
super(team);
this.regions.addAll(Sets.newHashSet(regions));
}
public ScoreRegionGoal(AutoRefTeam team, Element elt)
{
this(team);
for (Element child : elt.getChildren())
{
AutoRefRegion reg = AutoRefRegion.fromElement(team.getMatch(), child);
if (reg != null) this.regions.add(reg);
}
}
public ScoreRegionGoal(AutoRefTeam team, ScoreRegionGoal scoreRegionGoal)
{ this(team, scoreRegionGoal.regions.toArray(new AutoRefRegion[]{})); }
@Override
protected AutoRefGoal getGoalSettings(AutoRefTeam team, Element elt)
{
World world = team.getMatch().getWorld();
if (elt.getAttribute("tp") != null)
tpto = LocationUtil.fromCoords(world, elt.getAttributeValue("tp"));
return super.getGoalSettings(team, elt);
}
@Override
public ScoreRegionGoal copy()
{ return this.copy(this.owner); }
@Override
public ScoreRegionGoal copy(AutoRefTeam team)
{ return new ScoreRegionGoal(team, this); }
@Override
public void updateReferee(Player ref)
{
}
public double getScore(AutoRefMatch match)
{ return this.score; }
public void addScore(double v)
{ this.score += v; }
@Override
public BlockData getItem()
{ return null; }
@Override
public Location getTarget()
{
CuboidRegion cube = null;
for (AutoRefRegion reg : this.regions)
cube = AutoRefRegion.combine(cube, reg);
return cube == null ? null : cube.getGroundedCenter();
}
@Override
public String toString()
{ return "REGIONGOAL"; }
@Override
public Element toElement()
{
Element elt = new Element("scorezone");
for (AutoRefRegion reg : regions)
elt.addContent(reg.toElement());
return elt;
}
}