diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 347904ab9..5ba600fcd 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -151,7 +151,7 @@ android { multiDexEnabled true resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW" - versionCode 2287 + versionCode 2289 versionName "2.3" } diff --git a/Habitica/res/drawable-hdpi/equipment_two_handed.png b/Habitica/res/drawable-hdpi/equipment_two_handed.png new file mode 100644 index 000000000..beae6793a Binary files /dev/null and b/Habitica/res/drawable-hdpi/equipment_two_handed.png differ diff --git a/Habitica/res/drawable-mdpi/equipment_two_handed.png b/Habitica/res/drawable-mdpi/equipment_two_handed.png new file mode 100644 index 000000000..d1807c266 Binary files /dev/null and b/Habitica/res/drawable-mdpi/equipment_two_handed.png differ diff --git a/Habitica/res/drawable-xhdpi/equipment_two_handed.png b/Habitica/res/drawable-xhdpi/equipment_two_handed.png new file mode 100644 index 000000000..1884e60bb Binary files /dev/null and b/Habitica/res/drawable-xhdpi/equipment_two_handed.png differ diff --git a/Habitica/res/drawable-xxhdpi/equipment_two_handed.png b/Habitica/res/drawable-xxhdpi/equipment_two_handed.png new file mode 100644 index 000000000..e6370374a Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/equipment_two_handed.png differ diff --git a/Habitica/res/drawable-xxxhdpi/equipment_two_handed.png b/Habitica/res/drawable-xxxhdpi/equipment_two_handed.png new file mode 100644 index 000000000..f7160d972 Binary files /dev/null and b/Habitica/res/drawable-xxxhdpi/equipment_two_handed.png differ diff --git a/Habitica/res/layout/equipment_overview_item.xml b/Habitica/res/layout/equipment_overview_item.xml index 38d2a0a05..f7c08d05c 100644 --- a/Habitica/res/layout/equipment_overview_item.xml +++ b/Habitica/res/layout/equipment_overview_item.xml @@ -17,11 +17,18 @@ android:layout_height="@dimen/gear_image_size" android:layout_gravity="center"/> + \ No newline at end of file diff --git a/Habitica/res/layout/equipment_overview_view.xml b/Habitica/res/layout/equipment_overview_view.xml index 2dc8c09bf..eebc13b54 100644 --- a/Habitica/res/layout/equipment_overview_view.xml +++ b/Habitica/res/layout/equipment_overview_view.xml @@ -9,7 +9,8 @@ + android:orientation="horizontal" + android:layout_marginBottom="19dp"> + android:orientation="horizontal" + android:layout_marginBottom="6dp"> + android:scrollbars="vertical"> - + android:orientation="vertical" + android:layout_marginTop="@dimen/spacing_medium"> + + android:layout_height="wrap_content" /> + - - + + Armor Back Body - Shield - Weapon + Off-Hand + Main-Hand Wear Costume Equipped Are you sure you want to cancel this quest? All invitation acceptances will be lost. The quest owner will retain possession of the quest scroll. @@ -852,7 +852,7 @@ You invited a friend (or friends) who joined you on your adventure! Keep Challenges Leave Challenges - Auto-equip new gear + Auto-equip new Accept Reject Complete diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt index 0933717a1..8bfaaad52 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/equipment/EquipmentOverviewFragment.kt @@ -9,6 +9,7 @@ import com.habitrpg.android.habitica.data.InventoryRepository import com.habitrpg.android.habitica.databinding.FragmentEquipmentOverviewBinding import com.habitrpg.android.habitica.helpers.MainNavigationController import com.habitrpg.android.habitica.helpers.RxErrorHandler +import com.habitrpg.android.habitica.models.user.Gear import com.habitrpg.android.habitica.models.user.User import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment import io.reactivex.functions.Consumer @@ -33,8 +34,7 @@ class EquipmentOverviewFragment : BaseMainFragment() { super.user = value if (this::binding.isInitialized) { value?.items?.gear?.let { - binding.battlegearView.updateData(it.equipped) - binding.costumeView.updateData(it.costume) + updateGearData(it) } } } @@ -56,8 +56,7 @@ class EquipmentOverviewFragment : BaseMainFragment() { binding.costumeSwitch.setOnCheckedChangeListener { _, isChecked -> userRepository.updateUser(user, "preferences.costume", isChecked).subscribe(Consumer { }, RxErrorHandler.handleEmptyError()) } user?.items?.gear?.let { - binding.battlegearView.updateData(it.equipped) - binding.costumeView.updateData(it.costume) + updateGearData(it) } } @@ -74,4 +73,22 @@ class EquipmentOverviewFragment : BaseMainFragment() { MainNavigationController.navigate(EquipmentOverviewFragmentDirections.openEquipmentDetail(type, isCostume ?: false, equipped ?: "")) } + private fun updateGearData(gear: Gear) { + if (gear.equipped?.weapon?.isNotEmpty() == true) { + compositeSubscription.add(inventoryRepository.getEquipment(gear.equipped?.weapon ?: "").firstElement() + .subscribe(Consumer { + binding.battlegearView.updateData(gear.equipped, it.twoHanded) + }, RxErrorHandler.handleEmptyError())) + } else { + binding.battlegearView.updateData(gear.equipped) + } + if (gear.costume?.weapon?.isNotEmpty() == true) { + compositeSubscription.add(inventoryRepository.getEquipment(gear.costume?.weapon ?: "").firstElement() + .subscribe(Consumer { + binding.costumeView.updateData(gear.costume, it.twoHanded) + }, RxErrorHandler.handleEmptyError())) + } else { + binding.costumeView.updateData(gear.costume) + } + } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewItem.kt index f0de979dc..eb5591fdd 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewItem.kt @@ -1,6 +1,7 @@ package com.habitrpg.android.habitica.ui.views.equipment import android.content.Context +import android.graphics.drawable.BitmapDrawable import android.util.AttributeSet import android.view.View import android.widget.LinearLayout @@ -9,6 +10,7 @@ import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.EquipmentOverviewItemBinding import com.habitrpg.android.habitica.extensions.layoutInflater import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils +import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper class EquipmentOverviewItem @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 @@ -27,17 +29,27 @@ class EquipmentOverviewItem @JvmOverloads constructor( var identifier: String = "" - fun set(key: String) { + fun set(key: String, isTwoHanded: Boolean = false, isDisabledFromTwoHand: Boolean = false) { identifier = key + binding.twoHandedIndicator.setImageDrawable(null) if (key.isNotEmpty() && !key.endsWith("base_0")) { DataBindingUtils.loadImage(binding.iconView, "shop_$key") - binding.noEquippedView.visibility = View.GONE + binding.localIconView.visibility = View.GONE binding.iconView.visibility = View.VISIBLE binding.iconWrapper.background = ContextCompat.getDrawable(context, R.drawable.layout_rounded_bg_white) + if (isTwoHanded) { + binding.twoHandedIndicator.setImageDrawable(BitmapDrawable(context.resources, HabiticaIconsHelper.imageOfTwoHandedIcon())) + } } else { - binding.noEquippedView.visibility = View.VISIBLE + binding.localIconView.visibility = View.VISIBLE binding.iconView.visibility = View.GONE - binding.iconWrapper.background = ContextCompat.getDrawable(context, R.drawable.layout_rounded_bg_gray_10) + if (isDisabledFromTwoHand) { + binding.iconWrapper.background = ContextCompat.getDrawable(context, R.drawable.layout_rounded_bg_white) + binding.localIconView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.equipment_two_handed)) + } else { + binding.iconWrapper.background = ContextCompat.getDrawable(context, R.drawable.layout_rounded_bg_gray_10) + binding.localIconView.setImageDrawable(ContextCompat.getDrawable(context, R.drawable.equipment_nothing_equipped)) + } } } } \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewView.kt index a233d6b2d..88df381d6 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/equipment/EquipmentOverviewView.kt @@ -32,9 +32,9 @@ class EquipmentOverviewView @JvmOverloads constructor( } - fun updateData(outfit: Outfit) { - binding.weaponItem.set(outfit.weapon) - binding.shieldItem.set(outfit.shield) + fun updateData(outfit: Outfit, isWeaponTwoHanded: Boolean = false) { + binding.weaponItem.set(outfit.weapon, isWeaponTwoHanded) + binding.shieldItem.set(outfit.shield, false, isWeaponTwoHanded) binding.headItem.set(outfit.head) binding.armorItem.set(outfit.armor) binding.headAccessoryItem.set(outfit.headAccessory)