﻿
import { RankConfig } from "./RankConfig";
import { RankModuleS } from "./RankModuleS";



export class RankModuleC extends ModuleC<RankModuleS, null> {

    /** 全服排行榜数据缓存 */
    private gameRankDataCacheMap: Map<RankConfig.RankType, string[]> = new Map()

    protected onStart(): void {
        this.init()
    }

    private async init() {
        // 上线请求一次全服数据

        // 遍历检查获取所有排行类型对应的全服排行榜数据
        Object.values(RankConfig.RankType).forEach(value => {
            if (typeof value === 'number') { // 确保只处理数字值
                this.freshGameRankDataCache(value)
            }
        });
    }


    /**
     * 获取【房间排行榜】数据
     * @param type 排行类型
     */
    public async getRoomRankDataByType(type: RankConfig.RankType) {
        let data = []
        data = await this.server.net_getRoomRankDataByType(type)
        return data
    }


    /**
     * 获取【全服排行榜】数据
     * @param type 排行类型
     */
    public getGameRankDataByType(type: RankConfig.RankType) {
        return this.gameRankDataCacheMap.get(type)
    }


    /**
     * 刷新全服数据缓存
     * @param rankType 排行类型
     */
    private async freshGameRankDataCache(rankType: RankConfig.RankType) {
        let data = await this.server.net_getGameRankDataByType(rankType)
        console.error("获取全服排行数据：" + data)
        this.gameRankDataCacheMap.set(rankType, data)
    }

}