From c86ca63df222bb40cb427c4e16c84a5c93429a61 Mon Sep 17 00:00:00 2001 From: Victor Date: Wed, 17 Jun 2015 18:01:51 +0300 Subject: [PATCH] =?UTF-8?q?=D0=92=D0=BE=D0=B7=D0=BC=D0=BE=D0=B6=D0=BD?= =?UTF-8?q?=D0=BE=D1=81=D1=82=D1=8C=20=D0=BE=D1=82=D0=BA=D0=BB=D1=8E=D1=87?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=B0=D0=BD=D0=B8=D0=BC=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B9=20=D1=81=D0=BF=D1=80=D0=B0=D0=B9=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/init.rpy | 4 ++ .../everlastingsummer/MainActivity.java | 4 ++ .../everlastingsummer/ViewActivity.java | 44 ++++++++++++------- 3 files changed, 36 insertions(+), 16 deletions(-) diff --git a/assets/init.rpy b/assets/init.rpy index fbc0bb5..08c5c46 100644 --- a/assets/init.rpy +++ b/assets/init.rpy @@ -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" diff --git a/src/com/annimon/everlastingsummer/MainActivity.java b/src/com/annimon/everlastingsummer/MainActivity.java index 98a9dc0..9227116 100644 --- a/src/com/annimon/everlastingsummer/MainActivity.java +++ b/src/com/annimon/everlastingsummer/MainActivity.java @@ -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); diff --git a/src/com/annimon/everlastingsummer/ViewActivity.java b/src/com/annimon/everlastingsummer/ViewActivity.java index e69e6cf..06c679a 100644 --- a/src/com/annimon/everlastingsummer/ViewActivity.java +++ b/src/com/annimon/everlastingsummer/ViewActivity.java @@ -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 spriteInContainer; + private Map 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(); + spriteInContainer = new HashMap(); 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) {