Display in overview if equipment is two handed

This commit is contained in:
Phillip Thelen 2019-11-05 19:40:34 +01:00
parent ef8c7c30ec
commit 1054a575db
13 changed files with 82 additions and 38 deletions

View file

@ -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"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View file

@ -17,11 +17,18 @@
android:layout_height="@dimen/gear_image_size"
android:layout_gravity="center"/>
<ImageView
android:id="@+id/no_equipped_view"
android:id="@+id/local_icon_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/equipment_nothing_equipped"
android:layout_gravity="center" />
<ImageView
android:id="@+id/two_handed_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|end"
android:layout_marginTop="4dp"
android:layout_marginEnd="4dp"/>
</FrameLayout>
<TextView
android:id="@+id/title_view"
@ -30,6 +37,5 @@
android:textColor="@color/gray_400"
style="@style/Caption2"
android:layout_marginTop="4dp"
android:layout_marginBottom="19dp"
android:gravity="center_horizontal"/>
</merge>

View file

@ -9,7 +9,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:orientation="horizontal"
android:layout_marginBottom="19dp">
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentOverviewItem
android:id="@+id/weapon_item"
android:layout_width="wrap_content"
@ -46,7 +47,8 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
android:orientation="horizontal"
android:layout_marginBottom="6dp">
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentOverviewItem
android:id="@+id/head_accessory_item"
android:layout_width="wrap_content"

View file

@ -6,53 +6,60 @@
xmlns:app="http://schemas.android.com/apk/res-auto"
android:scrollbarSize="3dp"
android:scrollbarThumbVertical="@color/scrollbarThumb"
android:scrollbars="vertical"
android:paddingTop="@dimen/row_padding">
android:scrollbars="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/SectionTitle"
android:text="@string/battle_gear"
android:textAppearance="?android:attr/textAppearanceMedium" />
android:orientation="vertical"
android:layout_marginTop="@dimen/spacing_medium">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/row_padding">
<TextView
android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/SectionTitle"
android:text="@string/battle_gear"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Space
android:layout_width="0dp"
android:layout_weight="1"
android:text="@string/equip_automatically"/>
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/equip_automatically"
android:layout_marginEnd="6dp"/>
<Switch
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/autoEquipSwitch"/>
</LinearLayout>
<com.habitrpg.android.habitica.ui.views.equipment.EquipmentOverviewView
android:id="@+id/battlegear_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/spacing_medium" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/SectionTitle"
android:text="@string/costume"
android:textAppearance="?android:attr/textAppearanceMedium" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="@dimen/row_padding">
<TextView
android:layout_width="0dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/SectionTitle"
android:text="@string/costume"
android:textAppearance="?android:attr/textAppearanceMedium" />
<Space
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="6dp"
android:text="@string/wear_costume"/>
<Switch
android:layout_width="wrap_content"

View file

@ -232,8 +232,8 @@
<string name="outfit_armor">Armor</string>
<string name="outfit_back">Back</string>
<string name="outfit_body">Body</string>
<string name="outfit_shield">Shield</string>
<string name="outfit_weapon">Weapon</string>
<string name="outfit_shield">Off-Hand</string>
<string name="outfit_weapon">Main-Hand</string>
<string name="wear_costume">Wear Costume</string>
<string name="equipped">Equipped</string>
<string name="quest_cancel_message">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.</string>
@ -852,7 +852,7 @@
<string name="inviteFriendDescription">You invited a friend (or friends) who joined you on your adventure!</string>
<string name="keep_challenges">Keep Challenges</string>
<string name="leave_challenges">Leave Challenges</string>
<string name="equip_automatically">Auto-equip new gear</string>
<string name="equip_automatically">Auto-equip new</string>
<string name="accept">Accept</string>
<string name="reject">Reject</string>
<string name="complete">Complete</string>

View file

@ -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)
}
}
}

View file

@ -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))
}
}
}
}

View file

@ -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)