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 ModuleGuild : BotRunner.RunnerModule
    {
        string nameList = "abcdefghijklmnopqrstuvwsyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        public ModuleGuild() {
            module_name = "公会";
        }

        public ModuleGuild(BotRunner r) : base(r)
        {
        }
        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)
                {
                    try_get_guild_list();
                    try_get_guild_member_list();
                    try_get_guild_depot_list();
                }
            });
            layer.AddTimePeriodicMS(Config.CheckIntervalMS, (t) =>
            {
                if (Enable)
                {
                    
                }
            });
        }
        private void try_get_guild_list()
        {
            client.GameSocket.guildHandler.getGuildListRequest("",
                    (err, rsp) =>
                    {

                        if (30 > rsp.s2c_guildList.Count)
                        {
                            client.GameSocket.guildHandler.createGuildRequest("111", get_rand_name(), "1",
                            (err1, rsp1) => { });
                        }
                        
                    });
        }
        
        private string get_rand_name()
        {
            string name = "";

            for (int j = 0; j < 6; j++)
            {
                int randChar = bot.Random.Next(0, nameList.Count() - 1);

                name += nameList[randChar];
            }
            return name;
        }

        private void try_get_guild_member_list()
        {
            client.GameSocket.guildHandler.getMyGuildMembersRequest(
                    (err, rsp) =>
                    { });
        }
        private void try_get_guild_depot_list()
        {
            client.GameSocket.guildManagerHandler.getDepotInfoRequest(
                    (err, rsp) =>
                    { });
        }
        [Desc("公会配置")]
        [Expandable]
        public class Config : ConfigBase
        {
            [Desc("公会检测间隔")]
            public static int CheckIntervalMS = 5000;

            public override string ToString()
            {
                return "公会配置";
            }

            public override void popG2DPropertyDialog()
            {
                CommonFroms.G2D.G2DPropertyDialog<ModuleGuild.Config>.Show("修改配置", this);
            }
        }
    }
}