package tc.oc.pgm.flag.state; import java.util.Collections; import net.md_5.bungee.api.ChatColor; import org.bukkit.Location; import tc.oc.pgm.match.ParticipantState; import tc.oc.pgm.match.Party; import tc.oc.pgm.flag.Flag; import tc.oc.pgm.flag.Post; import tc.oc.pgm.score.ScoreMatchModule; import tc.oc.pgm.teams.TeamMatchModule; import javax.annotation.Nullable; /** * State of a flag after being returned to a {@link Post}, or at the start of * the match when at its initial post. */ public class Returned extends Uncarried implements Runnable { public Returned(Flag flag, Post home, @Nullable Location location) { super(flag, home, location); } @Override public boolean isRecoverable() { return false; } @Override public Iterable<Location> getProximityLocations(ParticipantState player) { if(!flag.hasTouched(player.getParty())) { return Collections.singleton(getLocation()); } else { return super.getProximityLocations(player); } } @Override public void tickRunning() { super.tickRunning(); ScoreMatchModule smm = this.flag.getMatch().getMatchModule(ScoreMatchModule.class); if(smm != null && this.post.getOwner() != null && this.post.getPointsPerSecond() > 0) { smm.incrementScore(this.flag.getMatch().needMatchModule(TeamMatchModule.class).team(this.post.getOwner()), this.post.getPointsPerSecond() / 20D); } } @Override public ChatColor getStatusColor(Party viewer) { if(this.flag.getDefinition().hasMultipleCarriers()) { return ChatColor.WHITE; } else { return super.getStatusColor(viewer); } } @Override public String getStatusSymbol(Party viewer) { return Flag.RETURNED_SYMBOL; } }