From 0a2718a3fd8d5b67ef66d726410b21a2d3dcf674 Mon Sep 17 00:00:00 2001 From: Victor Date: Thu, 16 Apr 2015 21:29:38 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BF=D1=81=D0=B5=D0=B2=D0=B4=D0=BE=D0=BD=D0=B8?= =?UTF-8?q?=D0=BC=D0=B0=20=D0=B4=D0=BB=D1=8F=20=D1=81=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B9=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/com/annimon/everlastingsummer/Lexer.java | 1 + src/com/annimon/everlastingsummer/Parser.java | 7 ++++++- src/com/annimon/everlastingsummer/TokenType.java | 1 + src/com/annimon/everlastingsummer/ViewActivity.java | 9 +++++---- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/com/annimon/everlastingsummer/Lexer.java b/src/com/annimon/everlastingsummer/Lexer.java index e6259d6..e49a2ec 100644 --- a/src/com/annimon/everlastingsummer/Lexer.java +++ b/src/com/annimon/everlastingsummer/Lexer.java @@ -41,6 +41,7 @@ public final class Lexer { KEYWORDS.put("bg", TokenType.BG); KEYWORDS.put("cg", TokenType.CG); KEYWORDS.put("at", TokenType.AT); + KEYWORDS.put("as", TokenType.AS); KEYWORDS.put("window", TokenType.WINDOW); KEYWORDS.put("hide", TokenType.HIDE); KEYWORDS.put("show", TokenType.SHOW); diff --git a/src/com/annimon/everlastingsummer/Parser.java b/src/com/annimon/everlastingsummer/Parser.java index f64dd6b..327a7cb 100644 --- a/src/com/annimon/everlastingsummer/Parser.java +++ b/src/com/annimon/everlastingsummer/Parser.java @@ -271,8 +271,13 @@ public final class Parser { if (match(TokenType.AT)) { position = consume(TokenType.WORD).getText(); } + // Псевдоним (для показа одно и того же спрайта в разных местах) + String alias = ""; + if (match(TokenType.AS)) { + alias = consume(TokenType.WORD).getText(); + } matchWithEffect(); - ViewActivity.getInstance().sprite(whoid, params, position); + ViewActivity.getInstance().sprite(whoid, params, position, alias); return false; } diff --git a/src/com/annimon/everlastingsummer/TokenType.java b/src/com/annimon/everlastingsummer/TokenType.java index 22f8534..5d9de82 100644 --- a/src/com/annimon/everlastingsummer/TokenType.java +++ b/src/com/annimon/everlastingsummer/TokenType.java @@ -43,6 +43,7 @@ public enum TokenType { SHOW, AT, + AS, WITH, MENU, diff --git a/src/com/annimon/everlastingsummer/ViewActivity.java b/src/com/annimon/everlastingsummer/ViewActivity.java index aa375fa..596222b 100644 --- a/src/com/annimon/everlastingsummer/ViewActivity.java +++ b/src/com/annimon/everlastingsummer/ViewActivity.java @@ -202,13 +202,14 @@ public final class ViewActivity extends Activity implements TouchGesture.OnTouch spriteInContainer.clear(); } - public void sprite(String whoid, String params, String position) { + public void sprite(String whoid, String params, String position, String alias) { ImageView img; - if (spriteInContainer.containsKey(whoid)) { - img = spriteInContainer.get(whoid); + final String key = TextUtils.isEmpty(alias) ? whoid : alias; + if (spriteInContainer.containsKey(key)) { + img = spriteInContainer.get(key); } else { img = new ImageView(this); - spriteInContainer.put(whoid, img); + spriteInContainer.put(key, img); } final FrameLayout.LayoutParams flp = new FrameLayout.LayoutParams( FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.MATCH_PARENT);