Inventory sort/category is implemented (only buttons were there before) and favorites no longer show in UI

This commit is contained in:
HummusSamurai
2017-01-04 11:27:31 +02:00
parent 0907b0978d
commit 3e6921d101
5 changed files with 154 additions and 29 deletions

View File

@@ -1,36 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="EclipseModuleManager" forced_jdk="true">
<conelement value="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK" />
<conelement value="com.android.ide.eclipse.adt.LIBRARIES" />
<src_description expected_position="1">
<src_folder value="file://$MODULE_DIR$/src" expected_position="0" />
<src_folder value="file://$MODULE_DIR$/gen" expected_position="1" />
</src_description>
</component>
<component name="FacetManager">
<facet type="android" name="Android">
<configuration />
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="false">
<output url="file://$MODULE_DIR$/bin/classes" />
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$MODULE_DIR$/libs/android-support-v4.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="android-support-v4" level="project" />
</component>
</module>
</module>

View File

@@ -11,7 +11,6 @@
<!-- Order is hardcoded within HeroInfoActivity_inventory-->
<string-array name="inventorylist_category_filters">
<item>@string/inventory_category_all</item>
<item>@string/inventory_category_favorites</item>
<item>@string/inventory_category_weapons</item>
<item>@string/inventory_category_armor</item>
<item>@string/inventory_category_usable</item>

View File

