<?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
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>
<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
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
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
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;
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,
});
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){
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;
}
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;
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);
}
}
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);
}
}