mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-23 14:17:15 +00:00
avatar display improvements
This commit is contained in:
parent
8c62f35ec8
commit
f1a3ce9a72
3 changed files with 41 additions and 13 deletions
|
|
@ -32,7 +32,7 @@ open class ShopItem : RealmObject(), BaseObject {
|
|||
} else {
|
||||
"shop_$key"
|
||||
}
|
||||
return if (purchaseType == "customization") {
|
||||
return if (purchaseType == "customization" && name?.startsWith("icon_") == false) {
|
||||
"icon_$name"
|
||||
} else {
|
||||
name
|
||||
|
|
|
|||
|
|
@ -60,12 +60,12 @@ class PurchaseDialogCustomizationContent(context: Context) : PurchaseDialogConte
|
|||
layerMap[it] = shopItem.imageName?.replace("shop_", "")?.replace("icon_", "")
|
||||
if (path.contains("color")) {
|
||||
val hairColor = shopItem.key.split("_").last()
|
||||
if ((user.preferences?.hair?.base ?: 0) > 0) {
|
||||
layerMap[AvatarView.LayerType.HAIR_BASE] = "hair_base_" + user.preferences?.hair?.base + "_" + hairColor
|
||||
}
|
||||
if ((user.preferences?.hair?.bangs ?: 0) > 0) {
|
||||
layerMap[AvatarView.LayerType.HAIR_BANGS] = "hair_bangs_" + user.preferences?.hair?.bangs + "_" + hairColor
|
||||
}
|
||||
if ((user.preferences?.hair?.base ?: 0) > 0) {
|
||||
layerMap[AvatarView.LayerType.HAIR_BASE] = "hair_base_" + user.preferences?.hair?.base + "_" + hairColor
|
||||
}
|
||||
if ((user.preferences?.hair?.mustache ?: 0) > 0) {
|
||||
layerMap[AvatarView.LayerType.HAIR_MUSTACHE] = "hair_mustache_" + user.preferences?.hair?.mustache + "_" + hairColor
|
||||
}
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@ import android.util.AttributeSet
|
|||
import android.util.Log
|
||||
import android.widget.FrameLayout
|
||||
import android.widget.ImageView
|
||||
import androidx.constraintlayout.helper.widget.Layer
|
||||
import androidx.core.view.marginStart
|
||||
import androidx.core.view.marginTop
|
||||
import coil.dispose
|
||||
|
|
@ -156,7 +157,8 @@ class AvatarView : FrameLayout {
|
|||
|
||||
numberLayersInProcess.set(layerMap.size)
|
||||
|
||||
for ((layerKey, layerName) in layerMap) {
|
||||
for (layerKey in LAYER_ORDER) {
|
||||
val layerName = layerMap[layerKey] ?: continue
|
||||
val layerNumber = i++
|
||||
|
||||
val imageView =
|
||||
|
|
@ -249,15 +251,16 @@ class AvatarView : FrameLayout {
|
|||
}
|
||||
|
||||
var backgroundName = avatar.preferences?.background
|
||||
if (showBackground && backgroundName?.isNotEmpty() == true) {
|
||||
backgroundName = substituteOrReturn(spriteSubstitutions["backgrounds"], backgroundName)
|
||||
layerMap[LayerType.BACKGROUND] = "background_$backgroundName"
|
||||
if (resetHasAttributes) hasBackground = true
|
||||
}
|
||||
if (!preview.isNullOrEmpty()) {
|
||||
for ((key, value) in preview ?: emptyMap()) {
|
||||
layerMap[key] = value
|
||||
if (resetHasAttributes && key == LayerType.BACKGROUND) hasBackground = true
|
||||
}
|
||||
} else if (showBackground && backgroundName?.isNotEmpty() == true) {
|
||||
backgroundName = substituteOrReturn(spriteSubstitutions["backgrounds"], backgroundName)
|
||||
layerMap[LayerType.BACKGROUND] = "background_$backgroundName"
|
||||
if (resetHasAttributes) hasBackground = true
|
||||
}
|
||||
|
||||
if (showSleeping && avatar.sleep) {
|
||||
|
|
@ -367,13 +370,12 @@ class AvatarView : FrameLayout {
|
|||
|
||||
if (hair != null) {
|
||||
val hairColor = hair.color
|
||||
|
||||
if (hair.isAvailable(hair.base)) {
|
||||
layerMap[LayerType.HAIR_BASE] = "hair_base_" + hair.base + "_" + hairColor
|
||||
}
|
||||
if (hair.isAvailable(hair.bangs)) {
|
||||
layerMap[LayerType.HAIR_BANGS] = "hair_bangs_" + hair.bangs + "_" + hairColor
|
||||
}
|
||||
if (hair.isAvailable(hair.base)) {
|
||||
layerMap[LayerType.HAIR_BASE] = "hair_base_" + hair.base + "_" + hairColor
|
||||
}
|
||||
if (hair.isAvailable(hair.mustache)) {
|
||||
layerMap[LayerType.HAIR_MUSTACHE] = "hair_mustache_" + hair.mustache + "_" + hairColor
|
||||
}
|
||||
|
|
@ -572,5 +574,31 @@ class AvatarView : FrameLayout {
|
|||
private val FULL_HERO_RECT = Rect(0, 0, 140, 147)
|
||||
private val COMPACT_HERO_RECT = Rect(0, 0, 114, 114)
|
||||
private val HERO_ONLY_RECT = Rect(0, 0, 90, 90)
|
||||
|
||||
private val LAYER_ORDER = listOf<LayerType>(
|
||||
LayerType.BACKGROUND,
|
||||
LayerType.MOUNT_BODY,
|
||||
LayerType.CHAIR,
|
||||
LayerType.BACK,
|
||||
LayerType.SKIN,
|
||||
LayerType.SHIRT,
|
||||
LayerType.ARMOR,
|
||||
LayerType.HEAD_0,
|
||||
LayerType.HAIR_BANGS,
|
||||
LayerType.HAIR_BASE,
|
||||
LayerType.HAIR_MUSTACHE,
|
||||
LayerType.HAIR_BEARD,
|
||||
LayerType.BODY,
|
||||
LayerType.EYEWEAR,
|
||||
LayerType.VISUAL_BUFF,
|
||||
LayerType.HEAD,
|
||||
LayerType.HEAD_ACCESSORY,
|
||||
LayerType.HAIR_FLOWER,
|
||||
LayerType.SHIELD,
|
||||
LayerType.WEAPON,
|
||||
LayerType.MOUNT_HEAD,
|
||||
LayerType.ZZZ,
|
||||
LayerType.PET,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue