]> www.infradead.org Git - users/mchehab/andors-trail.git/commitdiff
First version of replacing the hero icon with the toolbox drawer.
authorOskar Wiksten <oskar.wiksten@gmail.com>
Mon, 23 Jul 2012 23:39:38 +0000 (23:39 +0000)
committerOskar Wiksten <oskar.wiksten@gmail.com>
Sun, 7 Oct 2012 14:41:17 +0000 (16:41 +0200)
AndorsTrail/res/anim/slidedown.xml [new file with mode: 0644]
AndorsTrail/res/anim/slideup.xml [new file with mode: 0644]
AndorsTrail/res/drawable/ui_icon_map.png [new file with mode: 0644]
AndorsTrail/res/layout/main.xml
AndorsTrail/res/layout/toolboxview.xml [new file with mode: 0644]
AndorsTrail/res/values/ui_theme.xml
AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/WorldMapController.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/StatusView.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java [new file with mode: 0644]

diff --git a/AndorsTrail/res/anim/slidedown.xml b/AndorsTrail/res/anim/slidedown.xml
new file mode 100644 (file)
index 0000000..7ef0eee
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<translate 
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       android:interpolator="@android:anim/accelerate_interpolator"
+       android:duration="300"
+       android:fromYDelta="0%"
+       android:toYDelta="100%"
+       />
\ No newline at end of file
diff --git a/AndorsTrail/res/anim/slideup.xml b/AndorsTrail/res/anim/slideup.xml
new file mode 100644 (file)
index 0000000..f77856f
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<translate 
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       android:interpolator="@android:anim/decelerate_interpolator"
+       android:duration="300"
+       android:fromYDelta="100%"
+       android:toYDelta="0%"
+       />
\ No newline at end of file
diff --git a/AndorsTrail/res/drawable/ui_icon_map.png b/AndorsTrail/res/drawable/ui_icon_map.png
new file mode 100644 (file)
index 0000000..b49bbce
Binary files /dev/null and b/AndorsTrail/res/drawable/ui_icon_map.png differ
index fb98625f932a505b4eaff1b9896752cea2bf7151..cbc4ce6b77140adab71b8101fc88d2df5e92f375 100644 (file)
                android:layout_alignParentTop="true"
                android:visibility="gone"
                />
+       
+       <com.gpl.rpg.AndorsTrail.view.ToolboxView
+               android:id="@+id/main_toolboxview"
+               android:layout_width="wrap_content"
+               android:layout_height="wrap_content"
+               android:layout_above="@id/main_statusview"
+               android:layout_alignParentLeft="true"
+               android:visibility="gone"
+               />
 
        <com.gpl.rpg.AndorsTrail.view.MainView
                android:id="@+id/main_mainview"
@@ -51,7 +60,7 @@
                android:shadowDx="1"
                android:shadowDy="1"
                android:shadowRadius="1"
-               android:shadowColor="#000"      
+               android:shadowColor="#000"
                />
        
        <LinearLayout 
diff --git a/AndorsTrail/res/layout/toolboxview.xml b/AndorsTrail/res/layout/toolboxview.xml
new file mode 100644 (file)
index 0000000..6d07acf
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout
+       xmlns:android="http://schemas.android.com/apk/res/android"
+       android:layout_width="wrap_content"
+       android:layout_height="wrap_content"
+       android:orientation="vertical"
+       android:background="@drawable/ui_gradientshape"
+       >
+
+       <ImageButton 
+           android:id="@+id/toolbox_playerinfo"
+               style="@style/toolboxButton"
+               android:src="@drawable/char_hero"
+           />
+       <ImageButton 
+               android:id="@+id/toolbox_map"
+               style="@style/toolboxButton"
+               android:src="@drawable/ui_icon_map"
+           />
+</LinearLayout>
index 0a2aba0148cbb1bca10c5aa8344e577626f3582b..ebe0c7fef039ddeef8a2cec3a6beaa4ddb6fb45b 100644 (file)
@@ -29,4 +29,9 @@
         <item name="android:layout_width">wrap_content</item>
         <item name="android:layout_height">@dimen/smalltext_buttonheight</item>
     </style>
+    
+       <style name="toolboxButton">
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">wrap_content</item>
+    </style>
 </resources>
\ No newline at end of file
index d2d648f652247c9f7f2fec9222ed9a8d2015d8b5..9c8bf62302decff24aa89aed261d4217a0705123 100644 (file)
@@ -11,13 +11,13 @@ import com.gpl.rpg.AndorsTrail.context.ViewContext;
 import com.gpl.rpg.AndorsTrail.context.WorldContext;
 import com.gpl.rpg.AndorsTrail.controller.CombatController;
 import com.gpl.rpg.AndorsTrail.controller.MovementController;
