Example #1
0
    // Use this for initialization
    public void Start()
    {
        m_control_table = new Hashtable();
        m_animations    = new Hashtable();

        XmlElement  tempElem = null;
        string      value    = "";
        TextAsset   xml      = Resources.Load(m_ui_cfgxml) as TextAsset;
        XmlDocument xmlDoc   = new XmlDocument();

        xmlDoc.LoadXml(xml.text);
        XmlNode root = xmlDoc.DocumentElement;

        foreach (XmlNode node1 in root.ChildNodes)
        {
            if ("UIElem" == node1.Name)
            {
                foreach (XmlNode xmlNode in node1.ChildNodes)
                {
                    tempElem = (XmlElement)xmlNode;
                    if ("UIButton" == xmlNode.Name)
                    {
                        UIButtonBase button = null;

                        value = tempElem.GetAttribute("rect").Trim();
                        string[] digital = value.Split(',');

                        value = tempElem.GetAttribute("type").Trim();
                        if ("click" == value)
                        {
                            button = new UIClickButton();
                            ((UIClickButton)button).Rect = new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()));
                        }
                        else if ("push" == value)
                        {
                            button = new UIPushButton();
                            ((UIPushButton)button).Rect = new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()));
                        }
                        else if ("select" == value)
                        {
                            button = new UISelectButton();
                            ((UISelectButton)button).Rect = new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()));
                        }

                        if (null == button)
                        {
                            continue;
                        }

                        value     = tempElem.GetAttribute("id").Trim();
                        button.Id = int.Parse(value);

                        value = tempElem.GetAttribute("enable").Trim();
                        if (value.Length > 1)
                        {
                            button.Enable = ("true" == value);
                        }

                        value = tempElem.GetAttribute("visible").Trim();
                        if (value.Length > 1)
                        {
                            button.Visible = ("true" == value);
                        }

                        tempElem = (XmlElement)xmlNode.SelectSingleNode("Normal");
                        if (null != tempElem)
                        {
                            value   = tempElem.GetAttribute("rect").Trim();
                            digital = value.Split(',');
                            value   = tempElem.GetAttribute("material").Trim();
                            button.SetTexture(UIButtonBase.State.Normal, LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())));
                        }

                        tempElem = (XmlElement)xmlNode.SelectSingleNode("Press");
                        if (null != tempElem)
                        {
                            value   = tempElem.GetAttribute("rect").Trim();
                            digital = value.Split(',');
                            value   = tempElem.GetAttribute("material").Trim();
                            button.SetTexture(UIButtonBase.State.Pressed, LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())));
                        }

                        tempElem = (XmlElement)xmlNode.SelectSingleNode("Disable");
                        if (null != tempElem)
                        {
                            value   = tempElem.GetAttribute("rect").Trim();
                            digital = value.Split(',');
                            value   = tempElem.GetAttribute("material").Trim();
                            button.SetTexture(UIButtonBase.State.Disabled, LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())));
                        }

                        tempElem = (XmlElement)xmlNode.SelectSingleNode("Hover");
                        if (null != tempElem)
                        {
                            value   = tempElem.GetAttribute("rect").Trim();
                            digital = value.Split(',');
                            value   = tempElem.GetAttribute("material").Trim();
                            button.SetHoverSprite(LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())));
                        }

                        m_UIManagerRef.Add(button);
                        m_control_table.Add(button.Id, button);
                    }
                    else if ("UIImage" == xmlNode.Name)
                    {
                        UIImage image = new UIImage();
                        value    = tempElem.GetAttribute("id").Trim();
                        image.Id = int.Parse(value);

                        value = tempElem.GetAttribute("rect").Trim();
                        string[] digital = value.Split(',');
                        image.Rect = new Rect(int.Parse(digital[0]), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()));

                        value = tempElem.GetAttribute("enable").Trim();
                        if (value.Length > 1)
                        {
                            image.Enable = ("true" == value);
                        }

                        value = tempElem.GetAttribute("visible").Trim();
                        if (value.Length > 1)
                        {
                            image.Visible = ("true" == value);
                        }

                        tempElem = (XmlElement)xmlNode.SelectSingleNode("Texture");
                        if (null != tempElem)
                        {
                            value   = tempElem.GetAttribute("rect").Trim();
                            digital = value.Split(',');
                            value   = tempElem.GetAttribute("material").Trim();
                            image.SetTexture(LoadUIMaterial(value), new Rect(int.Parse(digital[0].Trim()), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim())));
                        }

                        m_UIManagerRef.Add(image);
                        m_control_table.Add(image.Id, image);
                    }
                    else if ("UIText" == xmlNode.Name)
                    {
                        UIText text = new UIText();
                        value   = tempElem.GetAttribute("id").Trim();
                        text.Id = int.Parse(value);

                        value = tempElem.GetAttribute("rect").Trim();
                        string[] digital = value.Split(',');
                        text.Rect = new Rect(int.Parse(digital[0]), int.Parse(digital[1].Trim()), int.Parse(digital[2].Trim()), int.Parse(digital[3].Trim()));

                        value = tempElem.GetAttribute("chargap").Trim();
                        if (value.Length > 1)
                        {
                            text.CharacterSpacing = int.Parse(value);
                        }

                        value = tempElem.GetAttribute("linegap").Trim();
                        if (value.Length > 1)
                        {
                            text.LineSpacing = int.Parse(value);
                        }

                        value = tempElem.GetAttribute("autoline").Trim();
                        if (value.Length > 1)
                        {
                            text.AutoLine = ("true" == value);
                        }

                        value = tempElem.GetAttribute("align").Trim();
                        if (value.Length > 1)
                        {
                            text.AlignStyle = (UIText.enAlignStyle)Enum.Parse(typeof(UIText.enAlignStyle), value);
                        }

                        value = tempElem.GetAttribute("enable").Trim();
                        if (value.Length > 1)
                        {
                            text.Enable = ("true" == value);
                        }

                        value = tempElem.GetAttribute("visible").Trim();
                        if (value.Length > 1)
                        {
                            text.Visible = ("true" == value);
                        }

                        value = tempElem.GetAttribute("font").Trim();
                        text.SetFont(m_font_path + value);

                        value = tempElem.GetAttribute("color").Trim();
                        if (value.Length > 1)
                        {
                            digital = value.Split(',');
                            text.SetColor(new Color(int.Parse(digital[0].Trim()) / 255.0f, int.Parse(digital[1].Trim()) / 255.0f, int.Parse(digital[2].Trim()) / 255.0f, int.Parse(digital[3].Trim()) / 255.0f));
                        }
                        text.SetText(xmlNode.InnerText.Trim(new char[] { ' ', '\t', '\r', '\n' }));

                        m_UIManagerRef.Add(text);
                        m_control_table.Add(text.Id, text);
                    } //UIText
                }     // for
            }
            else if ("UIAnimation" == node1.Name)
            {
                foreach (XmlNode xmlNode in node1.ChildNodes)
                {
                    tempElem = (XmlElement)xmlNode;
                    if ("Animation" != xmlNode.Name)
                    {
                        continue;
                    }

                    UIAnimations animation = new UIAnimations();

                    value = tempElem.GetAttribute("id").Trim();
                    animation.animation_id = int.Parse(value);
                    Debug.Log(value);

                    value = tempElem.GetAttribute("control_id").Trim();
                    Debug.Log(value);
                    string[] digital = value.Split(',');
                    for (int i = 0; i < digital.Length; ++i)
                    {
                        UIAnimations.ControlData data = new UIAnimations.ControlData();
                        data.control_id = int.Parse(digital[i].Trim());
                        animation.control_data.Add(data);
                    }

                    tempElem = (XmlElement)xmlNode.SelectSingleNode("Translate");
                    if (null != tempElem)
                    {
                        animation.translate_have = true;

                        value = tempElem.GetAttribute("time").Trim();
                        animation.translate_time = float.Parse(value);

                        value = tempElem.GetAttribute("offset").Trim();
                        if (value.Length > 0)
                        {
                            digital = value.Split(',');
                            animation.translate_offset.x = int.Parse(digital[0].Trim());
                            animation.translate_offset.y = int.Parse(digital[1].Trim());
                        }

                        value = tempElem.GetAttribute("restore").Trim();
                        if (value.Length > 0)
                        {
                            animation.translate_restore = ("true" == value);
                        }

                        value = tempElem.GetAttribute("loop").Trim();
                        if (value.Length > 0)
                        {
                            animation.translate_loop = ("true" == value);
                        }

                        value = tempElem.GetAttribute("reverse").Trim();
                        if (value.Length > 0)
                        {
                            animation.translate_reverse = ("true" == value);
                        }
                    }

                    tempElem = (XmlElement)xmlNode.SelectSingleNode("Rotate");
                    if (null != tempElem)
                    {
                        animation.rotate_have = true;

                        value = tempElem.GetAttribute("time").Trim();
                        animation.rotate_time = float.Parse(value);

                        value = tempElem.GetAttribute("angle").Trim();
                        animation.rotate_angle = Mathf.Deg2Rad * float.Parse(value);

                        value = tempElem.GetAttribute("restore").Trim();
                        if (value.Length > 0)
                        {
                            animation.rotate_restore = ("true" == value);
                        }

                        value = tempElem.GetAttribute("loop").Trim();
                        if (value.Length > 0)
                        {
                            animation.rotate_loop = ("true" == value);
                        }

                        value = tempElem.GetAttribute("reverse").Trim();
                        if (value.Length > 0)
                        {
                            animation.rotate_reverse = ("true" == value);
                        }
                    }

                    m_animations.Add(animation.animation_id, animation);
                } // for
            }     //if ("UIAnimation" == node1.Name)
        }         //for root
    }