From 714bf9189e031666ac1e67d530ce62888efae11e Mon Sep 17 00:00:00 2001 From: Oskar Wiksten Date: Tue, 7 Aug 2012 11:53:02 +0200 Subject: [PATCH] Move toolbox to lower right hand corner, replaces old "toggle quickitems" button. --- .../anim/{slidedown.xml => hidetoolbox.xml} | 0 .../res/anim/{slideup.xml => showtoolbox.xml} | 0 AndorsTrail/res/layout/main.xml | 2 +- AndorsTrail/res/layout/statusview.xml | 4 +- AndorsTrail/res/layout/toolboxview.xml | 8 +- .../AndorsTrail/activity/MainActivity.java | 14 ++-- .../controller/CombatController.java | 1 - .../controller/ItemController.java | 13 ---- .../gpl/rpg/AndorsTrail/view/StatusView.java | 32 ++++---- .../gpl/rpg/AndorsTrail/view/ToolboxView.java | 73 ++++++++++++------- 10 files changed, 75 insertions(+), 72 deletions(-) rename AndorsTrail/res/anim/{slidedown.xml => hidetoolbox.xml} (100%) rename AndorsTrail/res/anim/{slideup.xml => showtoolbox.xml} (100%) diff --git a/AndorsTrail/res/anim/slidedown.xml b/AndorsTrail/res/anim/hidetoolbox.xml similarity index 100% rename from AndorsTrail/res/anim/slidedown.xml rename to AndorsTrail/res/anim/hidetoolbox.xml diff --git a/AndorsTrail/res/anim/slideup.xml b/AndorsTrail/res/anim/showtoolbox.xml similarity index 100% rename from AndorsTrail/res/anim/slideup.xml rename to AndorsTrail/res/anim/showtoolbox.xml diff --git a/AndorsTrail/res/layout/main.xml b/AndorsTrail/res/layout/main.xml index cbc4ce6..7f48aa5 100644 --- a/AndorsTrail/res/layout/main.xml +++ b/AndorsTrail/res/layout/main.xml @@ -33,7 +33,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/main_statusview" - android:layout_alignParentLeft="true" + android:layout_alignParentRight="true" android:visibility="gone" /> diff --git a/AndorsTrail/res/layout/statusview.xml b/AndorsTrail/res/layout/statusview.xml index 6e76308..37cc369 100644 --- a/AndorsTrail/res/layout/statusview.xml +++ b/AndorsTrail/res/layout/statusview.xml @@ -15,7 +15,7 @@ /> diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java index 9c8bf62..1dc7ed5 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java @@ -88,6 +88,7 @@ public final class MainActivity extends Activity { activeConditions = (LinearLayout) findViewById(R.id.statusview_activeconditions); dpad = (VirtualDpadView) findViewById(R.id.main_virtual_dpad); toolboxview = (ToolboxView) findViewById(R.id.main_toolboxview); + statusview.registerToolboxViews(toolboxview, quickitemview); statusText = (TextView) findViewById(R.id.statusview_statustext); statusText.setOnClickListener(new OnClickListener() { @@ -102,9 +103,15 @@ public final class MainActivity extends Activity { quickitemview.setVisibility(View.GONE); quickitemview.registerForContextMenu(this); - quickitemview.refreshQuickitems(); dpad.updateVisibility(app.preferences); + + // Define which views are in front of each other. + dpad.bringToFront(); + quickitemview.bringToFront(); + toolboxview.bringToFront(); + combatview.bringToFront(); + statusview.bringToFront(); } @Override @@ -302,9 +309,4 @@ public final class MainActivity extends Activity { } t.show(); } - - public void toggleToolboxVisibility() { - toolboxview.toggleVisibility(); - statusview.bringToFront(); - } } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java index a0911b7..5dcbf4d 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java @@ -50,7 +50,6 @@ public final class CombatController implements VisualEffectCompletedCallback { public void enterCombat(int beginTurnAs) { context.mainActivity.combatview.setVisibility(View.VISIBLE); - context.mainActivity.combatview.bringToFront(); model.uiSelections.isInCombat = true; killedMonsterBags.clear(); context.mainActivity.clearMessages(); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java index 8e1cea1..b8f7c73 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java @@ -2,8 +2,6 @@ package com.gpl.rpg.AndorsTrail.controller; import java.util.ArrayList; -import android.view.View; - import com.gpl.rpg.AndorsTrail.Dialogs; import com.gpl.rpg.AndorsTrail.context.ViewContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; @@ -236,17 +234,6 @@ public final class ItemController { model.player.inventory.quickitem[quickSlotId] = itemType; view.mainActivity.updateStatus(); } - - public void toggleQuickItemView() { - if (view.mainActivity.quickitemview.getVisibility()==View.VISIBLE){ - view.mainActivity.quickitemview.setVisibility(View.GONE); - view.mainActivity.statusview.updateQuickItemImage(false); - } else { - view.mainActivity.quickitemview.setVisibility(View.VISIBLE); - view.mainActivity.quickitemview.bringToFront(); - view.mainActivity.statusview.updateQuickItemImage(true); - } - } public static void correctActorConditionsFromItemsPre0611b1(Player player, String conditionTypeID, WorldContext world, String itemTypeIDWithCondition) { if (!player.hasCondition(conditionTypeID)) return; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/StatusView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/StatusView.java index 79c610d..56575a1 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/StatusView.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/StatusView.java @@ -2,13 +2,14 @@ package com.gpl.rpg.AndorsTrail.view; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.R; -import com.gpl.rpg.AndorsTrail.context.ViewContext; +import com.gpl.rpg.AndorsTrail.activity.HeroinfoActivity; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.model.ability.ActorCondition; import com.gpl.rpg.AndorsTrail.model.actor.Player; import com.gpl.rpg.AndorsTrail.resource.tiles.TileManager; import android.content.Context; +import android.content.Intent; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.LayerDrawable; @@ -23,21 +24,20 @@ public final class StatusView extends RelativeLayout { private final WorldContext world; private final Player player; - private final ViewContext view; private final RangeBar healthBar; private final RangeBar expBar; private final ImageButton heroImage; - private final ImageButton quickToggle; + private final ImageButton toggleToolbox; private boolean showingLevelup; private final Drawable levelupDrawable; + private ToolboxView toolbox; public StatusView(final Context context, AttributeSet attr) { super(context, attr); AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context); this.world = app.world; this.player = app.world.model.player; - this.view = app.currentView.get(); setFocusable(false); inflate(context, R.layout.statusview, this); @@ -49,7 +49,7 @@ public final class StatusView extends RelativeLayout { heroImage.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { - view.mainActivity.toggleToolboxVisibility(); + context.startActivity(new Intent(context, HeroinfoActivity.class)); } }); healthBar = (RangeBar) findViewById(R.id.statusview_health); @@ -63,18 +63,24 @@ public final class StatusView extends RelativeLayout { ,new BitmapDrawable(world.tileManager.preloadedTiles.getBitmap(TileManager.iconID_moveselect)) }); - quickToggle = (ImageButton) findViewById(R.id.quickitem_toggle); - world.tileManager.setImageViewTileForUIIcon(quickToggle, TileManager.iconID_boxclosed); - quickToggle.setOnClickListener(new OnClickListener() { + toggleToolbox = (ImageButton) findViewById(R.id.toolbox_toggle); + world.tileManager.setImageViewTileForUIIcon(toggleToolbox, TileManager.iconID_boxclosed); + toggleToolbox.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { - view.itemController.toggleQuickItemView(); + toolbox.toggleVisibility(); } }); updateStatus(); updateIcon(player.canLevelup()); } + + public void registerToolboxViews(ToolboxView toolbox, QuickitemView quickitemView) { + this.toolbox = toolbox; + toolbox.registerToolboxViews(toggleToolbox, quickitemView); + toolbox.updateIcons(); + } public void updateStatus() { healthBar.update(player.health); @@ -103,14 +109,6 @@ public final class StatusView extends RelativeLayout { t.removeOtherImages(); } - public void updateQuickItemImage(boolean visible){ - if(visible){ - world.tileManager.setImageViewTileForUIIcon(quickToggle, TileManager.iconID_boxopened); - } else { - world.tileManager.setImageViewTileForUIIcon(quickToggle, TileManager.iconID_boxclosed); - } - } - private static class GreedyImageViewAppender { private final LinearLayout container; private final Context context; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java index a174432..b822330 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java @@ -1,7 +1,6 @@ package com.gpl.rpg.AndorsTrail.view; import android.content.Context; -import android.content.Intent; import android.util.AttributeSet; import android.view.View; import android.view.View.OnClickListener; @@ -13,17 +12,18 @@ import android.widget.LinearLayout; import com.gpl.rpg.AndorsTrail.AndorsTrailApplication; import com.gpl.rpg.AndorsTrail.R; -import com.gpl.rpg.AndorsTrail.activity.HeroinfoActivity; -import com.gpl.rpg.AndorsTrail.context.ViewContext; import com.gpl.rpg.AndorsTrail.context.WorldContext; import com.gpl.rpg.AndorsTrail.controller.WorldMapController; +import com.gpl.rpg.AndorsTrail.resource.tiles.TileManager; public class ToolboxView extends LinearLayout implements OnClickListener { private final WorldContext world; - private final Animation slideUpAnimation; - private final Animation slideDownAnimation; - private final ImageButton toolbox_playerinfo; + private final Animation showAnimation; + private final Animation hideAnimation; + private final ImageButton toolbox_quickitems; private final ImageButton toolbox_map; + private ImageButton toggleVisibility; + private QuickitemView quickitemView; public ToolboxView(final Context context, AttributeSet attrs) { super(context, attrs); @@ -32,49 +32,66 @@ public class ToolboxView extends LinearLayout implements OnClickListener { inflate(context, R.layout.toolboxview, this); - this.slideUpAnimation = AnimationUtils.loadAnimation(context, R.anim.slideup); - this.slideDownAnimation = AnimationUtils.loadAnimation(context, R.anim.slidedown); - this.slideDownAnimation.setAnimationListener(new AnimationListener() { - @Override - public void onAnimationStart(Animation animation) { } - @Override - public void onAnimationRepeat(Animation animation) { } - @Override - public void onAnimationEnd(Animation animation) { - ToolboxView.this.setVisibility(View.GONE); - } + this.showAnimation = AnimationUtils.loadAnimation(context, R.anim.showtoolbox); + this.hideAnimation = AnimationUtils.loadAnimation(context, R.anim.hidetoolbox); + this.hideAnimation.setAnimationListener(new AnimationListener() { + @Override public void onAnimationStart(Animation animation) { } + @Override public void onAnimationRepeat(Animation animation) { } + @Override public void onAnimationEnd(Animation animation) { + ToolboxView.this.setVisibility(View.GONE); + } }); - toolbox_playerinfo = (ImageButton)findViewById(R.id.toolbox_playerinfo); - toolbox_playerinfo.setOnClickListener(this); + toolbox_quickitems = (ImageButton)findViewById(R.id.toolbox_quickitems); + toolbox_quickitems.setOnClickListener(this); toolbox_map = (ImageButton)findViewById(R.id.toolbox_map); toolbox_map.setOnClickListener(this); - - updateIcons(); + } + + public void registerToolboxViews(ImageButton toggleVisibility, QuickitemView quickitemView) { + this.toggleVisibility = toggleVisibility; + this.quickitemView = quickitemView; } @Override public void onClick(View btn) { Context context = getContext(); - if (btn == toolbox_playerinfo) { - context.startActivity(new Intent(context, HeroinfoActivity.class)); + if (btn == toolbox_quickitems) { + toggleQuickItemView(); } else if (btn == toolbox_map) { if (!WorldMapController.displayWorldMap(context, world)) return; + setVisibility(View.GONE); + } + } + + private void toggleQuickItemView() { + if (quickitemView.getVisibility() == View.VISIBLE){ + quickitemView.setVisibility(View.GONE); + } else { + quickitemView.setVisibility(View.VISIBLE); } - ToolboxView.this.setVisibility(View.GONE); } public void toggleVisibility() { if (getVisibility() == View.VISIBLE) { - startAnimation(slideDownAnimation); + startAnimation(hideAnimation); + setToolboxIcon(false); } else { setVisibility(View.VISIBLE); - bringToFront(); - startAnimation(slideUpAnimation); + startAnimation(showAnimation); + setToolboxIcon(true); } } public void updateIcons() { - world.tileManager.setImageViewTile(toolbox_playerinfo, world.model.player); + setToolboxIcon(getVisibility() == View.VISIBLE); + } + + private void setToolboxIcon(boolean opened) { + if (opened) { + world.tileManager.setImageViewTileForUIIcon(toggleVisibility, TileManager.iconID_boxopened); + } else { + world.tileManager.setImageViewTileForUIIcon(toggleVisibility, TileManager.iconID_boxclosed); + } } } -- 2.50.1