public void SaveData()
{
if(name.Length == 0) return;
ArrayList data = new ArrayList();
ArrayList subs = new ArrayList();
Hashtable sv = new Hashtable();
sv.Add(XMLHandler.NODE_NAME, WeaponData.WEAPONS);
for(int i=0; i<name[0].Count(); i++)
{
Hashtable ht = new Hashtable();
ArrayList s = new ArrayList();
ht.Add(XMLHandler.NODE_NAME, WeaponData.WEAPON);
ht.Add("id", i.ToString());
if(weapon[i].minimumLevel != 0)
{
ht.Add("minimumlevel", weapon[i].minimumLevel.ToString());
}
if(weapon[i].minimumClassLevel != 0)
{
ht.Add("minimumclasslevel", weapon[i].minimumClassLevel.ToString());
}
if(weapon[i].dropable) ht.Add("dropable", "true");
ht.Add("equipparts", weapon[i].equipPart.Length.ToString());
ht.Add("equiptype", weapon[i].equipType.ToString());
ht.Add("buyprice", weapon[i].buyPrice.ToString());
if(weapon[i].sellable)
{
ht.Add("sellprice", weapon[i].sellPrice.ToString());
ht.Add("sellsetter", weapon[i].sellSetter.ToString());
}
if("" != weapon[i].prefabName)
{
Hashtable pref = new Hashtable();
pref.Add(XMLHandler.NODE_NAME, WeaponData.PREFAB);
pref.Add(XMLHandler.CONTENT, weapon[i].prefabName);
s.Add(pref);
}
Hashtable anims = new Hashtable();
anims.Add(XMLHandler.NODE_NAME, WeaponData.ANIMATIONS);
anims.Add("ownbase", weapon[i].ownBaseAnimations.ToString());
if(weapon[i].ownBaseAnimations)
{
anims = weapon[i].battleAnimations.GetData(anims);
}
s.Add(anims);
s = this.SaveLanguages(s, i);
for(int j=0; j<weapon[i].equipPart.Length; j++)
{
if(weapon[i].equipPart[j])
{
Hashtable ep = HashtableHelper.GetTitleHashtable(WeaponData.EQUIPPART, j);
ep.Add("enabled", weapon[i].equipPart[j].ToString());
s.Add(ep);
}
if(weapon[i].blockPart[j])
{
Hashtable ep = HashtableHelper.GetTitleHashtable(WeaponData.BLOCKPART, j);
ep.Add("blocked", weapon[i].blockPart[j].ToString());
s.Add(ep);
}
}
ht.Add("effects", weapon[i].skillEffect.Length.ToString());
for(int j=0; j<weapon[i].skillEffect.Length; j++)
{
if(weapon[i].skillEffect[j] > 0)
{
Hashtable e = HashtableHelper.GetTitleHashtable(WeaponData.EFFECT, j);
e.Add("value", weapon[i].skillEffect[j].ToString());
s.Add(e);
}
}
if(weapon[i].equipmentSkill.Length > 0)
{
ht.Add("skills", weapon[i].equipmentSkill.Length.ToString());
for(int j=0; j<weapon[i].equipmentSkill.Length; j++)
{
Hashtable ep = new Hashtable();
ep.Add(XMLHandler.NODE_NAME, WeaponData.SKILL);
ep.Add("id", j.ToString());
ep.Add("skill", weapon[i].equipmentSkill[j].skill.ToString());
ep.Add("slvl", weapon[i].equipmentSkill[j].skillLevel.ToString());
if(weapon[i].equipmentSkill[j].requireLevel)
{
ep.Add("level", weapon[i].equipmentSkill[j].level.ToString());
}
if(weapon[i].equipmentSkill[j].requireClassLevel)
{
ep.Add("classlevel", weapon[i].equipmentSkill[j].classLevel.ToString());
}
if(weapon[i].equipmentSkill[j].requireClass)
{
ep.Add("class", weapon[i].equipmentSkill[j].classNumber.ToString());
}
ArrayList ss = new ArrayList();
for(int k=0; k<weapon[i].equipmentSkill[j].requireStatus.Length; k++)
{
if(weapon[i].equipmentSkill[j].requireStatus[k])
{
Hashtable skill = new Hashtable();
skill.Add(XMLHandler.NODE_NAME, WeaponData.STATUS);
skill.Add("id", k.ToString());
skill.Add("value", weapon[i].equipmentSkill[j].statusValue[k]);
skill.Add("requirement", weapon[i].equipmentSkill[j].statusRequirement[k]);
ss.Add(skill);
}
}
if(ss.Count > 0)
{
ep.Add(XMLHandler.NODES, ss);
}
s.Add(ep);
}
}
if(weapon[i].ownAttack)
{
ht.Add("element", weapon[i].element.ToString());
ht.Add("attacks", weapon[i].baseAttack.Length.ToString());
for(int j=0; j<weapon[i].baseAttack.Length; j++)
{
Hashtable ht2 = HashtableHelper.GetTitleHashtable(WeaponData.ATTACK, j);
ht2.Add("id2", weapon[i].baseAttack[j].ToString());
s.Add(ht2);
}
}
ht.Add("elements", weapon[i].elementValue.Length.ToString());
for(int j=0; j<weapon[i].elementValue.Length; j++)
{
if(weapon[i].elementValue[j] != 0 || SimpleOperator.SET.Equals(weapon[i].elementOperator[j]))
{
Hashtable e = new Hashtable();
e.Add(XMLHandler.NODE_NAME, WeaponData.ELEMENT);
e.Add("id", j.ToString());
e.Add("value", weapon[i].elementValue[j].ToString());
e.Add("operator", weapon[i].elementOperator[j].ToString());
s.Add(e);
}
}
ht.Add("races", weapon[i].raceValue.Length.ToString());
for(int j=0; j<weapon[i].raceValue.Length; j++)
{
if(weapon[i].raceValue[j] != 0)
{
Hashtable e = HashtableHelper.GetTitleHashtable(WeaponData.RACE, j);
e.Add("value", weapon[i].raceValue[j].ToString());
s.Add(e);
}
}
ht.Add("sizes", weapon[i].sizeValue.Length.ToString());
for(int j=0; j<weapon[i].sizeValue.Length; j++)
{
if(weapon[i].sizeValue[j] != 0)
{
Hashtable e = HashtableHelper.GetTitleHashtable(WeaponData.SIZE, j);
e.Add("value", weapon[i].sizeValue[j].ToString());
s.Add(e);
}
}
s.Add(weapon[i].bonus.GetData(HashtableHelper.GetTitleHashtable(WeaponData.BONUSSETTINGS)));
ht.Add(XMLHandler.NODES, s);
subs.Add(ht);
}
sv.Add(XMLHandler.NODES, subs);
data.Add(sv);
XMLHandler.SaveXML(dir, filename, data);
}