static public void SaveGridXml(ModelNPC.GridData state, string datapath, bool isNewWorld = false) { string indErr = "start"; //------- Save parts //SaveGridPartsXml(state, datapath,isNewWorld); //------- Save cash and big SaveGridCashXml(state, datapath, isNewWorld); return; //---------------- if (isNewWorld) { if (File.Exists(datapath)) { try { indErr = "delete"; File.Delete(datapath); } catch (Exception x) { Debug.Log("############# Error SaveGridXml NOT File Delete: " + datapath + " : " + x.Message); } } } try { indErr = "1"; //Type[] extraTypes = { typeof(FieldData), typeof(ObjectData), typeof(ObjectDataUfo) }; //## state.FieldsXML = state.FieldsD.ToList(); indErr = "2"; //## Debug.Log("SaveXml GridData D:" + state.FieldsD.Count() + " XML:" + state.FieldsXML.Count() + " datapath=" + datapath); indErr = "3"; XmlSerializer serializer = new XmlSerializer(typeof(ModelNPC.GridData), extraTypes); indErr = "5"; FileStream fs = new FileStream(datapath, FileMode.Create); indErr = "6"; serializer.Serialize(fs, state); indErr = "7"; fs.Close(); indErr = "8"; state.FieldsXML = null; //Debug.Log("Saved Xml GridData L:" + state.Fields.Count() + " D:" + state.FieldsD.Count() + " XML:" + state.FieldsXML.Count() + " datapath=" + datapath); } catch (Exception x) { Debug.Log("######### SaveGridXml: " + x.Message + " to :" + datapath); } }
IEnumerator StartLoadPartXML(string datapathPart) { string stepErr = "start"; //yield return null; ModelNPC.GridData itemGridData = null; stepErr = ".1"; stepErr = ".2"; XmlSerializer serializer = new XmlSerializer(typeof(ModelNPC.GridData), Serializator.extraTypes); stepErr = ".3"; using (FileStream fs = new FileStream(datapathPart, FileMode.Open)) { stepErr = ".4"; itemGridData = (ModelNPC.GridData)serializer.Deserialize(fs); stepErr = ".5"; fs.Close(); } yield return(null); stepErr = ".6"; itemGridData.FieldsD = itemGridData.FieldsXML.ToDictionary(x => x.Key, x => x.Value); stepErr = ".7"; Debug.Log("Loaded Xml GridData D:" + itemGridData.FieldsD.Count() + " datapath=" + datapathPart); //## itemGridData.FieldsXML = null; stepErr = ".8"; //yield return null; Storage.Instance.GridDataG.FieldsD = Storage.Instance.GridDataG.FieldsD.Concat(itemGridData.FieldsD) .ToDictionary(x => x.Key, x => x.Value); }
/* * static public ModelNPC.GridData LoadGridPartsXml() * { * string datapath; * * string stepErr = "start"; * * ModelNPC.GridData result = new ModelNPC.GridData(); * try * { * Debug.Log("Loaded Xml GridData start..."); * for (int partX = 0; partX < 3; partX++) * { * for (int partY = 0; partY < 3; partY++) * { * stepErr = "c.1"; * string nameFileXML = +(partX + 1) + "x" + (partY + 1); * string datapathPart = Application.dataPath + "/Levels/LevelDataPart" + nameFileXML + ".xml"; * datapath = datapathPart; * if (File.Exists(datapathPart)) * { * try * { * ModelNPC.GridData itemGridData = null; * stepErr = ".1"; * stepErr = ".2"; * XmlSerializer serializer = new XmlSerializer(typeof(ModelNPC.GridData), extraTypes); * stepErr = ".3"; * using (FileStream fs = new FileStream(datapathPart, FileMode.Open)) * { * stepErr = ".4"; * itemGridData = (ModelNPC.GridData)serializer.Deserialize(fs); * stepErr = ".5"; * fs.Close(); * } * stepErr = ".6"; * itemGridData.FieldsD = itemGridData.FieldsXML.ToDictionary(x => x.Key, x => x.Value); * stepErr = ".7"; * Debug.Log("Loaded Xml GridData D:" + itemGridData.FieldsD.Count() + " XML:" + result.FieldsXML.Count() + " datapath=" + datapathPart); * //## * itemGridData.FieldsXML = null; * stepErr = ".8"; * result.FieldsD = result.FieldsD.Concat(itemGridData.FieldsD) * .ToDictionary(x => x.Key, x => x.Value); * * } * catch (Exception x) * { * Debug.Log("############ #" + stepErr + " LoadGridPartsXml : " + datapathPart + " : " + x.Message); * } * } * * } * } * * * } * catch (Exception x) * { * result = null; * Debug.Log("Error DeXml: " + x.Message + " " + stepErr); * } * * return result; * } */ static public ModelNPC.GridData LoadGridXml_1(string datapath) { //--Load parts //return LoadGridPartsXml(); //return null; //------------------- string stepErr = "start"; ModelNPC.GridData state = null; try { Debug.Log("Loaded Xml GridData start..."); stepErr = ".1"; //Type[] extraTypes = { typeof(FieldData), typeof(ObjectData), typeof(ObjectDataUfo) }; stepErr = ".2"; XmlSerializer serializer = new XmlSerializer(typeof(ModelNPC.GridData), extraTypes); stepErr = ".3"; FileStream fs = new FileStream(datapath, FileMode.Open); stepErr = ".4"; state = (ModelNPC.GridData)serializer.Deserialize(fs); stepErr = ".5"; fs.Close(); stepErr = ".6"; state.FieldsD = state.FieldsXML.ToDictionary(x => x.Key, x => x.Value); stepErr = ".7"; Debug.Log("Loaded Xml GridData D:" + state.FieldsD.Count() + " XML:" + state.FieldsXML.Count() + " datapath=" + datapath); //## state.FieldsXML = null; } catch (Exception x) { Storage.EventsUI.SetTittle = "Error LoadGridXml : " + datapath; Storage.EventsUI.ListLogAdd = "########### Error LoadGridXml"; Storage.EventsUI.ListLogAdd = "########### Error LoadGridXml : " + datapath; Storage.EventsUI.ListLogAdd = "########### Error LoadGridXml"; Storage.EventsUI.ListLogAdd = "########### Error LoadGridXml stepErr: " + stepErr; Storage.EventsUI.ListLogAdd = "Error LoadGridXml : " + x.Message; state = null; Debug.Log("Error DeXml: " + x.Message + " " + stepErr); } if (state == null) { Storage.EventsUI.SetTittle = "LoadGridXml data is empty: " + datapath; Storage.EventsUI.ListLogAdd = "LoadGridXml data is empty"; Storage.EventsUI.ListLogAdd = "LoadGridXml data is empty: " + datapath; Storage.EventsUI.ListLogAdd = "LoadGridXml data is empty"; } return(state); }
static public ModelNPC.GridData LoadGridXml(string datapath) { //--Load parts //return LoadGridPartsXml(); //return null; //------------------- string stepErr = "start"; ModelNPC.GridData state = null; try { Debug.Log("Loaded Xml GridData start..."); var encoding = Encoding.GetEncoding("UTF-8"); XmlSerializer serializer = new XmlSerializer(typeof(ModelNPC.GridData), extraTypes); using (StreamReader reader = new StreamReader(datapath, Encoding.UTF8, true)) { state = (ModelNPC.GridData)serializer.Deserialize(reader); } stepErr = ".6"; state.FieldsD = state.FieldsXML.ToDictionary(x => x.Key, x => x.Value); stepErr = ".7"; Debug.Log("Loaded Xml GridData D:" + state.FieldsD.Count() + " XML:" + state.FieldsXML.Count() + " datapath=" + datapath); //## state.FieldsXML = null; } catch (Exception x) { Storage.EventsUI.SetTittle = "Error LoadGridXml : " + datapath; Storage.EventsUI.ListLogAdd = "########### Error LoadGridXml"; Storage.EventsUI.ListLogAdd = "########### Error LoadGridXml : " + datapath; Storage.EventsUI.ListLogAdd = "########### Error LoadGridXml stepErr: " + stepErr; Storage.EventsUI.ListLogAdd = "Error LoadGridXml : " + x.Message; state = null; Debug.Log("Error DeXml: " + x.Message + " " + stepErr); } if (state == null) { Storage.EventsUI.SetTittle = "LoadGridXml data is empty: " + datapath; Storage.EventsUI.ListLogAdd = "LoadGridXml data is empty"; Storage.EventsUI.ListLogAdd = "LoadGridXml data is empty: " + datapath; Storage.EventsUI.ListLogAdd = "LoadGridXml data is empty"; } return(state); }
public void LoadData() { EventsUI.ListLogAdd = "LoadPathDatab..."; EventsUI.SetTittle = "##### LoadPathData"; _datapathLevel = Application.dataPath + "/Levels/LevelDataPart1x1.xml"; string dir = Application.dataPath + "/Levels"; if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } if (File.Exists(_datapathLevel)) { EventsUI.ListLogAdd = "LoadGridXml..."; Instance.IsLoadingWorldThread = true; _GridDataG = Serializator.LoadGridXml(_datapathLevel); System.GC.Collect(); //--load parts //StartCoroutine(StartLoadDataPartsXML()); //--load cash //StartCoroutine(StartLoadDataBigXML()); //-- load old style //StartCoroutine(StartInGameLoadDataBigXML()); _DiskData.LoadDataBigXML(); //<<< //-- Load Async //StartCoroutine(StartBackgroundLoadDataBigXML()); //-- Load Async //StartCoroutine(StartThreadLoadDataBigXML()); //GridData.LoadDataBigThreadXML(); } else { Debug.Log("# LoadPathData not exist: " + _datapathLevel); Storage.EventsUI.ListLogAdd = "##### LoadPathData"; Storage.EventsUI.ListLogAdd = "##### LoadPathData not exist: " + _datapathLevel; Storage.EventsUI.ListLogAdd = "##### LoadPathData"; } }
//public static SavePartXML(ModelNPC.GridData state, string nameFileXML = "") public static void SavePartXML(ModelNPC.GridData state, string nameFileXML = "") { string indErr = "1"; //Dictionary<string, ModelNPC.FieldData> partGridFields = partGrid; indErr = "1.1."; string datapathPart = Application.dataPath + "/Levels/LevelDataPart" + nameFileXML + ".xml"; if (File.Exists(datapathPart)) { try { indErr = "delete"; File.Delete(datapathPart); } catch (Exception x) { Debug.Log("############# Error SavePartXML NOT File Delete: " + datapathPart + " : " + x.Message); } } indErr = "1.3."; state.FieldsXML = state.FieldsD.ToList(); indErr = "2"; //## Debug.Log("SaveXml GridData D:" + state.FieldsD.Count() + " XML:" + state.FieldsXML.Count() + " datapath=" + datapathPart); indErr = "3"; //XmlSerializer serializer = new XmlSerializer(typeof(ModelNPC.GridData), extraTypes); XmlSerializer serializer = new XmlSerializer(typeof(ModelNPC.GridData), extraTypes); System.Text.UTF8Encoding encodingT = new System.Text.UTF8Encoding(); indErr = "5"; using (FileStream fs = new FileStream(datapathPart, FileMode.CreateNew)) { indErr = "6"; //----------- //var memoryStream = new MemoryStream(); //var streamWriter = new StreamWriter(memoryStream, System.Text.Encoding.UTF8); //serializer.Serialize(streamWriter, state); //serializer.Serialize(fs, streamWriter); ////---------------- //using (MemoryStream stream = new MemoryStream()) //{ // //XmlSerializer s = new XmlSerializer(typeof(T)); // //Console.WriteLine("Testing for type: {0}", typeof(T)); // serializer.Serialize(System.Xml.XmlWriter.Create(stream), state); // stream.Flush(); // stream.Seek(0, SeekOrigin.Begin); // object o = s.Deserialize(XmlReader.Create(stream)); // Console.WriteLine(" Deserialized type: {0}", o.GetType()); //} //-------------------- // //System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding(); //inputString = encoding.GetString(inputString); //serializer.Serialize(fs, state, encodingStyle: "UTF8Encoding"); //var encoding = Encoding.GetEncoding("ISO-8859-1"); //using (StreamWriter sw = new StreamWriter(fname, appendMode, encoding)) //---------------- serializer.Serialize(fs, state); //---------------- indErr = "7"; fs.Close(); } //FileStream fs = new FileStream(datapathPart, FileMode.CreateNew, FileAccess.Write, FileShare.None); //StreamWriter swFromFileTrueUTF8 = new StreamWriter(datapathPart, true, System.Text.Encoding.UTF8); //swFromFileTrueUTF8.Write(textToAdd); //swFromFileTrueUTF8.Flush(); //swFromFileTrueUTF8.Close(); }
/* * static public void SaveGridPartsXml(ModelNPC.GridData state, string datapath, bool isNewWorld = false) * { * * string indErr = "start"; * * if (isNewWorld) * { * for (int partX = 0; partX < Helper.SizePart; partX++) * { * for (int partY = 0; partY < Helper.SizePart; partY++) * { * indErr = "c.1"; * string nameFileXML = +(partX + 1) + "x" + (partY + 1); * string datapathPart = Application.dataPath + "/Levels/LevelDataPart" + nameFileXML + ".xml"; * datapath = datapathPart; * if (File.Exists(datapathPart)) * { * try * { * indErr = "delete"; * File.Delete(datapathPart); * } * catch (Exception x) * { * Debug.Log("############# Error SaveGridXml NOT File Delete: " + datapathPart + " : " + x.Message); * } * } * * } * } * * * } * * try * { * Dictionary<string, ModelNPC.FieldData> FieldsPart = new Dictionary<string, ModelNPC.FieldData>(); * int SizePart = Helper.WidthLevel / Helper.SizePart; * * Dictionary<string, Dictionary<string, ModelNPC.FieldData>> PartsGrids = new Dictionary<string, Dictionary<string, ModelNPC.FieldData>>(); * for (int partX = 0; partX < Helper.SizePart; partX++) * { * for (int partY = 0; partY < Helper.SizePart; partY++) * { * FieldsPart = new Dictionary<string, ModelNPC.FieldData>(); * string nameFileXML = +(partX + 1) + "x" + (partY + 1); * int startX = partX * SizePart; * int startY = partY * SizePart; * int widthX = startX + SizePart; * int widthY = startY + SizePart; * for (int x = startX; x < widthX; x++) * { * for (int y = startY; y < widthY; y++) * { * indErr = "d.1"; * string fieldName = Helper.GetNameField(x, y); * indErr = "d.2"; * if (state.FieldsD.ContainsKey(fieldName)) * { * ModelNPC.FieldData copyFields = state.FieldsD[fieldName]; * * FieldsPart.Add(fieldName, copyFields); * } * } * } * indErr = "d.3"; * PartsGrids.Add(nameFileXML, FieldsPart); * } * } * * foreach (var partGrid in PartsGrids) * { * indErr = "1"; * //Type[] extraTypes = { typeof(FieldData), typeof(ObjectData), typeof(ObjectDataUfo) }; * //## * Dictionary<string, ModelNPC.FieldData> partGridFields = partGrid.Value; * indErr = "1.1."; * string nameFileXML = partGrid.Key; * indErr = "1.2."; * string datapathPart = Application.dataPath + "/Levels/LevelDataPart" + nameFileXML + ".xml"; * datapath = datapathPart; * * indErr = "1.3."; * * state.FieldsXML = partGridFields.ToList(); * indErr = "2"; * //## * Debug.Log("SaveXml GridData D:" + partGridFields.Count() + " XML:" + state.FieldsXML.Count() + " datapath=" + datapathPart); * * indErr = "3"; * XmlSerializer serializer = new XmlSerializer(typeof(ModelNPC.GridData), extraTypes); * * indErr = "5"; * //FileStream fs = new FileStream(datapathPart, FileMode.CreateNew); * * //indErr = "6"; * //serializer.Serialize(fs, state); * * //indErr = "7"; * //fs.Close(); * using (FileStream fs = new FileStream(datapathPart, FileMode.CreateNew)) * { * indErr = "6"; * serializer.Serialize(fs, state); * * indErr = "7"; * fs.Close(); * } * } * indErr = "8"; * state.FieldsXML = null; * //Debug.Log("Saved Xml GridData L:" + state.Fields.Count() + " D:" + state.FieldsD.Count() + " XML:" + state.FieldsXML.Count() + " datapath=" + datapath); * } * catch (Exception x) * { * Debug.Log("######### SaveGridXml: " + x.Message + " to :" + datapath + " #" + indErr); * } * } */ static public void SaveGridCashXml(ModelNPC.GridData state, string datapath, bool isNewWorld = false) { string indErr = "start"; try { Dictionary <string, ModelNPC.FieldData> dataSave = new Dictionary <string, ModelNPC.FieldData>(state.FieldsD); Dictionary <string, ModelNPC.FieldData> FieldsPart = new Dictionary <string, ModelNPC.FieldData>(); int SizePart = Helper.WidthLevel / Helper.SizePart; Dictionary <string, Dictionary <string, ModelNPC.FieldData> > PartsGrids = new Dictionary <string, Dictionary <string, ModelNPC.FieldData> >(); int partX = 0; int partY = 0; FieldsPart = new Dictionary <string, ModelNPC.FieldData>(); string nameFileXML = +(partX + 1) + "x" + (partY + 1); int startX = partX * SizePart; int startY = partY * SizePart; int widthX = startX + SizePart; int widthY = startY + SizePart; Helper.StartControlTime(); for (int x = startX; x < widthX; x++) { for (int y = startY; y < widthY; y++) { indErr = "d.1"; string fieldName = Helper.GetNameField(x, y); indErr = "d.2"; //if (state.FieldsD.ContainsKey(fieldName)) if (dataSave.ContainsKey(fieldName)) { //ModelNPC.FieldData copyFields = state.FieldsD[fieldName]; ModelNPC.FieldData copyFields = dataSave[fieldName]; FieldsPart.Add(fieldName, copyFields); //state.FieldsD.Remove(fieldName); dataSave.Remove(fieldName); } } } indErr = "d.3"; Helper.StopControlTime("...time: SaveGridCashXml FieldsPart: "); //Dictionary<string, ModelNPC.FieldData> cashPart = PartsGrids["1x1"]; Dictionary <string, ModelNPC.FieldData> cashPart = FieldsPart; Dictionary <string, ModelNPC.FieldData> bigPart = dataSave; Helper.StartControlTime(); ModelNPC.GridData stateCash = new ModelNPC.GridData() { FieldsD = cashPart }; SavePartXML(stateCash, "1x1"); Helper.StopControlTime("...time: SaveGridCashXml Save Cash"); Helper.StartControlTime(); ModelNPC.GridData stateBig = new ModelNPC.GridData() { FieldsD = bigPart }; SavePartXML(stateBig, "1x2"); Helper.StopControlTime("...time: SaveGridCashXml Save Big"); indErr = "8"; state.FieldsXML = null; //Debug.Log("Saved Xml GridData L:" + state.Fields.Count() + " D:" + state.FieldsD.Count() + " XML:" + state.FieldsXML.Count() + " datapath=" + datapath); } catch (Exception x) { Debug.Log("######### SaveGridXml: " + x.Message + " to :" + datapath + " #" + indErr); } }
public void ClearGridData() { _GridDataG = new ModelNPC.GridData(); }