]> www.infradead.org Git - users/mchehab/andors-trail.git/commitdiff
First attempt at displaying quantities on quickbar buttons.
authoroskar.wiksten <oskar.wiksten@08aca716-68be-ccc6-4d58-36f5abd142ac>
Sun, 29 Apr 2012 15:47:05 +0000 (15:47 +0000)
committeroskar.wiksten <oskar.wiksten@08aca716-68be-ccc6-4d58-36f5abd142ac>
Sun, 29 Apr 2012 15:47:05 +0000 (15:47 +0000)
git-svn-id: https://andors-trail.googlecode.com/svn/trunk@236 08aca716-68be-ccc6-4d58-36f5abd142ac

AndorsTrail/res/layout-land/quickitemview.xml
AndorsTrail/res/layout/quickitemview.xml
AndorsTrail/res/values/ui_theme.xml
AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/tiles/TileManager.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickButton.java
AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickitemView.java

index d1bc1f745bfe2897737f922301e906ba3196e115..fec90c5e48853fd27ed0c346be7bec6ed80dfaf2 100644 (file)
@@ -1,27 +1,12 @@
 <?xml version="1.0" encoding="utf-8"?>
-<LinearLayout
-       xmlns:android="http://schemas.android.com/apk/res/android"
-       android:layout_width="match_parent"
-       android:layout_height="wrap_content"
-       android:orientation="vertical"
-       android:gravity="left"
-       >
-    <com.gpl.rpg.AndorsTrail.view.QuickButton
-        android:id="@+id/quickitemview_item1"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/smalltext_buttonheight"
-        android:textSize="@dimen/actionbar_text"
-        android:longClickable="true"/>
-    <com.gpl.rpg.AndorsTrail.view.QuickButton
-        android:id="@+id/quickitemview_item2"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/smalltext_buttonheight"
-        android:textSize="@dimen/actionbar_text"
-        android:longClickable="true"/>
-    <com.gpl.rpg.AndorsTrail.view.QuickButton
-        android:id="@+id/quickitemview_item3"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/smalltext_buttonheight"
-        android:textSize="@dimen/actionbar_text"
-        android:longClickable="true"/>
-</LinearLayout>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:gravity="left"
+    android:orientation="vertical" >
+
+    <com.gpl.rpg.AndorsTrail.view.QuickButton android:id="@+id/quickitemview_item1" style="@style/quickButton" />
+    <com.gpl.rpg.AndorsTrail.view.QuickButton android:id="@+id/quickitemview_item2" style="@style/quickButton" />
+    <com.gpl.rpg.AndorsTrail.view.QuickButton android:id="@+id/quickitemview_item3" style="@style/quickButton" />
+    
+</LinearLayout>
\ No newline at end of file
index 45ba768a18224195d382de599a2aeba130aa6dc1..95475eb8d681d543dc49eddad768a870b2bb3e27 100644 (file)
@@ -6,22 +6,9 @@
        android:orientation="horizontal"
        android:gravity="center"
        >
-    <com.gpl.rpg.AndorsTrail.view.QuickButton
-        android:id="@+id/quickitemview_item1"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/smalltext_buttonheight"
-        android:textSize="@dimen/actionbar_text"
-        android:longClickable="true"/>
-    <com.gpl.rpg.AndorsTrail.view.QuickButton
-        android:id="@+id/quickitemview_item2"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/smalltext_buttonheight"
-        android:textSize="@dimen/actionbar_text"
-        android:longClickable="true"/>
-    <com.gpl.rpg.AndorsTrail.view.QuickButton
-        android:id="@+id/quickitemview_item3"
-        android:layout_width="wrap_content"
-        android:layout_height="@dimen/smalltext_buttonheight"
-        android:textSize="@dimen/actionbar_text"
-        android:longClickable="true"/>
+    
+    <com.gpl.rpg.AndorsTrail.view.QuickButton android:id="@+id/quickitemview_item1" style="@style/quickButton" />
+    <com.gpl.rpg.AndorsTrail.view.QuickButton android:id="@+id/quickitemview_item2" style="@style/quickButton" />
+    <com.gpl.rpg.AndorsTrail.view.QuickButton android:id="@+id/quickitemview_item3" style="@style/quickButton" />
+
 </LinearLayout>
index dde13fef1cdf2eade9b359ac54610b219f4cbf28..0a2aba0148cbb1bca10c5aa8344e577626f3582b 100644 (file)
         <item name="android:padding">@dimen/boxshape_margin</item>
         <item name="android:textSize">@dimen/smalltext</item>
     </style>
+    
+       <style name="quickButton">
+        <item name="android:longClickable">true</item>
+        <item name="android:textSize">@dimen/actionbar_text</item>
+        <item name="android:layout_width">wrap_content</item>
+        <item name="android:layout_height">@dimen/smalltext_buttonheight</item>
+    </style>
 </resources>
\ No newline at end of file
index 807c507353683491c424e24fc93b0d0f8f3eb218..f0193742b80dc0c150852328c7dea4a5de269ea2 100644 (file)
@@ -5,14 +5,14 @@ import java.io.DataOutputStream;
 import java.io.IOException;\r
 \r
 import com.gpl.rpg.AndorsTrail.context.WorldContext;\r
-import com.gpl.rpg.AndorsTrail.view.QuickitemView;\r
 \r
 public final class Inventory extends ItemContainer {\r
 \r
        public int gold = 0;\r
        public static final int NUM_WORN_SLOTS = ItemType.MAX_CATEGORY_WEAR+1+1; // +1 for 0 based index. +1 for left+right rings.\r
+       public static final int NUM_QUICK_SLOTS = 3;\r
        public final ItemType[] wear = new ItemType[NUM_WORN_SLOTS];\r
-       public final ItemType[] quickitem = new ItemType[QuickitemView.NUM_QUICK_SLOTS];\r
+       public final ItemType[] quickitem = new ItemType[NUM_QUICK_SLOTS];\r
        \r
        public Inventory() { }\r
 \r
@@ -73,8 +73,8 @@ public final class Inventory extends ItemContainer {
                                dest.writeBoolean(false);\r
                        }\r
                }\r
-               dest.writeInt(QuickitemView.NUM_QUICK_SLOTS);\r
-               for(int i = 0; i < QuickitemView.NUM_QUICK_SLOTS; ++i) {\r
+               dest.writeInt(NUM_QUICK_SLOTS);\r
+               for(int i = 0; i < NUM_QUICK_SLOTS; ++i) {\r
                        if (quickitem[i] != null) {\r
                                dest.writeBoolean(true);\r
                                dest.writeUTF(quickitem[i].id);\r
index f1f233050a9bd1ddf3abdaa2d45dc3ea4c3535b7..fae4ae03761cdd5a9975fb3e830a8ab8f1294cdf 100644 (file)
@@ -39,6 +39,7 @@ public final class TileManager {
        public static final int iconID_boxopened = 5;
        public static final int iconID_boxclosed = 6;
        public static final int iconID_shop = iconID_groundbag;
+       public static final int iconID_unassigned_quickslot = iconID_groundbag;
        public static final int iconID_selection_blue = 7;
        public static final int iconID_selection_purple = 8;
        public static final int iconID_selection_green = 9;
index dd614d95390a50bcee3ed23c50e9ac385934ad9e..f590bda7b113c7c2c9126f4e115a667716689702 100644 (file)
@@ -1,13 +1,19 @@
 package com.gpl.rpg.AndorsTrail.view;
 
+import com.gpl.rpg.AndorsTrail.R;
+import com.gpl.rpg.AndorsTrail.context.WorldContext;
+import com.gpl.rpg.AndorsTrail.model.item.ItemType;
+import com.gpl.rpg.AndorsTrail.resource.tiles.TileCollection;
+import com.gpl.rpg.AndorsTrail.resource.tiles.TileManager;
+
 import android.content.Context;
 import android.graphics.ColorFilter;
 import android.graphics.ColorMatrixColorFilter;
 import android.util.AttributeSet;
 import android.view.ContextMenu;
-import android.widget.ImageButton;
+import android.widget.Button;
 
-public class QuickButton extends ImageButton {
+public class QuickButton extends Button {
        private final ColorFilter grayScaleFilter = new ColorMatrixColorFilter(
                        new float[] { 0.30f, 0.59f, 0.11f, 0.0f, 0.0f,
                           0.30f, 0.59f, 0.11f, 0.0f, 0.0f,
@@ -16,10 +22,12 @@ public class QuickButton extends ImageButton {
                        });
        private boolean empty;
        private QuickButtonContextMenuInfo menuInfo;
+       private final int textPadding;
        
        public QuickButton(Context context, AttributeSet attrs) {
                super(context, attrs);
                menuInfo = new QuickButtonContextMenuInfo();
+               textPadding = getResources().getDimensionPixelSize(R.dimen.boxshape_margin);
        }
        
        public void setIndex(int index){
@@ -35,15 +43,33 @@ public class QuickButton extends ImageButton {
                return menuInfo;
        }
        
-       public void setEmpty(boolean empty) {
-               this.empty = empty;
-               if(empty){
-                       setColorFilter(grayScaleFilter);
+       private String currentItemID = "unassigned";
+       public void setItemType(ItemType type, WorldContext world, TileCollection tiles) {
+               if (type == null) {
+                       if (currentItemID == null) return;
+                       empty = true;
+                       world.tileManager.setImageViewTileForUIIcon(this, TileManager.iconID_unassigned_quickslot);
+                       currentItemID = null;
+                       setGrayScale(true);
+                       setText("");
+                       setCompoundDrawablePadding(0);
                } else {
-                       setColorFilter(null);
+                       int quantity = world.model.player.inventory.getItemQuantity(type.id);
+                       empty = quantity == 0;
+                       if (!type.id.equals(currentItemID)) {
+                               world.tileManager.setImageViewTile(this, type, tiles);
+                               setCompoundDrawablePadding(textPadding);
+                               currentItemID = type.id;
+                       }
+                       setGrayScale(empty);
+                       setText(Integer.toString(quantity));
                }
        }
        
+       private void setGrayScale(boolean useGrayscale) {
+               getCompoundDrawables()[0].setColorFilter(useGrayscale ? grayScaleFilter : null);
+       }
+       
        public boolean isEmpty() {
                return empty;
        }
index 26e6d18fb01d521c8cd62734602630abfccb65ae..0496730245f28438c499302dec75fd3512c9f629 100644 (file)
@@ -16,12 +16,12 @@ import com.gpl.rpg.AndorsTrail.R;
 import com.gpl.rpg.AndorsTrail.activity.MainActivity;
 import com.gpl.rpg.AndorsTrail.context.ViewContext;
 import com.gpl.rpg.AndorsTrail.context.WorldContext;
+import com.gpl.rpg.AndorsTrail.model.item.Inventory;
 import com.gpl.rpg.AndorsTrail.model.item.ItemType;
 import com.gpl.rpg.AndorsTrail.resource.tiles.TileCollection;
-import com.gpl.rpg.AndorsTrail.resource.tiles.TileManager;
 
 public class QuickitemView extends LinearLayout implements OnClickListener {
-       public static final int NUM_QUICK_SLOTS = 3;
+       private static final int NUM_QUICK_SLOTS = Inventory.NUM_QUICK_SLOTS;
 
        private final WorldContext world;
        private final ViewContext view;
@@ -46,9 +46,8 @@ public class QuickitemView extends LinearLayout implements OnClickListener {
                        buttons[i] = (QuickButton)findViewById(quickButtons.getResourceId(i, -1));
                        QuickButton item = buttons[i];
                        item.setIndex(i);
-                       world.tileManager.setImageViewTileForUIIcon(item, TileManager.iconID_shop);
+                       item.setItemType(null, world, tiles);
                        item.setOnClickListener(this);
-                       item.setEmpty(true);
                }
        }
        
@@ -79,15 +78,8 @@ public class QuickitemView extends LinearLayout implements OnClickListener {
                loadItemTypeImages();
                
                for (int i = 0; i < NUM_QUICK_SLOTS; ++i){
-                       QuickButton item = buttons[i];
                        ItemType type = world.model.player.inventory.quickitem[i];
-                       if (type == null) {
-                               world.tileManager.setImageViewTileForUIIcon(item, TileManager.iconID_shop);
-                               item.setEmpty(true);
-                       } else {
-                               world.tileManager.setImageViewTile(item, type, tiles);
-                               item.setEmpty(!world.model.player.inventory.hasItem(type.id));
-                       }
+                       buttons[i].setItemType(type, world, tiles);
                }
        }