diff --git a/Habitica/build.gradle b/Habitica/build.gradle index 8989e59cd..364442ed4 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -126,10 +126,10 @@ dependencies { implementation 'com.nex3z:flow-layout:1.2.2' implementation 'androidx.core:core-ktx:1.1.0' - implementation "androidx.lifecycle:lifecycle-extensions:2.1.0" - implementation "androidx.lifecycle:lifecycle-common-java8:2.1.0" - implementation 'androidx.navigation:navigation-fragment-ktx:2.1.0' - implementation 'androidx.navigation:navigation-ui-ktx:2.1.0' + implementation "androidx.lifecycle:lifecycle-extensions:2.2.0" + implementation "androidx.lifecycle:lifecycle-common-java8:2.2.0" + implementation 'androidx.navigation:navigation-fragment-ktx:2.2.1' + implementation 'androidx.navigation:navigation-ui-ktx:2.2.1' implementation "androidx.paging:paging-runtime-ktx:2.1.1" implementation 'com.plattysoft.leonids:LeonidsLib:1.3.2' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.3' diff --git a/Habitica/res/drawable/button_background_gray_600.xml b/Habitica/res/drawable/button_background_gray_600.xml new file mode 100644 index 000000000..9d6ccf7a2 --- /dev/null +++ b/Habitica/res/drawable/button_background_gray_600.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 9145c73e2..b4b759143 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -336,9 +336,11 @@ You don\'t have any messages. You can send a user a new message from their public chat messages! Unlock by inviting friends Unlock by logging into Habitica regularly + Unlock by checking into Habitica %d times. Unlock by creating an account Invite Friends login into Habitica regularly + %d Checkins create an account Purchased %1$s gold @@ -946,6 +948,8 @@ Guidance with setting up your Habitica Account Skill unlocks at level %d Locked - Finish Quest %d - Level %d + Unlock by finishing Quest %d + Unlock by reaching level %d + Finish Quest %d + Level %d diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt index 999b8a208..1c3c38e18 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItem.kt @@ -90,7 +90,27 @@ open class ShopItem : RealmObject() { fun lockedReason(context: Context): String? { return when { unlockCondition != null -> { - unlockCondition?.shortReadableUnlockConditionId()?.let { context.getString(it) } + unlockCondition?.readableUnlockCondition(context) + } + previous != null -> { + try { + val thisNumber = Character.getNumericValue(key.last()) + context.getString(R.string.unlock_previous_short, thisNumber - 1) + } catch (e: NumberFormatException) { + null + } + } + level != null -> { + context.getString(R.string.unlock_level_short, level ?: 0) + } + else -> null + } + } + + fun shortLockedReason(context: Context): String? { + return when { + unlockCondition != null -> { + unlockCondition?.shortReadableUnlockCondition(context) } previous != null -> { try { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt index 245f359e9..bc79daefb 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/shops/ShopItemUnlockCondition.kt @@ -1,5 +1,6 @@ package com.habitrpg.android.habitica.models.shops +import android.content.Context import com.habitrpg.android.habitica.R import io.realm.RealmObject @@ -10,18 +11,19 @@ open class ShopItemUnlockCondition : RealmObject() { @PrimaryKey var questKey: String? = null private var condition: String? = null + var incentiveThreshold: Int? = null - fun readableUnlockConditionId(): Int = when (this.condition) { - "party invite" -> R.string.party_invite - "login incentive" -> R.string.login_incentive - "create account" -> R.string.create_account - else -> R.string.empty + fun readableUnlockCondition(context: Context): String = when (this.condition) { + "party invite" -> context.getString(R.string.party_invite) + "login reward" -> if (incentiveThreshold != null) context.getString(R.string.login_incentive_count, incentiveThreshold) else context.getString(R.string.login_incentive) + "create account" -> context.getString(R.string.create_account) + else -> "" } - fun shortReadableUnlockConditionId(): Int = when (this.condition) { - "party invite" -> R.string.party_invite_short - "login incentive" -> R.string.login_incentive_short - "create account" -> R.string.create_account_short - else -> R.string.empty + fun shortReadableUnlockCondition(context: Context): String = when (this.condition) { + "party invite" -> context.getString(R.string.party_invite_short) + "login reward" -> if (incentiveThreshold != null) context.getString(R.string.login_incentive_short_count, incentiveThreshold) else context.getString(R.string.login_incentive_short) + "create account" -> context.getString(R.string.create_account_short) + else -> "" } } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ShopItemViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ShopItemViewHolder.kt index d5b682d8a..a45a47c13 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ShopItemViewHolder.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ShopItemViewHolder.kt @@ -67,7 +67,7 @@ class ShopItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), Vi itemDetailIndicator.text = null itemDetailIndicator.visibility = View.GONE - val lockedReason = item.lockedReason(context) + val lockedReason = item.shortLockedReason(context) if (!item.locked) { priceLabel.text = item.value.toString() priceLabel.currency = item.currency 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 ce53fadaa..6f62e28ac 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 @@ -7,6 +7,7 @@ import android.view.View import android.widget.Button import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.graphics.drawable.toDrawable import androidx.core.os.bundleOf import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent @@ -82,6 +83,8 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop setBuyButtonEnabled(false) buyLabel.text = context.getString(R.string.locked) limitedTextView.visibility = View.VISIBLE + limitedTextView.background = ContextCompat.getColor(context, R.color.gray_600).toDrawable() + limitedTextView.setTextColor(ContextCompat.getColor(context, R.color.gray_100)) } priceLabel.isLocked = shopItem.locked || shopItem.lockedReason(context) != null @@ -186,9 +189,9 @@ class PurchaseDialog(context: Context, component: UserComponent?, val item: Shop priceLabel.setTextColor(ContextCompat.getColor(context, R.color.white)) buyLabel.setTextColor(ContextCompat.getColor(context, R.color.white)) } else { - buyButton.background = context.getDrawable(R.drawable.button_background_gray_700) - priceLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_200)) - buyLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_200)) + buyButton.background = context.getDrawable(R.drawable.button_background_gray_600) + priceLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100)) + buyLabel.setTextColor(ContextCompat.getColor(context, R.color.gray_100)) } if (shopItem.isTypeGear) {