Добавлена поддержка hard пауз

This commit is contained in:
Victor 2015-05-03 13:48:28 +03:00
parent d454d99d62
commit 76fcda0728
2 changed files with 18 additions and 4 deletions

View File

@ -217,8 +217,14 @@ public final class Parser {
if (match(token, TokenType.RENPY_PAUSE)) { if (match(token, TokenType.RENPY_PAUSE)) {
consume(TokenType.LPAREN); consume(TokenType.LPAREN);
final double pause = consumeDouble(); final double pause = consumeDouble();
ViewActivity.getInstance().pause((int)(1000 * pause)); boolean hard = false;
if (!lookMatch(0, TokenType.RPAREN)) {
consume(TokenType.WORD); // hard
consume(TokenType.EQ);
hard = consumeBoolean();
}
consume(TokenType.RPAREN); consume(TokenType.RPAREN);
ViewActivity.getInstance().pause((int)(1000 * pause), hard);
return true; return true;
} }
@ -700,6 +706,10 @@ public final class Parser {
return Double.parseDouble(consume(TokenType.NUMBER).getText()); return Double.parseDouble(consume(TokenType.NUMBER).getText());
} }
private boolean consumeBoolean() {
return "true".equalsIgnoreCase(consume(TokenType.WORD).getText());
}
private FadeInfo matchFade() { private FadeInfo matchFade() {
final FadeInfo result = new FadeInfo(); final FadeInfo result = new FadeInfo();
if (match(TokenType.FADEIN)) { if (match(TokenType.FADEIN)) {

View File

@ -57,6 +57,8 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
private Characters characters; private Characters characters;
private Map<String, ImageView> spriteInContainer; private Map<String, ImageView> spriteInContainer;
private DisplayMetrics displayMetrics; private DisplayMetrics displayMetrics;
private boolean blockTap;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
@ -147,7 +149,7 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
public void onTouchGesture(TouchGestureType type) { public void onTouchGesture(TouchGestureType type) {
switch (type) { switch (type) {
case SINGLE_TAP: case SINGLE_TAP:
Parser.getInstance().next(); if (!blockTap) Parser.getInstance().next();
break; break;
case SWIPE: case SWIPE:
Dialogs.with(this).showMenu(R.array.menu_items, menu); Dialogs.with(this).showMenu(R.array.menu_items, menu);
@ -194,6 +196,7 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
} }
public void background(String type, String name, String effect) { public void background(String type, String name, String effect) {
text("");
spritesClear(); spritesClear();
if (name.equalsIgnoreCase("black")) background.setImageResource(android.R.color.black); if (name.equalsIgnoreCase("black")) background.setImageResource(android.R.color.black);
else if (name.equalsIgnoreCase("white")) background.setImageResource(android.R.color.white); else if (name.equalsIgnoreCase("white")) background.setImageResource(android.R.color.white);
@ -280,8 +283,8 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
} }
} }
public void pause(final long duration) { public void pause(final long duration, final boolean hard) {
text(""); blockTap = hard;
new Thread(new Runnable() { new Thread(new Runnable() {
@Override @Override
public void run() { public void run() {
@ -489,6 +492,7 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
private final Runnable nextCommandRunnable = new Runnable() { private final Runnable nextCommandRunnable = new Runnable() {
@Override @Override
public void run() { public void run() {
blockTap = false;
Parser.getInstance().next(); Parser.getInstance().next();
} }
}; };