Exemplo n.º 1
0
    void OnShowModal_ServerList(jGuiWindow win)     // "ServerList"라는 모달
    {
        jxE eServerList = m_CMD.GetCurrServerList();

        if (eServerList == null)
        {
            m_CMD.LogWarning(m_CMD.m_DefaultServerListName + " is not found in ServerList xml");
            return;
        }

        int iSize = eServerList.size() - m_guiServerList.m_jxE.size();

        if (iSize > 0)        // 다운로드 받은 서버리스트 보다 gui xml의 서버리스트 컨트롤이 적다면 컨트롤 추가.
        {
            for (int i = 0; i < iSize; ++i)
            {
                jxE eServer = m_guiServerList.m_jxE.begin().MakeClone();
                m_guiServerList.m_jxE.InsertChild(eServer);

                // jGuiContorl 리로딩.
                jGuiControl new_ctrl = m_guiServerList.GetStage().CreateRTTI(eServer);
                if (new_ctrl == null)
                {
                    eServer.DebugPrint();
                    throw new System.Exception("CreateRTTI : new_ctrl==null");
                }
                new_ctrl.m_isLayouted = m_guiServerList.m_isLayouted;
                new_ctrl.Load(m_guiServerList.GetStage()
                              , m_guiServerList.GetWindow()
                              , m_guiServerList
                              , eServer
                              , m_guiServerList.Get_OverrideAttribute());
            }
        }
        int idx = 0;

        foreach (jGuiControl gui in m_guiServerList)
        {
            if (idx >= eServerList.size())
            {
                gui.SetEnabled(false);
                continue;
            }
            var    btn    = (jGuiButton)gui.FindCtrl("ServerOk");
            jxE    server = eServerList.GetChild(idx);
            string name   = server.Attr("NAME");
            string text   = name + " " + server.Attr("IP") + ":" + server.AttrVar("PORT").Get_int().ToString();
            var    lbl    = (jGuiLabel)gui.FindCtrl("ServerStatus");
            if (name == m_CMD.m_ServerName)
            {
                lbl.SetText("Selected");
            }
            else
            {
                lbl.SetText("Unkown");
            }

            btn.SetText(text);
            ++idx;
        }
        UpdateServerStatus();
    }