using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Threading.Tasks; using UnityEngine; class SaveMissionConditionManager : SaveModelSystem<IndexValuePair<string, List<MissionConditionData>>> // TODO change MissionConditionData { public override bool SaveModelItem(IndexValuePair<string, List<MissionConditionData>> model) { return base.SaveModelItem(model); } public override bool SaveModelList(List<IndexValuePair<string, List<MissionConditionData>>> list) { BinaryFormatter formatter = new BinaryFormatter(); Debug.Log("Saved Mision Condition list at " + Path); if (!Directory.Exists(Path)) Directory.CreateDirectory(Path); /* Main logic of conversion data format */ var data = list; // ConvertObjectsListToListOfDataModels(list); FileStream stream = new FileStream( Path + GetFileName(ObjectListName), FileMode.Create ); formatter.Serialize(stream, data); stream.Close(); return true; } public override IndexValuePair<string, List<MissionConditionData>> LoadModelItem() { return base.LoadModelItem(); } public override List<IndexValuePair<string, List<MissionConditionData>>> LoadModelList() { string path = Path + GetFileName(ObjectListName); if (File.Exists(path)) { BinaryFormatter formatter = new BinaryFormatter(); FileStream stream = new FileStream(path, FileMode.Open); List<IndexValuePair<string, List<MissionConditionData>>> missionsList = formatter.Deserialize(stream) as List<IndexValuePair<string, List<MissionConditionData>>>; stream.Close(); return missionsList; // ConvertListOfDataModelsToListOfObject(questsList); } else { Debug.Log("Save file not found in " + path); } return new List<IndexValuePair<string, List<MissionConditionData>>>(); } // ----------------- USELLES IN THIS CLASS ----------------- #region unused // Support function // 1. From model to data format public static MissionConditionData ConvertObjectToDataModel(MissionCondition model) { return MissionConditionData.Build(model); } public static List<IndexValuePair<string, List<MissionConditionData>>> ConvertObjectsListToListOfDataModels(List<IndexValuePair<string, List<MissionCondition>>> modelsList) { List<IndexValuePair<string, List<MissionConditionData>>> convertedList = new List<IndexValuePair<string, List<MissionConditionData>>>(); foreach (IndexValuePair<string, List<MissionCondition>> dataModel in modelsList) { IndexValuePair<string, List<MissionConditionData>> conditionsForMapList = new IndexValuePair<string, List<MissionConditionData>>(dataModel.Key, new List<MissionConditionData>()); foreach (MissionCondition condition in dataModel.Value) { conditionsForMapList.Value.Add( ConvertObjectToDataModel(condition) ); } convertedList.Add(conditionsForMapList); } return convertedList; } // 2. From data to model format public static MissionCondition ConvertDataModelToObject(MissionConditionData dataModel) { return dataModel.MapDataToObject(); } public static List<IndexValuePair<string, List<MissionCondition>>> ConvertListOfDataModelsToListOfObject(List<IndexValuePair<string, List<MissionConditionData>>> dataModelsList) { List<IndexValuePair<string, List<MissionCondition>>> conditioncConvertedList = new List<IndexValuePair<string, List<MissionCondition>>>(); foreach (IndexValuePair<string, List<MissionConditionData>> dataModel in dataModelsList) { IndexValuePair<string, List<MissionCondition>> conditionsForMapList = new IndexValuePair<string, List<MissionCondition>>(dataModel.Key, new List<MissionCondition>()); foreach (MissionConditionData condition in dataModel.Value) { conditionsForMapList.Value.Add( ConvertDataModelToObject(condition) ); } conditioncConvertedList.Add(conditionsForMapList); } return conditioncConvertedList; } #endregion }