mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-07-21 13:25:03 +00:00
show number of remaining subscriber gems. Fixes #880
This commit is contained in:
parent
264b64e2dd
commit
6272ab5d89
13 changed files with 274 additions and 373 deletions
|
|
@ -60,7 +60,7 @@ class PurchaseDialog(context: Context, component: AppComponent, val item: ShopIt
|
|||
private val contentContainer: ViewGroup by bindView(customView, R.id.content_container)
|
||||
private val scrollView: ScrollView by bindView(customView, R.id.scrollView)
|
||||
|
||||
var shopItem: ShopItem = item
|
||||
private var shopItem: ShopItem = item
|
||||
set(value) {
|
||||
field = value
|
||||
|
||||
|
|
@ -106,7 +106,11 @@ class PurchaseDialog(context: Context, component: AppComponent, val item: ShopIt
|
|||
private fun checkGearClass() {
|
||||
val user = user ?: return
|
||||
|
||||
if (shopItem.habitClass != null && user.stats.habitClass != shopItem.habitClass) {
|
||||
if (shopItem.purchaseType == "gems") {
|
||||
return
|
||||
}
|
||||
|
||||
if (shopItem.habitClass != null && shopItem.habitClass != "special" && user.stats.habitClass != shopItem.habitClass) {
|
||||
limitedTextView.text = context.getString(R.string.class_equipment_shop_dialog)
|
||||
limitedTextView.visibility = View.VISIBLE
|
||||
limitedTextView.setBackgroundColor(ContextCompat.getColor(context, R.color.gray_100))
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.AttributeSet;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
|
||||
public class PurchaseDialogBaseContent extends PurchaseDialogContent {
|
||||
|
||||
public PurchaseDialogBaseContent(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public PurchaseDialogBaseContent(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getViewId() {
|
||||
return R.layout.dialog_purchase_content_item;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
|
||||
import com.habitrpg.android.habitica.R
|
||||
|
||||
class PurchaseDialogBaseContent : PurchaseDialogContent {
|
||||
override val viewId: Int
|
||||
get() = R.layout.dialog_purchase_content_item
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
|
||||
}
|
||||
|
|
@ -1,50 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.Gravity;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.facebook.drawee.view.SimpleDraweeView;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public abstract class PurchaseDialogContent extends LinearLayout {
|
||||
|
||||
@BindView(R.id.imageView)
|
||||
SimpleDraweeView imageView;
|
||||
@BindView(R.id.titleTextView)
|
||||
TextView titleTextView;
|
||||
|
||||
public PurchaseDialogContent(Context context) {
|
||||
super(context);
|
||||
setupView();
|
||||
}
|
||||
|
||||
public PurchaseDialogContent(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
setupView();
|
||||
}
|
||||
|
||||
private void setupView() {
|
||||
setOrientation(LinearLayout.VERTICAL);
|
||||
setGravity(Gravity.CENTER_HORIZONTAL);
|
||||
|
||||
inflate(getContext(), getViewId(), this);
|
||||
ButterKnife.bind(this, this);
|
||||
}
|
||||
|
||||
protected abstract int getViewId();
|
||||
|
||||
|
||||
public void setItem(ShopItem item) {
|
||||
DataBindingUtils.INSTANCE.loadImage(imageView, item.getImageName());
|
||||
titleTextView.setText(item.getText());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.view.Gravity
|
||||
import android.widget.LinearLayout
|
||||
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.models.shops.ShopItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
|
||||
abstract class PurchaseDialogContent : LinearLayout {
|
||||
|
||||
private val imageView: SimpleDraweeView by bindView(R.id.imageView)
|
||||
private val titleTextView: TextView by bindView(R.id.titleTextView)
|
||||
|
||||
protected abstract val viewId: Int
|
||||
|
||||
constructor(context: Context) : super(context) {
|
||||
setupView()
|
||||
}
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
|
||||
setupView()
|
||||
}
|
||||
|
||||
private fun setupView() {
|
||||
orientation = LinearLayout.VERTICAL
|
||||
gravity = Gravity.CENTER_HORIZONTAL
|
||||
|
||||
inflate(context, viewId, this)
|
||||
}
|
||||
|
||||
|
||||
open fun setItem(item: ShopItem) {
|
||||
DataBindingUtils.loadImage(imageView, item.imageName)
|
||||
titleTextView.text = item.text
|
||||
}
|
||||
}
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.models.inventory.Equipment;
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
class PurchaseDialogGearContent extends PurchaseDialogContent {
|
||||
|
||||
|
||||
@BindView(R.id.notesTextView)
|
||||
TextView notesTextView;
|
||||
@BindView(R.id.str_label)
|
||||
TextView strLabel;
|
||||
@BindView(R.id.str_value)
|
||||
TextView strValueTextView;
|
||||
@BindView(R.id.per_label)
|
||||
TextView perLabel;
|
||||
@BindView(R.id.per_value)
|
||||
TextView perValueTextView;
|
||||
@BindView(R.id.con_label)
|
||||
TextView conLabel;
|
||||
@BindView(R.id.con_value)
|
||||
TextView conValueTextView;
|
||||
@BindView(R.id.int_label)
|
||||
TextView intLabel;
|
||||
@BindView(R.id.int_value)
|
||||
TextView intValueTextView;
|
||||
|
||||
public PurchaseDialogGearContent(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public PurchaseDialogGearContent(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getViewId() {
|
||||
return R.layout.dialog_purchase_content_gear;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItem(ShopItem item) {
|
||||
super.setItem(item);
|
||||
notesTextView.setText(item.getNotes());
|
||||
}
|
||||
|
||||
public void setEquipment(Equipment equipment) {
|
||||
if (equipment.isManaged()) {
|
||||
configureFieldsForValue(strLabel, strValueTextView, equipment.getStr());
|
||||
configureFieldsForValue(perLabel, perValueTextView, equipment.getPer());
|
||||
configureFieldsForValue(conLabel, conValueTextView, equipment.getCon());
|
||||
configureFieldsForValue(intLabel, intValueTextView, equipment.get_int());
|
||||
}
|
||||
}
|
||||
|
||||
private void configureFieldsForValue(TextView labelView, TextView valueTextView, int value) {
|
||||
valueTextView.setText("+"+value);
|
||||
if (value == 0) {
|
||||
labelView.setTextColor(ContextCompat.getColor(getContext(), R.color.gray_400));
|
||||
valueTextView.setTextColor(ContextCompat.getColor(getContext(), R.color.gray_400));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.support.v4.content.ContextCompat
|
||||
import android.util.AttributeSet
|
||||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.extensions.bindView
|
||||
import com.habitrpg.android.habitica.models.inventory.Equipment
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
|
||||
internal class PurchaseDialogGearContent : PurchaseDialogContent {
|
||||
|
||||
private val notesTextView: TextView by bindView(R.id.notesTextView)
|
||||
private val strLabel: TextView by bindView(R.id.str_label)
|
||||
private val strValueTextView: TextView by bindView(R.id.str_value)
|
||||
private val perLabel: TextView by bindView(R.id.per_label)
|
||||
private val perValueTextView: TextView by bindView(R.id.per_value)
|
||||
private val conLabel: TextView by bindView(R.id.con_label)
|
||||
private val conValueTextView: TextView by bindView(R.id.con_value)
|
||||
private val intLabel: TextView by bindView(R.id.int_label)
|
||||
private val intValueTextView: TextView by bindView(R.id.int_value)
|
||||
|
||||
override val viewId: Int
|
||||
get() = R.layout.dialog_purchase_content_gear
|
||||
|
||||
constructor(context: Context) : super(context) {}
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {}
|
||||
|
||||
override fun setItem(item: ShopItem) {
|
||||
super.setItem(item)
|
||||
notesTextView.text = item.notes
|
||||
}
|
||||
|
||||
fun setEquipment(equipment: Equipment) {
|
||||
if (equipment.isManaged) {
|
||||
configureFieldsForValue(strLabel, strValueTextView, equipment.str)
|
||||
configureFieldsForValue(perLabel, perValueTextView, equipment.per)
|
||||
configureFieldsForValue(conLabel, conValueTextView, equipment.con)
|
||||
configureFieldsForValue(intLabel, intValueTextView, equipment._int)
|
||||
}
|
||||
}
|
||||
|
||||
private fun configureFieldsForValue(labelView: TextView?, valueTextView: TextView?, value: Int) {
|
||||
valueTextView!!.text = "+" + value
|
||||
if (value == 0) {
|
||||
labelView!!.setTextColor(ContextCompat.getColor(context, R.color.gray_400))
|
||||
valueTextView.setTextColor(ContextCompat.getColor(context, R.color.gray_400))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,36 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops;
|
||||
|
||||
import android.content.Context;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
/**
|
||||
* Created by phillip on 25.07.17.
|
||||
*/
|
||||
|
||||
class PurchaseDialogGemsContent extends PurchaseDialogContent {
|
||||
|
||||
@BindView(R.id.notesTextView)
|
||||
TextView notesTextView;
|
||||
|
||||
public PurchaseDialogGemsContent(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getViewId() {
|
||||
return R.layout.dialog_purchase_content_item;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setItem(ShopItem item) {
|
||||
super.setItem(item);
|
||||
|
||||
notesTextView.setText(item.getNotes());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.extensions.bindView
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
|
||||
internal class PurchaseDialogGemsContent(context: Context) : PurchaseDialogContent(context) {
|
||||
|
||||
val notesTextView: TextView by bindView(R.id.notesTextView)
|
||||
|
||||
override val viewId: Int
|
||||
get() = R.layout.dialog_purchase_content_item
|
||||
|
||||
|
||||
override fun setItem(item: ShopItem) {
|
||||
super.setItem(item)
|
||||
|
||||
notesTextView.text = item.notes
|
||||
}
|
||||
}
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.util.AttributeSet;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
public class PurchaseDialogItemContent extends PurchaseDialogContent {
|
||||
|
||||
@BindView(R.id.notesTextView)
|
||||
TextView notesTextView;
|
||||
|
||||
public PurchaseDialogItemContent(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public PurchaseDialogItemContent(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getViewId() {
|
||||
return R.layout.dialog_purchase_content_item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItem(ShopItem item) {
|
||||
super.setItem(item);
|
||||
|
||||
notesTextView.setText(item.getNotes());
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.util.AttributeSet
|
||||
import android.widget.TextView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.extensions.bindView
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem
|
||||
|
||||
class PurchaseDialogItemContent : PurchaseDialogContent {
|
||||
|
||||
internal val notesTextView: TextView by bindView(R.id.notesTextView)
|
||||
|
||||
override val viewId: Int
|
||||
get() = R.layout.dialog_purchase_content_item
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
|
||||
|
||||
override fun setItem(item: ShopItem) {
|
||||
super.setItem(item)
|
||||
notesTextView.text = item.notes
|
||||
}
|
||||
}
|
||||
|
|
@ -1,152 +0,0 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.text.TextUtils;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.RatingBar;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.facebook.drawee.view.SimpleDraweeView;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestCollect;
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestContent;
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestDropItem;
|
||||
import com.habitrpg.android.habitica.models.shops.ShopItem;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.BindView;
|
||||
|
||||
/**
|
||||
* Created by phillip on 24.07.17.
|
||||
*/
|
||||
|
||||
public class PurchaseDialogQuestContent extends PurchaseDialogContent {
|
||||
|
||||
@BindView(R.id.questDetailView)
|
||||
View questDetailView;
|
||||
@BindView(R.id.questTypeTextView)
|
||||
TextView questTypeTextView;
|
||||
@BindView(R.id.boss_health_view)
|
||||
View bossHealthView;
|
||||
@BindView(R.id.boss_health_text)
|
||||
TextView bossHealthTextView;
|
||||
@BindView(R.id.quest_collect_view)
|
||||
View questCollectView;
|
||||
@BindView(R.id.quest_collect_text)
|
||||
TextView questCollectTextView;
|
||||
@BindView(R.id.quest_difficulty_view)
|
||||
RatingBar questDifficultyView;
|
||||
@BindView(R.id.rage_meter_view)
|
||||
View rageMeterView;
|
||||
@BindView(R.id.rewardsList)
|
||||
ViewGroup rewardsList;
|
||||
@BindView(R.id.ownerRewardsTitle)
|
||||
View ownerRewardsTitle;
|
||||
@BindView(R.id.ownerRewardsList)
|
||||
ViewGroup ownerRewardsList;
|
||||
|
||||
public PurchaseDialogQuestContent(Context context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public PurchaseDialogQuestContent(Context context, @Nullable AttributeSet attrs) {
|
||||
super(context, attrs);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getViewId() {
|
||||
return R.layout.dialog_purchase_content_quest;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItem(ShopItem item) {
|
||||
super.setItem(item);
|
||||
}
|
||||
|
||||
public void setQuestContent(QuestContent questContent) {
|
||||
|
||||
if (questContent.isBossQuest()) {
|
||||
questTypeTextView.setText(R.string.boss_quest);
|
||||
questCollectView.setVisibility(View.GONE);
|
||||
bossHealthTextView.setText(String.valueOf(questContent.getBoss().hp));
|
||||
if (questContent.getBoss().hasRage()) {
|
||||
rageMeterView.setVisibility(View.VISIBLE);
|
||||
}
|
||||
questDifficultyView.setRating(questContent.getBoss().str);
|
||||
} else{
|
||||
questTypeTextView.setText(R.string.collection_quest);
|
||||
List<String> collectionList = new ArrayList<>();
|
||||
for (QuestCollect collect : questContent.getCollect()) {
|
||||
collectionList.add(collect.count + " " + collect.text);
|
||||
}
|
||||
questCollectTextView.setText(TextUtils.join(", ", collectionList));
|
||||
|
||||
bossHealthView.setVisibility(View.GONE);
|
||||
|
||||
questDifficultyView.setRating(1);
|
||||
}
|
||||
|
||||
questDetailView.setVisibility(View.VISIBLE);
|
||||
|
||||
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||
|
||||
if (questContent.getDrop() != null && questContent.getDrop().getItems() != null) {
|
||||
for (QuestDropItem item : questContent.getDrop().getItems()) {
|
||||
if (!item.isOnlyOwner()) {
|
||||
addRewardsRow(inflater, item, rewardsList);
|
||||
}
|
||||
}
|
||||
|
||||
boolean hasOwnerRewards = false;
|
||||
for (QuestDropItem item : questContent.getDrop().getItems()) {
|
||||
if (item.isOnlyOwner()) {
|
||||
addRewardsRow(inflater, item, ownerRewardsList);
|
||||
hasOwnerRewards = true;
|
||||
}
|
||||
}
|
||||
if (!hasOwnerRewards) {
|
||||
ownerRewardsTitle.setVisibility(View.GONE);
|
||||
ownerRewardsList.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
if (questContent.getDrop().exp > 0) {
|
||||
ViewGroup view = (ViewGroup) inflater.inflate(R.layout.row_quest_reward, rewardsList, false);
|
||||
SimpleDraweeView imageView = view.findViewById(R.id.imageView);
|
||||
imageView.setImageBitmap(HabiticaIconsHelper.imageOfGoldReward());
|
||||
TextView titleTextView = view.findViewById(R.id.titleTextView);
|
||||
titleTextView.setText(getContext().getString(R.string.experience_reward, questContent.getDrop().exp));
|
||||
rewardsList.addView(view);
|
||||
}
|
||||
|
||||
if (questContent.getDrop().gp > 0) {
|
||||
ViewGroup view = (ViewGroup) inflater.inflate(R.layout.row_quest_reward, rewardsList, false);
|
||||
SimpleDraweeView imageView = view.findViewById(R.id.imageView);
|
||||
imageView.setImageBitmap(HabiticaIconsHelper.imageOfExperienceReward());
|
||||
TextView titleTextView = view.findViewById(R.id.titleTextView);
|
||||
titleTextView.setText(getContext().getString(R.string.gold_reward, questContent.getDrop().gp));
|
||||
rewardsList.addView(view);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void addRewardsRow(LayoutInflater inflater, QuestDropItem item, ViewGroup containerView) {
|
||||
ViewGroup view = (ViewGroup) inflater.inflate(R.layout.row_quest_reward, containerView, false);
|
||||
SimpleDraweeView imageView = (SimpleDraweeView) view.findViewById(R.id.imageView);
|
||||
TextView titleTextView = (TextView) view.findViewById(R.id.titleTextView);
|
||||
DataBindingUtils.INSTANCE.loadImage(imageView, item.getImageName());
|
||||
if (item.getCount() > 1) {
|
||||
titleTextView.setText(getContext().getString(R.string.quest_reward_count, item.getText(), item.getCount()));
|
||||
} else {
|
||||
titleTextView.setText(item.getText());
|
||||
}
|
||||
containerView.addView(view);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
package com.habitrpg.android.habitica.ui.views.shops
|
||||
|
||||
import android.content.Context
|
||||
import android.text.TextUtils
|
||||
import android.util.AttributeSet
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.RatingBar
|
||||
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.models.inventory.QuestContent
|
||||
import com.habitrpg.android.habitica.models.inventory.QuestDropItem
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
|
||||
class PurchaseDialogQuestContent : PurchaseDialogContent {
|
||||
|
||||
private val questDetailView: View by bindView(R.id.questDetailView)
|
||||
private val questTypeTextView: TextView by bindView(R.id.questTypeTextView)
|
||||
private val bossHealthView: View by bindView(R.id.boss_health_view)
|
||||
private val bossHealthTextView: TextView by bindView(R.id.boss_health_text)
|
||||
private val questCollectView: View by bindView(R.id.quest_collect_view)
|
||||
private val questCollectTextView: TextView by bindView(R.id.quest_collect_text)
|
||||
private val questDifficultyView: RatingBar by bindView(R.id.quest_difficulty_view)
|
||||
private val rageMeterView: View by bindView(R.id.rage_meter_view)
|
||||
private val rewardsList: ViewGroup by bindView(R.id.rewardsList)
|
||||
private val ownerRewardsTitle: View by bindView(R.id.ownerRewardsTitle)
|
||||
private val ownerRewardsList: ViewGroup by bindView(R.id.ownerRewardsList)
|
||||
|
||||
override val viewId: Int
|
||||
get() = R.layout.dialog_purchase_content_quest
|
||||
|
||||
constructor(context: Context) : super(context)
|
||||
|
||||
constructor(context: Context, attrs: AttributeSet?) : super(context, attrs)
|
||||
|
||||
fun setQuestContent(questContent: QuestContent) {
|
||||
if (questContent.isBossQuest) {
|
||||
questTypeTextView.setText(R.string.boss_quest)
|
||||
questCollectView.visibility = View.GONE
|
||||
bossHealthTextView.text = questContent.boss.hp.toString()
|
||||
if (questContent.boss.hasRage()) {
|
||||
rageMeterView.visibility = View.VISIBLE
|
||||
}
|
||||
questDifficultyView.rating = questContent.boss.str
|
||||
} else {
|
||||
questTypeTextView.setText(R.string.collection_quest)
|
||||
val collectionList = questContent.collect.map { it.count.toString() + " " + it.text }
|
||||
questCollectTextView.text = TextUtils.join(", ", collectionList)
|
||||
|
||||
bossHealthView.visibility = View.GONE
|
||||
|
||||
questDifficultyView.rating = 1f
|
||||
}
|
||||
|
||||
questDetailView.visibility = View.VISIBLE
|
||||
|
||||
val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
|
||||
|
||||
if (questContent.drop != null && questContent.drop.items != null) {
|
||||
for (item in questContent.drop.items) {
|
||||
if (!item.isOnlyOwner) {
|
||||
addRewardsRow(inflater, item, rewardsList)
|
||||
}
|
||||
}
|
||||
|
||||
var hasOwnerRewards = false
|
||||
for (item in questContent.drop.items) {
|
||||
if (item.isOnlyOwner) {
|
||||
addRewardsRow(inflater, item, ownerRewardsList)
|
||||
hasOwnerRewards = true
|
||||
}
|
||||
}
|
||||
if (!hasOwnerRewards) {
|
||||
ownerRewardsTitle.visibility = View.GONE
|
||||
ownerRewardsList.visibility = View.GONE
|
||||
}
|
||||
|
||||
if (questContent.drop.exp > 0) {
|
||||
val view = inflater.inflate(R.layout.row_quest_reward, rewardsList, false) as ViewGroup
|
||||
val imageView = view.findViewById<SimpleDraweeView>(R.id.imageView)
|
||||
imageView.setImageBitmap(HabiticaIconsHelper.imageOfGoldReward())
|
||||
val titleTextView = view.findViewById<TextView>(R.id.titleTextView)
|
||||
titleTextView.text = context.getString(R.string.experience_reward, questContent.drop.exp)
|
||||
rewardsList.addView(view)
|
||||
}
|
||||
|
||||
if (questContent.drop.gp > 0) {
|
||||
val view = inflater.inflate(R.layout.row_quest_reward, rewardsList, false) as ViewGroup
|
||||
val imageView = view.findViewById<SimpleDraweeView>(R.id.imageView)
|
||||
imageView.setImageBitmap(HabiticaIconsHelper.imageOfExperienceReward())
|
||||
val titleTextView = view.findViewById<TextView>(R.id.titleTextView)
|
||||
titleTextView.text = context.getString(R.string.gold_reward, questContent.drop.gp)
|
||||
rewardsList.addView(view)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun addRewardsRow(inflater: LayoutInflater, item: QuestDropItem, containerView: ViewGroup?) {
|
||||
val view = inflater.inflate(R.layout.row_quest_reward, containerView, false) as ViewGroup
|
||||
val imageView = view.findViewById<View>(R.id.imageView) as SimpleDraweeView
|
||||
val titleTextView = view.findViewById<View>(R.id.titleTextView) as TextView
|
||||
DataBindingUtils.loadImage(imageView, item.imageName)
|
||||
if (item.count > 1) {
|
||||
titleTextView.text = context.getString(R.string.quest_reward_count, item.text, item.count)
|
||||
} else {
|
||||
titleTextView.text = item.text
|
||||
}
|
||||
containerView?.addView(view)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue