void jGuiToolbar_PlayerList(jGuiToolbar tb)
    {
        jxE eChild = tb.m_jxE.GetChild(tb.GetToolBarIndex());

        string[] cmdList = (string[])eChild.GetUserData("PlayerCmd");
        SetPlayerCmdList(cmdList, tb.GetToolBarIndex());
    }
예제 #2
0
            public void InsertChild(jxE eInsert, int iOrder = -1)  // -1이면 맨마지막에 추가, 0이면 첫번째노드 다음에 추가.
            {
                eInsert.m_Parent = this;

                jxE eInsertNextPos = GetChild(iOrder);

                if (eInsertNextPos == null)
                {
                    m_Child          = eInsert;
                    eInsert.m_Prev   = eInsert.m_Next = null;
                    eInsert.m_iOrder = 0;
                    m_iChildCount    = 1;
                }
                else
                {
                    ++m_iChildCount;

                    eInsert.m_Prev = eInsertNextPos;
                    eInsert.m_Next = eInsertNextPos.m_Next;

                    if (eInsertNextPos.m_Next != null)
                    {
                        eInsertNextPos.m_Next.m_Prev = eInsert;
                    }
                    eInsertNextPos.m_Next = eInsert;
                }

                reorderChild();
            }
예제 #3
0
 public IEnumerator GetEnumerator()
 {
     for (jxE e = m_Child; e != null; e = e.m_Next)
     {
         yield return(e);
     }
 }
예제 #4
0
            //~jxElement() { clear(); }
            private void clear()
            {
                if (IsEType(EDataType.e_null))
                {
                    bool isOk = m_Parent == null && m_Prev == null && m_Next == null && m_Child == null && m_iChildCount == 0 && m_AttrList == null;
                    if (!isOk)
                    {
                        throw new System.Exception("ERROR : m_Parent==null && m_Prev==null && m_Next==null && m_Child==null && m_iChildCount==0 && m_AttrList==null");
                    }
                    return;
                }
                m_iOrder      = -1;
                m_iChildCount = 0;
                m_Parent      = null;
                jxE ePrev = m_Prev;

                if (m_Prev != null)
                {
                    m_Prev.m_Next = m_Next;
                    m_Prev        = null;
                }

                if (m_Next != null)
                {
                    m_Next.m_Prev = ePrev;
                    m_Next        = null;
                }
                for (jxE e = m_Child; e != null; e = m_Child.m_Next)
                {
                    e = null;
                }
                m_AttrList      = null;
                m_NamedUserData = null;
                m_UserData      = null;
            }
예제 #5
0
            //depth==-1이면 모든 자식들에 대해. 1이면바로밑자식에 대해서만 수행.
            public jxE  find_if(find_if_jxE func, int depth = -1)
            {
                if (depth == 0)
                {
                    return(null);
                }

                jxE e;

                for (e = m_Child; e != null; e = e.m_Next)
                {
                    if (func(e) == true)
                    {
                        return(e);
                    }
                }

                if (depth - 1 == 0)
                {
                    return(null);
                }

                for (e = m_Child; e != null; e = e.m_Next)
                {
                    jxE eFind = e.find_if(func, depth - 1);
                    if (eFind != null)
                    {
                        return(eFind);
                    }
                }
                return(null);
            }
예제 #6
0
    void jGuiButton_ServerOk(jGuiButton ctrl)
    {
        var lbl = (jGuiControl)ctrl.GetParent().FindCtrl("ServerStatus");

        if (lbl.GetText().Contains("Offline"))
        {
            return;
        }

        m_jGuiStage.HideModalWindow();
        int iOrder      = ctrl.GetParent().m_jxE.GetOrder();
        jxE eServerList = m_CMD.GetCurrServerList();

        if (iOrder >= eServerList.size())
        {
            m_CMD.LogWarning("ctrl.m_jxE.GetOrder() is overflow : " + iOrder + "eServerList.size() = " + eServerList.size());
            return;
        }
        jxE server = eServerList.GetChild(iOrder);

        m_CMD.m_ServerIP   = server.Attr("IP");
        m_CMD.m_ServerName = server.Attr("NAME");
        m_CMD.m_ServerPort = server.AttrVar("PORT").Get_int();
        //Debug.Log("ip : " + m_CMD.m_ServerIP + " " + m_CMD.m_ServerPort + " " + m_CMD.m_ServerName);

        var c = GetComponent <GuiEvent_CommandWindow>();

        c.Reload_PlayerCmd();


        GuiEvent_CommandWindow cmdWin = GetComponent <GuiEvent_CommandWindow>();

        cmdWin.SetWindowText(m_CMD.m_ServerName + " - " + m_CMD.m_ServerIP + ":" + m_CMD.m_ServerPort);
    }
예제 #7
0
            public Rect GetGuiRect(jxE g)
            {
                jxV vRect = g.AttrVar("Rect");

                if (vRect == null)
                {
                    vRect = g.AttrVar("Name");
                }
                if (vRect == null)
                {
                    //jDebug.jWARN(" attribute not found Rect : " + g.GetTagName());
                    return(new Rect(0, 0, 0, 0));
                }

                if (vRect.GetEType() == nXML.EDataType.e_Rect)
                {
                    return(vRect.GetRect());
                }

                if (vRect.GetEType() != nXML.EDataType.e_string)
                {
                    throw new System.Exception("xml : vRect.GetEType() != nXML.EDataType.e_string : " + m_Doc.m_name);
                }

                jxE eRect = m_eNamedRect.Find(vRect.Get_string());

                if (eRect == null)
                {
                    throw new System.Exception(m_Doc.m_name + "  eRect==null");
                }

                return(eRect.GetRect());
            }
예제 #8
0
            public jxE FindByAttr(string attribute_name, string value, out jxA a)
            {
                a = AttrVar(attribute_name);
                if (a != null)
                {
                    if (value == null)
                    {
                        return(this);
                    }

                    if (a.IsEType(EDataType.e_string))
                    {
                        if (a.Get_string() == value)
                        {
                            return(this);
                        }
                    }
                }
                for (jxE e = m_Child; e != null; e = e.m_Next)
                {
                    jxE eFind = e.FindByAttr(attribute_name, value, out a);
                    if (eFind != null)
                    {
                        return(eFind);
                    }
                }
                return(null);
            }
    //#--------------------------------------------------------------------------
    // public member function
    //#--------------------------------------------------------------------------
    public void Reload_PlayerCmd()
    {
        jGuiToolbar tb     = (jGuiToolbar)m_jGuiWindow.FindCtrl("PlayerList");
        jxE         eChild = tb.m_jxE.GetChild(tb.GetToolBarIndex());

        string[] cmdList = (string[])eChild.GetUserData("PlayerCmd");
        SetPlayerCmdList(cmdList, tb.GetToolBarIndex());
    }
예제 #10
0
            public jGuiControl GetPrev()
            {
                jxE e = m_jxE.GetPrev();

                if (e == null)
                {
                    return(null);
                }
                return((jGuiControl)e.m_UserData);
            }
예제 #11
0
            //#--------------------------------------------------------------------------
            // private member function.
            //#--------------------------------------------------------------------------
            private void reorderChild()
            {
                int iCount = 0;

                for (jxE e = m_Child; e != null; e = e.m_Next)
                {
                    e.m_iOrder = iCount++;
                }
                jDebug.jCHECK(iCount == m_iChildCount);
                m_iChildCount = iCount;
            }
예제 #12
0
 public IEnumerator GetEnumerator()
 {
     for (jxE e = m_jxE.GetChild(); e != null; e = e.GetNext())
     {
         if (e.m_UserData == null)
         {
             continue;
         }
         yield return((jGuiControl)e.m_UserData);
     }
 }
예제 #13
0
 public jxE FindFromParent(string name)
 {
     for (jxE e = m_Parent; e != null; e = e.m_Parent)
     {
         if (e.IsTagName(name))
         {
             return(e);
         }
     }
     return(null);
 }
예제 #14
0
            public jxE MakeClone()
            {
                string outString = "";

                this.WriteToString(ref outString);
                jxParser p = new jxParser(outString);
                jxE      e = p.Parse();

//          string outString1 = "";
//          e.WriteToString(ref outString1);
                return(e);
            }
예제 #15
0
            public jGuiControl FindCtrl(string name)
            {
                jxA findA;
                jxE e = m_ejGuiList.FindByAttr("Name", name, out findA);

                if (e == null)
                {
                    return(null);
                }
                jGuiControl ctrl = (jGuiControl)e.m_UserData;

                return(ctrl);
            }
예제 #16
0
            override public jGuiControl FindCtrl(string name)
            {
                jxA findA;
                jxE e = m_jxE.FindByAttr("Name", name, out findA);

                if (e == null)
                {
                    Debug.Log("jGuiControl FindCtrl : " + name + " is not found");
                    return(null);
                }
                jGuiControl ctrl = (jGuiControl)e.m_UserData;

                return(ctrl);
            }
예제 #17
0
    void changeLogFilter(jGuiToolbar ctrl)
    {
        List <string> logList = m_jFilteredLog.ChangeLogFilter(ctrl.GetToolBarIndex());

        if (logList == null)
        {
            return;
        }
        refreshLog(logList);

        jxE eChild = ctrl.m_jxE.GetChild(ctrl.GetToolBarIndex());

        m_btn_ClearLog.SetText("Clear (" + eChild.Get_string() + ")");
    }
예제 #18
0
            public jxE GetChild(int iOrder)     // -1이면 맨마지막 , 0이면 첫번째
            {
                int i    = 0;
                jxE prev = null;

                for (jxE e = m_Child; e != null; e = e.m_Next, ++i)
                {
                    prev = e;
                    if (i == iOrder)
                    {
                        return(e);
                    }
                }
                return(prev);
            }
예제 #19
0
            public void ShowModalWindow(string windowName)             //gui xml에서 <Modal_Window>의 자식항목중에 해당 이름의 윈도우를 뛰운다.
            {
                if (m_eModal_Window == null)
                {
                    Debug.LogWarning("gui xml file has not Modal_Window node");
                    return;
                }

                jxA findA;
                jxE e = m_eModal_Window.FindByAttr("Name", windowName, out findA);

                if (e == null)
                {
                    Debug.LogWarning("Modal_Window is not found : " + windowName);
                    return;
                }
                var modal = (jGuiWindow)e.m_UserData;

                if (modal == null)
                {
                    Debug.LogWarning("Modal_Window jGuiControl==null : " + windowName);
                    return;
                }

                foreach (jxE eCtrl in m_ejGuiList)
                {
                    jGuiControl w = (jGuiControl)eCtrl.m_UserData;
                    if (w == null)
                    {
                        continue;
                    }
                    if (w.IsEnabled())
                    {
                        m_BackupEnableWindowStatus.Add(w);
                        w.SetEnabled(false);
                    }
                }

                Rect rect = modal.GetXmlRect();

                rect.x = (Screen.width - rect.width) / 2;
                rect.y = (Screen.height - rect.height) / 2;
                modal.SetRect(rect);

                CallEventHandler_jGuiWindow("OnShowModal_" + modal.GetName(), modal);

                m_ModalWindowList.Add(modal);
            }
예제 #20
0
            protected void loadChild(jGuiStage stage, jGuiControl parent, jxE g)
            {
                jGuiControl ctrl;

                foreach (jxE e in m_jxE)
                {
                    ctrl = m_jGuiStage.CreateRTTI(e);
                    if (ctrl == null)
                    {
                        continue;
                    }
                    ctrl.m_isLayouted = this.m_isLayouted;

                    ctrl.Load(stage, this.m_jGuiWindow, this, e, this.m_OverrideAttribute);
                }
            }
    //#--------------------------------------------------------------------------
    // jGui Event Handler
    //#--------------------------------------------------------------------------
    void OnLoadedGUI_CommandWindow(jGuiWindow win)    // "CommandWindow"라는 jGuiWindow 로딩이 완료되면 호출됨.
    {
        base.Set_jGuiWindow(win);

        m_scroll_CmdList = (jGuiScrollView)m_jGuiWindow.FindCtrl("CmdList");
        if (m_scroll_CmdList == null)
        {
            throw new System.Exception("CmdList(jGuiScrollView) not found");
        }

        m_txt_CommandLine = (jGuiTextField)m_jGuiWindow.FindCtrl("CommandLine");
        if (m_txt_CommandLine == null)
        {
            throw new System.Exception("CommandLine(jGuiTextField) not found");
        }

        //load_PlayerCmdFile();
        {
            string[]    cmdList;
            jGuiToolbar tb = (jGuiToolbar)m_jGuiWindow.FindCtrl("PlayerList");
            if (tb == null)
            {
                throw new System.Exception("PlayerList == null");
            }
            if (m_CMD == null)
            {
                throw new System.Exception("m_CMD == null");
            }

            foreach (jxE e in tb.m_jxE)
            {
                string fileText = m_CMD.m_PlayerCmdFile[e.GetOrder()].text_file.text;
                cmdList = fileText.Split('\n');
                e.SetUserData("PlayerCmd", cmdList);
            }

            int toolbarIndex = tb.GetToolBarIndex();
            m_CMD.Get_jPlayerPrefs().Get("PlayerList_TookBarIndex", ref toolbarIndex);
            tb.SetToolBarIndex(toolbarIndex);

            jxE eChild = tb.m_jxE.GetChild(tb.GetToolBarIndex());
            cmdList = (string[])eChild.GetUserData("PlayerCmd");
            SetPlayerCmdList(cmdList, tb.GetToolBarIndex());
        }

        this.SetWindowText(m_CMD.m_ServerName + " - " + m_CMD.m_ServerIP + ":" + m_CMD.m_ServerPort);
    }
