MCPcopy Create free account
hub / github.com/Card-Forge/forge / save

Method save

forge-gui-mobile/src/forge/adventure/world/WorldSave.java:157–216  ·  view source on GitHub ↗
(String text, int currentSlot)

Source from the content-addressed store, hash-verified

155 }
156
157 public boolean save(String text, int currentSlot) {
158 header.name = text;
159
160 String fileName = WorldSave.getSaveFile(currentSlot);
161 String oldFileName = fileName.replace(".sav", ".old");
162 new File(getSaveDir()).mkdirs();
163 File currentFile = new File(fileName);
164 File backupFile = new File(oldFileName);
165 if (currentFile.exists())
166 currentFile.renameTo(backupFile);
167
168 try {
169 try (FileOutputStream fos = new FileOutputStream(fileName);
170 DeflaterOutputStream def = new DeflaterOutputStream(fos);
171 ObjectOutputStream oos = new ObjectOutputStream(def)) {
172 SaveFileData player = currentSave.player.save();
173 SaveFileData world = currentSave.world.save();
174 SaveFileData worldStage = WorldStage.getInstance().save();
175 SaveFileData poiChanges = currentSave.pointOfInterestChanges.save();
176
177 String message = getExceptionMessage(player, world, worldStage, poiChanges);
178 if (!message.isEmpty()) {
179 oos.close();
180 fos.close();
181 restoreBackup(oldFileName, fileName);
182 announceError(message);
183 return true;
184 }
185
186 SaveFileData mainData = new SaveFileData();
187 mainData.store("player", player);
188 mainData.store("world", world);
189 mainData.store("worldStage", worldStage);
190 mainData.store("pointOfInterestChanges", poiChanges);
191
192 if (mainData.readString("IOException") != null) {
193 oos.close();
194 fos.close();
195 restoreBackup(oldFileName, fileName);
196 announceError("Please check forge.log for errors.");
197 return true;
198 }
199
200 header.saveDate = new Date();
201 oos.writeObject(header);
202 oos.writeObject(mainData);
203 }
204
205 } catch (IOException e) {
206 restoreBackup(oldFileName, fileName);
207 announceError("Please check forge.log for errors.");
208 return true;
209 }
210
211 Config.instance().getSettingData().lastActiveSave = WorldSave.filename(currentSlot);
212 Config.instance().saveSettings();
213 if (backupFile.exists())
214 backupFile.delete();

Callers 2

autoSaveMethod · 0.95
quickSaveMethod · 0.95

Calls 15

getSaveFileMethod · 0.95
getSaveDirMethod · 0.95
getInstanceMethod · 0.95
getExceptionMessageMethod · 0.95
restoreBackupMethod · 0.95
announceErrorMethod · 0.95
storeMethod · 0.95
readStringMethod · 0.95
instanceMethod · 0.95
filenameMethod · 0.95
getSettingDataMethod · 0.80
saveSettingsMethod · 0.80

Tested by

no test coverage detected