diff --git a/Habitica/res/layout/dialog_purchase_customizationset.xml b/Habitica/res/layout/dialog_purchase_customizationset.xml
index 05c3ab5aa..f6953a363 100644
--- a/Habitica/res/layout/dialog_purchase_customizationset.xml
+++ b/Habitica/res/layout/dialog_purchase_customizationset.xml
@@ -26,4 +26,12 @@
android:gravity="center"
android:layout_marginTop="14dp"
android:layout_marginBottom="4dp"/>
+
\ No newline at end of file
diff --git a/Habitica/res/layout/purchased_equip_dialog.xml b/Habitica/res/layout/purchased_equip_dialog.xml
new file mode 100644
index 000000000..7ed05b253
--- /dev/null
+++ b/Habitica/res/layout/purchased_equip_dialog.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
\ No newline at end of file
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 28ed8bbf2..a20d6a80f 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,8 @@ 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
private val imageViewHolder = mutableListOf()
@@ -203,7 +205,11 @@ class AvatarView : FrameLayout {
}
var backgroundName = avatar.preferences?.background
- if (showBackground && backgroundName?.isNotEmpty() == true) {
+// 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)
layerMap[LayerType.BACKGROUND] = "background_$backgroundName"
if (resetHasAttributes) hasBackground = true
@@ -418,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 a49368688..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
@@ -12,21 +12,25 @@ import com.habitrpg.android.habitica.databinding.CustomizationGridItemBinding
import com.habitrpg.android.habitica.databinding.CustomizationSectionFooterBinding
import com.habitrpg.android.habitica.databinding.CustomizationSectionHeaderBinding
import com.habitrpg.android.habitica.helpers.MainNavigationController
+import com.habitrpg.android.habitica.models.Avatar
import com.habitrpg.android.habitica.models.inventory.Customization
import com.habitrpg.android.habitica.models.inventory.CustomizationSet
import com.habitrpg.android.habitica.models.shops.ShopItem
+import com.habitrpg.android.habitica.ui.AvatarView
import com.habitrpg.android.habitica.ui.helpers.loadImage
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
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() {
var userSize: String? = null
var hairColor: String? = null
+ var avatar: Avatar? = null
var customizationType: String? = null
var gemBalance: Int = 0
var unsortedCustomizations: List = ArrayList()
@@ -194,8 +198,27 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler
return
}
- customization?.let {
- selectCustomizationEvents.onNext(it)
+ 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)
+ 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 {
+ selectCustomizationEvents.onNext(it)
+ }
+ }
+ alert.addButton(R.string.close, false) { _, _ ->
+ alert.dismiss()
+ }
+ alert.show()
+ } else {
+ customization?.let {
+ selectCustomizationEvents.onNext(it)
+ }
+
}
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
index 11cc42bd3..532c2c208 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/customization/AvatarCustomizationFragment.kt
@@ -221,6 +221,7 @@ class AvatarCustomizationFragment :
this.adapter.userSize = user.preferences?.size
this.adapter.hairColor = user.preferences?.hair?.color
this.adapter.gemBalance = user.gemCount
+ this.adapter.avatar = user
adapter.notifyDataSetChanged()
}
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 485a332c5..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).setAvatar(userRepository.getUnmanagedCopy(user))
+ (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 ad457a3f3..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 setAvatar(avatar: Avatar) {
- binding.avatarView.setAvatar(avatar)
+ fun setAvatarWithBackgroundPreview(avatar: Avatar, item: ShopItem) {
+ val layerMap = EnumMap(AvatarView.LayerType::class.java)
+ layerMap[AvatarView.LayerType.BACKGROUND] = item.imageName
+
+ binding.avatarView.setAvatar(avatar, layerMap)
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogCustomizationSetContent.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogCustomizationSetContent.kt
index b68bebd8e..888f0d50c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogCustomizationSetContent.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/shops/PurchaseDialogCustomizationSetContent.kt
@@ -28,5 +28,6 @@ class PurchaseDialogCustomizationSetContent(context: Context) : PurchaseDialogCo
imageView.layoutParams = FlexboxLayout.LayoutParams(76.dpToPx(context), 76.dpToPx(context))
binding.imageViewWrapper.addView(imageView)
}
+ binding.notesTextView.text = item.notes
}
}
diff --git a/habitica.properties.example b/habitica.properties.example
deleted file mode 100644
index 0c783067a..000000000
--- a/habitica.properties.example
+++ /dev/null
@@ -1,18 +0,0 @@
-# Habitica Server Port
-# local instance
-# PORT=3000
-PORT=80
-
-# Genymotion
-# BASE_URL=http://10.0.3.2:3000
-
-# Android Emulator
-# see: http://developer.android.com/tools/help/emulator.html#networkaddresses
-# BASE_URL=http://10.0.2.2:3000
-
-# Production
-BASE_URL=https://habitica.com
-
-STAGING_KEY=
-ANDROID_TESTING_UUID=
-APPLE_AUTH_CLIENT_ID=
diff --git a/habitica.resources.example b/habitica.resources.example
deleted file mode 100644
index 8d68b8005..000000000
--- a/habitica.resources.example
+++ /dev/null
@@ -1,4 +0,0 @@
-fabric_key=CHANGE_ME
-facebook_app_id=CHANGE_ME
-amplitude_app_id=CHANGE_ME
-application_ad_id=CHANGE_ME