diff --git a/Habitica/res/drawable-hdpi/pet_checkmark.png b/Habitica/res/drawable-hdpi/pet_checkmark.png new file mode 100644 index 000000000..3ddfe89d1 Binary files /dev/null and b/Habitica/res/drawable-hdpi/pet_checkmark.png differ diff --git a/Habitica/res/drawable-mdpi/pet_checkmark.png b/Habitica/res/drawable-mdpi/pet_checkmark.png new file mode 100644 index 000000000..e31aff0ea Binary files /dev/null and b/Habitica/res/drawable-mdpi/pet_checkmark.png differ diff --git a/Habitica/res/drawable-xhdpi/pet_checkmark.png b/Habitica/res/drawable-xhdpi/pet_checkmark.png new file mode 100644 index 000000000..d1b5d1ec3 Binary files /dev/null and b/Habitica/res/drawable-xhdpi/pet_checkmark.png differ diff --git a/Habitica/res/drawable-xxhdpi/pet_checkmark.png b/Habitica/res/drawable-xxhdpi/pet_checkmark.png new file mode 100644 index 000000000..8faedaa58 Binary files /dev/null and b/Habitica/res/drawable-xxhdpi/pet_checkmark.png differ diff --git a/Habitica/res/layout/pet_detail_item.xml b/Habitica/res/layout/pet_detail_item.xml index 74dacd9a2..99591a480 100644 --- a/Habitica/res/layout/pet_detail_item.xml +++ b/Habitica/res/layout/pet_detail_item.xml @@ -60,10 +60,8 @@ \ No newline at end of file diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index b0b582486..48dbb2f5c 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1064,4 +1064,5 @@ Unhatched Pet Magic Potions Magic Potion + Use Saddle diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt index 39192c6f9..db4aa7abb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/PetDetailRecyclerAdapter.kt @@ -7,11 +7,9 @@ import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.ProgressBar -import android.widget.TextView import com.facebook.drawee.view.SimpleDraweeView import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.events.commands.FeedCommand -import com.habitrpg.android.habitica.extensions.addCloseButton import com.habitrpg.android.habitica.extensions.inflate import com.habitrpg.android.habitica.helpers.RxErrorHandler import com.habitrpg.android.habitica.models.inventory.* @@ -22,7 +20,6 @@ import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils import com.habitrpg.android.habitica.ui.helpers.bindView import com.habitrpg.android.habitica.ui.menu.BottomSheetMenu import com.habitrpg.android.habitica.ui.menu.BottomSheetMenuItem -import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog import com.habitrpg.android.habitica.ui.views.dialogs.PetSuggestHatchDialog import io.reactivex.BackpressureStrategy import io.reactivex.Flowable @@ -44,6 +41,7 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B private var ownedMounts: Map? = null private var ownedItems: Map? = null private val equipEvents = PublishSubject.create() + private var ownsSaddles: Boolean = false fun getEquipFlowable(): Flowable { return equipEvents.toFlowable(BackpressureStrategy.DROP) @@ -78,6 +76,12 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B fun setOwnedItems(ownedItems: Map) { this.ownedItems = ownedItems + ownsSaddles = ownedItems.containsKey("Saddle-food") + notifyDataSetChanged() + } + + fun setOwnsSaddles(ownsSaddles: Boolean) { + this.ownsSaddles = ownsSaddles notifyDataSetChanged() } @@ -133,6 +137,8 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B imageView.visibility = View.VISIBLE itemWrapper.visibility = View.GONE checkMarkView.visibility = View.GONE + availableWrapper.visibility = View.GONE + val imageName = "social_Pet-$itemType-${item.color}" itemView.setBackgroundResource(R.drawable.layout_rounded_bg_gray_700) if (this.ownedPet?.trained ?: 0 > 0) { @@ -142,7 +148,6 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B } else { this.trainedProgressbar.visibility = View.GONE } - availableWrapper.visibility = View.GONE } else { this.trainedProgressbar.visibility = View.GONE this.imageView.alpha = 0.1f @@ -154,10 +159,6 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B itemView.setBackgroundResource(R.drawable.layout_rounded_bg_gray_700_brand_border) DataBindingUtils.loadImage(eggView, "Pet_Egg_${item.animal}") DataBindingUtils.loadImage(hatchingPotionView, "Pet_HatchingPotion_${item.color}") - } else { - availableWrapper.visibility = View.VISIBLE - eggAvailableView.alpha = if (hasEgg) 1.0f else 0.2f - potionAvailableView.alpha = if (hasPotion) 1.0f else 0.2f } } @@ -188,16 +189,30 @@ class PetDetailRecyclerAdapter(data: OrderedRealmCollection?, autoUpdate: B menu.addMenuItem(BottomSheetMenuItem(itemView.resources.getString(R.string.equip))) if (canRaiseToMount) { menu.addMenuItem(BottomSheetMenuItem(itemView.resources.getString(R.string.feed))) + if (ownsSaddles) { + menu.addMenuItem(BottomSheetMenuItem(itemView.resources.getString(R.string.use_saddle))) + } } menu.setSelectionRunnable { index -> - if (index == 0) { - animal?.let { - equipEvents.onNext(it.key) + when (index) { + 0 -> { + animal?.let { + equipEvents.onNext(it.key) + } + } + 1 -> { + val event = FeedCommand() + event.usingPet = animal + EventBus.getDefault().post(event) + } + 2 -> { + val event = FeedCommand() + event.usingPet = animal + val saddle = Food() + saddle.key = "Saddle" + event.usingFood = saddle + EventBus.getDefault().post(event) } - } else if (index == 1) { - val event = FeedCommand() - event.usingPet = animal - EventBus.getDefault().post(event) } } menu.show() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt index 8e5a66086..fda8a9df1 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt @@ -220,7 +220,12 @@ class ItemRecyclerFragment : BaseFragment(), androidx.swiperefreshlayout.widget. compositeSubscription.add(inventoryRepository.getOwnedItems(type) .doOnNext { items -> if (items.size > 0) { - adapter?.updateData(items) + val filteredItems = if (isFeeding) { + items.where().notEqualTo("key", "Saddle").findAll() + } else { + items + } + adapter?.updateData(filteredItems) } } .map { items -> items.mapNotNull { it.key } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt index f2d6fc3fd..2633da27c 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/PetDetailRecyclerFragment.kt @@ -14,7 +14,6 @@ import com.habitrpg.android.habitica.models.inventory.HatchingPotion import com.habitrpg.android.habitica.models.inventory.Mount import com.habitrpg.android.habitica.models.inventory.Pet import com.habitrpg.android.habitica.models.user.Items -import com.habitrpg.android.habitica.models.user.OwnedItem import com.habitrpg.android.habitica.models.user.OwnedMount import com.habitrpg.android.habitica.models.user.OwnedPet import com.habitrpg.android.habitica.ui.adapter.inventory.PetDetailRecyclerAdapter