From 74bceccaf4b552a6f3f682652e643400134c99cc Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Mon, 20 Jul 2020 16:24:43 +0200 Subject: [PATCH] Improve using saddle. Fixes #937 --- Habitica/res/drawable-hdpi/pet_checkmark.png | Bin 0 -> 564 bytes Habitica/res/drawable-mdpi/pet_checkmark.png | Bin 0 -> 379 bytes Habitica/res/drawable-xhdpi/pet_checkmark.png | Bin 0 -> 716 bytes .../res/drawable-xxhdpi/pet_checkmark.png | Bin 0 -> 1125 bytes Habitica/res/layout/pet_detail_item.xml | 8 ++-- Habitica/res/values/strings.xml | 1 + .../inventory/PetDetailRecyclerAdapter.kt | 45 ++++++++++++------ .../inventory/items/ItemRecyclerFragment.kt | 7 ++- .../stable/PetDetailRecyclerFragment.kt | 1 - 9 files changed, 40 insertions(+), 22 deletions(-) create mode 100644 Habitica/res/drawable-hdpi/pet_checkmark.png create mode 100644 Habitica/res/drawable-mdpi/pet_checkmark.png create mode 100644 Habitica/res/drawable-xhdpi/pet_checkmark.png create mode 100644 Habitica/res/drawable-xxhdpi/pet_checkmark.png diff --git a/Habitica/res/drawable-hdpi/pet_checkmark.png b/Habitica/res/drawable-hdpi/pet_checkmark.png new file mode 100644 index 0000000000000000000000000000000000000000..3ddfe89d13a950ea586738af131982fb83db1057 GIT binary patch literal 564 zcmV-40?Yl0P)3`*oR?;vL5iZj%e?Q*ywASx z>@LCs*XM!LSP5`ZVR?Vw$ydMdzQ8Xd)Odd8{Q#nvW-#a^ z5(&lBeSq0C)iP{dV2rz9;)~(0^?&XRWP6x9@Rk_X{qJT-s9?}`8+Nq5^9-Ag#@`Xp zOL3+ECu}!5FB&rg`8PoDman`#wqi{oB1!Rj{Fpc$<6Oq%QGH6emd=@_G>o6v!d51n zWPV;-GS#Y$lPo+3#1E1}gbll`J|$YBA_cApA{fae3s*O&6d2YS1i>25tvqvv?KL+= z`!S7yoRz5TR%?=Nu1EqXc%4b)=R`ZnVmpz)1weI`-0#}DXit0=&!ne1mhDlRlym60 zY`0&E3h{k73^TO4RAZ>Z)`=jgY{k@Q`UW?tDWg>qZo8bfL&eb0fhdEP)B@00004XF*Lt006O% z3;baP0003pNkl4#6F-rqM5QS&AXoyV%s_~U@bj%5FtCh>AHue_tU*fC??-10?sDIcEpV+IxG#3ai|>JG z!Wokrdsq0C9#SbpJ}Ek6g)R!nmjd~$>p}wru=v|)hnEGKGSG#W8`hGwP#SjI*joj||Rh5P;_R;~Dl* zJE)JBbWb|^+biG5mW|d5BD}KQ1r6}D+w8jZ)6M4IS2B<4b~3BFs>%8-XVl%~#U!Sd Z&i{pIasl$6GM4}V002ovPDHLkV1g(zq^$q| literal 0 HcmV?d00001 diff --git a/Habitica/res/drawable-xhdpi/pet_checkmark.png b/Habitica/res/drawable-xhdpi/pet_checkmark.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b5d1ec380e708c7d3b0abad9fa9268d52f856d GIT binary patch literal 716 zcmV;-0yF)IP)#zOX3k^Iarx>`{& zRohV);w6y`sRDoj(s#UT6_s7w6bkW7Cy`{x*?G4#IM)@T*(vP(@-?U+!(FNpIRfW- z&v!0L{lAG25f%B@Xpk@yn6s}ntP}K32xXFF z0`Z~TKZVJWZvD1;Sg(@0MaPNcjO*KUhdN8M^i0{g$AOLMWYm^E`XA*-mk-KtKZ$l7 z;VCi})zblI7u=G4OUHhv8&6O!8Jwi#H|bDlIDE4#mJki*5k9OZ0STgrlx zY}`U4F}wDm6w-&bYoQeJ!IG?EY;Cu@sXr+#A|h3!5nAx2&<7QzM4`}!M3h!?Z&q)z z_xMe8*Sq)5Bx$1?2bMeMJ7>=M=FFKhOX4vY!@XSR7M;&PW!rr^x%x))lgM&&;|v?; zuiM9%MK8Em_kZiW*_pa!C)e`yhkIFwWH3oYwAu)QwUh_D?GIS+`?{FRMlRbk6(<&Z zbi{z?XddMwQ)PRKFMD3;j9^}&3_{|!Sj1Xi^UNJc-g%Zwv&VJBh{TnsWpyTVbi1Y( zVz}2?<+`PF$X1&wW4HtpR3Ck%|6tvO)YmL?hu-CwJI$w%v1gRTgs`JT9jQZ&f0gw$ zAt#&c^o;W(Zsv34z|~)x6-4j!<;_3*cumNm`+v>M>-~YN<|N)r7p&7&7=%YoF55Nr zIfx~Kfh#f@AMY$!xr*$Y&}fG1C$BoY@O<>(rpVTkYi&0_jc3U9+5NBSV8YohJnw*R zG2(rdF2v-sr5wgRVmu%Oufh)7@Ee#McYczjl`9qrW)sdP@_3)l95?e+>t?G@rM{phGV1AbdM zN2Xg`Z{}xgcV$o~WyHEkM%{+KLhQOqAHrUH8aFlD6 zK8QRtf~~21(|M&{1I}ebKC-PXW+xn+)7arMb9eUITr-vJrfN)_w1;GkR)Idj5WF)z zVjlNFi<(xBD!!MB&17yuNCcd8K6wiI0~iC2P@ zjrQ$et2AYwMp3_5#)4lg+MgbY^$#WNE)dJ(*h7Bg8kEZ6RNm~uSJ@GQeuJ{o=}4NN z_~&2ejJAg60t*}yZG?@w7ZQ!NwVQ7&<)u-QlRLoeYsT$6i{Q@(ceId<+PzTUWWKch zAl+KXc0PTj=7L7jal|rT$Jtc5Vgd@6v_wZFb zKbNH(9H=oSLnQn2v9X|TDe|Jo$pG>_G$JGkhMyl21L?eVcqv3wYZt7!;G%DmywaI< rzC;afK=ZnRtbLIlvAzx3Jq-CSm3Mfp0Uq2@00000NkvXXu0mjf81*i4 literal 0 HcmV?d00001 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