001package com.ericlam.mc.minigames.core.gamestats;
002
003import org.bukkit.OfflinePlayer;
004import org.bukkit.entity.Player;
005
006import javax.annotation.Nonnull;
007import java.util.Map;
008import java.util.concurrent.CompletableFuture;
009
010/**
011 * 遊戲玩家資料處理機制接口
012 */
013public interface GameStatsHandler {
014
015    /**
016     * 定義如何加載遊戲玩家資料
017     *
018     * @param player 玩家
019     * @return 遊戲玩家資料實作容器
020     */
021    @Nonnull
022    GameStatsEditor loadGameStatsData(@Nonnull Player player);
023
024    /**
025     * 定義如何保存遊戲玩家資料
026     *
027     * @param player    玩家
028     * @param gameStats 遊戲玩家資料
029     * @return 異步運行
030     */
031    CompletableFuture<Void> saveGameStatsData(OfflinePlayer player, GameStats gameStats);
032
033    /**
034     * 定義如何保存所有遊戲玩家資料
035     *
036     * @param gameStatsMap 遊戲玩家資料列表
037     * @return 異步運行
038     */
039    CompletableFuture<Void> saveGameStatsData(Map<OfflinePlayer, GameStats> gameStatsMap);
040
041}