-import com.gpl.rpg.AndorsTrail.controller.WorldMapController;
 import com.gpl.rpg.AndorsTrail.model.actor.Monster;
 import com.gpl.rpg.AndorsTrail.model.actor.Player;
 import com.gpl.rpg.AndorsTrail.model.item.ItemContainer.ItemEntry;
 import com.gpl.rpg.AndorsTrail.util.Coord;
 import com.gpl.rpg.AndorsTrail.view.CombatView;
 import com.gpl.rpg.AndorsTrail.view.MainView;
+import com.gpl.rpg.AndorsTrail.view.ToolboxView;
 import com.gpl.rpg.AndorsTrail.view.VirtualDpadView;
 import com.gpl.rpg.AndorsTrail.view.QuickButton.QuickButtonContextMenuInfo;
 import com.gpl.rpg.AndorsTrail.view.QuickitemView;
@@ -40,7 +40,6 @@ import android.widget.Toast;
 
 public final class MainActivity extends Activity {
 
-    public static final int INTENTREQUEST_HEROINFO = 1;
     public static final int INTENTREQUEST_MONSTERENCOUNTER = 2;
     public static final int INTENTREQUEST_ITEMINFO = 3;
     public static final int INTENTREQUEST_CONVERSATION = 4;
@@ -60,6 +59,7 @@ public final class MainActivity extends Activity {
     public StatusView statusview;
     public CombatView combatview;
     public QuickitemView quickitemview;
+    private ToolboxView toolboxview;
     private LinearLayout activeConditions;
     private VirtualDpadView dpad;
        
@@ -87,6 +87,7 @@ public final class MainActivity extends Activity {
         quickitemview = (QuickitemView) findViewById(R.id.main_quickitemview);
         activeConditions = (LinearLayout) findViewById(R.id.statusview_activeconditions);
         dpad = (VirtualDpadView) findViewById(R.id.main_virtual_dpad);
+        toolboxview = (ToolboxView) findViewById(R.id.main_toolboxview);
         
                statusText = (TextView) findViewById(R.id.statusview_statustext);
                statusText.setOnClickListener(new OnClickListener() {
@@ -97,7 +98,7 @@ public final class MainActivity extends Activity {
                });
                clearMessages();
                
-        if (AndorsTrailApplication.DEVELOPMENT_DEBUGBUTTONS) new DebugInterface(view).addDebugButtons();
+               if (AndorsTrailApplication.DEVELOPMENT_DEBUGBUTTONS) new DebugInterface(view).addDebugButtons();
         
                quickitemview.setVisibility(View.GONE);
         quickitemview.registerForContextMenu(this);
@@ -110,9 +111,6 @@ public final class MainActivity extends Activity {
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                switch (requestCode) {
-               case INTENTREQUEST_HEROINFO:
-                       updateStatus();
-                       break;
                case INTENTREQUEST_MONSTERENCOUNTER:
                        if (resultCode == Activity.RESULT_OK) {
                                view.combatController.enterCombat(CombatController.BEGIN_TURN_PLAYER);
@@ -211,15 +209,6 @@ public final class MainActivity extends Activity {
                                return true;
                        }
                });
-               menu.add(R.string.menu_button_worldmap)
-               .setIcon(android.R.drawable.ic_menu_mapmode)
-               .setOnMenuItemClickListener(new OnMenuItemClickListener() {
-                       @Override
-                       public boolean onMenuItemClick(MenuItem arg0) {
-                               WorldMapController.displayWorldMap(MainActivity.this, world);
-                               return true;
-                       }
-               });
                return true;
        }
        
@@ -270,6 +259,7 @@ public final class MainActivity extends Activity {
                statusview.updateActiveConditions(this, activeConditions);
                quickitemview.refreshQuickitems();
                combatview.updateStatus();
+               toolboxview.updateIcons();
        }
        
        public void redrawAll(int why) {
@@ -313,4 +303,8 @@ public final class MainActivity extends Activity {
                t.show();
        }
 
+       public void toggleToolboxVisibility() {
+               toolboxview.toggleVisibility();
+               statusview.bringToFront();
+       }
 }
index 8db9463bca8be4293133d90e4e9bcb93f2c4f568..5a378b4918705389e1929cb24ca86ae2db74d5b7 100644 (file)
@@ -5,6 +5,7 @@ import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.PrintWriter;
 
+import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
@@ -18,7 +19,6 @@ import android.widget.Toast;
 import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
 import com.gpl.rpg.AndorsTrail.R;
 import com.gpl.rpg.AndorsTrail.activity.DisplayWorldMapActivity;
-import com.gpl.rpg.AndorsTrail.activity.MainActivity;
 import com.gpl.rpg.AndorsTrail.context.WorldContext;
 import com.gpl.rpg.AndorsTrail.model.map.LayeredTileMap;
 import com.gpl.rpg.AndorsTrail.model.map.MapLayer;
@@ -202,15 +202,17 @@ public final class WorldMapController {
                pw.close();
        }
 
-       public static void displayWorldMap(MainActivity mainActivity, WorldContext world) {
+       public static boolean displayWorldMap(Context context, WorldContext world) {
                String worldMapSegmentName = world.maps.getWorldMapSegmentNameForMap(world.model.currentMap.name);
                if (worldMapSegmentName == null) {
-                       Toast.makeText(mainActivity, mainActivity.getResources().getString(R.string.display_worldmap_not_available), Toast.LENGTH_LONG).show();
-                       return;
+                       Toast.makeText(context, context.getResources().getString(R.string.display_worldmap_not_available), Toast.LENGTH_LONG).show();
+                       return false;
                }
                
-               Intent intent = new Intent(mainActivity, DisplayWorldMapActivity.class);
+               Intent intent = new Intent(context, DisplayWorldMapActivity.class);
                intent.putExtra("worldMapSegmentName", worldMapSegmentName);
-               mainActivity.startActivity(intent);
+               context.startActivity(intent);
+
+               return true;
        }
 }
index c6d0a36a8ca5b1896a0da391aaef013b0f21f93d..79c610db38baa06d3977477a680de2e1705eacde 100644 (file)
@@ -2,8 +2,6 @@ package com.gpl.rpg.AndorsTrail.view;
 
 import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
 import com.gpl.rpg.AndorsTrail.R;
-import com.gpl.rpg.AndorsTrail.activity.MainActivity;
-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.model.ability.ActorCondition;
@@ -11,7 +9,6 @@ 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;
@@ -52,8 +49,7 @@ public final class StatusView extends RelativeLayout {
         heroImage.setOnClickListener(new OnClickListener() {
                        @Override
                        public void onClick(View arg0) {
-                               Intent intent = new Intent(context, HeroinfoActivity.class);
-                               AndorsTrailApplication.getActivityFromActivityContext(context).startActivityForResult(intent, MainActivity.INTENTREQUEST_HEROINFO);
+                               view.mainActivity.toggleToolboxVisibility();
                        }
                });
                healthBar = (RangeBar) findViewById(R.id.statusview_health);
@@ -132,7 +128,7 @@ public final class StatusView extends RelativeLayout {
                        // Therefore, we reuse existing ImageView:s if they are present, but just change the image on them.
                        ImageView iv;
                        if (currentChildIndex < previousChildCount) {
-                               // There already is a create dimage on this position, reuse it.
+                               // There already is a createimage on this position, reuse it.
                                iv = (ImageView) container.getChildAt(currentChildIndex);
                                iv.setVisibility(View.VISIBLE);
                        } else {
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/ToolboxView.java
new file mode 100644 (file)
index 0000000..a174432
--- /dev/null
@@ -0,0 +1,80 @@
+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;
+import android.view.animation.Animation;
+import android.view.animation.AnimationUtils;
+import android.view.animation.Animation.AnimationListener;
+import android.widget.ImageButton;
+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;
+
+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 ImageButton toolbox_map;
+       
+       public ToolboxView(final Context context, AttributeSet attrs) {
+               super(context, attrs);
+           AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context);
+           this.world = app.world;
+
+        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);
+                       }
+               });
+        
+        toolbox_playerinfo = (ImageButton)findViewById(R.id.toolbox_playerinfo);
+        toolbox_playerinfo.setOnClickListener(this);
+        toolbox_map = (ImageButton)findViewById(R.id.toolbox_map);
+        toolbox_map.setOnClickListener(this);
+        
+        updateIcons();
+       }
+       
+       @Override
+       public void onClick(View btn) {
+               Context context = getContext();
+               if (btn == toolbox_playerinfo) {
+                       context.startActivity(new Intent(context, HeroinfoActivity.class));
+               } else if (btn == toolbox_map) {
+                       if (!WorldMapController.displayWorldMap(context, world)) return;
+               }
+               ToolboxView.this.setVisibility(View.GONE);
+       }
+
+       public void toggleVisibility() {
+               if (getVisibility() == View.VISIBLE) {
+                       startAnimation(slideDownAnimation);
+               } else {
+                       setVisibility(View.VISIBLE);
+                       bringToFront();
+                       startAnimation(slideUpAnimation);
+               }
+       }
+       
+       public void updateIcons() {
+               world.tileManager.setImageViewTile(toolbox_playerinfo, world.model.player);
+       }
+}