public static void SaveGame(int index)
{
SaveHandler.Instance().filesChanged = true;
ArrayList data = new ArrayList();
ArrayList subs = new ArrayList();
Hashtable sv = new Hashtable();
sv.Add(XMLHandler.NODE_NAME, SaveHandler.SAVEGAMES);
Hashtable ht = new Hashtable();
ArrayList s = new ArrayList();
ht.Add(XMLHandler.NODE_NAME, SaveHandler.SAVEGAME);
ht.Add("language", GameHandler.GetLanguage().ToString());
ht.Add("difficulty", GameHandler.GetDifficulty().ToString());
if(DataHolder.LoadSaveHUD().savePartyPosition)
{
s.Add(HashtableHelper.GetContentHashtable(SaveHandler.SCENE,
Application.loadedLevelName));
ht.Add("areaname", GameHandler.GetAreaNameID().ToString());
}
if(DataHolder.LoadSaveHUD().saveTime)
{
ht.Add("gametime", GameHandler.GetGameTime().ToString());
}
if(DataHolder.LoadSaveHUD().saveMoney)
{
ht.Add("money", GameHandler.GetMoney().ToString());
}
if(GameHandler.GetMusicHandler().IsPlaying() &&
DataHolder.LoadSaveHUD().savePartyPosition)
{
ht.Add("musicid", GameHandler.GetMusicHandler().GetCurrentID().ToString());
ht.Add("musictime", GameHandler.GetMusicHandler().GetCurrentTime().ToString());
}
Camera cam = Camera.main;
if(cam && DataHolder.LoadSaveHUD().savePartyPosition)
{
ht.Add("camx", cam.transform.position.x.ToString());
ht.Add("camy", cam.transform.position.y.ToString());
ht.Add("camz", cam.transform.position.z.ToString());
ht.Add("camrotx", cam.transform.eulerAngles.x.ToString());
ht.Add("camroty", cam.transform.eulerAngles.y.ToString());
ht.Add("camrotz", cam.transform.eulerAngles.z.ToString());
ht.Add("camfov", cam.fieldOfView.ToString());
}
if(DataHolder.LoadSaveHUD().saveRecipes)
{
ht = GameHandler.GetItemRecipeSaveData(ht);
}
if(DataHolder.LoadSaveHUD().saveItems)
{
s.Add(GameHandler.GetItemSaveData(
HashtableHelper.GetTitleHashtable(SaveHandler.ITEMS)));
}
if(DataHolder.LoadSaveHUD().saveWeapons)
{
s.Add(GameHandler.GetWeaponSaveData(
HashtableHelper.GetTitleHashtable(SaveHandler.WEAPONS)));
}
if(DataHolder.LoadSaveHUD().saveArmors)
{
s.Add(GameHandler.GetArmorSaveData(
HashtableHelper.GetTitleHashtable(SaveHandler.ARMORS)));
}
if(!Selector.NONE.Equals(DataHolder.LoadSaveHUD().gameVariableSelector))
{
s.Add(GameHandler.GetVariableSaveData(
HashtableHelper.GetTitleHashtable(SaveHandler.VARIABLES)));
}
if(!Selector.NONE.Equals(DataHolder.LoadSaveHUD().numberVariableSelector))
{
s.Add(GameHandler.GetNumberVariableSaveData(
HashtableHelper.GetTitleHashtable(SaveHandler.NUMBERVARIABLES)));
}
if(DataHolder.LoadSaveHUD().saveParty)
{
s.Add(GameHandler.Party().GetSaveData(
HashtableHelper.GetTitleHashtable(SaveHandler.PARTY)));
}
if(DataHolder.LoadSaveHUD().savePartyPosition)
{
s.Add(DataHolder.Statistic.GetSaveData(
HashtableHelper.GetTitleHashtable(SaveHandler.STATISTICS)));
}
if(DataHolder.GameSettings().saveDrops)
{
s.Add(GameHandler.DropHandler().GetData(SaveHandler.DROPS));
}
ArrayList ss = new ArrayList();
foreach(AddonSaver adSav in SaveHandler.Instance().addonSavers)
{
Hashtable ht2 = adSav.GetData();
if(ht2 != null) ss.Add(ht2);
}
if(ss.Count > 0)
{
Hashtable ads = new Hashtable();
ads.Add(XMLHandler.NODE_NAME, SaveHandler.ADDONS);
ads.Add(XMLHandler.NODES, ss);
s.Add(ads);
}
ht.Add(XMLHandler.NODES, s);
subs.Add(ht);
sv.Add(XMLHandler.NODES, subs);
data.Add(sv);
SaveHandler.SaveFile(index, XMLHandler.ParseArrayList(data));
}