001package com.ericlam.mc.minigames.core.event; 002 003import com.ericlam.mc.minigames.core.character.GamePlayer; 004import com.ericlam.mc.minigames.core.game.GameState; 005import com.ericlam.mc.minigames.core.game.InGameState; 006import com.ericlam.mc.minigames.core.manager.PlayerManager; 007import com.google.common.collect.ImmutableList; 008import org.bukkit.event.Event; 009import org.bukkit.event.HandlerList; 010 011import javax.annotation.Nonnull; 012import javax.annotation.Nullable; 013 014/** 015 * 遊戲事件 016 */ 017public abstract class GameEvent extends Event { 018 019 020 private static final HandlerList handlerList = new HandlerList(); 021 private InGameState inGameState; 022 private GameState gameState; 023 private PlayerManager playerManager; 024 025 public GameEvent(@Nullable InGameState inGameState, @Nonnull GameState gameState, @Nonnull PlayerManager playerManager) { 026 this.inGameState = inGameState; 027 this.gameState = gameState; 028 this.playerManager = playerManager; 029 } 030 031 public static HandlerList getHandlerList() { 032 return handlerList; 033 } 034 035 /** 036 * @return 場地狀態 037 */ 038 public InGameState getInGameState() { 039 return inGameState; 040 } 041 042 /** 043 * @return 遊戲狀態 044 */ 045 public GameState getGameState() { 046 return gameState; 047 } 048 049 /** 050 * @return 所有遊戲玩家 051 */ 052 public ImmutableList<GamePlayer> getTotalPlayers() { 053 return playerManager.getTotalPlayers(); 054 } 055 056 /** 057 * @return 所有遊戲中的玩家 058 */ 059 public ImmutableList<GamePlayer> getGamingPlayer() { 060 return playerManager.getGamePlayer(); 061 } 062 063 /** 064 * @return 所有投票等候的玩家 065 */ 066 public ImmutableList<GamePlayer> getWaitingPlayer() { 067 return playerManager.getWaitingPlayer(); 068 } 069 070 /** 071 * @return 所有觀戰的玩家 072 */ 073 public ImmutableList<GamePlayer> getSpectators() { 074 return playerManager.getSpectators(); 075 } 076 077 078 @Nonnull 079 @Override 080 public HandlerList getHandlers() { 081 return handlerList; 082 } 083}