diff --git a/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java b/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java
index 78ca1c987..567ae917a 100644
--- a/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java
+++ b/AndorsTrail/gen/com/gpl/rpg/AndorsTrail/R.java
@@ -174,12 +174,16 @@ public final class R {
public static final int heroinfo_worn_ringright=0x7f0b001e;
public static final int heroinfo_worn_shield=0x7f0b001d;
public static final int heroinfo_worn_weapon=0x7f0b001b;
+ public static final int inv_assign_slot1=0x7f0b009f;
+ public static final int inv_assign_slot2=0x7f0b00a0;
+ public static final int inv_assign_slot3=0x7f0b00a1;
public static final int inv_image=0x7f0b0031;
- public static final int inv_menu_drop=0x7f0b0099;
- public static final int inv_menu_equip=0x7f0b0096;
- public static final int inv_menu_info=0x7f0b0095;
- public static final int inv_menu_unequip=0x7f0b0097;
- public static final int inv_menu_use=0x7f0b0098;
+ public static final int inv_menu_assign=0x7f0b009e;
+ public static final int inv_menu_drop=0x7f0b009d;
+ public static final int inv_menu_equip=0x7f0b009a;
+ public static final int inv_menu_info=0x7f0b0099;
+ public static final int inv_menu_unequip=0x7f0b009b;
+ public static final int inv_menu_use=0x7f0b009c;
public static final int inv_text=0x7f0b0032;
public static final int inventorylist_root=0x7f0b001f;
public static final int itemeffect_onequip_change_maxap=0x7f0b0036;
@@ -220,66 +224,70 @@ public final class R {
public static final int loadsave_slot_4=0x7f0b0058;
public static final int loadsave_title=0x7f0b0053;
public static final int loadsave_titlelayout=0x7f0b0051;
- public static final int main_combatview=0x7f0b005b;
+ public static final int main_combatview=0x7f0b005c;
public static final int main_container=0x7f0b0059;
- public static final int main_mainview=0x7f0b005c;
+ public static final int main_mainview=0x7f0b005d;
+ public static final int main_quickitemview=0x7f0b005b;
public static final int main_statusview=0x7f0b005a;
- public static final int monsterencounter_attack=0x7f0b0062;
- public static final int monsterencounter_cancel=0x7f0b0064;
- public static final int monsterencounter_description=0x7f0b0061;
- public static final int monsterencounter_image=0x7f0b005f;
- public static final int monsterencounter_info=0x7f0b0063;
- public static final int monsterencounter_title=0x7f0b0060;
- public static final int monsterinfo_close=0x7f0b006b;
- public static final int monsterinfo_currenttraits=0x7f0b0069;
- public static final int monsterinfo_difficulty=0x7f0b0067;
- public static final int monsterinfo_healthbar=0x7f0b0068;
- public static final int monsterinfo_image=0x7f0b0065;
- public static final int monsterinfo_onhiteffects=0x7f0b006a;
- public static final int monsterinfo_title=0x7f0b0066;
- public static final int questlog_contents=0x7f0b006d;
- public static final int questlog_entrytext=0x7f0b006e;
- public static final int questlog_includecompleted=0x7f0b006c;
- public static final int rangebar_label=0x7f0b006f;
- public static final int rangebar_progress=0x7f0b0070;
- public static final int rangebar_text=0x7f0b0071;
- public static final int shop_buy_gc=0x7f0b0073;
- public static final int shop_buy_list=0x7f0b0074;
- public static final int shop_sell_gc=0x7f0b0076;
- public static final int shop_sell_list=0x7f0b0077;
- public static final int shop_tab1=0x7f0b0072;
- public static final int shop_tab2=0x7f0b0075;
- public static final int shopitem_image=0x7f0b0078;
- public static final int shopitem_infobutton=0x7f0b007a;
- public static final int shopitem_shopbutton=0x7f0b0079;
- public static final int shopitem_text=0x7f0b007b;
- public static final int startscreen_about=0x7f0b0082;
- public static final int startscreen_continue=0x7f0b007f;
- public static final int startscreen_currenthero=0x7f0b007c;
- public static final int startscreen_enterheroname=0x7f0b007d;
- public static final int startscreen_load=0x7f0b0081;
- public static final int startscreen_newgame=0x7f0b0080;
- public static final int startscreen_quit=0x7f0b0083;
- public static final int startscreen_version=0x7f0b007e;
- public static final int status_image=0x7f0b0084;
- public static final int statusview_activeconditions=0x7f0b005e;
- public static final int statusview_exp=0x7f0b0086;
- public static final int statusview_health=0x7f0b0085;
- public static final int statusview_statustext=0x7f0b005d;
- public static final int traitsinfo_attack_chance=0x7f0b008a;
- public static final int traitsinfo_attack_cost=0x7f0b0088;
- public static final int traitsinfo_attack_damage=0x7f0b008c;
- public static final int traitsinfo_attack_row1=0x7f0b0087;
- public static final int traitsinfo_attack_row2=0x7f0b0089;
- public static final int traitsinfo_attack_row3=0x7f0b008b;
- public static final int traitsinfo_critical_row1=0x7f0b008d;
- public static final int traitsinfo_critical_row2=0x7f0b008f;
- public static final int traitsinfo_criticalhit_chance=0x7f0b008e;
- public static final int traitsinfo_criticalhit_multiplier=0x7f0b0090;
- public static final int traitsinfo_defense_chance=0x7f0b0092;
- public static final int traitsinfo_defense_damageresist=0x7f0b0094;
- public static final int traitsinfo_defense_row1=0x7f0b0091;
- public static final int traitsinfo_defense_row2=0x7f0b0093;
+ public static final int monsterencounter_attack=0x7f0b0063;
+ public static final int monsterencounter_cancel=0x7f0b0065;
+ public static final int monsterencounter_description=0x7f0b0062;
+ public static final int monsterencounter_image=0x7f0b0060;
+ public static final int monsterencounter_info=0x7f0b0064;
+ public static final int monsterencounter_title=0x7f0b0061;
+ public static final int monsterinfo_close=0x7f0b006c;
+ public static final int monsterinfo_currenttraits=0x7f0b006a;
+ public static final int monsterinfo_difficulty=0x7f0b0068;
+ public static final int monsterinfo_healthbar=0x7f0b0069;
+ public static final int monsterinfo_image=0x7f0b0066;
+ public static final int monsterinfo_onhiteffects=0x7f0b006b;
+ public static final int monsterinfo_title=0x7f0b0067;
+ public static final int questlog_contents=0x7f0b006e;
+ public static final int questlog_entrytext=0x7f0b006f;
+ public static final int questlog_includecompleted=0x7f0b006d;
+ public static final int quickitemview_item1=0x7f0b0070;
+ public static final int quickitemview_item2=0x7f0b0071;
+ public static final int quickitemview_item3=0x7f0b0072;
+ public static final int rangebar_label=0x7f0b0073;
+ public static final int rangebar_progress=0x7f0b0074;
+ public static final int rangebar_text=0x7f0b0075;
+ public static final int shop_buy_gc=0x7f0b0077;
+ public static final int shop_buy_list=0x7f0b0078;
+ public static final int shop_sell_gc=0x7f0b007a;
+ public static final int shop_sell_list=0x7f0b007b;
+ public static final int shop_tab1=0x7f0b0076;
+ public static final int shop_tab2=0x7f0b0079;
+ public static final int shopitem_image=0x7f0b007c;
+ public static final int shopitem_infobutton=0x7f0b007e;
+ public static final int shopitem_shopbutton=0x7f0b007d;
+ public static final int shopitem_text=0x7f0b007f;
+ public static final int startscreen_about=0x7f0b0086;
+ public static final int startscreen_continue=0x7f0b0083;
+ public static final int startscreen_currenthero=0x7f0b0080;
+ public static final int startscreen_enterheroname=0x7f0b0081;
+ public static final int startscreen_load=0x7f0b0085;
+ public static final int startscreen_newgame=0x7f0b0084;
+ public static final int startscreen_quit=0x7f0b0087;
+ public static final int startscreen_version=0x7f0b0082;
+ public static final int status_image=0x7f0b0088;
+ public static final int statusview_activeconditions=0x7f0b005f;
+ public static final int statusview_exp=0x7f0b008a;
+ public static final int statusview_health=0x7f0b0089;
+ public static final int statusview_statustext=0x7f0b005e;
+ public static final int traitsinfo_attack_chance=0x7f0b008e;
+ public static final int traitsinfo_attack_cost=0x7f0b008c;
+ public static final int traitsinfo_attack_damage=0x7f0b0090;
+ public static final int traitsinfo_attack_row1=0x7f0b008b;
+ public static final int traitsinfo_attack_row2=0x7f0b008d;
+ public static final int traitsinfo_attack_row3=0x7f0b008f;
+ public static final int traitsinfo_critical_row1=0x7f0b0091;
+ public static final int traitsinfo_critical_row2=0x7f0b0093;
+ public static final int traitsinfo_criticalhit_chance=0x7f0b0092;
+ public static final int traitsinfo_criticalhit_multiplier=0x7f0b0094;
+ public static final int traitsinfo_defense_chance=0x7f0b0096;
+ public static final int traitsinfo_defense_damageresist=0x7f0b0098;
+ public static final int traitsinfo_defense_row1=0x7f0b0095;
+ public static final int traitsinfo_defense_row2=0x7f0b0097;
}
public static final class layout {
public static final int about=0x7f030000;
@@ -302,12 +310,13 @@ public final class R {
public static final int monsterinfo=0x7f030011;
public static final int questlog=0x7f030012;
public static final int questlogentry=0x7f030013;
- public static final int rangebar=0x7f030014;
- public static final int shop=0x7f030015;
- public static final int shopitemview=0x7f030016;
- public static final int startscreen=0x7f030017;
- public static final int statusview=0x7f030018;
- public static final int traitsinfoview=0x7f030019;
+ public static final int quickitemview=0x7f030014;
+ public static final int rangebar=0x7f030015;
+ public static final int shop=0x7f030016;
+ public static final int shopitemview=0x7f030017;
+ public static final int startscreen=0x7f030018;
+ public static final int statusview=0x7f030019;
+ public static final int traitsinfoview=0x7f03001a;
}
public static final class menu {
public static final int inventoryitem=0x7f0a0000;
@@ -391,7 +400,7 @@ public final class R {
public static final int conversation_rewardgold=0x7f0500cd;
public static final int conversation_rewarditem=0x7f0500cf;
public static final int conversation_rewarditems=0x7f0500d0;
- public static final int conversation_title=0x7f05011d;
+ public static final int conversation_title=0x7f050121;
public static final int conversationlist_alynndir=0x7f050025;
public static final int conversationlist_ambelie=0x7f050029;
public static final int conversationlist_crossglen=0x7f050004;
@@ -486,6 +495,10 @@ public final class R {
public static final int heroinfo_totalexperience=0x7f050072;
public static final int heroinfo_wear=0x7f05006d;
public static final int heroinfo_wornequipment=0x7f050073;
+ public static final int inventory_assign=0x7f05011c;
+ public static final int inventory_assign_slot1=0x7f05011d;
+ public static final int inventory_assign_slot2=0x7f05011e;
+ public static final int inventory_assign_slot3=0x7f05011f;
public static final int inventory_drop=0x7f050090;
public static final int inventory_equip=0x7f05008d;
public static final int inventory_info=0x7f05008c;
@@ -546,7 +559,7 @@ public final class R {
public static final int itemlist_rings=0x7f050039;
public static final int itemlist_v068=0x7f050041;
public static final int itemlist_weapons=0x7f050038;
- public static final int key_required=0x7f05011c;
+ public static final int key_required=0x7f050120;
public static final int levelup_add_attackchance=0x7f0500e0;
public static final int levelup_add_attackchance_description=0x7f0500e1;
public static final int levelup_add_attackdamage=0x7f0500e2;
diff --git a/AndorsTrail/res/layout-land/quickitemview.xml b/AndorsTrail/res/layout-land/quickitemview.xml
new file mode 100644
index 000000000..923965a8a
--- /dev/null
+++ b/AndorsTrail/res/layout-land/quickitemview.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
diff --git a/AndorsTrail/res/layout/main.xml b/AndorsTrail/res/layout/main.xml
index 40753b441..2c5b65697 100644
--- a/AndorsTrail/res/layout/main.xml
+++ b/AndorsTrail/res/layout/main.xml
@@ -12,6 +12,14 @@
android:layout_alignParentBottom="true"
/>
+
+
+
+
+
+
+
diff --git a/AndorsTrail/res/menu/inventoryitem.xml b/AndorsTrail/res/menu/inventoryitem.xml
index e7ec8a7a6..f8195a944 100644
--- a/AndorsTrail/res/menu/inventoryitem.xml
+++ b/AndorsTrail/res/menu/inventoryitem.xml
@@ -6,4 +6,11 @@
+ -
+
+
diff --git a/AndorsTrail/res/values-fr/itemlist.xml b/AndorsTrail/res/values-fr/itemlist.xml
index 0b5549728..d5ab9e5ad 100644
--- a/AndorsTrail/res/values-fr/itemlist.xml
+++ b/AndorsTrail/res/values-fr/itemlist.xml
@@ -5,12 +5,6 @@
{gold|items_tiles:220|Pièces d\'or|30|1|||||||||||||||||||||||||||||||||};
-
-[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|hit_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|];
-{debug_dagger1|items_tiles:90|Dague coeur noir|0|6|1||||2|100|30|3|5|10|||||||||||||||||||||||};
-{debug_ring1|items_tiles:270|Anneau coeur noir|7|3|1|||||50|||10|10|||||||||||||||||||||||};
-
-
[searchTag|iconID|name|category|baseMarketCost|hasEquipEffect|equip_boostMaxHP|equip_boostMaxAP|equip_moveCostPenalty|equip_attackCost|equip_attackChance|equip_criticalChance|equip_criticalMultiplier|equip_attackDamage_Min|equip_attackDamage_Max|equip_blockChance|equip_damageResistance|equip_conditions[condition|magnitude|]|hasUseEffect|use_boostHP_Min|use_boostHP_Max|use_boostAP_Min|use_boostAP_Max|use_conditionsSource[condition|magnitude|duration|chance|]|hasHitEffect|hit_boostHP_Min|hit_boostHP_Max|hit_boostAP_Min|hit_boostAP_Max|hit_conditionsSource[condition|magnitude|duration|chance|]|hit_conditionsTarget[condition|magnitude|duration|chance|]|hasKillEffect|kill_boostHP_Min|kill_boostHP_Max|kill_boostAP_Min|kill_boostAP_Max|kill_conditionsSource[condition|magnitude|duration|chance|]|];
{club1|items_tiles:126|Massue en bois|0|7|1||||5|10|||0|1|||||||||||||||||||||||};
diff --git a/AndorsTrail/res/values/strings.xml b/AndorsTrail/res/values/strings.xml
index 0a978dc76..31c2e1bcb 100644
--- a/AndorsTrail/res/values/strings.xml
+++ b/AndorsTrail/res/values/strings.xml
@@ -210,6 +210,7 @@
Additional maps done by michischmid<br />
Additional programming by Samuel Plentz<br />
Additional programming by Uwe Jugel<br />
+ Additional programming by Oli Samyn<br />
Additional graphics by Karvis<br />
Russian translation by Dreamer...<br />
Italian translation by k6blue and liogiu<br />
@@ -348,4 +349,9 @@
- 2.0f
+ Assign quick slot
+ Slot 1
+ Slot 2
+ Slot 3
+
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java
index 3c507df77..4a310eade 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/AndorsTrailApplication.java
@@ -19,7 +19,7 @@ public final class AndorsTrailApplication extends Application {
public static final boolean DEVELOPMENT_DEBUGBUTTONS = true;
public static final boolean DEVELOPMENT_VALIDATEDATA = true;
public static final boolean DEVELOPMENT_DEBUGMESSAGES = true;
- public static final int CURRENT_VERSION = 18;
+ public static final int CURRENT_VERSION = 19;
public static final String CURRENT_VERSION_DISPLAY = "0.6.9dev";
public final WorldContext world = new WorldContext();
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity.java
index 4163e42e6..6d02e56b4 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/HeroinfoActivity.java
@@ -62,6 +62,8 @@ public final class HeroinfoActivity extends TabActivity {
private TextView heroinfo_stats_defense;
private RangeBar rangebar_hp;
private RangeBar rangebar_exp;
+
+ private ItemType last_selected_item; // Workaround android bug #7139
private final ImageView[] wornItemImage = new ImageView[Inventory.NUM_WORN_SLOTS];
private final int[] defaultWornItemImageResourceIDs = new int[Inventory.NUM_WORN_SLOTS];
@@ -289,10 +291,14 @@ public final class HeroinfoActivity extends TabActivity {
switch (v.getId()) {
case R.id.inventorylist_root:
inflater.inflate(R.menu.inventoryitem, menu);
- if (type.isUsable()) menu.findItem(R.id.inv_menu_use).setVisible(true);
+ if (type.isUsable()){
+ menu.findItem(R.id.inv_menu_use).setVisible(true);
+ menu.findItem(R.id.inv_menu_assign).setVisible(true);
+ }
if (type.isEquippable()) menu.findItem(R.id.inv_menu_equip).setVisible(true);
break;
}
+ last_selected_item = null;
}
private int getSelectedID(AdapterContextMenuInfo info) {
@@ -321,6 +327,18 @@ public final class HeroinfoActivity extends TabActivity {
case R.id.inv_menu_use:
view.itemController.useItem(getSelectedItemType(info));
break;
+ case R.id.inv_menu_assign:
+ last_selected_item = getSelectedItemType(info);
+ break;
+ case R.id.inv_assign_slot1:
+ view.itemController.setQuickItem(last_selected_item, 0);
+ break;
+ case R.id.inv_assign_slot2:
+ view.itemController.setQuickItem(last_selected_item, 1);
+ break;
+ case R.id.inv_assign_slot3:
+ view.itemController.setQuickItem(last_selected_item, 2);
+ break;
default:
return super.onContextItemSelected(item);
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java
index b2b86722d..e4b34378f 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/activity/MainActivity.java
@@ -17,6 +17,7 @@ import com.gpl.rpg.AndorsTrail.util.Coord;
import com.gpl.rpg.AndorsTrail.util.L;
import com.gpl.rpg.AndorsTrail.view.CombatView;
import com.gpl.rpg.AndorsTrail.view.MainView;
+import com.gpl.rpg.AndorsTrail.view.QuickitemView;
import com.gpl.rpg.AndorsTrail.view.StatusView;
import android.app.Activity;
@@ -50,6 +51,7 @@ public final class MainActivity extends Activity {
public MainView mainview;
public StatusView statusview;
public CombatView combatview;
+ public QuickitemView quickitemview;
public LinearLayout activeConditions;
private static final int NUM_MESSAGES = 3;
@@ -73,6 +75,7 @@ public final class MainActivity extends Activity {
mainview = (MainView) findViewById(R.id.main_mainview);
statusview = (StatusView) findViewById(R.id.main_statusview);
combatview = (CombatView) findViewById(R.id.main_combatview);
+ quickitemview = (QuickitemView) findViewById(R.id.main_quickitemview);
activeConditions = (LinearLayout) findViewById(R.id.statusview_activeconditions);
statusText = (TextView) findViewById(R.id.statusview_statustext);
@@ -131,6 +134,8 @@ public final class MainActivity extends Activity {
})
});
}
+ quickitemview.refreshQuickitems();
+
}
@Override
@@ -139,6 +144,7 @@ public final class MainActivity extends Activity {
switch (requestCode) {
case INTENTREQUEST_HEROINFO:
combatview.updatePlayerAP(world.model.player.ap);
+ quickitemview.refreshQuickitems();
break;
case INTENTREQUEST_MONSTERENCOUNTER:
if (resultCode == Activity.RESULT_OK) {
@@ -303,6 +309,9 @@ public final class MainActivity extends Activity {
statusText.setText(sb.toString());
statusText.setVisibility(View.VISIBLE);
}
+ public void refreshQuickitems() {
+ quickitemview.refreshQuickitems();
+ }
public void clearMessages() {
for(int i = 0; i < NUM_MESSAGES; ++i) {
messages[i] = "";
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java
index 34b8c76cd..f0adea187 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/CombatController.java
@@ -46,6 +46,8 @@ public final class CombatController {
public void enterCombat(int beginTurnAs) {
context.mainActivity.combatview.setVisibility(View.VISIBLE);
+ context.mainActivity.quickitemview.setVisibility(View.VISIBLE);
+ context.mainActivity.quickitemview.bringToFront();
context.mainActivity.combatview.bringToFront();
model.uiSelections.isInCombat = true;
killedMonsterBags.clear();
@@ -58,6 +60,7 @@ public final class CombatController {
public void exitCombat(boolean pickupLootBags) {
context.effectController.waitForCurrentEffect();
setCombatSelection(null, null);
+ context.mainActivity.quickitemview.setVisibility(View.GONE);
context.mainActivity.combatview.setVisibility(View.GONE);
model.uiSelections.isInCombat = false;
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 a5465908b..f25883599 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/controller/ItemController.java
@@ -219,4 +219,16 @@ public final class ItemController {
merchant.removeItem(itemType.id);
model.statistics.addGoldSpent(price);
}
+
+ public void quickitemUse(int quickSlotId) {
+ useItem(model.player.inventory.quickitem[quickSlotId]);
+ view.mainActivity.statusview.updateStatus();
+ view.mainActivity.combatview.updatePlayerAP(model.player.ap);
+ view.mainActivity.refreshQuickitems();
+ }
+
+ public void setQuickItem(ItemType itemType, int quickSlotId) {
+ model.player.inventory.quickitem[quickSlotId] = itemType;
+ view.mainActivity.refreshQuickitems();
+ }
}
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 4fc8d21a6..f5165d777 100644
--- a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/model/item/Inventory.java
@@ -5,12 +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 final ItemType[] wear = new ItemType[NUM_WORN_SLOTS];
+ public final ItemType[] quickitem = new ItemType[QuickitemView.NUM_QUICK_SLOTS];
public Inventory() { }
@@ -37,6 +39,15 @@ public final class Inventory extends ItemContainer {
wear[i] = null;
}
}
+ if (fileversion < 19) return;
+ final int quickSlots = src.readInt();
+ for(int i = 0; i < quickSlots; ++i) {
+ if (src.readBoolean()) {
+ quickitem[i] = world.itemTypes.getItemTypeByTag(src.readUTF());
+ } else {
+ quickitem[i] = null;
+ }
+ }
}
public void writeToParcel(DataOutputStream dest, int flags) throws IOException {
@@ -51,5 +62,14 @@ 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) {
+ if (quickitem[i] != null) {
+ dest.writeBoolean(true);
+ dest.writeUTF(quickitem[i].searchTag);
+ } else {
+ dest.writeBoolean(false);
+ }
+ }
}
}
diff --git a/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickitemView.java b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickitemView.java
new file mode 100644
index 000000000..1c26d3c65
--- /dev/null
+++ b/AndorsTrail/src/com/gpl/rpg/AndorsTrail/view/QuickitemView.java
@@ -0,0 +1,95 @@
+package com.gpl.rpg.AndorsTrail.view;
+
+import android.R.color;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.ColorFilter;
+import android.graphics.ColorMatrixColorFilter;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.FrameLayout;
+import android.widget.ImageButton;
+
+import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
+import com.gpl.rpg.AndorsTrail.R;
+import com.gpl.rpg.AndorsTrail.context.ViewContext;
+import com.gpl.rpg.AndorsTrail.context.WorldContext;
+import com.gpl.rpg.AndorsTrail.model.item.ItemType;
+import com.gpl.rpg.AndorsTrail.resource.TileStore;
+
+public class QuickitemView extends FrameLayout{
+ public static final int NUM_QUICK_SLOTS = 3;
+
+ private final WorldContext world;
+ private final ViewContext view;
+ private final ImageButton[] items = new ImageButton[NUM_QUICK_SLOTS];
+ 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,
+ 0.30f, 0.59f, 0.11f, 0.0f, 0.0f,
+ 0.00f, 0.00f, 0.00f, 1.0f, 0.0f
+ });
+
+ public QuickitemView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ AndorsTrailApplication app = AndorsTrailApplication.getApplicationFromActivityContext(context);
+ this.world = app.world;
+ this.view = app.currentView.get();
+ setFocusable(false);
+
+ inflate(context, R.layout.quickitemview, this);
+ Resources res = getResources();
+ this.setBackgroundColor(res.getColor(color.transparent));
+
+ items[0] = (ImageButton)findViewById(R.id.quickitemview_item1);
+ items[1] = (ImageButton)findViewById(R.id.quickitemview_item2);
+ items[2] = (ImageButton)findViewById(R.id.quickitemview_item3);
+
+ for(int i = 0; i < items.length; ++i) {
+ final int slotId = i;
+ ImageButton item = items[i];
+ item.setImageBitmap(world.tileStore.getBitmap(TileStore.iconID_shop));
+ item.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ view.itemController.quickitemUse(slotId);
+ }
+ });
+ disableButton(item);
+ }
+ }
+
+ private void disableButton(ImageButton imageButton) {
+ imageButton.setEnabled(false);
+ imageButton.setColorFilter(grayScaleFilter);
+ }
+
+ private void enableButton(ImageButton imageButton) {
+ imageButton.setEnabled(true);
+ imageButton.setColorFilter(null);
+ }
+
+ @Override
+ public void setVisibility(int visibility) {
+ refreshQuickitems();
+ super.setVisibility(visibility);
+ }
+
+ public void refreshQuickitems() {
+ for (int i = 0; i < NUM_QUICK_SLOTS; ++i){
+ ImageButton item = items[i];
+ ItemType type = world.model.player.inventory.quickitem[i];
+ if(type==null){
+ item.setImageBitmap(world.tileStore.getBitmap(TileStore.iconID_shop));
+ disableButton(item);
+ } else {
+ item.setImageBitmap(world.tileStore.getBitmap(type.iconID));
+ if(world.model.player.inventory.hasItem(type.id)){
+ enableButton(item);
+ } else {
+ disableButton(item);
+ }
+ }
+ }
+ }
+}