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

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

View File

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

View File

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