@@ -10,9 +10,14 @@ import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import com.gpl.rpg.AndorsTrail.AndorsTrailApplication;
import com.gpl.rpg.AndorsTrail.Dialogs;
import com.gpl.rpg.AndorsTrail.R;
@@ -31,13 +36,31 @@ public final class HeroinfoActivity_Inventory extends Fragment {
private static final int INTENTREQUEST_ITEMINFO = 3;
private static final int INTENTREQUEST_BULKSELECT_DROP = 11;
public static final int INTENTREQUEST_PRESETLOAD = 12;
public static final int INTENTREQUEST_PRESETSAVE = 13;
public static final int INTENTREQUEST_PRESETDELETE = 14;
private WorldContext world;
private ControllerContext controllers;
private TileCollection wornTiles;
private Player player;
private ListView inventoryList;
private Spinner inventorylist_categories;
private Spinner inventorylist_sort;
private ItemContainerAdapter inventoryListAdapter;
private ItemContainerAdapter inventoryWeaponsListAdapter;
private ItemContainerAdapter inventoryArmorListAdapter;
private ItemContainerAdapter inventoryUsableListAdapter;
private ItemContainerAdapter inventoryQuestListAdapter;
private ItemContainerAdapter inventoryOtherListAdapter;
private Button inventory_preset_button;
private TextView preset_quickswitch_save;
private TextView preset_quickswitch_load;
private TextView preset_quickswitch_delete;
private TextView heroinfo_stats_gold;
private TextView heroinfo_stats_attack;
@@ -60,17 +83,21 @@ public final class HeroinfoActivity_Inventory extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.heroinfo_inventory, container, false);
final View v = inflater.inflate(R.layout.heroinfo_inventory, container, false);
ListView inventoryList = (ListView) v.findViewById(R.id.inventorylist_root);
initialiseInventorySpinners(v);
inventoryList = (ListView) v.findViewById(R.id.inventorylist_root);
registerForContextMenu(inventoryList);
inventoryList.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
ItemType itemType = inventoryListAdapter.getItem(position).itemType;
// Move this code to separate function? -- Done
ItemType itemType = getSelectedItemType(position);
showInventoryItemInfo(itemType.id);
}
});
ItemContainer inv = player.inventory;
wornTiles = world.tileManager.loadTilesFor(player.inventory, getResources());
inventoryListAdapter = new ItemContainerAdapter(getActivity(), world.tileManager, inv, player, wornTiles);
@@ -93,6 +120,52 @@ public final class HeroinfoActivity_Inventory extends Fragment {
return v;
}
private void initialiseInventorySpinners(View v) {
inventorylist_categories = (Spinner) v.findViewById(R.id.inventorylist_category_filters);
ArrayAdapter<CharSequence> categoryFilterAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.inventorylist_category_filters, android.R.layout.simple_spinner_item);
categoryFilterAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
inventorylist_categories.setAdapter(categoryFilterAdapter);
inventorylist_categories.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
world.model.uiSelections.selectedInventoryCategory = inventorylist_categories.getSelectedItemPosition();
reloadShownCategory(world.model.uiSelections.selectedInventoryCategory);
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
world.model.uiSelections.selectedInventoryCategory = 0;
}
});
inventorylist_categories.setSelection(world.model.uiSelections.selectedInventoryCategory);
inventorylist_sort = (Spinner) v.findViewById(R.id.inventorylist_sort_filters);
ArrayAdapter<CharSequence> sortFilterAdapter = ArrayAdapter.createFromResource(getActivity(), R.array.inventorylist_sort_filters, android.R.layout.simple_spinner_item);
sortFilterAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
inventorylist_sort.setAdapter(sortFilterAdapter);
inventorylist_sort.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
world.model.uiSelections.selectedInventorySort = inventorylist_sort.getSelectedItemPosition();
reloadShownSort(player.inventory);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// Reset to "Custom" position
world.model.uiSelections.selectedInventorySort = 0;
}
});
inventorylist_sort.setSelection(world.model.uiSelections.selectedInventorySort);
}
private void setHeroStatsVisiblity(int visibility) {
heroinfo_stats_gold.setVisibility(visibility);
heroinfo_stats_attack.setVisibility(visibility);
heroinfo_stats_defense.setVisibility(visibility);
}
@Override
public void onStart() {
super.onStart();
@@ -201,7 +274,11 @@ public final class HeroinfoActivity_Inventory extends Fragment {
}
private void updateItemList() {
inventoryListAdapter.notifyDataSetChanged();
int currentScreen = world.model.uiSelections.selectedInventoryCategory;
if (currentScreen == 0)
inventoryListAdapter.notifyDataSetChanged();
else
reloadShownCategory(world.model.uiSelections.selectedInventoryCategory);
}
@Override
@@ -226,6 +303,29 @@ public final class HeroinfoActivity_Inventory extends Fragment {
lastSelectedItem = null;
}
private ItemType getSelectedItemType(int position) {
int v = world.model.uiSelections.selectedInventoryCategory;
if (v == 0) { //All items
return inventoryListAdapter.getItem(position).itemType;
}else if (v == 1) { //Weapon items
return inventoryWeaponsListAdapter.getItem(position).itemType;
} else if (v == 2) { //Armor items
return inventoryArmorListAdapter.getItem(position).itemType;
} else if (v == 3) { //Usable items
return inventoryUsableListAdapter.getItem(position).itemType;
} else if (v == 4) { //Quest items
return inventoryQuestListAdapter.getItem(position).itemType;
} else if (v == 5) { //Other items
return inventoryOtherListAdapter.getItem(position).itemType;
}
// Better than crashing...
return inventoryListAdapter.getItem(position).itemType;
}
private ItemType getSelectedItemType(AdapterContextMenuInfo info) {
return inventoryListAdapter.getItem(info.position).itemType;
}
@@ -340,4 +440,48 @@ public final class HeroinfoActivity_Inventory extends Fragment {
Intent intent = Dialogs.getIntentForItemInfo(getActivity(), itemType.id, action, text, enabled, null);
startActivityForResult(intent, INTENTREQUEST_ITEMINFO);
}
private void reloadShownCategory(int v) { // Apologies about the code duplication,
// just didn't seem to make sense as an array, although I did create a nice array for skill category adapters.
// Decide which category to show
if (v == 0) { //All items
inventoryList.setAdapter(inventoryListAdapter);
inventoryListAdapter.notifyDataSetChanged();
} else if (v == 1) { //Weapon items
inventoryWeaponsListAdapter = new ItemContainerAdapter(getActivity(), world.tileManager, player.inventory.buildWeaponItems(), player, wornTiles);
inventoryList.setAdapter(inventoryWeaponsListAdapter);
inventoryWeaponsListAdapter.notifyDataSetChanged();
} else if (v == 2) { //Armor items
inventoryArmorListAdapter = new ItemContainerAdapter(getActivity(), world.tileManager, player.inventory.buildArmorItems(), player, wornTiles);
inventoryList.setAdapter(inventoryArmorListAdapter);
inventoryArmorListAdapter.notifyDataSetChanged();
} else if (v == 3) { //Usable items
inventoryUsableListAdapter = new ItemContainerAdapter(getActivity(), world.tileManager, player.inventory.buildUsableItems(), player, wornTiles);
inventoryList.setAdapter(inventoryUsableListAdapter);
inventoryUsableListAdapter.notifyDataSetChanged();
} else if (v == 4) { //Quest items
inventoryQuestListAdapter = new ItemContainerAdapter(getActivity(), world.tileManager, player.inventory.buildQuestItems(), player, wornTiles);
inventoryList.setAdapter(inventoryQuestListAdapter);
inventoryQuestListAdapter.notifyDataSetChanged();
} else if (v == 5) { //Other items
inventoryOtherListAdapter = new ItemContainerAdapter(getActivity(), world.tileManager, player.inventory.buildOtherItems(), player, wornTiles);
inventoryList.setAdapter(inventoryOtherListAdapter);
inventoryOtherListAdapter.notifyDataSetChanged();
}
//updateItemList();
}
private void reloadShownSort(Inventory inv) {
int selected = world.model.uiSelections.selectedInventorySort;
inventoryListAdapter.reloadShownSort(selected, world.model.uiSelections.oldSortSelection, player.inventory, player);
// Currently not functional, perhaps because selection only updates when changed.
if (world.model.uiSelections.oldSortSelection == selected)
world.model.uiSelections.oldSortSelection = 0;
else world.model.uiSelections.oldSortSelection = selected;
updateItemList();
}
}

View File

@@ -57,7 +57,7 @@ public final class Inventory extends ItemContainer {
}
public void setItemTypeInWearSlot(WearSlot slot, ItemType type) {
setItemTypeInWearSlot(slot, type, wear);
wear[slot.ordinal()] = type;
}
public boolean isWearing(String itemTypeID) {

View File

@@ -213,7 +213,7 @@ public class ItemContainer {
if (item.itemType.isWeapon()) {
if(item.itemType.isTwohandWeapon())
return 1;
if(item.itemType.isRangedWeapon())
if(false)//item.itemType.isRangedWeapon())
return 2;
return 3;
} // Weapons