public void AddSaveRequest(SaveLoadMessage msg) { lock (_saveRequests) { _saveRequests.Clear(); _saveRequests.Add(msg); } }
public void EraseFile(int fileNumber) { var msg = new SaveLoadMessage(); msg.Data = DataHelper.GetSaveDataCopyForFileNumber(fileNumber); msg.FileNumber = fileNumber; msg.Erase = true; DataHelper.EraseDataForFile(fileNumber); _backgroundThread.AddSaveRequest(msg); _backgroundThread.AddPreferenceRequest(DataHelper.PreferenceData.Copy()); }
private void SaveGame(MenuPageEventArgs e) { var args = e as SaveGameEventArgs; if (args == null) { return; } _waitForSave = true; var msg = new SaveLoadMessage(); msg.FileNumber = args.FileNumber; msg.Data = DataHelper.GetSaveDataCopyForFileNumber(args.FileNumber); _resourceManager.RequestSave(msg); }
private void ExecuteSaveRequest(SaveLoadMessage msg) { if (msg == null) { return; } SaveInitiated(); if (msg.Erase) { _saveLoadHandler.EraseFile(msg.FileNumber); } else { _saveLoadHandler.RequestSave(msg.FileNumber, msg.Data); } if (_saveRequests.Count == 0) { SaveCompleted(); } }
public void Loop() { while (_continueLooping) { // region load/unload requests var regionsToLoad = new List <RegionNames>(); var regionsToUnload = new List <RegionNames>(); lock (_loadUnloadLock) { if (_loadRequests.Count > 0 || _unloadRequests.Count > 0) { regionsToLoad.AddRange(_loadRequests); _loadRequests.Clear(); regionsToUnload.AddRange(_unloadRequests); _unloadRequests.Clear(); } } ExecuteLoadUnloadRequest(regionsToLoad, regionsToUnload); // save requests SaveLoadMessage msg = null; lock (_saveRequests) { if (_saveRequests.Count > 0) { msg = _saveRequests[0]; _saveRequests.Clear(); } } ExecuteSaveRequest(msg); // pref data requests PreferenceData data = null; lock (_preferenceRequests) { if (_preferenceRequests.Count > 0) { data = _preferenceRequests[0]; _preferenceRequests.Clear(); } } ExecutePreferenceRequest(data); // file load requests int fileLoadRequest; lock (_fileLoadLock) { fileLoadRequest = _fileLoadRequest; } if (fileLoadRequest != -1) { ExecuteFileLoadRequest(_fileLoadRequest); } } }
public void RequestSave(SaveLoadMessage msg) { _backgroundThread.AddSaveRequest(msg); }