diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt index 46e94b13a..0df664b5d 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarView.kt @@ -35,6 +35,7 @@ class AvatarView : FrameLayout { private var showPet = true private var showSleeping = true private var hasBackground: Boolean = false + private var preview: Map? = null private var backgroundForPurchase: String? = null private var hasMount: Boolean = false private var hasPet: Boolean = false @@ -204,8 +205,9 @@ class AvatarView : FrameLayout { } var backgroundName = avatar.preferences?.background - if (backgroundForPurchase != null) { - layerMap[LayerType.BACKGROUND] = backgroundForPurchase +// if (backgroundForPurchase != null) { + if (preview != null) { + layerMap[preview?.keys?.first()] = preview?.values?.first() if (resetHasAttributes) hasBackground = true } else if (showBackground && backgroundName?.isNotEmpty() == true) { backgroundName = substituteOrReturn(spriteSubstitutions["backgrounds"], backgroundName) @@ -422,9 +424,10 @@ class AvatarView : FrameLayout { } } - fun setAvatar(avatar: Avatar) { + fun setAvatar(avatar: Avatar, preview: Map? = null) { val oldUser = this.avatar this.avatar = avatar + preview?.let { this.preview = preview } var equals = false if (oldUser != null) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt index 5cd22a91b..912387490 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/CustomizationRecyclerViewAdapter.kt @@ -23,7 +23,8 @@ import com.habitrpg.android.habitica.ui.views.shops.PurchaseDialog import io.reactivex.rxjava3.core.BackpressureStrategy import io.reactivex.rxjava3.core.Flowable import io.reactivex.rxjava3.subjects.PublishSubject -import java.util.Date +import java.util.* +import kotlin.collections.ArrayList class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.RecyclerView.Adapter() { @@ -200,7 +201,9 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler if (customization?.type == "background" && avatar != null){ val alert = HabiticaAlertDialog(context = itemView.context) val purchasedCustomizationView: View = LayoutInflater.from(itemView.context).inflate(R.layout.purchased_equip_dialog, null) - purchasedCustomizationView.findViewById(R.id.avatar_view).setAvatarWithSelectedBackground(avatar!!, customization?.let { ShopItem.fromCustomization(it, userSize, hairColor).imageName }) + val layerMap = EnumMap(AvatarView.LayerType::class.java) + layerMap[AvatarView.LayerType.BACKGROUND] = customization?.let { ShopItem.fromCustomization(it, userSize, hairColor).imageName } + purchasedCustomizationView.findViewById(R.id.avatar_view).setAvatar(avatar!!, layerMap) alert.setAdditionalContentView(purchasedCustomizationView) alert.addButton(R.string.equip, true) { _, _ -> customization?.let { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt index 0db1c8218..4c48db308 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialog.kt @@ -288,7 +288,7 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop setLimitedTextView() if (additionalContentView is PurchaseDialogBackgroundContent) { - (additionalContentView as PurchaseDialogBackgroundContent).setAvatarWithBackgroundForPurchase(userRepository.getUnmanagedCopy(user), shopItem) + (additionalContentView as PurchaseDialogBackgroundContent).setAvatarWithBackgroundPreview(userRepository.getUnmanagedCopy(user), shopItem) } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBackgroundContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBackgroundContent.kt index 702ad132d..fbb8ed811 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBackgroundContent.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogBackgroundContent.kt @@ -6,7 +6,9 @@ import com.habitrpg.android.habitica.databinding.PurchaseDialogBackgroundBinding import com.habitrpg.android.habitica.extensions.layoutInflater import com.habitrpg.android.habitica.models.Avatar import com.habitrpg.android.habitica.models.shops.ShopItem +import com.habitrpg.android.habitica.ui.AvatarView import com.habitrpg.android.habitica.ui.views.PixelArtView +import java.util.* class PurchaseDialogBackgroundContent(context: Context) : PurchaseDialogContent(context) { val binding = PurchaseDialogBackgroundBinding.inflate(context.layoutInflater, this) @@ -20,7 +22,10 @@ class PurchaseDialogBackgroundContent(context: Context) : PurchaseDialogContent( binding.notesTextView.text = item.notes } - fun setAvatarWithBackgroundForPurchase(avatar: Avatar, item: ShopItem) { - binding.avatarView.setAvatarWithSelectedBackground(avatar, item.imageName) + fun setAvatarWithBackgroundPreview(avatar: Avatar, item: ShopItem) { + val layerMap = EnumMap(AvatarView.LayerType::class.java) + layerMap[AvatarView.LayerType.BACKGROUND] = item.imageName + + binding.avatarView.setAvatar(avatar, layerMap) } }