001package com.ericlam.mc.minigames.core.manager; 002 003import com.ericlam.mc.minigames.core.character.GamePlayer; 004import com.ericlam.mc.minigames.core.game.GameState; 005import com.ericlam.mc.minigames.core.game.GameTeam; 006import com.ericlam.mc.minigames.core.game.InGameState; 007 008import javax.annotation.Nullable; 009import java.util.List; 010 011/** 012 * 遊戲主體管理器 013 */ 014public interface GameManager { 015 016 /** 017 * 獲取目前遊戲狀態 018 * 019 * @return 遊戲狀態 020 */ 021 GameState getGameState(); 022 023 /** 024 * 直接結束遊戲 025 * 026 * @param winner 勝利者 027 * @param winnerTeam 勝利隊伍 028 * @param cancel 取消原定程序, 若果為 false 則會強制完成程序 029 */ 030 void endGame(List<GamePlayer> winner, GameTeam winnerTeam, boolean cancel); 031 032 /** 033 * 設置遊戲狀態 034 * <p> 035 * 注意你無法設置為 {@link GameState#PREEND}, 你只能使用 {@link #endGame(List, GameTeam, boolean)} 來設置。 036 * </p> 037 * 038 * @param state 遊戲狀態 039 */ 040 void setState(GameState state); 041 042 /** 043 * 獲取場地狀態 044 * 045 * @return 場地狀態 046 */ 047 @Nullable 048 InGameState getInGameState(); 049 050 /** 051 * 獲取遊戲前綴 052 * 053 * @return 遊戲前綴 054 */ 055 String getGamePrefix(); 056}