예제 #22
0
            //#--------------------------------------------------------------------------
            // member function
            //#--------------------------------------------------------------------------
            public jxV AttrVarOverride(string attribute_name)
            {
                jxA v = m_jxE.AttrVar(attribute_name);

                if (v != null || m_OverrideAttribute == null)
                {
                    return(v);
                }

                jxE e = m_OverrideAttribute.Find(m_jxE.GetTagID(), 1);

                if (e == null)
                {
                    return(null);
                }
                //Debug.Log(e.GetTagName() + " : OverrideAttribute : " + attribute_name);
                return(e.AttrVar(attribute_name));
            }
    //#--------------------------------------------------------------------------
    // private member function
    //#--------------------------------------------------------------------------

    void AddPlayerCmd(string cmd, int idx)
    {
        // 맨처음 노드는 cmd용 original 탬플릿이다.
        jxE  eCmdGroup;
        bool isReloadGui = false;

        if (idx >= m_scroll_CmdList.m_jxE.size())
        {
            eCmdGroup = m_scroll_CmdList.m_jxE.begin().MakeClone();
            m_scroll_CmdList.m_jxE.InsertChild(eCmdGroup);
            isReloadGui = true;
        }
        else
        {
            eCmdGroup = m_scroll_CmdList.m_jxE.GetChild(idx);
        }

        eCmdGroup.AttrVar("Enable").Set_bool(true);
        jxA a;
        jxE eCmdText = eCmdGroup.FindByAttr("Name", "CmdRun", out a);

        a = eCmdText.AttrVar("Text");
        a.Set_string(cmd);

        if (isReloadGui)
        {
            // jGuiContorl 리로딩.
            jGuiControl ctrl = m_scroll_CmdList.GetStage().CreateRTTI(eCmdGroup);
            jDebug.jASSERT(ctrl != null);
            ctrl.m_isLayouted = m_scroll_CmdList.m_isLayouted;
            ctrl.Load(m_scroll_CmdList.GetStage()
                      , m_scroll_CmdList.GetWindow()
                      , m_scroll_CmdList
                      , eCmdGroup
                      , m_scroll_CmdList.Get_OverrideAttribute());
        }
        else
        {
            jGuiButton btn = (jGuiButton)eCmdText.m_UserData;
            btn.SetText(cmd);
        }
    }
예제 #24
0
    // "dummy_client"라는 jGuiStage xml파일을 로딩했을때 호출됨.
    protected void OnLoadStageXML_dummy_client(nNWM.nXML.jxDocument stageXml)
    {
        jxE xml         = stageXml.m_Root;
        jxV v           = null;
        jxE ePlayerList = xml.FindByAttr("Name", "PlayerList", out v);
        int iTot        = m_CMD.m_PlayerCmdFile.Length - 1;

        Debug.Log("m_CMD.m_PlayerCmdFile.Length  = " + m_CMD.m_PlayerCmdFile.Length);
        for (int i = 0; i < iTot; ++i)
        {
            jxE eClone = ePlayerList.begin().MakeClone();
            ePlayerList.InsertChild(eClone);
        }

        int idx = 0;

        foreach (jxE e in ePlayerList)
        {
            e.Set_string(m_CMD.m_PlayerCmdFile[idx++].USER_ID);
        }
    }
