using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using pomelo.connector;
using CommonLang.Property;
using pomelo.area;

namespace XmdsBotTest.Runner
{
    public class ModuleRank : BotRunner.RunnerModule
    {
        List<int> Kinds = new List<int>();

        public ModuleRank(BotRunner r) : base(r)
        {
            Kinds = new List<int>();

            Kinds.Add(101);         // 战力本服榜
            Kinds.Add(102);         // 战力苍狼榜
            Kinds.Add(103);         // 战力御剑榜
            Kinds.Add(104);         // 战力逸仙榜
            Kinds.Add(105);         // 战力神箭榜
            Kinds.Add(106);         // 战力灵狐榜
            Kinds.Add(200);         // 本服等级榜
            Kinds.Add(300);         // 仙盟等级榜
            Kinds.Add(400);         // 仙盟盟战榜
            Kinds.Add(500);         // 本服坐骑榜
            Kinds.Add(600);         // 本服宠物榜
            Kinds.Add(1003);        // 试炼大赛
            Kinds.Add(2006);        // 问道大会资历榜
            Kinds.Add(2009);        // 五岳一战
        }
        protected internal override void OnGateBindPlayer(BindPlayerResponse e)
        {
            base.OnGateBindPlayer(e);
        }
        protected internal override void OnBattleActorReady(CommonAI.ZoneClient.ZoneLayer layer, CommonAI.ZoneClient.ZoneActor actor)
        {
            layer.AddTimeDelayMS(Config.CheckIntervalMS, (t) =>
            {
                if (Enable)
                {
                    
                }
            });
            layer.AddTimePeriodicMS(Config.CheckIntervalMS, (t) =>
            {
                if (Enable)
                {
                    try_get_rank_list();
                }
            });
        }
        private void try_get_rank_list()
        {
            int randValue = bot.Random.Next(0, Kinds.Count);
            int rankSeason = -1;
            // 五岳一战新添赛季随机赛季类型
            if (2009 == Kinds[randValue]) {
                rankSeason =  bot.Random.Next(0, 2);  // 根据协议,随机生成赛季参数
            } 
            //Console.WriteLine("rankType:-->>{0}  rankSeason:---->>{1}", Kinds[randValue], rankSeason);
            client.GameSocket.leaderBoardHandler.leaderBoardRequest(Kinds[randValue],rankSeason,
                    (err, rsp) =>
                    { });
        }
        [Desc("排行榜配置")]
        [Expandable]
        public class Config
        {
            [Desc("排行榜检测间隔")]
            public static int CheckIntervalMS = 5000;

            public override string ToString()
            {
                return "排行榜配置";
            }
        }
    }
}