SteamWar/FightSystem
Archiviert
13
1

Update PercentWincondition

Update WinconditionPoints
Dieser Commit ist enthalten in:
yoyosource 2021-05-23 19:23:55 +02:00
Ursprung 21ff7fddaf
Commit 21c6baf40f
2 geänderte Dateien mit 10 neuen und 8 gelöschten Zeilen

Datei anzeigen

@ -70,6 +70,10 @@ public abstract class PercentWincondition extends Wincondition implements Printa
private final Consumer<TeamPercent> explodeConsumer;
public TeamPercent(PercentWincondition percentWincondition, FightTeam fightTeam, Winconditions wincondition, Predicate<Material> testType, Consumer<TeamPercent> explodeConsumer) {
this(percentWincondition, fightTeam, wincondition, testType, explodeConsumer, () -> {});
}
public TeamPercent(PercentWincondition percentWincondition, FightTeam fightTeam, Winconditions wincondition, Predicate<Material> testType, Consumer<TeamPercent> explodeConsumer, Runnable afterEnable) {
this.fightTeam = fightTeam;
this.testType = testType;
this.explodeConsumer = explodeConsumer;
@ -81,6 +85,7 @@ public abstract class PercentWincondition extends Wincondition implements Printa
}
});
currentBlocks = totalBlocks;
afterEnable.run();
});
new StateDependentListener(wincondition, FightState.Running, this).register();

Datei anzeigen

@ -25,11 +25,9 @@ import de.steamwar.fightsystem.countdown.TimeOverCountdown;
import de.steamwar.fightsystem.fight.Fight;
import de.steamwar.fightsystem.fight.FightTeam;
import de.steamwar.fightsystem.states.FightState;
import de.steamwar.fightsystem.states.OneShotStateDependent;
import de.steamwar.fightsystem.states.StateDependentCountdown;
import de.steamwar.fightsystem.states.StateDependentListener;
import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -41,8 +39,6 @@ import java.util.Map;
public class WinconditionPoints extends Wincondition implements PrintableWincondition, Listener {
private static final World world = Bukkit.getWorlds().get(0);
private final Map<FightTeam, TeamPoints> teamMap = new HashMap<>();
public WinconditionPoints(){
@ -52,9 +48,6 @@ public class WinconditionPoints extends Wincondition implements PrintableWincond
teamMap.put(Fight.getRedTeam(), new TeamPoints(Fight.getRedTeam()));
new StateDependentListener(Winconditions.POINTS, FightState.Ingame, this);
new OneShotStateDependent(Winconditions.POINTS, FightState.Ingame, () -> {
teamMap.values().forEach(TeamPoints::enable);
}).register();
if(Config.ActiveWinconditions.contains(Winconditions.POINTS)){
timeOverCountdown = new StateDependentCountdown(Winconditions.POINTS, FightState.Running, new TimeOverCountdown(this::timeOver));
printableWinconditions.add(this);
@ -109,6 +102,7 @@ public class WinconditionPoints extends Wincondition implements PrintableWincond
return team.getPrefix() + "Punkte: " + teamMap.get(team).getPoints();
}
private static boolean run = false;
private class TeamPoints {
private static final int MAX_POINTS = 2000;
@ -120,7 +114,10 @@ public class WinconditionPoints extends Wincondition implements PrintableWincond
TeamPoints(FightTeam team){
this.team = team;
this.percent = new PercentWincondition.TeamPercent(null, team, Winconditions.POINTS, material -> true, teamPercent -> {});
this.percent = new PercentWincondition.TeamPercent(null, team, Winconditions.POINTS, material -> true, teamPercent -> {}, () -> {
if (run) teamMap.values().forEach(TeamPoints::enable);
run = !run;
});
}
public void enable() {