//拥有帮会后打开的界面

using Games.LogicObj;
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using GCGame;
using Module.Log;
using Games.GlobeDefine;
using System.Collections.Generic;
using System;
using GCGame.Table;

public class HasGuildMainWnd : UIControllerBase<HasGuildMainWnd>
{

    #region static

    public static void ShowXiulian()
    {
        if (GameManager.gameManager.PlayerDataPool.IsHaveGuild() == true)
        {
            UIManager.ShowUI(UIInfo.GuildMainInfoWnd, (sucess, param) =>
            {
                if(HasGuildMainWnd.Instance()!=null)
                    HasGuildMainWnd.Instance().TagShowPageMain(3);
            });
        }
        else
        {
            UIManager.ShowUI(UIInfo.GuildMainWnd);
        }
    }

    #endregion

    public SelfGuildInfoChildWnd m_SelfInfo;
    public GuildMemberInfoWnd m_MemberInfo;
    public GuildBuildWnd m_BuiltInfo;
    public GuildXiulianWnd m_Xiulian;
    public UITagPanel _TagPanel;

    void Awake()
    {
        Hashtable add = new Hashtable();
        add["name"] = "hasGuildMain";
        Games.Events.MessageEventCallBack call = UpdateGuildInfo;
        add["callFun"] = call;
        Games.Events.EventDispatcher.Instance.AddMessageEvent(Games.Events.EventId.UpdateGuildInfo, add);
    }

    void OnEnable()
    {
        SetInstance(this);
    }

    public void OPenChangeName()
    {
        if (m_SelfInfo != null && m_SelfInfo.gameObject.activeSelf)
            m_SelfInfo.NeedOpenChangeName = true;
    }

    public void TagShowPageMain(int page)
    {
        _TagPanel.ShowPage(page);
    }

    void OnDestroy()
    {
        SetInstance(null);
        Games.Events.EventDispatcher.Instance.RemoveMessage(Games.Events.EventId.UpdateGuildInfo, "hasGuildMain");
    }

    public void UpdateGuildInfo(Hashtable addParam, Hashtable sendParam)
    {
        if(GameManager.gameManager.PlayerDataPool.IsHaveGuild() == false)
        {
            UIManager.CloseUI(UIInfo.GuildMainInfoWnd);
        }
    }
    void Start()
    {
        //请求帮会基本数据 
        CG_GUILD_REQ_INFO send = (CG_GUILD_REQ_INFO)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_REQ_INFO);
        send.SetReqType((int)CG_GUILD_REQ_INFO.REQ_TYPE.REQ_TYPE_BASE_INFO);
        send.SendPacket();
    }

    public void TagShowPage(int page)
    {
        if (page == 0)
        {
            Click_OpenInfoWnd();
        }
        else if (page == 1)
        {
            Click_OpenMemberWnd();
        }
        else if(page == 2)
        {
            Click_OpenBuild();
        }
        else if(page == 3)
        {
            Click_OpenXiuLian();
        }
    }

    public void Click_OpenInfoWnd()
    {
        if(m_SelfInfo != null)
        {
            m_SelfInfo.InitInfos();
        }
    }

    public void Click_OpenMemberWnd()
    {
        if (m_MemberInfo != null)
        {
            //请求帮会成员信息
            CG_GUILD_REQ_INFO send1 = (CG_GUILD_REQ_INFO)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_REQ_INFO);
            send1.SetReqType((int)CG_GUILD_REQ_INFO.REQ_TYPE.REQ_TYPE_MEMBET_LIST);
            send1.SendPacket();

            //请求帮会申请信息
            CG_GUILD_REQ_INFO send2 = (CG_GUILD_REQ_INFO)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_REQ_INFO);
            send2.SetReqType((int)CG_GUILD_REQ_INFO.REQ_TYPE.REQ_TYPE_APPLY_LIST);
            send2.SendPacket();
            Click_OpenInfoWnd();
            //m_MemberInfo.InitInfos();
        }
    }

    public void Click_OpenXiuLian()
    {
        if (m_Xiulian != null)
        {
            CG_GUILD_REQ_INFO send1 = (CG_GUILD_REQ_INFO)PacketDistributed.CreatePacket(MessageID.PACKET_CG_GUILD_REQ_INFO);
            send1.SetReqType((int)CG_GUILD_REQ_INFO.REQ_TYPE.REQ_TYPE_PRACTICE);
            send1.SendPacket();

            GameManager.gameManager.PlayerDataPool.GuildInfo.AskXiulianInfo();

        }
    }

    public void Click_OpenBuild()
    {
        if (m_BuiltInfo != null)
        {
            m_BuiltInfo.AskBuildInfo();
            //m_BuiltInfo.OpenGuild();
        }
    }

    public void Click_Close()
    {
        UIManager.CloseUI(UIInfo.GuildMainInfoWnd);
    }
}