diff --git a/Habitica/AndroidManifest.xml b/Habitica/AndroidManifest.xml
index 5f205137a..88337c77c 100644
--- a/Habitica/AndroidManifest.xml
+++ b/Habitica/AndroidManifest.xml
@@ -46,6 +46,13 @@
android:screenOrientation="portrait"
tools:ignore="UnusedAttribute">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index 99adbac39..32177106d 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -667,4 +667,10 @@
I want to Subscribe
The Grand Galas happen close to the solstices and equinoxes, so check back then to find a fun assortment of special seasonal items!
Come back soon!
+ Level
+ 21-Day Streaks
+ Stats
+ If you\'ve encountered a bug or made a mistake that unfairly changed your character (damage you shouldn\'t have taken, Gold you didn\'t really earn, etc.), you can manually correct your numbers here. Yes, this makes it possible to cheat: use this feature wisely, or you\'ll sabotage your own habit-building!
+ Fix Character Values
+ Saving
diff --git a/Habitica/res/values/styles.xml b/Habitica/res/values/styles.xml
index 93a391838..19ddbca72 100644
--- a/Habitica/res/values/styles.xml
+++ b/Habitica/res/values/styles.xml
@@ -405,4 +405,8 @@
- 12dip
- 12dip
+
+
\ No newline at end of file
diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml
index 83071bbf0..c417dfd00 100644
--- a/Habitica/res/xml/preferences_fragment.xml
+++ b/Habitica/res/xml/preferences_fragment.xml
@@ -1,6 +1,7 @@
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ android:title="@string/PS_contact_title">
+
()
+ userInfo["stats.hp"] = healthEditText.getDoubleValue()
+ userInfo["stats.exp"] = experienceEditText.getDoubleValue()
+ userInfo["stats.gp"] = goldEditText.getDoubleValue()
+ userInfo["stats.mp"] = manaEditText.getDoubleValue()
+ userInfo["stats.lvl"] = levelEditText.getDoubleValue().toInt()
+ userInfo["achievements.streak"] = streakEditText.getDoubleValue().toInt()
+ repository.updateUser(user, userInfo).subscribe(Action1 {}, RxErrorHandler.handleEmptyError(), Action0 {
+ progressDialog.dismiss()
+ finish()
+ })
+ return true
+ }
+
+ return super.onOptionsItemSelected(item)
+ }
+
+ private var user: User? = null
+ set(value) {
+ if (value != null) {
+ updateFields(value)
+ }
+ }
+
+ private fun updateFields(user: User) {
+ healthEditText.setText(user.stats?.hp.toString())
+ experienceEditText.setText(user.stats?.exp.toString())
+ goldEditText.setText(user.stats?.gp.toString())
+ manaEditText.setText(user.stats?.mp.toString())
+ levelEditText.setText(user.stats?.lvl.toString())
+ streakEditText.setText(user.streakCount.toString())
+ }
+
+ fun EditText.getDoubleValue(): Double {
+ val stringValue = this.text.toString()
+ return stringValue.toDouble()
+ }
+
+}
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java
index 8e61cfc8c..6b311c32b 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/GroupFormActivity.java
@@ -137,7 +137,7 @@ public class GroupFormActivity extends BaseActivity {
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_task_form, menu);
+ getMenuInflater().inflate(R.menu.menu_save, menu);
return true;
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java
index c805d5723..6091ec9b8 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivity.java
@@ -57,7 +57,6 @@ import com.habitrpg.android.habitica.modules.AppModule;
import com.habitrpg.android.habitica.ui.WrapContentRecyclerViewLayoutManager;
import com.habitrpg.android.habitica.ui.adapter.tasks.CheckListAdapter;
import com.habitrpg.android.habitica.ui.adapter.tasks.RemindersAdapter;
-import com.habitrpg.android.habitica.ui.fragments.social.party.PartyDetailFragment;
import com.habitrpg.android.habitica.ui.helpers.MarkdownParser;
import com.habitrpg.android.habitica.ui.helpers.SimpleItemTouchHelperCallback;
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
@@ -958,7 +957,7 @@ public class TaskFormActivity extends BaseActivity implements AdapterView.OnItem
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.menu_task_form, menu);
+ getMenuInflater().inflate(R.menu.menu_save, menu);
return true;
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java
index 4dbcd5dcd..229ada7a2 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.java
@@ -24,6 +24,7 @@ import com.habitrpg.android.habitica.helpers.notifications.PushNotificationManag
import com.habitrpg.android.habitica.models.user.User;
import com.habitrpg.android.habitica.prefs.TimePreference;
import com.habitrpg.android.habitica.ui.activities.ClassSelectionActivity;
+import com.habitrpg.android.habitica.ui.activities.FixCharacterValuesActivity;
import com.habitrpg.android.habitica.ui.activities.MainActivity;
import java.util.HashMap;
@@ -34,6 +35,8 @@ import javax.inject.Inject;
import rx.Subscription;
+import static com.habitrpg.android.habitica.ui.activities.MainActivity.SELECT_CLASS_RESULT;
+
public class PreferencesFragment extends BasePreferencesFragment implements
SharedPreferences.OnSharedPreferenceChangeListener {
@@ -150,6 +153,9 @@ public class PreferencesFragment extends BasePreferencesFragment implements
}
RxErrorHandler.reportError(throwable);
});
+ } else if (preference.getKey().equals("fixCharacterValues")) {
+ Intent intent = new Intent(getActivity(), FixCharacterValuesActivity.class);
+ getActivity().startActivity(intent);
}
return super.onPreferenceTreeClick(preference);
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java
index d336b5553..3d8d74b17 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/UserDeserializer.java
@@ -129,6 +129,12 @@ public class UserDeserializer implements JsonDeserializer {
user.setNeedsCron(obj.get("needsCron").getAsBoolean());
}
+ if (obj.has("achievements")) {
+ if (obj.getAsJsonObject("achievements").has("streak")) {
+ user.setStreakCount(obj.getAsJsonObject("achievements").get("streak").getAsInt());
+ }
+ }
+
return user;
}
}
\ No newline at end of file