v3.0.0: added a saving check on pause for alchemy to prevent exploits
This commit is contained in:
@@ -530,7 +530,8 @@ public class AlchemyScene extends PixelScene {
|
||||
}
|
||||
|
||||
fadeIn();
|
||||
|
||||
|
||||
saveNeeded = false;
|
||||
try {
|
||||
Dungeon.saveAll();
|
||||
Badges.saveGlobal();
|
||||
@@ -754,8 +755,11 @@ public class AlchemyScene extends PixelScene {
|
||||
Statistics.itemsCrafted++;
|
||||
Badges.validateItemsCrafted();
|
||||
|
||||
saveNeeded = false;
|
||||
try {
|
||||
Dungeon.saveAll();
|
||||
Badges.saveGlobal();
|
||||
Journal.saveGlobal();
|
||||
} catch (IOException e) {
|
||||
ShatteredPixelDungeon.reportException(e);
|
||||
}
|
||||
@@ -803,7 +807,24 @@ public class AlchemyScene extends PixelScene {
|
||||
}
|
||||
updateState();
|
||||
}
|
||||
|
||||
|
||||
private boolean saveNeeded = false;
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
if (saveNeeded) {
|
||||
saveNeeded = false;
|
||||
clearSlots();
|
||||
try {
|
||||
Dungeon.saveAll();
|
||||
Badges.saveGlobal();
|
||||
Journal.saveGlobal();
|
||||
} catch (IOException e) {
|
||||
ShatteredPixelDungeon.reportException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void destroy() {
|
||||
synchronized ( inputs ) {
|
||||
@@ -812,7 +833,8 @@ public class AlchemyScene extends PixelScene {
|
||||
inputs[i] = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
saveNeeded = false;
|
||||
try {
|
||||
Dungeon.saveAll();
|
||||
Badges.saveGlobal();
|
||||
@@ -863,6 +885,9 @@ public class AlchemyScene extends PixelScene {
|
||||
sparkEmitter.burst(SparkParticle.FACTORY, 20);
|
||||
Sample.INSTANCE.play( Assets.Sounds.LIGHTNING );
|
||||
|
||||
//queue a save here, as items may be in the input windows and we don't want to clear them
|
||||
// but if the game becomes paused we do this to prevent exploits
|
||||
saveNeeded = true;
|
||||
updateState();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user