Возможность отключения анимаций спрайтов

This commit is contained in:
Victor 2015-06-17 18:01:51 +03:00
parent 93b1328e43
commit c86ca63df2
3 changed files with 36 additions and 16 deletions

View File

@ -7,6 +7,10 @@
#rp.assets = archive + "everlastingsummer/"
rp.assets = sdcard + "everlastingsummer/"
# Прочие настройки
# анимация переходов для спрайтов
rp.sprite_transitions = false
# Использовать стартовое меню
rp.menu = false
rp.menu_background = "bg/ext_road_night.jpg"

View File

@ -79,6 +79,10 @@ public final class MainActivity extends Activity {
finish();
openScenario(config.getValue("rp.scenario"));
}
// Эффекты переходов для спрайтов
if (config.isValueExists("rp.sprite_transitions")) {
ViewActivity.useSpriteTransitions = config.getValueAsBoolean("rp.sprite_transitions");
}
// Меню
if (config.getValueAsBoolean("rp.menu")) {
menuMode(config);

View File

@ -1,6 +1,5 @@
package com.annimon.everlastingsummer;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
@ -12,10 +11,10 @@ import com.annimon.everlastingsummer.ast.Variables;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.res.AssetFileDescriptor;
import android.graphics.Bitmap;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
@ -50,6 +49,8 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
private static final FadeInfo NO_FADE = new FadeInfo(false, false, 0);
private static ViewActivity instance;
public static boolean useSpriteTransitions = true;
public static ViewActivity getInstance() {
return instance;
@ -66,7 +67,7 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
private MapPlaces places;
private Characters characters;
private Map<String, AnimatableImageView> spriteInContainer;
private Map<String, ImageView> spriteInContainer;
private DisplayMetrics displayMetrics;
private transient boolean blockTap, cancelNextStep;
@ -95,7 +96,7 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
background.setOnTouchListener(new TouchGesture(this, this));
spriteInContainer = new HashMap<String, AnimatableImageView>();
spriteInContainer = new HashMap<String, ImageView>();
characters = new CharactersES();
characters.makeNamesKnown();
@ -326,12 +327,13 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
}
public void sprite(String whoid, String params, String position, String alias, String effect) {
AnimatableImageView img;
ImageView img;
final String key = TextUtils.isEmpty(alias) ? whoid : alias;
if (spriteInContainer.containsKey(key)) {
img = spriteInContainer.get(key);
} else {
img = new AnimatableImageView(this);
if (useSpriteTransitions) img = new AnimatableImageView(this);
else img = new ImageView(this);
spriteInContainer.put(key, img);
}
final FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams(
@ -339,7 +341,9 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
setSpritePosition(img, flp, position);
final String path = PathResolver.sprite(whoid, params);
try {
img.setImageBitmap(IOUtil.readBitmap(path), effect);
final Bitmap bitmap = IOUtil.readBitmap(path);
if (useSpriteTransitions) ((AnimatableImageView)img).setImageBitmap(bitmap, effect);
else img.setImageBitmap(bitmap);
if (container != img.getParent())
container.addView(img, flp);
} catch (Exception ioe) {
@ -349,17 +353,25 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch
public void hideSprite(final String whoid, final String effect) {
if (!spriteInContainer.containsKey(whoid)) return;
final AnimatableImageView img = spriteInContainer.get(whoid);
img.hideDrawable(effect, new Runnable() {
@Override
public void run() {
try {
hide(img);
} catch (Exception ex) {
if (Logger.DEBUG) Logger.log("hide sprite: " + whoid + " with effect: " + effect, ex);
final ImageView img = spriteInContainer.get(whoid);
if (useSpriteTransitions) {
((AnimatableImageView)img).hideDrawable(effect, new Runnable() {
@Override
public void run() {
try {
hide(img);
} catch (Exception ex) {
if (Logger.DEBUG) Logger.log("hide sprite: " + whoid + " with effect: " + effect, ex);
}
}
});
} else {
try {
hide(img);
} catch (Exception ex) {
if (Logger.DEBUG) Logger.log("hide sprite: " + whoid + " with effect: " + effect, ex);
}
});
}
}
private void hide(ImageView img) {