diff --git a/Habitica/res/drawable/layout_rounded_bg_animalitem_complete.xml b/Habitica/res/drawable/layout_rounded_bg_animalitem_complete.xml
new file mode 100644
index 000000000..a8cb4e3d1
--- /dev/null
+++ b/Habitica/res/drawable/layout_rounded_bg_animalitem_complete.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/layout/animal_overview_item.xml b/Habitica/res/layout/animal_overview_item.xml
index 6253dc36e..7aa7a1f06 100644
--- a/Habitica/res/layout/animal_overview_item.xml
+++ b/Habitica/res/layout/animal_overview_item.xml
@@ -10,9 +10,9 @@
android:layout_marginTop="6dp"
android:layout_marginBottom="6dp"
android:layout_width="80dp"
- android:layout_height="112dp"
+ android:layout_height="108dp"
android:orientation="vertical"
- android:background="@drawable/layout_rounded_bg_gray_700"
+ android:background="@drawable/layout_rounded_bg_shopitem"
android:layout_centerInParent="true">
style="@style/CardContent">
diff --git a/Habitica/res/values/colors.xml b/Habitica/res/values/colors.xml
index 295b8cd59..153ffc3a5 100644
--- a/Habitica/res/values/colors.xml
+++ b/Habitica/res/values/colors.xml
@@ -148,6 +148,7 @@
#000
#efeff4
#fafaff
+ #6ECDB2
#794b00
diff --git a/Habitica/res/values/dimens.xml b/Habitica/res/values/dimens.xml
index 8c62b58d2..32120ca63 100644
--- a/Habitica/res/values/dimens.xml
+++ b/Habitica/res/values/dimens.xml
@@ -53,7 +53,7 @@
84dp
28dp
68dp
- 68dp
+ 65dp
124dp
10dp
16dp
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index d04de354c..8fb2b3694 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1015,4 +1015,5 @@
You are unable to buy that amount.
Still have a question?
Delete Checklist entry
+ %1$s/%2$s
diff --git a/Habitica/res/xml/network_security_config.xml b/Habitica/res/xml/network_security_config.xml
index f808081d4..4c9e97462 100644
--- a/Habitica/res/xml/network_security_config.xml
+++ b/Habitica/res/xml/network_security_config.xml
@@ -6,6 +6,6 @@
- 192.168.178.52
+ 10.0.0.107
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Animal.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Animal.java
index a2f2bbd41..96c1b7f90 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Animal.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Animal.java
@@ -29,4 +29,8 @@ public interface Animal {
Integer getNumberOwned();
void setNumberOwned(Integer numberOwned);
+
+ Integer getTotalNumber();
+
+ void setTotalNumber(Integer totalNumber);
}
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Mount.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Mount.java
index 19326be4f..1fd23de3c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Mount.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Mount.java
@@ -12,7 +12,10 @@ public class Mount extends RealmObject implements Animal {
boolean premium;
@Ignore
- Integer numberOwned;
+ private Integer numberOwned;
+
+ @Ignore
+ private Integer totalNumber;
public String getKey() {
return key;
@@ -82,4 +85,15 @@ public class Mount extends RealmObject implements Animal {
public void setNumberOwned(Integer numberOwned) {
this.numberOwned = numberOwned;
}
+
+ public Integer getTotalNumber() {
+ if (totalNumber == null) {
+ return 0;
+ }
+ return totalNumber;
+ }
+
+ public void setTotalNumber(Integer totalNumber) {
+ this.totalNumber = totalNumber;
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Pet.java b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Pet.java
index cf8c531e6..642c2c1fc 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Pet.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/inventory/Pet.java
@@ -14,6 +14,9 @@ public class Pet extends RealmObject implements Animal{
@Ignore
private Integer numberOwned;
+ @Ignore
+ private Integer totalNumber;
+
public String getKey() {
return key;
}
@@ -83,4 +86,16 @@ public class Pet extends RealmObject implements Animal{
public void setNumberOwned(Integer numberOwned) {
this.numberOwned = numberOwned;
}
+
+ public Integer getTotalNumber() {
+ if (totalNumber == null) {
+ return 0;
+ }
+
+ return totalNumber;
+ }
+
+ public void setTotalNumber(Integer totalNumber) {
+ this.totalNumber = totalNumber;
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt
index 280a3a0fe..a9eea4a2b 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt
@@ -1,14 +1,12 @@
package com.habitrpg.android.habitica.ui.adapter.inventory
import android.content.Context
+import android.graphics.Color
import android.graphics.drawable.BitmapDrawable
import android.view.View
import android.view.ViewGroup
-import android.widget.FrameLayout
-import android.widget.LinearLayout
-import android.widget.RelativeLayout
import android.widget.TextView
-import androidx.coordinatorlayout.widget.CoordinatorLayout
+import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.GridLayoutManager
import com.facebook.drawee.view.SimpleDraweeView
import com.habitrpg.android.habitica.R
@@ -118,16 +116,22 @@ class StableRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<
}
ownedTextView.visibility = View.VISIBLE
this.imageView.alpha = 1.0f
+ this.titleView.alpha = 1.0f
+ this.ownedTextView.alpha = 1.0f
+
val imageName = if (itemType == "pets") {
- "Pet-" + item.key
+ "Pet_Egg_" + item.animal
} else {
"Mount_Icon_" + item.key
}
- this.ownedTextView.text = animal?.numberOwned?.toString()
- ownedTextView.visibility = if (animal?.numberOwned == 0 || animal?.type == "special") View.GONE else View.VISIBLE
+
+ var owned = animal?.numberOwned?.toString()
+ var totalNum = animal?.totalNumber?.toString()
+ this.ownedTextView.text = context?.getString(R.string.pet_ownership_fraction, owned, totalNum)
+ ownedTextView.visibility = if (animal?.type == "special") View.GONE else View.VISIBLE
imageView.background = null
DataBindingUtils.loadImage(imageName) {
- val drawable = BitmapDrawable(context?.resources, if (item.numberOwned > 0) it else it.extractAlpha())
+ val drawable = BitmapDrawable(context?.resources, it)
Observable.just(drawable)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Consumer {
@@ -135,7 +139,15 @@ class StableRecyclerAdapter : androidx.recyclerview.widget.RecyclerView.Adapter<
}, RxErrorHandler.handleEmptyError())
}
if (item.numberOwned <= 0) {
- this.imageView.alpha = 0.1f
+ this.imageView.alpha = 0.2f
+ this.titleView.alpha = 0.2f
+ this.ownedTextView.alpha = 0.2f
+ }
+
+ if (item.numberOwned == item.totalNumber) {
+ this.ownedTextView.setTextColor(Color.parseColor("#FFFFFF"))
+ var new_background = context?.getDrawable(R.drawable.layout_rounded_bg_animalitem_complete)?.mutate()
+ this.ownedTextView.background = new_background
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt
index 2919a411a..ebbd660d2 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/stable/StableRecyclerFragment.kt
@@ -144,7 +144,6 @@ class StableRecyclerFragment : BaseFragment() {
val items = ArrayList()
var lastAnimal: Animal = unsortedAnimals[0] ?: return items
var lastSectionTitle = ""
-
for (animal in unsortedAnimals) {
val identifier = if (animal.animal.isNotEmpty() && animal.type != "special") animal.animal else animal.key
val lastIdentifier = if (lastAnimal.animal.isNotEmpty()) lastAnimal.animal else lastAnimal.key
@@ -154,6 +153,9 @@ class StableRecyclerFragment : BaseFragment() {
}
lastAnimal = animal
}
+
+ lastAnimal.totalNumber += 1
+
if (animal.type != lastSectionTitle) {
if (items.size > 0 && items[items.size - 1].javaClass == String::class.java) {
items.removeAt(items.size - 1)
@@ -175,6 +177,7 @@ class StableRecyclerFragment : BaseFragment() {
}
}
}
+
}
if (!((lastAnimal.type == "premium" || lastAnimal.type == "special") && lastAnimal.numberOwned == 0)) {
items.add(lastAnimal)
@@ -187,6 +190,5 @@ class StableRecyclerFragment : BaseFragment() {
companion object {
private const val ITEM_TYPE_KEY = "CLASS_TYPE_KEY"
private const val HEADER_VIEW_TYPE = 0
- private const val SECTION_VIEW_TYPE = 1
}
}