Finished saving dialogs

This commit is contained in:
Anuken
2017-08-08 12:01:00 -04:00
parent 22a28f337c
commit 6ce2f0ef25
6 changed files with 93 additions and 2 deletions

View File

@ -94,6 +94,14 @@ public class SaveIO{
put(enemyIDs.get(value), value);
}};
public static void saveToSlot(int slot){
write(fileFor(slot));
}
public static void loadFromSlot(int slot){
load(fileFor(slot));
}
public static boolean isSaveValid(int slot){
try(DataInputStream stream = new DataInputStream(fileFor(slot).read())){
return stream.readInt() == fileVersionID;

View File

@ -0,0 +1,53 @@
package io.anuke.mindustry.ui;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.io.SaveIO;
import io.anuke.ucore.scene.ui.Dialog;
import io.anuke.ucore.scene.ui.TextButton;
import io.anuke.ucore.scene.ui.layout.Unit;
public class LoadDialog extends Dialog{
public LoadDialog() {
super("Load Game");
setup();
shown(()->{
setup();
});
getButtonTable().addButton("Back", ()->{
hide();
}).pad(8).size(180, 60);
}
private void setup(){
content().clear();
content().add("Select a save slot.").padBottom(4);
content().row();
for(int i = 0; i < Vars.saveSlots; i ++){
final int slot = i;
TextButton button = new TextButton("[yellow]Slot " + i);
button.getLabelCell().top().left().growX();
button.row();
button.pad(12);
button.add("[gray]" + (!SaveIO.isSaveValid(i) ? "<empty>" : "Last Saved: " + SaveIO.getTimeString(i)));
button.getLabel().setFontScale(1f);
button.setDisabled(!SaveIO.isSaveValid(i) );
button.clicked(()->{
if(!button.isDisabled()){
SaveIO.loadFromSlot(slot);
hide();
}
});
content().add(button).size(400, 100).units(Unit.dp).pad(10);
content().row();
}
}
}

View File

@ -11,6 +11,7 @@ import io.anuke.ucore.scene.ui.layout.Unit;
public class MenuDialog extends Dialog{
private SaveDialog save = new SaveDialog();
private LoadDialog load = new LoadDialog();
public MenuDialog(){
super("Paused", "dialog");
@ -44,7 +45,7 @@ public class MenuDialog extends Dialog{
content().row();
content().addButton("Load Game", ()->{
load.show();
});
content().row();

View File

@ -2,8 +2,10 @@ package io.anuke.mindustry.ui;
import io.anuke.mindustry.Vars;
import io.anuke.mindustry.io.SaveIO;
import io.anuke.ucore.scene.ui.ConfirmDialog;
import io.anuke.ucore.scene.ui.Dialog;
import io.anuke.ucore.scene.ui.TextButton;
import io.anuke.ucore.scene.ui.layout.Cell;
import io.anuke.ucore.scene.ui.layout.Unit;
public class SaveDialog extends Dialog{
@ -11,6 +13,14 @@ public class SaveDialog extends Dialog{
public SaveDialog() {
super("Save Game");
setup();
shown(()->{
setup();
});
getButtonTable().addButton("Back", ()->{
hide();
}).pad(8).size(180, 60);
}
private void setup(){
@ -20,6 +30,8 @@ public class SaveDialog extends Dialog{
content().row();
for(int i = 0; i < Vars.saveSlots; i ++){
final int slot = i;
TextButton button = new TextButton("[yellow]Slot " + i);
button.getLabelCell().top().left().growX();
button.row();
@ -28,7 +40,19 @@ public class SaveDialog extends Dialog{
button.getLabel().setFontScale(1f);
button.clicked(()->{
if(SaveIO.isSaveValid(slot)){
new ConfirmDialog("Overwrite", "Are you sure you want to overwrite\nthis save slot?", ()->{
SaveIO.saveToSlot(slot);
hide();
}){{
content().pad(16);
for(Cell<?> cell : getButtonTable().getCells())
cell.size(110, 45).pad(4);
}}.show();
}else{
SaveIO.saveToSlot(slot);
hide();
}
});
content().add(button).size(400, 100).units(Unit.dp).pad(10);

View File

@ -0,0 +1,5 @@
package io.anuke.ucore.function;
public interface SegmentConsumer{
public void accept(int x, int y, int x2, int y2);
}

Binary file not shown.