001package com.ericlam.mc.minigames.core;
002
003import com.ericlam.mc.minigames.core.manager.PlayerManager;
004
005/**
006 * 遊戲運行程序接口
007 */
008public interface SectionTask {
009
010    /**
011     * 定義初始化時的動作
012     *
013     * @param playerManager 玩家管理器
014     */
015    void initTimer(PlayerManager playerManager);
016
017    /**
018     * 在取消程序時運行
019     */
020    void onCancel();
021
022    /**
023     * 在完成程序時運行
024     */
025    void onFinish();
026
027    /**
028     * 每秒的運行程序
029     *
030     * @param remain 剩餘秒數
031     * @return 最終的剩餘秒數
032     */
033    long run(long remain);
034
035    /**
036     * 獲取這個運行程序的總秒數
037     *
038     * @return 總秒數
039     */
040    long getTotalTime();
041
042    /**
043     * 取消此運行程序的條件
044     *
045     * @return 取消此運行程序的條件
046     */
047    boolean shouldCancel();
048
049    /**
050     * 判斷程序是否在運行
051     *
052     * @return 是否在運行
053     */
054    boolean isRunning();
055
056    /**
057     * 設置程序是否在運行
058     *
059     * @param running 是否在運行
060     */
061    void setRunning(boolean running);
062}