HUDData.LoadData C# (CSharp) Method

LoadData() public method

public LoadData ( ) : void
return void
    public void LoadData()
    {
        ArrayList data = XMLHandler.LoadXML(dir+filename);

        if(data.Count > 0)
        {
            foreach(Hashtable entry in data)
            {
                if(entry[XMLHandler.NODE_NAME] as string == HUDData.HUDS)
                {
                    if(entry.ContainsKey(XMLHandler.NODES))
                    {
                        ArrayList subs = entry[XMLHandler.NODES] as ArrayList;
                        name = new string[subs.Count];
                        hud = new HUD[subs.Count];
                        foreach(Hashtable val in subs)
                        {
                            if(val[XMLHandler.NODE_NAME] as string == HUDData.HUD)
                            {
                                int i = int.Parse((string)val["id"]);
                                hud[i] = new HUD();

                                if(val.ContainsKey("oninteraction")) hud[i].onInteraction = bool.Parse((string)val["oninteraction"]);
                                if(val.ContainsKey("onlyone")) hud[i].onlyOne = bool.Parse((string)val["onlyone"]);
                                if(val.ContainsKey("controls"))
                                {
                                    int count = int.Parse((string)val["controls"]);
                                    hud[i].controlType = new bool[count];
                                }
                                if(val.ContainsKey("elements"))
                                {
                                    int count = int.Parse((string)val["elements"]);
                                    hud[i].element = new HUDElement[count];
                                }
                                if(val.ContainsKey("box")) hud[i].showBox = bool.Parse((string)val["box"]);
                                if(val.ContainsKey("x"))
                                {
                                    hud[i].bounds.x = float.Parse((string)val["x"]);
                                    hud[i].bounds.y = float.Parse((string)val["y"]);
                                    hud[i].bounds.width = float.Parse((string)val["width"]);
                                    hud[i].bounds.height = float.Parse((string)val["height"]);
                                }
                                if(val.ContainsKey("ox"))
                                {
                                    hud[i].offset.x = float.Parse((string)val["ox"]);
                                    hud[i].offset.y = float.Parse((string)val["oy"]);
                                }
                                // fading
                                if(val.ContainsKey("fadeintime"))
                                {
                                    hud[i].fadeIn = true;
                                    hud[i].fadeInTime = float.Parse((string)val["fadeintime"]);
                                    hud[i].fadeInInterpolation = (EaseType)System.Enum.Parse(typeof(EaseType), (string)val["fadeininterpolation"]);
                                }
                                if(val.ContainsKey("fadeouttime"))
                                {
                                    hud[i].fadeOut = true;
                                    hud[i].fadeOutTime = float.Parse((string)val["fadeouttime"]);
                                    hud[i].fadeOutInterpolation = (EaseType)System.Enum.Parse(typeof(EaseType), (string)val["fadeoutinterpolation"]);
                                }
                                // moving
                                if(val.ContainsKey("moveintime"))
                                {
                                    hud[i].moveIn = true;
                                    hud[i].moveInStart.x = float.Parse((string)val["mix"]);
                                    hud[i].moveInStart.y = float.Parse((string)val["miy"]);
                                    hud[i].moveInTime = float.Parse((string)val["moveintime"]);
                                    hud[i].moveInInterpolation = (EaseType)System.Enum.Parse(typeof(EaseType), (string)val["moveininterpolation"]);
                                }
                                if(val.ContainsKey("moveouttime"))
                                {
                                    hud[i].moveOut = true;
                                    hud[i].moveOutStart.x = float.Parse((string)val["mox"]);
                                    hud[i].moveOutStart.y = float.Parse((string)val["moy"]);
                                    hud[i].moveOutTime = float.Parse((string)val["moveouttime"]);
                                    hud[i].moveOutInterpolation = (EaseType)System.Enum.Parse(typeof(EaseType), (string)val["moveoutinterpolation"]);
                                }
                                if(val.ContainsKey("hudclick")) hud[i].hudClick = (HUDClick)System.Enum.Parse(typeof(HUDClick), (string)val["hudclick"]);
                                if(val.ContainsKey("screenindex")) hud[i].screenIndex = int.Parse((string)val["screenindex"]);

                                ArrayList s = val[XMLHandler.NODES] as ArrayList;
                                foreach(Hashtable ht in s)
                                {
                                    if(ht[XMLHandler.NODE_NAME] as string == HUDData.NAME)
                                    {
                                        name[i] = ht[XMLHandler.CONTENT] as string;
                                    }
                                    else if(ht[XMLHandler.NODE_NAME] as string == HUDData.SKIN)
                                    {
                                        hud[i].skinName = ht[XMLHandler.CONTENT] as string;
                                    }
                                    else if(ht[XMLHandler.NODE_NAME] as string == HUDData.CONTROLTYPE)
                                    {
                                        int j = int.Parse((string)ht["id"]);
                                        hud[i].controlType[j] = true;
                                    }
                                    else if(ht[XMLHandler.NODE_NAME] as string == HUDData.ELEMENT)
                                    {
                                        int j = int.Parse((string)ht["id"]);
                                        hud[i].element[j] = new HUDElement();
                                        if(ht.ContainsKey("box")) hud[i].element[j].showBox = bool.Parse((string)ht["box"]);
                                        if(ht.ContainsKey("x"))
                                        {
                                            hud[i].element[j].bounds.x = float.Parse((string)ht["x"]);
                                            hud[i].element[j].bounds.y = float.Parse((string)ht["y"]);
                                            hud[i].element[j].bounds.width = float.Parse((string)ht["width"]);
                                            hud[i].element[j].bounds.height = float.Parse((string)ht["height"]);
                                        }
                                        if(ht.ContainsKey("type")) hud[i].element[j].type = (HUDElementType)System.Enum.Parse(typeof(HUDElementType), (string)ht["type"]);
                                        if(ht.ContainsKey("anchor")) hud[i].element[j].textAnchor = (TextAnchor)System.Enum.Parse(typeof(TextAnchor), (string)ht["anchor"]);

                                        if(HUDElementType.TEXT.Equals(hud[i].element[j].type))
                                        {
                                            hud[i].element[j].SetTextOptions(ht);
                                            if(ht.ContainsKey("langs")) hud[i].element[j].text = new string[int.Parse((string)ht["langs"])];

                                            if(ht.ContainsKey(XMLHandler.NODES))
                                            {
                                                ArrayList s2 = ht[XMLHandler.NODES] as ArrayList;
                                                foreach(Hashtable ht2 in s2)
                                                {
                                                    if(ht2[XMLHandler.NODE_NAME] as string == HUDData.TEXT)
                                                    {
                                                        if(ht2.ContainsKey(XMLHandler.CONTENT))
                                                        {
                                                            hud[i].element[j].text[int.Parse((string)ht2["id"])] = ht2[XMLHandler.CONTENT] as string;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                        else if(HUDElementType.IMAGE.Equals(hud[i].element[j].type))
                                        {
                                            hud[i].element[j].SetImageOptions(ht);
                                        }
                                        else if(HUDElementType.NAME.Equals(hud[i].element[j].type))
                                        {
                                            hud[i].element[j].SetTextOptions(ht);
                                            if(ht.ContainsKey("contenttype")) hud[i].element[j].contentType =
                                                    (HUDContentType)System.Enum.Parse(typeof(HUDContentType), (string)ht["contenttype"]);
                                            if(ht.ContainsKey("nametype")) hud[i].element[j].nameType =
                                                    (HUDNameType)System.Enum.Parse(typeof(HUDNameType), (string)ht["nametype"]);
                                            if(HUDNameType.STATUS.Equals(hud[i].element[j].nameType) && ht.ContainsKey("statusid"))
                                            {
                                                hud[i].element[j].statusID = int.Parse((string)ht["statusid"]);
                                            }
                                        }
                                        else if(HUDElementType.STATUS.Equals(hud[i].element[j].type))
                                        {
                                            if(ht.ContainsKey("statusid")) hud[i].element[j].statusID = int.Parse((string)ht["statusid"]);
                                            if(ht.ContainsKey("displaytype")) hud[i].element[j].displayType =
                                                    (HUDDisplayType)System.Enum.Parse(typeof(HUDDisplayType), (string)ht["displaytype"]);

                                            if(HUDDisplayType.TEXT.Equals(hud[i].element[j].displayType))
                                            {
                                                if(ht.ContainsKey("showmax")) hud[i].element[j].showMax = bool.Parse((string)ht["showmax"]);
                                                if(hud[i].element[j].showMax && ht.ContainsKey(XMLHandler.CONTENT))
                                                {
                                                    hud[i].element[j].divider = ht[XMLHandler.CONTENT] as string;
                                                }
                                                hud[i].element[j].SetTextOptions(ht);
                                            }
                                            else if(HUDDisplayType.BAR.Equals(hud[i].element[j].displayType))
                                            {
                                                if(ht.ContainsKey("useimage")) hud[i].element[j].useImage = bool.Parse((string)ht["useimage"]);
                                                if(hud[i].element[j].useImage)
                                                {
                                                    hud[i].element[j].SetImageOptions(ht);
                                                }
                                                else if(ht.ContainsKey("barcolor"))
                                                {
                                                    hud[i].element[j].barColor = int.Parse((string)ht["barcolor"]);
                                                }
                                            }
                                        }
                                        else if(HUDElementType.TIMEBAR.Equals(hud[i].element[j].type) ||
                                            HUDElementType.USED_TIMEBAR.Equals(hud[i].element[j].type) ||
                                            HUDElementType.CASTTIME.Equals(hud[i].element[j].type))
                                        {
                                            if(ht.ContainsKey("displaytype")) hud[i].element[j].displayType =
                                                    (HUDDisplayType)System.Enum.Parse(typeof(HUDDisplayType), (string)ht["displaytype"]);
                                            if(HUDDisplayType.TEXT.Equals(hud[i].element[j].displayType))
                                            {
                                                hud[i].element[j].SetTextOptions(ht);
                                            }
                                            else if(HUDDisplayType.BAR.Equals(hud[i].element[j].displayType))
                                            {
                                                if(ht.ContainsKey("useimage")) hud[i].element[j].useImage = bool.Parse((string)ht["useimage"]);
                                                if(hud[i].element[j].useImage)
                                                {
                                                    hud[i].element[j].SetImageOptions(ht);
                                                }
                                                else if(ht.ContainsKey("barcolor"))
                                                {
                                                    hud[i].element[j].barColor = int.Parse((string)ht["barcolor"]);
                                                }
                                            }
                                        }
                                        else if(HUDElementType.EFFECT.Equals(hud[i].element[j].type))
                                        {
                                            if(ht.ContainsKey("rows")) hud[i].element[j].rows = int.Parse((string)ht["rows"]);
                                            if(ht.ContainsKey("columns")) hud[i].element[j].columns = int.Parse((string)ht["columns"]);
                                            if(ht.ContainsKey("spacing")) hud[i].element[j].spacing = float.Parse((string)ht["spacing"]);
                                            if(ht.ContainsKey("contenttype")) hud[i].element[j].contentType =
                                                    (HUDContentType)System.Enum.Parse(typeof(HUDContentType), (string)ht["contenttype"]);
                                            if(HUDContentType.TEXT.Equals(hud[i].element[j].contentType) ||
                                                HUDContentType.BOTH.Equals(hud[i].element[j].contentType))
                                            {
                                                hud[i].element[j].SetTextOptions(ht);
                                            }
                                        }
                                        else if(HUDElementType.VARIABLE.Equals(hud[i].element[j].type))
                                        {
                                            if(ht.ContainsKey("varname")) hud[i].element[j].variableName = (string)ht["varname"];
                                            if(ht.ContainsKey("numbervar"))  hud[i].element[j].numberVariable = bool.Parse((string)ht["numbervar"]);
                                            if(ht.ContainsKey("asint"))  hud[i].element[j].asInt = bool.Parse((string)ht["asint"]);
                                            hud[i].element[j].SetTextOptions(ht);

                                            if(ht.ContainsKey("langs")) hud[i].element[j].text = new string[int.Parse((string)ht["langs"])];

                                            if(ht.ContainsKey(XMLHandler.NODES))
                                            {
                                                ArrayList s2 = ht[XMLHandler.NODES] as ArrayList;
                                                foreach(Hashtable ht2 in s2)
                                                {
                                                    if(ht2[XMLHandler.NODE_NAME] as string == HUDData.TEXT)
                                                    {
                                                        if(ht2.ContainsKey(XMLHandler.CONTENT))
                                                        {
                                                            hud[i].element[j].text[int.Parse((string)ht2["id"])] = ht2[XMLHandler.CONTENT] as string;
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }