From 8782a83437d5a6a9b3bb06769d4d43ab93034dd6 Mon Sep 17 00:00:00 2001 From: "oskar.wiksten" Date: Sun, 29 Apr 2012 15:47:05 +0000 Subject: [PATCH] First attempt at displaying quantities on quickbar buttons. git-svn-id: https://andors-trail.googlecode.com/svn/trunk@236 08aca716-68be-ccc6-4d58-36f5abd142ac --- AndorsTrail/res/layout-land/quickitemview.xml | 37 +++++------------ AndorsTrail/res/layout/quickitemview.xml | 23 +++-------- AndorsTrail/res/values/ui_theme.xml | 7 ++++ .../rpg/AndorsTrail/model/item/Inventory.java | 8 ++-- .../resource/tiles/TileManager.java | 1 + .../gpl/rpg/AndorsTrail/view/QuickButton.java | 40 +++++++++++++++---- .../rpg/AndorsTrail/view/QuickitemView.java | 16 ++------ 7 files changed, 65 insertions(+), 67 deletions(-) diff --git a/AndorsTrail/res/layout-land/quickitemview.xml b/AndorsTrail/res/layout-land/quickitemview.xml index d1bc1f7..fec90c5 100644 --- a/AndorsTrail/res/layout-land/quickitemview.xml +++ b/AndorsTrail/res/layout-land/quickitemview.xml @@ -1,27 +1,12 @@ - - - - - + + + + + + + \ No newline at end of file diff --git a/AndorsTrail/res/layout/quickitemview.xml b/AndorsTrail/res/layout/quickitemview.xml index 45ba768..95475eb 100644 --- a/AndorsTrail/res/layout/quickitemview.xml +++ b/AndorsTrail/res/layout/quickitemview.xml @@ -6,22 +6,9 @@ android:orientation="horizontal" android:gravity="center" > - - - + + + + + diff --git a/AndorsTrail/res/values/ui_theme.xml b/AndorsTrail/res/values/ui_theme.xml index dde13fe..0a2aba0 100644 --- a/AndorsTrail/res/values/ui_theme.xml +++ b/AndorsTrail/res/values/ui_theme.xml @@ -22,4 +22,11 @@ @dimen/boxshape_margin @dimen/smalltext + + \ No newline at end of file diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java index 807c507..f019374 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java @@ -5,14 +5,14 @@ import java.io.DataOutputStream; import java.io.IOException; import com.gpl.rpg.AndorsTrail.context.WorldContext; -import com.gpl.rpg.AndorsTrail.view.QuickitemView; public final class Inventory extends ItemContainer { public int gold = 0; public static final int NUM_WORN_SLOTS = ItemType.MAX_CATEGORY_WEAR+1+1; // +1 for 0 based index. +1 for left+right rings. + public static final int NUM_QUICK_SLOTS = 3; public final ItemType[] wear = new ItemType[NUM_WORN_SLOTS]; - public final ItemType[] quickitem = new ItemType[QuickitemView.NUM_QUICK_SLOTS]; + public final ItemType[] quickitem = new ItemType[NUM_QUICK_SLOTS]; public Inventory() { } @@ -73,8 +73,8 @@ public final class Inventory extends ItemContainer { dest.writeBoolean(false); } } - dest.writeInt(QuickitemView.NUM_QUICK_SLOTS); - for(int i = 0; i < QuickitemView.NUM_QUICK_SLOTS; ++i) { + dest.writeInt(NUM_QUICK_SLOTS); + for(int i = 0; i < NUM_QUICK_SLOTS; ++i) { if (quickitem[i] != null) { dest.writeBoolean(true); dest.writeUTF(quickitem[i].id); diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/tiles/TileManager.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/tiles/TileManager.java index f1f2330..fae4ae0 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/tiles/TileManager.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/resource/tiles/TileManager.java @@ -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; diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickButton.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickButton.java index dd614d9..f590bda 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickButton.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickButton.java @@ -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; } diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickitemView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickitemView.java index 26e6d18..0496730 100644 --- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickitemView.java +++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickitemView.java @@ -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); } } -- 2.49.0