diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 0f2dafdd8..98ee7ac2a 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -1040,6 +1040,7 @@ Stat Allocation All Habitica characters have four stats that affect the gameplay aspects of Habitica.\n\n**Strength (STR)** affects critical hits and raises damage done to a Quest Boss. Warriors and Rogues gain STR from their class equipment.\n\n**Constitution (CON)** raises your HP and makes you take less damage. Healers and Warriors gain CON from their class equipment.\n\n**Intelligence (INT)** raises the amount of EXP you earn and gives you more Mana. Mages and Healers gain INT from their class equipment.\n\n**Perception (PER)** increases the gold you earn and the rate of finding dropped items. Rogues and Mages gain PER from their class equipment.\n\nAfter level 10, you earn 1 Stat Point every level you gain that you can put into any stat you’d like. You can also equip gear that has different combinations of stat boosts. Use Skill + Use on Party Standard Premium Currency diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillDialogBottomSheetFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillDialogBottomSheetFragment.kt index f158347fa..3b1343bfa 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillDialogBottomSheetFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillDialogBottomSheetFragment.kt @@ -27,6 +27,7 @@ class SkillDialogBottomSheetFragment : BottomSheetDialogFragment() { skillPath: String, skillKey: String, resourceIcon: Drawable, + isTransformationItem: Boolean = false, onUseSkill: () -> Unit ): SkillDialogBottomSheetFragment { return SkillDialogBottomSheetFragment().apply { @@ -39,6 +40,7 @@ class SkillDialogBottomSheetFragment : BottomSheetDialogFragment() { this.skillKey = skillKey this.skillPath = skillPath this.onUseSkill = onUseSkill + this.isTransformationItem = isTransformationItem } } } @@ -47,6 +49,7 @@ class SkillDialogBottomSheetFragment : BottomSheetDialogFragment() { private var resourceIcon: Drawable? = null var skillKey = "" var skillPath = "" + var isTransformationItem: Boolean = false override fun onCreateView( inflater: LayoutInflater, @@ -62,6 +65,7 @@ class SkillDialogBottomSheetFragment : BottomSheetDialogFragment() { title = requireArguments().getString(ARG_SKILL_TITLE) ?: "", description = requireArguments().getString(ARG_SKILL_DESCRIPTION) ?: "", mpCost = requireArguments().getString(ARG_SKILL_MP_COST) ?: "", + isTransformationItem = isTransformationItem, onUseSkill = { onUseSkill?.invoke() dismiss() diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.kt index de23fbd1d..c18788da3 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/skills/SkillsFragment.kt @@ -106,6 +106,7 @@ class SkillsFragment : BaseMainFragment() { val context = context ?: return val resourceIconDrawable: Drawable = HabiticaIconsHelper.imageOfMagic().toDrawable(context.resources) val skillIdentifier = "shop_" + val isTransformationItem = skill.habitClass == "special" val bottomSheet = SkillDialogBottomSheetFragment.newInstance( skillTitle = skill.text, @@ -114,6 +115,7 @@ class SkillsFragment : BaseMainFragment() { skillPath = skillIdentifier, skillMpCost = "${skill.mana?.toInt() ?: 0} MP", resourceIcon = resourceIconDrawable, + isTransformationItem = isTransformationItem, onUseSkill = { when { "special" == skill.habitClass -> { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/SkillDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/SkillDialog.kt index 05e74776c..64f4a91a0 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/SkillDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/SkillDialog.kt @@ -43,6 +43,7 @@ fun SkillDialog( title: String, description: String, mpCost: String, + isTransformationItem: Boolean = false, onUseSkill: () -> Unit, ) { val colors = HabiticaTheme.colors @@ -61,11 +62,10 @@ fun SkillDialog( modifier = Modifier.fillMaxWidth() ) { Box( - modifier = - Modifier - .padding(bottom = 16.dp) - .background(colorResource(R.color.content_background_offset)) - .size(24.dp, 3.dp) + modifier = Modifier + .padding(bottom = 16.dp) + .background(colorResource(R.color.content_background_offset)) + .size(24.dp, 3.dp) ) Box( @@ -75,14 +75,12 @@ fun SkillDialog( .background(colors.pixelArtBackground(hasIcon = true)), contentAlignment = Alignment.Center ) { - PixelArtView ( - imageName = skillPath + skillKey, + PixelArtView( + imageName = "$skillPath$skillKey", modifier = Modifier.size(62.dp) ) } - Spacer(Modifier.height(16.dp)) - Text( text = title, fontSize = 16.sp, @@ -98,33 +96,33 @@ fun SkillDialog( modifier = Modifier.padding(top = 8.dp), textAlign = TextAlign.Center ) - Spacer(Modifier.height(18.dp)) - - Row( - verticalAlignment = Alignment.CenterVertically, - modifier = Modifier - .clip(RoundedCornerShape(20.dp)) - .background(chipBg) - .padding(horizontal = 16.dp, vertical = 8.dp) - ) { - Icon( - painter = resourceIconPainter, - contentDescription = null, - tint = Color.Unspecified, - modifier = Modifier.size(22.dp) - ) - Spacer(Modifier.width(8.dp)) - Text( - text = mpCost, - color = chipTextColor, - fontWeight = FontWeight.Medium, - fontSize = 16.sp - ) + if (!isTransformationItem) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier + .clip(RoundedCornerShape(20.dp)) + .background(chipBg) + .padding(horizontal = 16.dp, vertical = 8.dp) + ) { + Icon( + painter = resourceIconPainter, + contentDescription = null, + tint = Color.Unspecified, + modifier = Modifier.size(22.dp) + ) + Spacer(Modifier.width(8.dp)) + Text( + text = mpCost, + color = chipTextColor, + fontWeight = FontWeight.Medium, + fontSize = 16.sp + ) + } + Spacer(Modifier.height(28.dp)) + } else { + Spacer(Modifier.height(18.dp)) } - - Spacer(Modifier.height(28.dp)) - Button( onClick = onUseSkill, shape = RoundedCornerShape(12.dp), @@ -136,18 +134,22 @@ fun SkillDialog( .fillMaxWidth() .height(43.dp) ) { + val label = if (isTransformationItem) + stringResource(R.string.use_on_party) + else + stringResource(R.string.use_skill) Text( - text = stringResource(R.string.use_skill), + text = label, fontWeight = FontWeight.Normal, fontSize = 17.sp ) } - } } } + @Preview(showBackground = true, backgroundColor = 0xFF232136) @Composable fun PreviewSkillDialog() { @@ -158,6 +160,7 @@ fun PreviewSkillDialog() { title = "Title Skill", description = "Skill Description", mpCost = "10 MP", + isTransformationItem = true, onUseSkill = { }