void OnGUI() { Scale = GUILayout.TextField(Scale); if (GUILayout.Button("Save")) { float fScale = 0; if (float.TryParse(Scale, out fScale)) { //loop through all objects in scene GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType <GameObject>(); StringBuilder Text = new StringBuilder(); foreach (GameObject GO in allObjects) { //System.Xml.Serialization.XmlSerializer write = new //System.Xml.Serialization.XmlSerializer(typeof(GameObject)); //System.Xml.XmlWriter STFU = System.Xml.XmlWriter.Create(Text); //write.Serialize(STFU, GO); //System.Reflection.MemberInfo info = typeof(GameObject).GetMethods(); //object[] attributes = info.GetCustomAttributes(true); GO.GetType(); foreach (System.Reflection.PropertyInfo Field in GO.GetType().GetProperties()) { Debug.Log(">>" + Field.Name.ToString()); Debug.Log(">>" + Field.GetValue(GO, null)); //foreach (Attribute a in Field.GetCustomAttributes(true)) //{ // Debug.Log(">>>" + a.ToString()); //} } break; } //Debug.Log(Text); } else { //catch error Debug.Log("Scale is not NaN!"); } } }
public void Save() { //*************************************************************// // // // ITEMY // // // //*************************************************************// XmlTextWriter w = new XmlTextWriter("Media\\Maps\\" + CurrentLevel.Name + "\\Items.xml", (Encoding)null); w.WriteStartElement("items"); foreach (GameObject GO in Engine.Singleton.ObjectManager.Objects) { if (GO.GetType().ToString() == "WorldCreator.Described" && (GO as Described).Profile.ProfileName[0] != 's') { w.WriteStartElement("item"); w.WriteElementString("DescribedProfile", (GO as Described).Profile.ProfileName); w.WriteElementString("ItemSword", ""); w.WriteElementString("Position_x", (GO as Described).Position.x.ToString()); w.WriteElementString("Position_y", (GO as Described).Position.y.ToString()); w.WriteElementString("Position_z", (GO as Described).Position.z.ToString()); w.WriteElementString("Orientation_w", (GO as Described).Orientation.w.ToString()); w.WriteElementString("Orientation_x", (GO as Described).Orientation.x.ToString()); w.WriteElementString("Orientation_y", (GO as Described).Orientation.y.ToString()); w.WriteElementString("Orientation_z", (GO as Described).Orientation.z.ToString()); w.WriteElementString("Activator", (GO as Described).Activator); w.WriteEndElement(); } if (GO.GetType().ToString() == "WorldCreator.Described" && (GO as Described).Profile.ProfileName[0] == 's') { w.WriteStartElement("item"); w.WriteElementString("ItemSword", (GO as Described).Profile.ProfileName); w.WriteElementString("DescribedProfile", ""); w.WriteElementString("Position_x", (GO as Described).Position.x.ToString()); w.WriteElementString("Position_y", (GO as Described).Position.y.ToString()); w.WriteElementString("Position_z", (GO as Described).Position.z.ToString()); w.WriteElementString("Orientation_w", (GO as Described).Orientation.w.ToString()); w.WriteElementString("Orientation_x", (GO as Described).Orientation.x.ToString()); w.WriteElementString("Orientation_y", (GO as Described).Orientation.y.ToString()); w.WriteElementString("Orientation_z", (GO as Described).Orientation.z.ToString()); w.WriteElementString("Activator", (GO as Described).Activator); w.WriteEndElement(); } } w.WriteEndElement(); w.Flush(); w.Close(); //*************************************************************// // // // NPCS // // // //*************************************************************// XmlTextWriter NPCs = new XmlTextWriter("Media\\Maps\\" + CurrentLevel.Name + "\\NPCs.xml", (Encoding)null); NPCs.WriteStartElement("npcs"); foreach (GameObject GO in Engine.Singleton.ObjectManager.Objects) { if (GO.GetType().ToString() == "WorldCreator.Character") { NPCs.WriteStartElement("npc"); NPCs.WriteElementString("ProfileName", (GO as Character).Profile.ProfileName); NPCs.WriteElementString("Position_x", (GO as Character).Position.x.ToString()); NPCs.WriteElementString("Position_y", (GO as Character).Position.y.ToString()); NPCs.WriteElementString("Position_z", (GO as Character).Position.z.ToString()); NPCs.WriteElementString("Orientation_w", (GO as Character).Orientation.w.ToString()); NPCs.WriteElementString("Orientation_x", (GO as Character).Orientation.x.ToString()); NPCs.WriteElementString("Orientation_y", (GO as Character).Orientation.y.ToString()); NPCs.WriteElementString("Orientation_z", (GO as Character).Orientation.z.ToString()); NPCs.WriteEndElement(); } } NPCs.WriteEndElement(); NPCs.Flush(); NPCs.Close(); //*************************************************************// // // // ENEMY // // // //*************************************************************// XmlTextWriter Enemies = new XmlTextWriter("Media\\Maps\\" + CurrentLevel.Name + "\\Enemies.xml", (Encoding)null); Enemies.WriteStartElement("enemies"); foreach (GameObject GO in Engine.Singleton.ObjectManager.Objects) { if (GO.GetType().ToString() == "WorldCreator.Enemy") { Enemies.WriteStartElement("enemy"); Enemies.WriteElementString("ProfileName", (GO as Enemy).Profile.ProfileName); Enemies.WriteElementString("Position_x", (GO as Enemy).Position.x.ToString()); Enemies.WriteElementString("Position_y", (GO as Enemy).Position.y.ToString()); Enemies.WriteElementString("Position_z", (GO as Enemy).Position.z.ToString()); Enemies.WriteElementString("Orientation_w", (GO as Enemy).Orientation.w.ToString()); Enemies.WriteElementString("Orientation_x", (GO as Enemy).Orientation.x.ToString()); Enemies.WriteElementString("Orientation_y", (GO as Enemy).Orientation.y.ToString()); Enemies.WriteElementString("Orientation_z", (GO as Enemy).Orientation.z.ToString()); Enemies.WriteEndElement(); } } Enemies.WriteEndElement(); Enemies.Flush(); Enemies.Close(); //*************************************************************// // // // WAYPOINTY // // // //*************************************************************// XmlTextWriter WayPoints = new XmlTextWriter("Media\\Maps\\" + CurrentLevel.Name + "\\Waypoints.xml", (Encoding)null); WayPoints.WriteStartElement("waypoints"); foreach (GameObject GO in Engine.Singleton.ObjectManager.Objects) { if (GO.GetType().ToString() == "WorldCreator.WayPoint") { WayPoints.WriteStartElement("waypoint"); WayPoints.WriteElementString("DisplayName", (GO as WayPoint).DisplayName); WayPoints.WriteElementString("Position_x", (GO as WayPoint).Position.x.ToString()); WayPoints.WriteElementString("Position_y", (GO as WayPoint).Position.y.ToString()); WayPoints.WriteElementString("Position_z", (GO as WayPoint).Position.z.ToString()); WayPoints.WriteEndElement(); } } WayPoints.WriteEndElement(); WayPoints.Flush(); WayPoints.Close(); }
void OnGUI() { Scale = GUILayout.TextField(Scale); if (GUILayout.Button("Save")) { float fScale = 0; if (float.TryParse(Scale, out fScale)) { //loop through all objects in scene GameObject[] allObjects = UnityEngine.Object.FindObjectsOfType <GameObject>(); StringBuilder Text = new StringBuilder(); foreach (GameObject GO in allObjects) { //System.Xml.Serialization.XmlSerializer write = new //System.Xml.Serialization.XmlSerializer(typeof(GameObject)); //System.Xml.XmlWriter STFU = System.Xml.XmlWriter.Create(Text); //write.Serialize(STFU, GO); //System.Reflection.MemberInfo info = typeof(GameObject).GetMethods(); //object[] attributes = info.GetCustomAttributes(true); GO.GetType(); foreach (System.Reflection.PropertyInfo Field in GO.GetType().GetProperties()) { Debug.Log("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); try { Debug.Log(">>" + Field.PropertyType.ToString()); Text.Append(Field.PropertyType.ToString() + Environment.NewLine); Debug.Log(">>" + Field.Name.ToString()); Text.Append(Field.Name.ToString() + Environment.NewLine); Debug.Log(">>" + Field.GetValue(GO, null)); Text.Append(Field.GetValue(GO, null) + Environment.NewLine); } catch (System.NotSupportedException e) { Debug.Log("Ignoreing property: " + Field.Name.ToString()); Text.Append("Ignoreing property: " + Field.Name.ToString() + Environment.NewLine); } } Debug.Log("Components"); foreach (Component CompInGO in GO.GetComponents(typeof(Component))) { Debug.Log("//////////////////////////////////"); Debug.Log("Component: " + CompInGO.name); foreach (System.Reflection.PropertyInfo CompententFields in CompInGO.GetType().GetProperties()) { Debug.Log("#############################################"); try { Debug.Log("++++" + CompententFields.PropertyType.ToString()); Text.Append(CompententFields.PropertyType.ToString() + Environment.NewLine); Debug.Log("++++" + CompententFields.Name.ToString()); Text.Append(CompententFields.Name.ToString() + Environment.NewLine); Debug.Log("++++" + CompententFields.GetValue(CompInGO, null)); Text.Append(CompententFields.GetValue(CompInGO, null) + Environment.NewLine); } catch (System.NotSupportedException e) { Debug.Log("Ignoreing Component property: " + CompententFields.Name.ToString()); } } } Debug.Log(Text); break; } //Debug.Log(Text); } else { //catch error Debug.Log("Scale is not NaN!"); } } }
public void AutoSave(String Slot) { if (Slot == null) { Slot = "AutoSave"; } if (CurrentLevel.Name == "MenuLevel") { return; } if (!Directory.Exists("Saves\\" + Slot)) { Directory.CreateDirectory("Saves\\" + Slot); CopyAll(new DirectoryInfo("Media\\Maps"), new DirectoryInfo("Saves\\" + Slot)); } XmlTextWriter Saved = new XmlTextWriter("Saves\\" + Slot + "\\" + CurrentLevel.Name + "\\Saved.xml", (Encoding)null); Saved.WriteStartElement("Saved"); Saved.WriteStartElement("IsSaved"); Saved.WriteElementString("IsItFkinSaved", "True"); Saved.WriteEndElement(); Saved.WriteEndElement(); Saved.Flush(); Saved.Close(); //*************************************************************// // // // ITEMY // // // //*************************************************************// XmlTextWriter w = new XmlTextWriter("Saves\\" + Slot + "\\" + CurrentLevel.Name + "\\Items.xml", (Encoding)null); w.WriteStartElement("items"); foreach (GameObject GO in Engine.Singleton.ObjectManager.Objects) { if (GO.GetType().ToString() == "Gra.Described" && (GO as Described).Profile.ProfileName[0] != 's') { w.WriteStartElement("item"); w.WriteElementString("DescribedProfile", (GO as Described).Profile.ProfileName); w.WriteElementString("ItemSword", ""); w.WriteElementString("Position_x", (GO as Described).Position.x.ToString()); w.WriteElementString("Position_y", (GO as Described).Position.y.ToString()); w.WriteElementString("Position_z", (GO as Described).Position.z.ToString()); w.WriteElementString("Orientation_w", (GO as Described).Orientation.w.ToString()); w.WriteElementString("Orientation_x", (GO as Described).Orientation.x.ToString()); w.WriteElementString("Orientation_y", (GO as Described).Orientation.y.ToString()); w.WriteElementString("Orientation_z", (GO as Described).Orientation.z.ToString()); w.WriteElementString("Activator", (GO as Described).Activatorr); if ((GO as Described).IsContainer) { w.WriteElementString("ContainerGold", (GO as Described).Container.Gold.ToString()); w.WriteStartElement("ContainerItems"); foreach (DescribedProfile DP in (GO as Described).Container.Contains) { w.WriteStartElement("BLABLA"); w.WriteElementString("ContainerItem", DP.ProfileName); w.WriteEndElement(); } w.WriteEndElement(); } w.WriteEndElement(); } if (GO.GetType().ToString() == "Gra.Described" && (GO as Described).Profile.ProfileName[0] == 's') { w.WriteStartElement("item"); w.WriteElementString("ItemSword", (GO as Described).Profile.ProfileName); w.WriteElementString("DescribedProfile", ""); w.WriteElementString("Position_x", (GO as Described).Position.x.ToString()); w.WriteElementString("Position_y", (GO as Described).Position.y.ToString()); w.WriteElementString("Position_z", (GO as Described).Position.z.ToString()); w.WriteElementString("Orientation_w", (GO as Described).Orientation.w.ToString()); w.WriteElementString("Orientation_x", (GO as Described).Orientation.x.ToString()); w.WriteElementString("Orientation_y", (GO as Described).Orientation.y.ToString()); w.WriteElementString("Orientation_z", (GO as Described).Orientation.z.ToString()); w.WriteElementString("Activator", (GO as Described).Activatorr); w.WriteEndElement(); } } w.WriteEndElement(); w.Flush(); w.Close(); //*************************************************************// // // // NPCS // // // //*************************************************************// XmlTextWriter NPCs = new XmlTextWriter("Saves\\" + Slot + "\\" + CurrentLevel.Name + "\\NPCs.xml", (Encoding)null); NPCs.WriteStartElement("npcs"); foreach (GameObject GO in Engine.Singleton.ObjectManager.Objects) { if (GO.GetType().ToString() == "Gra.Character" && (GO as Character) != Engine.Singleton.HumanController.Character && (GO as Character).State != Enemy.StateTypes.DEAD) { NPCs.WriteStartElement("npc"); NPCs.WriteElementString("ProfileName", (GO as Character).Profile.ProfileName); NPCs.WriteElementString("Position_x", (GO as Character).Position.x.ToString()); NPCs.WriteElementString("Position_y", (GO as Character).Position.y.ToString()); NPCs.WriteElementString("Position_z", (GO as Character).Position.z.ToString()); NPCs.WriteElementString("Orientation_w", (GO as Character).Orientation.w.ToString()); NPCs.WriteElementString("Orientation_x", (GO as Character).Orientation.x.ToString()); NPCs.WriteElementString("Orientation_y", (GO as Character).Orientation.y.ToString()); NPCs.WriteElementString("Orientation_z", (GO as Character).Orientation.z.ToString()); NPCs.WriteElementString("Gold", (GO as Character).Profile.Gold.ToString()); NPCs.WriteStartElement("Inventory"); foreach (DescribedProfile invItem in (GO as Character).Inventory) { NPCs.WriteStartElement("BLABLA"); NPCs.WriteElementString("InventoryItem", invItem.ProfileName); NPCs.WriteEndElement(); } NPCs.WriteEndElement(); (GO as Character).Statistics.WriteToFile(NPCs); NPCs.WriteElementString("State", ((int)(GO as Character).State).ToString()); NPCs.WriteEndElement(); } } NPCs.WriteEndElement(); NPCs.Flush(); NPCs.Close(); //*************************************************************// // // // ENEMY // // // //*************************************************************// XmlTextWriter Enemies = new XmlTextWriter("Saves\\" + Slot + "\\" + CurrentLevel.Name + "\\Enemies.xml", (Encoding)null); Enemies.WriteStartElement("enemies"); foreach (GameObject GO in Engine.Singleton.ObjectManager.Objects) { if (GO.GetType().ToString() == "Gra.Enemy" && (GO as Enemy).State != Enemy.StateTypes.DEAD) { Enemies.WriteStartElement("enemy"); Enemies.WriteElementString("ProfileName", (GO as Enemy).Profile.ProfileName); Enemies.WriteElementString("Position_x", (GO as Enemy).Position.x.ToString()); Enemies.WriteElementString("Position_y", (GO as Enemy).Position.y.ToString()); Enemies.WriteElementString("Position_z", (GO as Enemy).Position.z.ToString()); Enemies.WriteElementString("Orientation_w", (GO as Enemy).Orientation.w.ToString()); Enemies.WriteElementString("Orientation_x", (GO as Enemy).Orientation.x.ToString()); Enemies.WriteElementString("Orientation_y", (GO as Enemy).Orientation.y.ToString()); Enemies.WriteElementString("Orientation_z", (GO as Enemy).Orientation.z.ToString()); (GO as Enemy).Statistics.WriteToFile(Enemies); Enemies.WriteElementString("State", ((int)(GO as Enemy).State).ToString()); Enemies.WriteEndElement(); } } Enemies.WriteEndElement(); Enemies.Flush(); Enemies.Close(); //*************************************************************// // // // TWOJ PROFIL // // // //*************************************************************// Character ch = HumanController.Character; XmlTextWriter Profile = new XmlTextWriter("Saves\\" + Slot + "\\Profile.xml", (Encoding)null); Profile.WriteStartElement("Profile"); Profile.WriteElementString("Exp", ch.Profile.Exp.ToString()); Profile.WriteElementString("Gold", ch.Profile.Gold.ToString()); Profile.WriteElementString("Position_x", ch.Position.x.ToString()); Profile.WriteElementString("Position_y", ch.Position.y.ToString()); Profile.WriteElementString("Position_z", ch.Position.z.ToString()); Profile.WriteElementString("Orientation_w", ch.Orientation.w.ToString()); Profile.WriteElementString("Orientation_x", ch.Orientation.x.ToString()); Profile.WriteElementString("Orientation_y", ch.Orientation.y.ToString()); Profile.WriteElementString("Orientation_z", ch.Orientation.z.ToString()); Profile.WriteStartElement("Inventory"); foreach (DescribedProfile DP in ch.Inventory) { Profile.WriteStartElement("BLABLA"); Profile.WriteElementString("ProfileName", DP.ProfileName); Profile.WriteElementString("IsEquipment", DP.IsEquipment.ToString()); Profile.WriteEndElement(); } Profile.WriteEndElement(); ch.Statistics.WriteToFile(Profile); Profile.WriteElementString("State", ((int)ch.State).ToString()); Profile.WriteElementString("MapName", CurrentLevel.Name); Profile.WriteStartElement("Quests"); foreach (Quest q in ch.ActiveQuests.Quests) { Profile.WriteStartElement("BLABLA"); Profile.WriteElementString("QuestName", q.questID); Profile.WriteElementString("IsFinished", q.IsFinished.ToString()); Profile.WriteStartElement("KilledEnemies"); List <string> keys = new List <string>(q.KilledEnemies.Keys.ToList()); List <int> values = new List <int>(q.KilledEnemies.Values.ToList()); for (int i = 0; i < keys.Count; i++) { Profile.WriteStartElement("BLABLA"); Profile.WriteElementString("EnemyName", keys[i]); Profile.WriteElementString("Amount", values[i].ToString()); Profile.WriteEndElement(); } Profile.WriteEndElement(); } Profile.WriteEndElement(); Profile.WriteEndElement(); Profile.Flush(); Profile.Close(); //*************************************************************// // // // DIALOGI // // // //*************************************************************// XmlTextWriter Dialogi = new XmlTextWriter("Saves\\" + Slot + "\\Dialogi.xml", (Encoding)null); Dialogi.WriteStartElement("Dialogi"); foreach (Dialog d in Conversations.D.Values) { Dialogi.WriteStartElement("Dialog"); Dialogi.WriteElementString("DialogID", d.ID); Dialogi.WriteStartElement("TalkEdges"); foreach (TalkEdge e in d.Edges.Values) { Dialogi.WriteStartElement("BLABLA_XD"); Dialogi.WriteElementString("EdgeID", e.ID); Dialogi.WriteElementString("FirstTalk", e.FirstTalk.ToString()); Dialogi.WriteElementString("Other", e.Other.ToString()); Dialogi.WriteEndElement(); } Dialogi.WriteEndElement(); Dialogi.WriteEndElement(); } Dialogi.WriteEndElement(); Dialogi.Flush(); Dialogi.Close(); }