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;
}
}
}
}
}
}
}
}
}
}
}
}
}
}