Добавлена возможность загрузки состояния
This commit is contained in:
parent
5bb4a9bd6f
commit
00e8d1d1eb
@ -7,12 +7,14 @@
|
|||||||
<string name="to_next_scene">Следующая сцена</string>
|
<string name="to_next_scene">Следующая сцена</string>
|
||||||
<string name="navigate">Навигация</string>
|
<string name="navigate">Навигация</string>
|
||||||
<string name="save">Сохранить</string>
|
<string name="save">Сохранить</string>
|
||||||
|
<string name="load">Загрузить</string>
|
||||||
|
|
||||||
<string-array name="menu_items">
|
<string-array name="menu_items">
|
||||||
<item>@string/to_prev_scene</item>
|
<item>@string/to_prev_scene</item>
|
||||||
<item>@string/to_next_scene</item>
|
<item>@string/to_next_scene</item>
|
||||||
<item>@string/navigate</item>
|
<item>@string/navigate</item>
|
||||||
<item>@string/save</item>
|
<item>@string/save</item>
|
||||||
|
<item>@string/load</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.annimon.everlastingsummer;
|
package com.annimon.everlastingsummer;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.DialogInterface;
|
import android.content.DialogInterface;
|
||||||
@ -81,6 +82,14 @@ public final class Dialogs {
|
|||||||
builder.setCancelable(false);
|
builder.setCancelable(false);
|
||||||
builder.show();
|
builder.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void showSaves(List<SaveInfo> saves, DialogInterface.OnClickListener listener) {
|
||||||
|
builder.setTitle(R.string.load);
|
||||||
|
builder.setAdapter(new SavesAdapter(context, saves), listener);
|
||||||
|
builder.setNegativeButton(android.R.string.cancel, dismissDialog);
|
||||||
|
builder.setCancelable(true);
|
||||||
|
builder.show();
|
||||||
|
}
|
||||||
|
|
||||||
private final DialogInterface.OnClickListener dismissDialog = new DialogInterface.OnClickListener() {
|
private final DialogInterface.OnClickListener dismissDialog = new DialogInterface.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -3,6 +3,7 @@ package com.annimon.everlastingsummer;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import com.annimon.everlastingsummer.TouchGesture.TouchGestureType;
|
import com.annimon.everlastingsummer.TouchGesture.TouchGestureType;
|
||||||
import com.annimon.everlastingsummer.ast.Variables;
|
import com.annimon.everlastingsummer.ast.Variables;
|
||||||
@ -167,6 +168,9 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
|
|||||||
case 3:
|
case 3:
|
||||||
saveState();
|
saveState();
|
||||||
break;
|
break;
|
||||||
|
case 4:
|
||||||
|
showLoadStateDialog();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -391,6 +395,32 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
|
|||||||
iv = null;
|
iv = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void showLoadStateDialog() {
|
||||||
|
final List<SaveInfo> saves = IOUtil.listSaves(getApplicationContext());
|
||||||
|
if (saves == null || saves.isEmpty()) {
|
||||||
|
Toast.makeText(this, "Нет доступных сохранений", Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Dialogs.with(this).showSaves(saves, new DialogInterface.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
final SaveInfo save = saves.get(which);
|
||||||
|
if (save.getPath().equals(scriptPath)) {
|
||||||
|
// Восстанавливаем сохранение текущего сценария.
|
||||||
|
Variables.setVariables(save.getVariables());
|
||||||
|
Parser.getInstance().setPosition(save.getPosition());
|
||||||
|
Toast.makeText(ViewActivity.this, "Загружено", Toast.LENGTH_SHORT).show();
|
||||||
|
} else {
|
||||||
|
// Пересоздаём активити
|
||||||
|
final Intent intent = new Intent(ViewActivity.this, ViewActivity.class);
|
||||||
|
intent.putExtra(ViewActivity.EXTRA_SAVE, save);
|
||||||
|
startActivity(intent);
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private void saveState() {
|
private void saveState() {
|
||||||
final SaveInfo info = new SaveInfo();
|
final SaveInfo info = new SaveInfo();
|
||||||
info.setPath(scriptPath);
|
info.setPath(scriptPath);
|
||||||
|
Loading…
Reference in New Issue
Block a user