94 lines
2.5 KiB
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);
|
|
|
|
}
|