From 49d9b77d15458799625551082d34492afc857082 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 1 Feb 2018 19:35:26 +0100 Subject: [PATCH] Add alerts to explain rage strikes --- Habitica/res/layout/dialog_habitica_base.xml | 47 +++++++++++++ Habitica/res/values/colors.xml | 1 + Habitica/res/values/strings.xml | 6 ++ .../habitica/ui/views/HabiticaAlertDialog.kt | 66 +++++++++++++++++++ .../ui/views/social/QuestProgressView.kt | 42 ++++++++++-- 5 files changed, 158 insertions(+), 4 deletions(-) create mode 100644 Habitica/res/layout/dialog_habitica_base.xml create mode 100644 Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaAlertDialog.kt diff --git a/Habitica/res/layout/dialog_habitica_base.xml b/Habitica/res/layout/dialog_habitica_base.xml new file mode 100644 index 000000000..47f88b81f --- /dev/null +++ b/Habitica/res/layout/dialog_habitica_base.xml @@ -0,0 +1,47 @@ + + + + + + \ No newline at end of file diff --git a/Habitica/res/values/colors.xml b/Habitica/res/values/colors.xml index 9f243164d..3feca2261 100644 --- a/Habitica/res/values/colors.xml +++ b/Habitica/res/values/colors.xml @@ -160,4 +160,5 @@ #4cfedead #331960 @color/gray_500 + #000 diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 5b9543c48..8ede54478 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -741,4 +741,10 @@ Boss Art World Boss Description Rage Strikes: %d/%d + This Strike hasn’t happened yet!\nThe World Boss will lash out and attack one of our friendly shopkeepers once its rage bar fills. Keep up with your Dailies to try and prevent it from happening! + Pending Strike + What’s a Rage Strike? + There are 3 potential Rage Strikes + This gauge fills when Habiticans miss their Dailies. If it fills up, the DysHeartener will unleash its Shattering Heartbreak attack on one of Habitica\'s shopkeepers, so be sure to do your tasks! + This Strike hasn’t happened yet! diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaAlertDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaAlertDialog.kt new file mode 100644 index 000000000..8cfe6e2fa --- /dev/null +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/HabiticaAlertDialog.kt @@ -0,0 +1,66 @@ +package com.habitrpg.android.habitica.ui.views + +import android.content.Context +import android.os.Bundle +import android.support.v4.content.ContextCompat +import android.support.v7.app.AlertDialog +import android.view.LayoutInflater +import android.view.View +import android.widget.LinearLayout +import android.widget.TextView +import com.habitrpg.android.habitica.R +import com.habitrpg.android.habitica.extensions.bindView + +/** + * Created by phillip on 01.02.18. + */ + +open class HabiticaAlertDialog(context: Context) : AlertDialog(context) { + + private val view: LinearLayout = LayoutInflater.from(context).inflate(R.layout.dialog_habitica_base, null) as LinearLayout + private val titleTextView: TextView by bindView(view, R.id.titleTextView) + private val subtitleTextView: TextView by bindView(view, R.id.subtitleTextView) + private val messageTextView: TextView by bindView(view, R.id.messageTextView) + + init { + setView(view) + } + + override fun setTitle(title: CharSequence?) { + titleTextView.text = title + } + + override fun setTitle(titleId: Int) { + setTitle(context.getString(titleId)) + } + + fun setTitleBackground(colorId: Int) { + titleTextView.setBackgroundColor(ContextCompat.getColor(context, colorId)) + } + + fun setSubtitle(subtitle: CharSequence?) { + if (subtitle != null) { + subtitleTextView.visibility = View.VISIBLE + } else { + subtitleTextView.visibility = View.GONE + } + subtitleTextView.text = subtitle + } + + fun setSubtitle(subtitleId: Int) { + setSubtitle(context.getString(subtitleId)) + } + + override fun setMessage(message: CharSequence?) { + if (message != null) { + messageTextView.visibility = View.VISIBLE + } else { + messageTextView.visibility = View.GONE + } + messageTextView.text = message + } + + fun setMessage(messageId: Int) { + setMessage(context.getString(messageId)) + } +} \ No newline at end of file diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt index 046313f87..4b56bc2b8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/social/QuestProgressView.kt @@ -1,11 +1,13 @@ package com.habitrpg.android.habitica.ui.views.social import android.content.Context +import android.content.DialogInterface import android.graphics.Bitmap import android.graphics.Canvas import android.graphics.RectF import android.support.v4.content.ContextCompat import android.support.v4.content.res.ResourcesCompat +import android.support.v7.app.AlertDialog import android.util.AttributeSet import android.view.LayoutInflater import android.view.View @@ -17,16 +19,16 @@ import android.widget.TextView import com.facebook.drawee.view.SimpleDraweeView import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.extensions.bindView +import com.habitrpg.android.habitica.helpers.RxErrorHandler +import com.habitrpg.android.habitica.interactors.CheckClassSelectionUseCase import com.habitrpg.android.habitica.models.inventory.Quest import com.habitrpg.android.habitica.models.inventory.QuestContent import com.habitrpg.android.habitica.models.inventory.QuestProgress import com.habitrpg.android.habitica.models.inventory.QuestProgressCollect import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils -import com.habitrpg.android.habitica.ui.views.CollapsibleSectionView -import com.habitrpg.android.habitica.ui.views.HabiticaIcons -import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper -import com.habitrpg.android.habitica.ui.views.ValueBar +import com.habitrpg.android.habitica.ui.views.* import io.realm.RealmList +import org.greenrobot.eventbus.EventBus class QuestProgressView : LinearLayout { @@ -79,6 +81,8 @@ class QuestProgressView : LinearLayout { showQuestImage() } } + + rageStrikeDescriptionView.setOnClickListener { showStrikeDescriptionAlert() } } override fun onDraw(canvas: Canvas?) { @@ -164,9 +168,11 @@ class QuestProgressView : LinearLayout { val height = it.height * displayDensity val scaledImage = Bitmap.createScaledBitmap(it, width.toInt(), height.toInt(), false) iconView.setImageBitmap(HabiticaIconsHelper.imageOfRageStrikeActive(context, scaledImage)) + iconView.setOnClickListener { showActiveStrikeAlert(strike.key) } }) } else { iconView.setImageBitmap(HabiticaIconsHelper.imageOfRageStrikeInactive()) + iconView.setOnClickListener { showPendingStrikeAlert() } } val params = LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT) val spacing = context.resources.getDimension(R.dimen.spacing_medium).toInt() @@ -175,6 +181,34 @@ class QuestProgressView : LinearLayout { } } + private fun showActiveStrikeAlert(key: String) { + + } + + private fun showPendingStrikeAlert() { + val alert = HabiticaAlertDialog(context) + alert.setTitle(R.string.pending_strike_title) + alert.setTitleBackground(R.color.orange_10) + alert.setSubtitle(R.string.pending_strike_subtitle) + alert.setMessage(R.string.pending_strike_description) + alert.setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.close), { dialog, _ -> + dialog.dismiss() + }) + alert.show() + } + + private fun showStrikeDescriptionAlert() { + val alert = HabiticaAlertDialog(context) + alert.setTitle(R.string.strike_description_title) + alert.setTitleBackground(R.color.orange_10) + alert.setSubtitle(R.string.strike_description_subtitle) + alert.setMessage(R.string.strike_description_description) + alert.setButton(AlertDialog.BUTTON_POSITIVE, context.getString(R.string.close), { dialog, _ -> + dialog.dismiss() + }) + alert.show() + } + private fun setCollectionViews(collection: RealmList, quest: QuestContent) { val inflater = LayoutInflater.from(context) for (collect in collection) {