ProjectAres/PGM/src/main/java/tc/oc/pgm/blitz/BlitzMatchModule.java

94 lines
2.5 KiB
Java

package tc.oc.pgm.blitz;
import tc.oc.pgm.match.Competitor;
import tc.oc.pgm.match.MatchPlayer;
import javax.annotation.Nullable;
import java.util.Optional;
public interface BlitzMatchModule {
/**
* Get the properties for the blitz module.
*
* It may change during a match from {@link #activate(BlitzProperties)}.
*/
BlitzProperties properties();
/**
* Is the blitz module *really* activated?
*
* Since the module is always loaded on the chance it should
* be activated during a match, it is only actively enforcing
* its rules when this returns true.
*/
boolean activated();
/**
* Activate the blitz module with a new set of properties.
*
* If the properties are null, it will default to its current
* {@link #properties()}.
*/
void activate(@Nullable BlitzProperties properties);
default void activate() {
activate(null);
}
/**
* Deactivate the blitz module by clearing all of its data.
*
* The module can be activated and deactivated as many times
* as you need.
*/
void deactivate();
/**
* Increment the number of lives for a player if
* {@link #eliminated(MatchPlayer)} is false.
*
* If notify is true, the player will get a message
* explaining how much lives they gained or lost.
*
* If immediate is true and the player's lives are empty,
* {@link #eliminate(MatchPlayer)} will be called and the
* player will be out of the game.
*
* @return Whether the player is now {@link #eliminated(MatchPlayer)}.
*/
boolean increment(MatchPlayer player, int lives, boolean notify, boolean immediate);
/**
* Is the player eliminated from the match?
*
* This value can change back to false if the player were
* forced onto another team after being eliminated.
*/
boolean eliminated(MatchPlayer player);
/**
* Eliminate the player from this match by moving
* them to the default party and preventing them from respawning.
*/
void eliminate(MatchPlayer player);
/**
* Try to get the lives for this player.
*/
Optional<Lives> lives(MatchPlayer player);
/**
* Get the amount of lives a player has left.
*
* @throws IllegalStateException if {@link #lives(MatchPlayer)} is not present.
*/
int livesCount(MatchPlayer player);
/**
* Try to get the team lives for this competitor.
*/
Optional<Lives> lives(Competitor competitor);
}