예제 #25
0
            protected void loadDefaultParam(jGuiStage stage, jGuiWindow win, jGuiControl parent, jxE g, jxE overrideAttribute)
            {
                m_OverrideAttribute = g.Find("OverrideAttribute", 1);
                if (m_OverrideAttribute == null)
                {
                    m_OverrideAttribute = overrideAttribute;
                }

                m_TextAnchor.t1 = false;
                m_jxE           = g;
                m_jGuiStage     = stage;
                m_jGuiParent    = parent;
                m_Enable        = m_jxE.AttrVar("Enable");
                m_Text          = AttrOverride("Text");
                m_Name          = m_jxE.Attr("Name");
                if (m_Text == null)
                {
                    m_Text = m_Name;
                }

                load_GUIStyle();
            }
예제 #26
0
            public void Init(jxE eLogFilter)
            {
                m_FilteredLogList = new jFilteredLogNode[eLogFilter.size()];
                foreach (jxE e in eLogFilter)
                {
                    string sFilter = e.Attr("FILTER");
                    if (sFilter == null)
                    {
                        throw new System.Exception(e.ToString() + " : FILTER attribute not found.");
                    }

                    string[] strList = nNWM.jString.jSplit(sFilter, "| ");

                    if (strList == null)
                    {
                        throw new System.Exception(e.ToString() + " : split filter is null : " + sFilter);
                    }

                    m_FilteredLogList[e.GetOrder()] = new jFilteredLogNode(strList);
                }
                m_CurrFilteredLog = m_FilteredLogList[0];
            }
예제 #27
0
            // iDepth=-1이면 모든 자식에 대해 검색.
            public jxE Find(string_id_t id, int iDepth = -1)
            {
                if (iDepth == 0)
                {
                    return(null);
                }
                if (id == 0)
                {
                    return(null);
                }
                for (jxE e = m_Child; e != null; e = e.m_Next)
                {
                    if (e.GetIndex() != id)
                    {
                        continue;
                    }
                    return(e);
                }

                --iDepth;
                if (iDepth == 0)
                {
                    return(null);
                }

                for (jxE e = m_Child; e != null; e = e.m_Next)
                {
                    jxE eFind = e.Find(id, iDepth);
                    if (eFind == null)
                    {
                        continue;
                    }
                    return(eFind);
                }

                return(null);
            }
예제 #28
0
    IEnumerator _gettering_server_state()
    {
        jxE eServerList = m_CMD.GetCurrServerList();

        int idx = 0;

        foreach (jGuiControl gui in m_guiServerList)
        {
            var lbl = (jGuiLabel)gui.FindCtrl("ServerStatus");
            if (lbl == null)
            {
                continue;
            }

            jxE  server = eServerList.GetChild(idx);
            bool isOk   = tryConnectToServer(server.Attr("IP"), server.AttrVar("PORT").Get_int());

            if (isOk)
            {
                lbl.SetText("Online");
            }
            else
            {
                lbl.SetText("Offline");
            }
            if (m_CMD.m_ServerName == server.Attr("Name"))
            {
                lbl.SetText("[" + lbl.GetText() + "]");
            }
            ++idx;

            //yield return new WaitForSeconds(1.0f);
            yield return(0);
        }
        m_jGuiWindow.SetText("Select Server : Status update Completed.");
    }
예제 #29
0
 public override void Load(jGuiStage stage, jGuiWindow win, jGuiControl parent, jxE g, jxE overrideAttribute)
 {
     base.Load(stage, win, parent, g, overrideAttribute);
 }
예제 #30
0
            public override void Load(jGuiStage stage, jGuiWindow win, jGuiControl parent, jxE g, jxE overrideAttribute)
            {
                base.Load(stage, win, parent, g, overrideAttribute);

                m_ToggleValue = g.AttrVar("ToggleValue");
                if (m_ToggleValue == null)
                {
                    throw new System.Exception("jGuiToggle : attribute b_ToggleValue is null");
                }
            }