private bool UpdateInfo(stSaveInfo info) { int i = _saves.IndexOf(info); if (i == -1) return false; _saves[i].fileInfo.ElapsedTime = ElapsedTime; _saves[i].fileInfo.DateAndTime = DateAndTime; _saves[i].fileInfo.SaveCount = SaveCount; _saves[i].fileInfo.Scene = Scene; return true; }
/// <summary> /// Iterate through files from given "path" and fill "_saves" field with informations from files. /// Retrived inofrmation used for self explaning save file. /// This function will call when the application start. /// </summary> /// <returns> /// The saves. /// </returns> /// <param name='addresses'> /// If set to <c>true</c> addresses. /// </param> private List<stSaveInfo> RetriveSaves(string[] addresses) { stSaveInfo tmpSaveInfo; List<stSaveInfo> tmpSaves = new List<stSaveInfo>(); if (SaveDirExist() == false){ CDebug.LogError("Save directory not exist."); return null ; } for (int i = 0; i < addresses.Length ; i++){ tmpSaveInfo = new stSaveInfo(); bool res = Load(addresses[i], (ISaveAndLoadAgent)CSaveFileInfo_SALAgent.Instance); if (res == false) continue; tmpSaveInfo.fileInfo.DateAndTime = CSaveFileInfo_SALContainer.Instance_Load.SaveFileInfo.DateAndTime; tmpSaveInfo.fileInfo.ElapsedTime = CSaveFileInfo_SALContainer.Instance_Load.SaveFileInfo.ElapsedTime; tmpSaveInfo.fileInfo.Index = CSaveFileInfo_SALContainer.Instance_Load.SaveFileInfo.Index; tmpSaveInfo.fileInfo.SaveCount = CSaveFileInfo_SALContainer.Instance_Load.SaveFileInfo.SaveCount; tmpSaveInfo.fileInfo.Scene = CSaveFileInfo_SALContainer.Instance_Load.SaveFileInfo.Scene; tmpSaveInfo.filePath = addresses[i]; tmpSaves.Add(tmpSaveInfo); } tmpSaves.Sort(delegate(stSaveInfo s1,stSaveInfo s2){return s1.fileInfo.Index.CompareTo(s2.fileInfo.Index);}); return tmpSaves; }
IEnumerator Start() { _existingSaveAddress = GetFilesAddress(); _saves = RetriveSaves(_existingSaveAddress); if(_saves.Count <= 0){ CDebug.LogError("No Save File Founde."); yield break; } _currentSave = _saves[0];//just for now. // CSaveFileInfo_SALContainer c = CSaveFileInfo_SALContainer.Instance; // c.SaveFileInfo.Index = 4; // print(c.SaveFileInfo.Index); // stSaveInfo saveInfo = new stSaveInfo(); // saveInfo.filePath = GeneratePath(0); // saveInfo.fileInfo.DateAndTime = "2102-03-07 -- 8:01PM"; // saveInfo.fileInfo.ElapsedTime = "0:0 Min"; // saveInfo.fileInfo.SaveCount = 0; // saveInfo.fileInfo.Index = 2; // saveInfo.fileInfo.Scene = "First Scene"; // _saves.Add(saveInfo); // // saveInfo = new stSaveInfo(); // saveInfo.filePath = GeneratePath(1); // saveInfo.fileInfo.DateAndTime = "2102-03-07 -- 8:15PM"; // saveInfo.fileInfo.ElapsedTime = "0:10 Min"; // saveInfo.fileInfo.SaveCount = 1; // saveInfo.fileInfo.Index = 0; // saveInfo.fileInfo.Scene = "Sec Scene"; // _saves.Add(saveInfo); // // saveInfo = new stSaveInfo(); // saveInfo.filePath = GeneratePath(2); // saveInfo.fileInfo.DateAndTime = "2102-03-07 -- 8:30PM"; // saveInfo.fileInfo.ElapsedTime = "0:25 Min"; // saveInfo.fileInfo.SaveCount = 2; // saveInfo.fileInfo.Index = 1; // saveInfo.fileInfo.Scene = "Third Scene"; // _saves.Add(saveInfo); yield return new WaitForSeconds(1.0f);;//wait unitl other Start() functions done. Load (CurrentSave); }
void Awake() { DontDestroyOnLoad(this); _instances.Add(this);// Part of singleton system. CSingleton.DestroyExtraInstances(_instances); // Part of singleton system. _invalideFileNameChars = Path.GetInvalidFileNameChars(); _invalidePathChars = Path.GetInvalidPathChars(); _currentDirectory = Directory.GetCurrentDirectory(); SaveName = "save"; SaveFolderName = "TmpSave"; SaveDirectoy = _currentDirectory; SavePath = SaveDirectoy + _dirSeperator + SaveFolderName; _saves = new List<stSaveInfo>();//Contain all saves. _agents = new List<ISaveAndLoadAgent>();//list of all save and load agents. _currentSave = new stSaveInfo(); }
public bool Save(stSaveInfo saveInfo) { int index = GetSaveIndex(saveInfo); _currentSave = saveInfo;// must changed SaveCount += 1; _fileStream = File.Open(_saves[index].filePath,FileMode.Create); UpdateInfo(saveInfo); for (int i = 0; i < _agents.Count; i++ ){ for(int j = 0; j < _agents[i].ClientsInstances.Count; j++){//Notify all clients about save. _agents[i].ClientsInstances[j].OnSave(); } _agents[i].SaveToFile(ref _fileStream,_defualtFormatter); } _fileStream.Close(); return true; }
public bool Load(stSaveInfo loadInfo) { int index = GetSaveIndex(loadInfo); _fileStream = File.Open(_saves[index].filePath,FileMode.Open); for (int i = 0; i < _agents.Count; i++ ) { _agents[i].LoadFromFile(ref _fileStream,_defualtFormatter); for(int j = 0; j < _agents[i].ClientsInstances.Count; j++)//Notify all clients about load. { _agents[i].ClientsInstances[j].OnLoad(); } } _fileStream.Close(); return true; }
public int GetSaveIndex(stSaveInfo si) { return _saves.IndexOf(si); }
public stSaveInfo AddNewSave() { stSaveInfo newSave = new stSaveInfo(); //newSave.filePath = _defualtFilePath + _defualtFileName + _currentSaveInfo.info.saveCounts.ToString("D3"); _saves.Add(newSave); return newSave; }