mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-23 14:17:15 +00:00
Display inventory items
This commit is contained in:
parent
f1c38e7614
commit
ced7d44de7
51 changed files with 2132 additions and 72 deletions
1
Habitica/assets/migrations/Habitica/16.sql
Normal file
1
Habitica/assets/migrations/Habitica/16.sql
Normal file
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE QuestContent ADD COLUMN 'owned' INTEGER DEFAULT 0;
|
||||
|
|
@ -52,7 +52,6 @@ dependencies {
|
|||
compile('com.mikepenz:materialdrawer:5.0.9@aar') {
|
||||
transitive = true
|
||||
}
|
||||
compile 'com.mikepenz:google-material-typeface:2.2.0.1.original@aar'
|
||||
|
||||
compile 'com.android.support:appcompat-v7:23.2.1'
|
||||
compile 'com.android.support:design:23.2.1'
|
||||
|
|
|
|||
32
Habitica/res/layout/animal_overview_item.xml
Normal file
32
Habitica/res/layout/animal_overview_item.xml
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/card_view"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent">
|
||||
<LinearLayout
|
||||
android:id="@+id/linearLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:background="@drawable/selection_highlight"
|
||||
style="@style/CardContent">
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="81dp"
|
||||
android:layout_height="99dp"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:scaleType="fitEnd" />
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:id="@+id/titleTextView"
|
||||
style="@style/RowTitle"/>
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_horizontal"
|
||||
android:id="@+id/ownedTextView"
|
||||
style="@style/RowText"/>
|
||||
</LinearLayout>
|
||||
</android.support.v7.widget.CardView>
|
||||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
<data>
|
||||
<import type="com.magicmicky.habitrpgwrapper.lib.models.Group" />
|
||||
<import type="com.magicmicky.habitrpgwrapper.lib.models.QuestContent" />
|
||||
<import type="com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent" />
|
||||
<import type="com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser" />
|
||||
<import type="android.view.View" />
|
||||
<import type="android.text.Html"/>
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="horizontal" android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/Row"
|
||||
style="@style/RowWrapper"
|
||||
android:id="@+id/gear_container">
|
||||
|
||||
<ImageView
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="Row"
|
||||
style="@style/RowWrapper"
|
||||
android:clickable="true">
|
||||
<ImageView
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
|
|
|
|||
|
|
@ -1,21 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<layout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:bind="http://schemas.android.com/apk/res-auto"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
xmlns:tools="http://schemas.android.com/tools">
|
||||
<data>
|
||||
<variable name="title" type="String"/>
|
||||
<variable name="value" type="String"/>
|
||||
<variable name="imageNamed" type="String"/>
|
||||
</data>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="Row"
|
||||
style="@style/RowWrapper"
|
||||
android:clickable="true">
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
android:layout_width="@dimen/gear_image_size"
|
||||
android:layout_height="@dimen/gear_image_size"
|
||||
bind:imageName='@{imageNamed == null ? "head_0" : imageNamed}'
|
||||
android:contentDescription="@{imageNamed}"
|
||||
android:alpha="@{imageNamed == null ? 0.4f : 1.0f}"
|
||||
android:scaleType="fitEnd"
|
||||
android:layout_marginRight="@dimen/row_padding"/>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_gravity="center_vertical">
|
||||
<TextView
|
||||
android:id="@+id/titleTextView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@{title}"
|
||||
tools:text="Title"
|
||||
style="@style/RowTitle"/>
|
||||
</LinearLayout>
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="Value"
|
||||
android:text="@{value}"
|
||||
style="@style/RowText"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</layout>
|
||||
6
Habitica/res/layout/menu_bottom_sheet.xml
Normal file
6
Habitica/res/layout/menu_bottom_sheet.xml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical" android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
</LinearLayout>
|
||||
10
Habitica/res/layout/menu_bottom_sheet_item.xml
Normal file
10
Habitica/res/layout/menu_bottom_sheet_item.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical" android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/RowWrapper">
|
||||
<TextView
|
||||
android:id="@+id/textView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
|
|
@ -66,4 +66,5 @@
|
|||
<dimen name="row_title_bottommargin">2dp</dimen>
|
||||
<dimen name="drawer_section_item_text">12sp</dimen>
|
||||
<dimen name="material_drawer_section_vertical_padding">4dp</dimen>
|
||||
<dimen name="pet_width">120dp</dimen>
|
||||
</resources>
|
||||
|
|
@ -277,6 +277,8 @@ To start, which parts of your life do you want to improve?</string>
|
|||
<string name="hatching_potions">Hatching Potions</string>
|
||||
<string name="food">Food</string>
|
||||
<string name="quests">Quests</string>
|
||||
<string name="pets">Pets</string>
|
||||
<string name="mounts">Mounts</string>
|
||||
|
||||
<string name="armoireEquipment" formatted="false">You found a piece of rare Equipment in the Armoire: %s! Awesome!</string>
|
||||
<string name="armoireFood" formatted="false">You rummage in the Armoire and find %s %s. What\'s that doing in here?</string>
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@
|
|||
<item name="android:layout_margin">@dimen/card_margin</item>
|
||||
</style>
|
||||
|
||||
<style name="Row">
|
||||
<style name="RowWrapper">
|
||||
<item name="android:padding">@dimen/row_padding</item>
|
||||
<item name="android:background">@drawable/selection_highlight</item>
|
||||
</style>
|
||||
|
|
|
|||
|
|
@ -23,30 +23,44 @@ import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
|
|||
import com.magicmicky.habitrpgwrapper.lib.api.InAppPurchasesApiService;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.Server;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.TypeAdapter.TagsAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ContentResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Customization;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationRequest;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PurchaseValidationResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Purchases;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SkillList;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TutorialStep;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocial;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocialTokens;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ChecklistItem;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.ChecklistItemSerializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.ContentDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.CustomizationDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.DateDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.EggListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.FAQArticleListDeserilializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.FoodListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.GroupSerialization;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.HatchingPotionListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.ItemDataListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.MountListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.PetListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.PurchasedDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.QuestListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.SkillDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.TaskListDeserializer;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.TaskSerializer;
|
||||
|
|
@ -97,11 +111,18 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
|
||||
|
||||
Type taskClassListType = new TypeToken<List<Task>>() {}.getType();
|
||||
Type skillListType = new TypeToken<List<Skill>>() {}.getType();
|
||||
Type checklistType = new TypeToken<List<ChecklistItem>>() {}.getType();
|
||||
Type customizationListType = new TypeToken<List<Customization>>() {}.getType();
|
||||
Type tutorialStepListType = new TypeToken<List<TutorialStep>>() {}.getType();
|
||||
Type faqArticleListType = new TypeToken<List<FAQArticle>>() {}.getType();
|
||||
Type itemDataListType = new TypeToken<List<ItemData>>() {}.getType();
|
||||
Type eggListType = new TypeToken<List<Egg>>() {}.getType();
|
||||
Type foodListType = new TypeToken<List<Food>>() {}.getType();
|
||||
Type hatchingPotionListType = new TypeToken<List<HatchingPotion>>() {}.getType();
|
||||
Type questContentListType = new TypeToken<List<QuestContent>>() {}.getType();
|
||||
Type petListType = new TypeToken<List<Pet>>() {}.getType();
|
||||
Type mountListType = new TypeToken<List<Mount>>() {}.getType();
|
||||
|
||||
//Exclusion stratety needed for DBFlow https://github.com/Raizlabs/DBFlow/issues/121
|
||||
Gson gson = new GsonBuilder()
|
||||
|
|
@ -120,7 +141,7 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
.registerTypeAdapter(taskTagClassListType, new TagsAdapter())
|
||||
.registerTypeAdapter(Boolean.class, booleanAsIntAdapter)
|
||||
.registerTypeAdapter(boolean.class, booleanAsIntAdapter)
|
||||
.registerTypeAdapter(SkillList.class, new SkillDeserializer())
|
||||
.registerTypeAdapter(skillListType, new SkillDeserializer())
|
||||
.registerTypeAdapter(ChecklistItem.class, new ChecklistItemSerializer())
|
||||
.registerTypeAdapter(taskClassListType, new TaskListDeserializer())
|
||||
.registerTypeAdapter(Purchases.class, new PurchasedDeserializer())
|
||||
|
|
@ -130,7 +151,14 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
.registerTypeAdapter(Group.class, new GroupSerialization())
|
||||
.registerTypeAdapter(Date.class, new DateDeserializer())
|
||||
.registerTypeAdapter(itemDataListType, new ItemDataListDeserializer())
|
||||
.registerTypeAdapter(eggListType, new EggListDeserializer())
|
||||
.registerTypeAdapter(foodListType, new FoodListDeserializer())
|
||||
.registerTypeAdapter(hatchingPotionListType, new HatchingPotionListDeserializer())
|
||||
.registerTypeAdapter(questContentListType, new QuestListDeserializer())
|
||||
.registerTypeAdapter(petListType, new PetListDeserializer())
|
||||
.registerTypeAdapter(mountListType, new MountListDeserializer())
|
||||
.registerTypeAdapter(Task.class, new TaskSerializer())
|
||||
.registerTypeAdapter(ContentResult.class, new ContentDeserializer())
|
||||
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
|
||||
.create();
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ package com.habitrpg.android.habitica;
|
|||
import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ContentResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestBoss;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
|
@ -88,10 +88,10 @@ public class ContentCache {
|
|||
public void success(ContentResult contentResult, Response response) {
|
||||
switch (typeOfSearch) {
|
||||
case "quest": {
|
||||
Collection<QuestContent> questList = contentResult.quests.values();
|
||||
Collection<QuestContent> questList = contentResult.quests;
|
||||
|
||||
for (QuestContent quest : questList) {
|
||||
if (quest.key == searchKey) {
|
||||
if (quest.getKey() == searchKey) {
|
||||
gotEntry.GotObject((T) quest);
|
||||
}
|
||||
}
|
||||
|
|
@ -170,13 +170,13 @@ public class ContentCache {
|
|||
|
||||
|
||||
private void saveContentResultToDb(ContentResult contentResult) {
|
||||
Collection<QuestContent> questList = contentResult.quests.values();
|
||||
Collection<QuestContent> questList = contentResult.quests;
|
||||
|
||||
for (QuestContent quest : questList) {
|
||||
quest.save();
|
||||
|
||||
if (quest.boss != null) {
|
||||
quest.boss.key = quest.key;
|
||||
quest.boss.key = quest.getKey();
|
||||
quest.boss.async().save();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@ public class HabitDatabase {
|
|||
|
||||
public static final String NAME = "Habitica";
|
||||
|
||||
public static final int VERSION = 15;
|
||||
public static final int VERSION = 17;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,10 +11,10 @@ import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
|||
import com.habitrpg.android.habitica.ui.activities.PrefsActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.GemsPurchaseFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.ItemsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.NewsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.SkillsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.StableFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.StableFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.faq.FAQOverviewFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.customization.AvatarOverviewFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.equipment.EquipmentOverviewFragment;
|
||||
|
|
@ -22,15 +22,12 @@ import com.habitrpg.android.habitica.ui.fragments.social.GuildsOverviewFragment;
|
|||
import com.habitrpg.android.habitica.ui.fragments.social.TavernFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.party.PartyFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.tasks.TasksFragment;
|
||||
import com.mikepenz.google_material_typeface_library.GoogleMaterial;
|
||||
import com.mikepenz.materialdrawer.AccountHeader;
|
||||
import com.mikepenz.materialdrawer.AccountHeaderBuilder;
|
||||
import com.mikepenz.materialdrawer.Drawer;
|
||||
import com.mikepenz.materialdrawer.DrawerBuilder;
|
||||
import com.mikepenz.materialdrawer.model.DividerDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.ProfileDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.SectionDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IProfile;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,113 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.support.design.widget.BottomSheetDialog;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.ItemImageRowBinding;
|
||||
import com.habitrpg.android.habitica.databinding.ItemItemBinding;
|
||||
import com.habitrpg.android.habitica.events.commands.UseSkillCommand;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Quest;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Item;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.w3c.dom.Text;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class ItemRecyclerAdapter extends RecyclerView.Adapter<ItemRecyclerAdapter.ItemViewHolder> {
|
||||
|
||||
private List<Item> itemList;
|
||||
|
||||
public Double mana;
|
||||
|
||||
public Context context;
|
||||
|
||||
public void setItemList(List<Item> itemList) {
|
||||
this.itemList = itemList;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setMana(Double mana) {
|
||||
this.mana = mana;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
|
||||
View view = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.item_item, parent, false);
|
||||
|
||||
return new ItemViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(ItemViewHolder holder, int position) {
|
||||
holder.bind(this.itemList.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return itemList == null ? 0 : itemList.size();
|
||||
}
|
||||
|
||||
class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
||||
Item item;
|
||||
|
||||
Resources resources;
|
||||
ItemItemBinding binding;
|
||||
|
||||
public ItemViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
resources = itemView.getResources();
|
||||
|
||||
binding = DataBindingUtil.bind(itemView);
|
||||
|
||||
itemView.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void bind(Item item) {
|
||||
binding.setTitle(item.getText());
|
||||
if (item instanceof QuestContent) {
|
||||
binding.setImageNamed("inventory_quest_scroll_"+item.getKey());
|
||||
} else {
|
||||
String type = "";
|
||||
if (item instanceof Egg) {
|
||||
type = "Egg";
|
||||
} else if (item instanceof Food) {
|
||||
type = "Food";
|
||||
} else if (item instanceof HatchingPotion) {
|
||||
type = "HatchingPotion";
|
||||
}
|
||||
binding.setImageNamed("Pet_"+type+"_"+item.getKey());
|
||||
}
|
||||
binding.setValue(item.getOwned().toString());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class MountDetailRecyclerAdapter extends RecyclerView.Adapter<MountDetailRecyclerAdapter.MountViewHolder> {
|
||||
|
||||
private List<Mount> itemList;
|
||||
private HashMap<String, Boolean> ownedMapping;
|
||||
public String itemType;
|
||||
|
||||
public Context context;
|
||||
|
||||
public void setItemList(List<Mount> itemList) {
|
||||
this.itemList = itemList;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setOwnedMapping(HashMap<String, Boolean> map) {
|
||||
this.ownedMapping = map;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public MountViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
|
||||
View view = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.animal_overview_item, parent, false);
|
||||
|
||||
return new MountViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(MountViewHolder holder, int position) {
|
||||
holder.bind(this.itemList.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return itemList == null ? 0 : itemList.size();
|
||||
}
|
||||
|
||||
class MountViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
||||
Mount animal;
|
||||
|
||||
@Bind(R.id.card_view)
|
||||
CardView cardView;
|
||||
|
||||
@Bind(R.id.imageView)
|
||||
ImageView imageView;
|
||||
|
||||
@Bind(R.id.titleTextView)
|
||||
TextView titleView;
|
||||
|
||||
@Bind(R.id.ownedTextView)
|
||||
TextView ownedTextView;
|
||||
|
||||
Resources resources;
|
||||
|
||||
public MountViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
ButterKnife.bind(this, itemView);
|
||||
|
||||
resources = itemView.getResources();
|
||||
|
||||
itemView.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void bind(Mount item) {
|
||||
titleView.setText(item.getColor());
|
||||
ownedTextView.setVisibility(View.GONE);
|
||||
this.imageView.setAlpha(1.0f);
|
||||
if (ownedMapping != null) {
|
||||
if (ownedMapping.containsKey(item.getKey()) && ownedMapping.get(item.getKey())) {
|
||||
DataBindingUtils.loadImage(this.imageView, "Mount_Icon_" + itemType + "-" + item.getColor());
|
||||
} else {
|
||||
ownedTextView.setText(null);
|
||||
DataBindingUtils.loadImage(this.imageView, "PixelPaw");
|
||||
this.imageView.setAlpha(0.4f);
|
||||
}
|
||||
} else {
|
||||
DataBindingUtils.loadImage(this.imageView, "PixelPaw");
|
||||
this.imageView.setAlpha(0.4f);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Animal;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class PetDetailRecyclerAdapter extends RecyclerView.Adapter<PetDetailRecyclerAdapter.PetViewHolder> {
|
||||
|
||||
private List<Pet> itemList;
|
||||
private HashMap<String, Integer> ownedMapping;
|
||||
public String itemType;
|
||||
|
||||
public Context context;
|
||||
|
||||
public void setItemList(List<Pet> itemList) {
|
||||
this.itemList = itemList;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setOwnedMapping(HashMap<String, Integer> map) {
|
||||
this.ownedMapping = map;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public PetViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
|
||||
View view = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.animal_overview_item, parent, false);
|
||||
|
||||
return new PetViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(PetViewHolder holder, int position) {
|
||||
holder.bind(this.itemList.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return itemList == null ? 0 : itemList.size();
|
||||
}
|
||||
|
||||
class PetViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
||||
Pet animal;
|
||||
|
||||
@Bind(R.id.card_view)
|
||||
CardView cardView;
|
||||
|
||||
@Bind(R.id.imageView)
|
||||
ImageView imageView;
|
||||
|
||||
@Bind(R.id.titleTextView)
|
||||
TextView titleView;
|
||||
|
||||
@Bind(R.id.ownedTextView)
|
||||
TextView ownedTextView;
|
||||
|
||||
Resources resources;
|
||||
|
||||
public PetViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
ButterKnife.bind(this, itemView);
|
||||
|
||||
resources = itemView.getResources();
|
||||
|
||||
itemView.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void bind(Pet item) {
|
||||
titleView.setText(item.getColor());
|
||||
ownedTextView.setVisibility(View.VISIBLE);
|
||||
this.imageView.setAlpha(1.0f);
|
||||
if (ownedMapping != null) {
|
||||
if (ownedMapping.containsKey(item.getKey()) && ownedMapping.get(item.getKey()) > 0) {
|
||||
this.ownedTextView.setText(ownedMapping.get(item.getKey()).toString());
|
||||
DataBindingUtils.loadImage(this.imageView, "Pet-" + itemType + "-" + item.getColor());
|
||||
} else {
|
||||
ownedTextView.setVisibility(View.GONE);
|
||||
ownedTextView.setText(null);
|
||||
DataBindingUtils.loadImage(this.imageView, "PixelPaw");
|
||||
this.imageView.setAlpha(0.4f);
|
||||
}
|
||||
} else {
|
||||
ownedTextView.setVisibility(View.GONE);
|
||||
DataBindingUtils.loadImage(this.imageView, "PixelPaw");
|
||||
this.imageView.setAlpha(0.4f);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,133 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter.inventory;
|
||||
|
||||
import android.content.res.Resources;
|
||||
import android.support.v7.widget.CardView;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.MountDetailRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.PetDetailRecyclerFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Animal;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
public class StableRecyclerAdapter extends RecyclerView.Adapter<StableRecyclerAdapter.StableViewHolder> {
|
||||
|
||||
private List<Animal> itemList;
|
||||
private HashMap<String, Integer> ownedMapping;
|
||||
public String itemType;
|
||||
|
||||
public MainActivity activity;
|
||||
|
||||
public <T extends Animal> void setItemList(List<Animal> itemList) {
|
||||
this.itemList = itemList;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
public void setOwnedMapping(HashMap<String, Integer> map) {
|
||||
this.ownedMapping = map;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
public StableViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
|
||||
View view = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.animal_overview_item, parent, false);
|
||||
|
||||
return new StableViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(StableViewHolder holder, int position) {
|
||||
holder.bind(this.itemList.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return itemList == null ? 0 : itemList.size();
|
||||
}
|
||||
|
||||
class StableViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
|
||||
Animal animal;
|
||||
|
||||
@Bind(R.id.card_view)
|
||||
CardView cardView;
|
||||
|
||||
@Bind(R.id.imageView)
|
||||
ImageView imageView;
|
||||
|
||||
@Bind(R.id.titleTextView)
|
||||
TextView titleView;
|
||||
|
||||
@Bind(R.id.ownedTextView)
|
||||
TextView ownedTextView;
|
||||
|
||||
Resources resources;
|
||||
|
||||
public StableViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
ButterKnife.bind(this, itemView);
|
||||
|
||||
resources = itemView.getResources();
|
||||
|
||||
itemView.setOnClickListener(this);
|
||||
}
|
||||
|
||||
public void bind(Animal item) {
|
||||
this.animal = item;
|
||||
titleView.setText(item.getAnimal());
|
||||
ownedTextView.setVisibility(View.VISIBLE);
|
||||
this.imageView.setAlpha(1.0f);
|
||||
if (ownedMapping != null) {
|
||||
if (ownedMapping.containsKey(item.getAnimal()) && ownedMapping.get(item.getAnimal()) > 0) {
|
||||
this.ownedTextView.setText(ownedMapping.get(item.getAnimal()).toString());
|
||||
if (itemType.equals("pets")) {
|
||||
DataBindingUtils.loadImage(this.imageView, "Pet-" + item.getAnimal() + "-Base");
|
||||
} else {
|
||||
DataBindingUtils.loadImage(this.imageView, "Mount_Icon_" + item.getAnimal() + "-Base");
|
||||
}
|
||||
} else {
|
||||
ownedTextView.setVisibility(View.GONE);
|
||||
ownedTextView.setText(null);
|
||||
DataBindingUtils.loadImage(this.imageView, "PixelPaw");
|
||||
this.imageView.setAlpha(0.4f);
|
||||
}
|
||||
} else {
|
||||
ownedTextView.setVisibility(View.GONE);
|
||||
DataBindingUtils.loadImage(this.imageView, "PixelPaw");
|
||||
this.imageView.setAlpha(0.4f);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(View v) {
|
||||
if (animal != null) {
|
||||
if (ownedMapping != null) {
|
||||
if (ownedMapping.containsKey(animal.getAnimal()) && ownedMapping.get(animal.getAnimal()) > 0) {
|
||||
if (itemType.equals("pets")) {
|
||||
PetDetailRecyclerFragment fragment = new PetDetailRecyclerFragment();
|
||||
fragment.animalType = animal.getAnimal();
|
||||
activity.displayFragment(fragment);
|
||||
} else {
|
||||
MountDetailRecyclerFragment fragment = new MountDetailRecyclerFragment();
|
||||
fragment.animalType = animal.getAnimal();
|
||||
activity.displayFragment(fragment);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -8,8 +8,8 @@ import android.widget.ImageView;
|
|||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestProgress;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.squareup.picasso.Picasso;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
|
@ -74,7 +74,7 @@ public class QuestCollectRecyclerViewAdapter extends RecyclerView.Adapter<QuestC
|
|||
|
||||
public void bind(String key) {
|
||||
Picasso.with(view.getContext())
|
||||
.load("https://habitica-assets.s3.amazonaws.com/mobileApp/images/" + "quest_" + quest.key + "_" + key + ".png")
|
||||
.load("https://habitica-assets.s3.amazonaws.com/mobileApp/images/" + "quest_" + quest.getKey() + "_" + key + ".png")
|
||||
.into(image);
|
||||
name.setText(quest.getCollect().get(key).text);
|
||||
count.setText(progress.collect.get(key) + " / " + quest.getCollect().get(key).count);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,114 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.MountDetailRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.PetDetailRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarginDecoration;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Animal;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class MountDetailRecyclerFragment extends BaseMainFragment {
|
||||
public RecyclerView recyclerView;
|
||||
public MountDetailRecyclerAdapter adapter;
|
||||
public String animalType;
|
||||
public List<Mount> animals;
|
||||
private static final String ANIMAL_TYPE_KEY = "ANIMAL_TYPE_KEY";
|
||||
GridLayoutManager layoutManager = null;
|
||||
|
||||
private View view;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
this.usesTabLayout = false;
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
if (view == null) {
|
||||
view = inflater.inflate(R.layout.fragment_recyclerview, container, false);
|
||||
|
||||
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
|
||||
|
||||
android.support.v4.app.FragmentActivity context = getActivity();
|
||||
|
||||
layoutManager = new GridLayoutManager(getActivity(), 2);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
recyclerView.addItemDecoration(new MarginDecoration(getActivity()));
|
||||
|
||||
adapter = (MountDetailRecyclerAdapter)recyclerView.getAdapter();
|
||||
if (adapter == null) {
|
||||
adapter = new MountDetailRecyclerAdapter();
|
||||
adapter.context = this.getActivity();
|
||||
adapter.itemType = this.animalType;
|
||||
recyclerView.setAdapter(adapter);
|
||||
this.loadItems();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (savedInstanceState != null){
|
||||
this.animalType = savedInstanceState.getString(ANIMAL_TYPE_KEY, "");
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
final View finalView = view;
|
||||
finalView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setGridSpanCount(finalView.getWidth());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putString(ANIMAL_TYPE_KEY, this.animalType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void setGridSpanCount(int width) {
|
||||
float itemWidth;
|
||||
itemWidth = getContext().getResources().getDimension(R.dimen.pet_width);
|
||||
|
||||
int spanCount = (int) (width / itemWidth);
|
||||
if (spanCount == 0) {
|
||||
spanCount = 1;
|
||||
}
|
||||
layoutManager.setSpanCount(spanCount);
|
||||
layoutManager.requestLayout();
|
||||
}
|
||||
|
||||
private void loadItems() {
|
||||
Runnable itemsRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
List<Mount> items = new Select().from(Mount.class).where(Condition.column("animal").eq(animalType)).orderBy(true, "color").queryList();
|
||||
adapter.setItemList(items);
|
||||
animals = items;
|
||||
adapter.setOwnedMapping(user.getItems().getMounts());
|
||||
}
|
||||
};
|
||||
itemsRunnable.run();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,117 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.PetDetailRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.StableRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarginDecoration;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Animal;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.From;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PetDetailRecyclerFragment extends BaseMainFragment {
|
||||
public RecyclerView recyclerView;
|
||||
public PetDetailRecyclerAdapter adapter;
|
||||
public String animalType;
|
||||
public List<Pet> animals;
|
||||
private static final String ANIMAL_TYPE_KEY = "ANIMAL_TYPE_KEY";
|
||||
GridLayoutManager layoutManager = null;
|
||||
|
||||
private View view;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
this.usesTabLayout = false;
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
if (view == null) {
|
||||
view = inflater.inflate(R.layout.fragment_recyclerview, container, false);
|
||||
|
||||
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
|
||||
|
||||
android.support.v4.app.FragmentActivity context = getActivity();
|
||||
|
||||
layoutManager = new GridLayoutManager(getActivity(), 2);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
recyclerView.addItemDecoration(new MarginDecoration(getActivity()));
|
||||
|
||||
adapter = (PetDetailRecyclerAdapter)recyclerView.getAdapter();
|
||||
if (adapter == null) {
|
||||
adapter = new PetDetailRecyclerAdapter();
|
||||
adapter.context = this.getActivity();
|
||||
adapter.itemType = this.animalType;
|
||||
recyclerView.setAdapter(adapter);
|
||||
this.loadItems();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (savedInstanceState != null){
|
||||
this.animalType = savedInstanceState.getString(ANIMAL_TYPE_KEY, "");
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
final View finalView = view;
|
||||
finalView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setGridSpanCount(finalView.getWidth());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putString(ANIMAL_TYPE_KEY, this.animalType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void setGridSpanCount(int width) {
|
||||
float itemWidth;
|
||||
itemWidth = getContext().getResources().getDimension(R.dimen.pet_width);
|
||||
|
||||
int spanCount = (int) (width / itemWidth);
|
||||
if (spanCount == 0) {
|
||||
spanCount = 1;
|
||||
}
|
||||
layoutManager.setSpanCount(spanCount);
|
||||
layoutManager.requestLayout();
|
||||
}
|
||||
|
||||
private void loadItems() {
|
||||
Runnable itemsRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
List<Pet> items = new Select().from(Pet.class).where(Condition.column("animal").eq(animalType)).orderBy(true, "color").queryList();
|
||||
adapter.setItemList(items);
|
||||
animals = items;
|
||||
adapter.setOwnedMapping(user.getItems().getPets());
|
||||
}
|
||||
};
|
||||
itemsRunnable.run();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.inventory.items.ItemRecyclerFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
|
||||
|
||||
public class StableFragment extends BaseMainFragment {
|
||||
|
||||
public ViewPager viewPager;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
this.usesTabLayout = true;
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
View v = inflater.inflate(R.layout.fragment_party, container, false);
|
||||
|
||||
viewPager = (ViewPager) v.findViewById(R.id.view_pager);
|
||||
|
||||
viewPager.setCurrentItem(0);
|
||||
|
||||
setViewPagerAdapter();
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
public void setViewPagerAdapter() {
|
||||
android.support.v4.app.FragmentManager fragmentManager = getChildFragmentManager();
|
||||
|
||||
UserParty party = user.getParty();
|
||||
|
||||
if (party == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
viewPager.setAdapter(new FragmentPagerAdapter(fragmentManager) {
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
|
||||
StableRecyclerFragment fragment = new StableRecyclerFragment();
|
||||
|
||||
switch (position) {
|
||||
case 0: {
|
||||
fragment.itemType = "pets";
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
fragment.itemType = "mounts";
|
||||
break;
|
||||
}
|
||||
}
|
||||
fragment.user = StableFragment.this.user;
|
||||
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return 2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
return activity.getString(R.string.pets);
|
||||
case 1:
|
||||
return activity.getString(R.string.mounts);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
});
|
||||
|
||||
tabLayout.setupWithViewPager(viewPager);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,156 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.DividerItemDecoration;
|
||||
import com.habitrpg.android.habitica.ui.activities.MainActivity;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.ItemRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.StableRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
import com.habitrpg.android.habitica.ui.helpers.MarginDecoration;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Animal;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Item;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.From;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class StableRecyclerFragment extends BaseFragment {
|
||||
public RecyclerView recyclerView;
|
||||
public StableRecyclerAdapter adapter;
|
||||
public String itemType;
|
||||
public HabitRPGUser user;
|
||||
public List<Animal> animals;
|
||||
private static final String ITEM_TYPE_KEY = "CLASS_TYPE_KEY";
|
||||
GridLayoutManager layoutManager = null;
|
||||
|
||||
private View view;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
if (view == null) {
|
||||
view = inflater.inflate(R.layout.fragment_recyclerview, container, false);
|
||||
|
||||
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
|
||||
|
||||
android.support.v4.app.FragmentActivity context = getActivity();
|
||||
|
||||
layoutManager = new GridLayoutManager(getActivity(), 2);
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
recyclerView.addItemDecoration(new MarginDecoration(getActivity()));
|
||||
|
||||
adapter = (StableRecyclerAdapter)recyclerView.getAdapter();
|
||||
if (adapter == null) {
|
||||
adapter = new StableRecyclerAdapter();
|
||||
adapter.activity = (MainActivity)this.getActivity();
|
||||
adapter.itemType = this.itemType;
|
||||
recyclerView.setAdapter(adapter);
|
||||
this.loadItems();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if (savedInstanceState != null){
|
||||
this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "");
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
final View finalView = view;
|
||||
finalView.post(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setGridSpanCount(finalView.getWidth());
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putString(ITEM_TYPE_KEY, this.itemType);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void setGridSpanCount(int width) {
|
||||
float itemWidth;
|
||||
itemWidth = getContext().getResources().getDimension(R.dimen.pet_width);
|
||||
|
||||
int spanCount = (int) (width / itemWidth);
|
||||
if (spanCount == 0) {
|
||||
spanCount = 1;
|
||||
}
|
||||
layoutManager.setSpanCount(spanCount);
|
||||
}
|
||||
|
||||
private void loadItems() {
|
||||
Runnable itemsRunnable = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
From from = null;
|
||||
switch (itemType) {
|
||||
case "pets":
|
||||
from = new Select().from(Pet.class);
|
||||
break;
|
||||
case "mounts":
|
||||
from = new Select().from(Mount.class);
|
||||
break;
|
||||
}
|
||||
|
||||
if (from != null) {
|
||||
List<Animal> items = from.where().orderBy(true, "animalGroup", "animal").groupBy("animal").queryList();
|
||||
adapter.setItemList(items);
|
||||
animals = items;
|
||||
HashMap<String, Integer> ownedMap = new HashMap<>();
|
||||
for (Animal animal : animals) {
|
||||
ownedMap.put(animal.getAnimal(), 0);
|
||||
}
|
||||
switch (itemType) {
|
||||
case "pets":
|
||||
for (Map.Entry<String, Integer> pet : StableRecyclerFragment.this.user.getItems().getPets().entrySet()) {
|
||||
if (pet.getValue() > 0) {
|
||||
ownedMap.put(pet.getKey().split("-")[0], ownedMap.get(pet.getKey().split("-")[0])+1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "mounts":
|
||||
for (Map.Entry<String, Boolean> mount : StableRecyclerFragment.this.user.getItems().getMounts().entrySet()) {
|
||||
if (mount.getValue()) {
|
||||
ownedMap.put(mount.getKey().split("-")[0], ownedMap.get(mount.getKey().split("-")[0])+1);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
adapter.setOwnedMapping(ownedMap);
|
||||
}
|
||||
}
|
||||
};
|
||||
itemsRunnable.run();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.items;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.DividerItemDecoration;
|
||||
import com.habitrpg.android.habitica.ui.adapter.inventory.ItemRecyclerAdapter;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Item;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.From;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ItemRecyclerFragment extends BaseFragment {
|
||||
public RecyclerView recyclerView;
|
||||
public ItemRecyclerAdapter adapter;
|
||||
public String itemType;
|
||||
private static final String ITEM_TYPE_KEY = "CLASS_TYPE_KEY";
|
||||
LinearLayoutManager layoutManager = null;
|
||||
|
||||
private View view;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
if (view == null) {
|
||||
view = inflater.inflate(R.layout.fragment_recyclerview, container, false);
|
||||
|
||||
recyclerView = (RecyclerView) view.findViewById(R.id.recyclerView);
|
||||
|
||||
android.support.v4.app.FragmentActivity context = getActivity();
|
||||
|
||||
layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
|
||||
|
||||
if (layoutManager == null) {
|
||||
layoutManager = new LinearLayoutManager(context);
|
||||
|
||||
recyclerView.setLayoutManager(layoutManager);
|
||||
}
|
||||
|
||||
adapter = (ItemRecyclerAdapter)recyclerView.getAdapter();
|
||||
if (adapter == null) {
|
||||
adapter = new ItemRecyclerAdapter();
|
||||
adapter.context = this.getActivity();
|
||||
recyclerView.setAdapter(adapter);
|
||||
this.loadItems();
|
||||
|
||||
}
|
||||
recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST));
|
||||
}
|
||||
|
||||
if (savedInstanceState != null){
|
||||
this.itemType = savedInstanceState.getString(ITEM_TYPE_KEY, "");
|
||||
}
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSaveInstanceState(Bundle outState) {
|
||||
super.onSaveInstanceState(outState);
|
||||
outState.putString(ITEM_TYPE_KEY, this.itemType);
|
||||
}
|
||||
|
||||
private void loadItems() {
|
||||
From from = null;
|
||||
switch (this.itemType) {
|
||||
case "eggs":
|
||||
from = new Select().from(Egg.class);
|
||||
break;
|
||||
case "hatchingPotions":
|
||||
from = new Select().from(HatchingPotion.class);
|
||||
break;
|
||||
case "food":
|
||||
from = new Select().from(Food.class);
|
||||
break;
|
||||
case "quests":
|
||||
from = new Select().from(QuestContent.class);
|
||||
}
|
||||
|
||||
if (from != null) {
|
||||
List<Item> items = from.where(Condition.column("owned").greaterThan(0)).queryList();
|
||||
adapter.setItemList(items);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,97 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments.inventory.items;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
import android.support.v4.view.ViewPager;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.habitrpg.android.habitica.ContentCache;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
|
||||
|
||||
public class ItemsFragment extends BaseMainFragment {
|
||||
|
||||
public ViewPager viewPager;
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
this.usesTabLayout = true;
|
||||
super.onCreateView(inflater, container, savedInstanceState);
|
||||
View v = inflater.inflate(R.layout.fragment_party, container, false);
|
||||
|
||||
viewPager = (ViewPager) v.findViewById(R.id.view_pager);
|
||||
|
||||
viewPager.setCurrentItem(0);
|
||||
|
||||
setViewPagerAdapter();
|
||||
|
||||
return v;
|
||||
}
|
||||
|
||||
public void setViewPagerAdapter() {
|
||||
android.support.v4.app.FragmentManager fragmentManager = getChildFragmentManager();
|
||||
|
||||
UserParty party = user.getParty();
|
||||
|
||||
if (party == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
viewPager.setAdapter(new FragmentPagerAdapter(fragmentManager) {
|
||||
|
||||
@Override
|
||||
public Fragment getItem(int position) {
|
||||
|
||||
ItemRecyclerFragment fragment = new ItemRecyclerFragment();
|
||||
|
||||
switch (position) {
|
||||
case 0: {
|
||||
fragment.itemType = "eggs";
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
fragment.itemType = "hatchingPotions";
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
fragment.itemType = "food";
|
||||
break;
|
||||
}
|
||||
case 3: {
|
||||
fragment.itemType = "quests";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return fragment;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return 4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CharSequence getPageTitle(int position) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
return activity.getString(R.string.eggs);
|
||||
case 1:
|
||||
return activity.getString(R.string.hatching_potions);
|
||||
case 2:
|
||||
return activity.getString(R.string.food);
|
||||
case 3:
|
||||
return activity.getString(R.string.quests);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
});
|
||||
|
||||
tabLayout.setupWithViewPager(viewPager);
|
||||
}
|
||||
}
|
||||
|
|
@ -22,7 +22,7 @@ import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
|||
import com.habitrpg.android.habitica.ui.adapter.social.QuestCollectRecyclerViewAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
|
||||
import butterknife.Bind;
|
||||
import butterknife.ButterKnife;
|
||||
|
|
|
|||
|
|
@ -16,8 +16,8 @@ import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment;
|
|||
import com.habitrpg.android.habitica.ui.fragments.social.ChatListFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.social.GroupInformationFragment;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Group;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserParty;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models;
|
||||
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
|
@ -16,9 +22,21 @@ public class ContentResult {
|
|||
|
||||
public ContentGear gear;
|
||||
|
||||
public HashMap<String, QuestContent> quests;
|
||||
public List<QuestContent> quests;
|
||||
public List<Egg> eggs;
|
||||
public List<Food> food;
|
||||
public List<HatchingPotion> hatchingPotions;
|
||||
|
||||
public SkillList spells;
|
||||
public List<Pet> pets;
|
||||
public List<Pet> specialPets;
|
||||
public List<Pet> premiumPets;
|
||||
public List<Pet> questPets;
|
||||
|
||||
public List<Mount> mounts;
|
||||
public List<Mount> specialMounts;
|
||||
public List<Mount> questMounts;
|
||||
|
||||
public List<Skill> spells;
|
||||
|
||||
public List<Customization> appearances;
|
||||
public List<Customization> backgrounds;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,11 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models;
|
||||
|
||||
import com.habitrpg.android.habitica.HabitDatabase;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.ForeignKey;
|
||||
import com.raizlabs.android.dbflow.annotation.ForeignKeyReference;
|
||||
|
|
@ -10,6 +15,8 @@ import com.raizlabs.android.dbflow.annotation.Table;
|
|||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by MagicMicky on 16/03/14.
|
||||
|
|
@ -32,7 +39,15 @@ public class Items extends BaseModel {
|
|||
@Column
|
||||
private Date lastDrop_date;
|
||||
|
||||
//private Quest quest;
|
||||
public List<Egg> eggs;
|
||||
public List<Food> food;
|
||||
public List<HatchingPotion> hatchingPotions;
|
||||
public List<QuestContent> quests;
|
||||
|
||||
HashMap<String, Integer> pets;
|
||||
HashMap<String, Boolean> mounts;
|
||||
|
||||
//private QuestContent quest;
|
||||
|
||||
@Column
|
||||
@ForeignKey(references = {@ForeignKeyReference(columnName = "gear_id",
|
||||
|
|
@ -87,6 +102,62 @@ public class Items extends BaseModel {
|
|||
this.gear = gear;
|
||||
}
|
||||
|
||||
public String getUser_id() {
|
||||
return user_id;
|
||||
}
|
||||
|
||||
public void setUser_id(String user_id) {
|
||||
this.user_id = user_id;
|
||||
}
|
||||
|
||||
public List<Egg> getEggs() {
|
||||
return eggs;
|
||||
}
|
||||
|
||||
public void setEggs(List<Egg> eggs) {
|
||||
this.eggs = eggs;
|
||||
}
|
||||
|
||||
public List<Food> getFood() {
|
||||
return food;
|
||||
}
|
||||
|
||||
public void setFood(List<Food> food) {
|
||||
this.food = food;
|
||||
}
|
||||
|
||||
public List<HatchingPotion> getHatchingPotions() {
|
||||
return hatchingPotions;
|
||||
}
|
||||
|
||||
public void setHatchingPotions(List<HatchingPotion> hatchingPotions) {
|
||||
this.hatchingPotions = hatchingPotions;
|
||||
}
|
||||
|
||||
public List<QuestContent> getQuests() {
|
||||
return quests;
|
||||
}
|
||||
|
||||
public void setQuests(List<QuestContent> quests) {
|
||||
this.quests = quests;
|
||||
}
|
||||
|
||||
public HashMap<String, Integer> getPets() {
|
||||
return pets;
|
||||
}
|
||||
|
||||
public void setPets(HashMap<String, Integer> pets) {
|
||||
this.pets = pets;
|
||||
}
|
||||
|
||||
public HashMap<String, Boolean> getMounts() {
|
||||
return mounts;
|
||||
}
|
||||
|
||||
public void setMounts(HashMap<String, Boolean> mounts) {
|
||||
this.mounts = mounts;
|
||||
}
|
||||
|
||||
public Items() {}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,8 +0,0 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models;
|
||||
|
||||
/**
|
||||
* Created by viirus on 25/11/15.
|
||||
*/
|
||||
public class SkillList {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models.inventory;
|
||||
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
|
||||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
|
||||
public class Animal extends BaseModel {
|
||||
|
||||
@Column
|
||||
@PrimaryKey
|
||||
String key;
|
||||
|
||||
@Column
|
||||
String animal, color, animalGroup;
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public String getAnimal() {
|
||||
return animal;
|
||||
}
|
||||
|
||||
public void setAnimal(String animal) {
|
||||
this.animal = animal;
|
||||
}
|
||||
|
||||
public String getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
public void setColor(String color) {
|
||||
this.color = color;
|
||||
}
|
||||
|
||||
public String getAnimalGroup() {
|
||||
return animalGroup;
|
||||
}
|
||||
|
||||
public void setAnimalGroup(String group) {
|
||||
this.animalGroup = group;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.HabitDatabase;
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.Table;
|
||||
|
||||
@Table(databaseName = HabitDatabase.NAME)
|
||||
public class Egg extends Item {
|
||||
|
||||
@Column
|
||||
String adjective, mountText;
|
||||
|
||||
Integer stableOwned, stableTotal;
|
||||
|
||||
public String getAdjective() {
|
||||
return adjective;
|
||||
}
|
||||
|
||||
public void setAdjective(String adjective) {
|
||||
this.adjective = adjective;
|
||||
}
|
||||
|
||||
public String getMountText() {
|
||||
return mountText;
|
||||
}
|
||||
|
||||
public void setMountText(String mountText) {
|
||||
this.mountText = mountText;
|
||||
}
|
||||
|
||||
public Integer getStableOwned() {
|
||||
if (stableOwned == null) {
|
||||
stableOwned = 0;
|
||||
}
|
||||
return stableOwned;
|
||||
}
|
||||
|
||||
public void setStableOwned(Integer stableOwned) {
|
||||
this.stableOwned = stableOwned;
|
||||
}
|
||||
|
||||
public Integer getStableTotal() {
|
||||
return stableTotal;
|
||||
}
|
||||
|
||||
public void setStableTotal(Integer stableTotal) {
|
||||
this.stableTotal = stableTotal;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.HabitDatabase;
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.Table;
|
||||
|
||||
@Table(databaseName = HabitDatabase.NAME)
|
||||
public class Food extends Item {
|
||||
|
||||
@Column
|
||||
String target, article;
|
||||
|
||||
@Column
|
||||
Boolean canDrop;
|
||||
|
||||
public String getTarget() {
|
||||
return target;
|
||||
}
|
||||
|
||||
public void setTarget(String target) {
|
||||
this.target = target;
|
||||
}
|
||||
|
||||
public String getArticle() {
|
||||
return article;
|
||||
}
|
||||
|
||||
public void setArticle(String article) {
|
||||
this.article = article;
|
||||
}
|
||||
|
||||
public Boolean getCanDrop() {
|
||||
return canDrop;
|
||||
}
|
||||
|
||||
public void setCanDrop(Boolean canDrop) {
|
||||
this.canDrop = canDrop;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.HabitDatabase;
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.Table;
|
||||
|
||||
@Table(databaseName = HabitDatabase.NAME)
|
||||
public class HatchingPotion extends Item {
|
||||
|
||||
@Column
|
||||
Boolean limited, premium;
|
||||
|
||||
public Boolean getLimited() {
|
||||
return limited;
|
||||
}
|
||||
|
||||
public void setLimited(Boolean limited) {
|
||||
this.limited = limited;
|
||||
}
|
||||
|
||||
public Boolean getPremium() {
|
||||
return premium;
|
||||
}
|
||||
|
||||
public void setPremium(Boolean premium) {
|
||||
this.premium = premium;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,60 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.HabitDatabase;
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
|
||||
import com.raizlabs.android.dbflow.annotation.Table;
|
||||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
|
||||
public class Item extends BaseModel {
|
||||
|
||||
@Column
|
||||
@PrimaryKey
|
||||
String key;
|
||||
|
||||
@Column
|
||||
String text, notes;
|
||||
|
||||
@Column
|
||||
Integer value, owned;
|
||||
|
||||
public String getKey() {
|
||||
return key;
|
||||
}
|
||||
|
||||
public void setKey(String key) {
|
||||
this.key = key;
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
public String getNotes() {
|
||||
return notes;
|
||||
}
|
||||
|
||||
public void setNotes(String notes) {
|
||||
this.notes = notes;
|
||||
}
|
||||
|
||||
public Integer getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public void setValue(Integer value) {
|
||||
this.value = value;
|
||||
}
|
||||
|
||||
public Integer getOwned() {
|
||||
return owned;
|
||||
}
|
||||
|
||||
public void setOwned(Integer owned) {
|
||||
this.owned = owned;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.HabitDatabase;
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
|
||||
import com.raizlabs.android.dbflow.annotation.Table;
|
||||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
|
||||
@Table(databaseName = HabitDatabase.NAME)
|
||||
public class Mount extends Animal {
|
||||
|
||||
@Column
|
||||
Boolean owned;
|
||||
|
||||
public Boolean getOwned() {
|
||||
return owned;
|
||||
}
|
||||
|
||||
public void setOwned(Boolean owned) {
|
||||
this.owned = owned;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.HabitDatabase;
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
|
||||
import com.raizlabs.android.dbflow.annotation.Table;
|
||||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
|
||||
@Table(databaseName = HabitDatabase.NAME)
|
||||
public class Pet extends Animal {
|
||||
|
||||
|
||||
@Column
|
||||
Integer trained;
|
||||
|
||||
public Integer getTrained() {
|
||||
return trained;
|
||||
}
|
||||
|
||||
public void setTrained(Integer trained) {
|
||||
this.trained = trained;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,36 +1,21 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models;
|
||||
package com.magicmicky.habitrpgwrapper.lib.models.inventory;
|
||||
|
||||
import com.habitrpg.android.habitica.HabitDatabase;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestBoss;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestCollect;
|
||||
import com.raizlabs.android.dbflow.annotation.Column;
|
||||
import com.raizlabs.android.dbflow.annotation.OneToMany;
|
||||
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
|
||||
import com.raizlabs.android.dbflow.annotation.Table;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created by Negue on 29.09.2015.
|
||||
*/
|
||||
@Table(databaseName = HabitDatabase.NAME)
|
||||
public class QuestContent extends BaseModel {
|
||||
@PrimaryKey
|
||||
@Column
|
||||
public String key;
|
||||
|
||||
@Column
|
||||
public String text;
|
||||
|
||||
@Column
|
||||
public String notes;
|
||||
|
||||
@Column
|
||||
public double value;
|
||||
public class QuestContent extends Item {
|
||||
|
||||
@Column
|
||||
public String previous;
|
||||
|
|
@ -48,6 +33,46 @@ public class QuestContent extends BaseModel {
|
|||
|
||||
HashMap<String, QuestCollect> collect;
|
||||
|
||||
public String getPrevious() {
|
||||
return previous;
|
||||
}
|
||||
|
||||
public void setPrevious(String previous) {
|
||||
this.previous = previous;
|
||||
}
|
||||
|
||||
public int getLvl() {
|
||||
return lvl;
|
||||
}
|
||||
|
||||
public void setLvl(int lvl) {
|
||||
this.lvl = lvl;
|
||||
}
|
||||
|
||||
public boolean isCanBuy() {
|
||||
return canBuy;
|
||||
}
|
||||
|
||||
public void setCanBuy(boolean canBuy) {
|
||||
this.canBuy = canBuy;
|
||||
}
|
||||
|
||||
public String getCategory() {
|
||||
return category;
|
||||
}
|
||||
|
||||
public void setCategory(String category) {
|
||||
this.category = category;
|
||||
}
|
||||
|
||||
public QuestBoss getBoss() {
|
||||
return boss;
|
||||
}
|
||||
|
||||
public void setBoss(QuestBoss boss) {
|
||||
this.boss = boss;
|
||||
}
|
||||
|
||||
@OneToMany(methods = {OneToMany.Method.SAVE, OneToMany.Method.DELETE}, variableName = "collect")
|
||||
public Collection<QuestCollect> getCollectCollection() {
|
||||
return getCollect().values();
|
||||
|
|
@ -81,6 +106,4 @@ public class QuestContent extends BaseModel {
|
|||
super.save();
|
||||
}
|
||||
|
||||
// todo drops
|
||||
}
|
||||
|
||||
|
|
@ -0,0 +1,110 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.utils;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ContentGear;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ContentResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Customization;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.FAQArticle;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.raizlabs.android.dbflow.runtime.TransactionManager;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction;
|
||||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ContentDeserializer implements JsonDeserializer<ContentResult> {
|
||||
|
||||
|
||||
@Override
|
||||
public ContentResult deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
List<BaseModel> items = new ArrayList<>();
|
||||
|
||||
ContentResult result = new ContentResult();
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
|
||||
result.potion = context.deserialize(object.get("potion"), ItemData.class);
|
||||
result.armoire = context.deserialize(object.get("armoire"), ItemData.class);
|
||||
result.gear = context.deserialize(object.get("gear"), ContentGear.class);
|
||||
|
||||
result.quests = context.deserialize(object.get("quests"), new TypeToken<List<QuestContent>>() {}.getType());
|
||||
result.eggs = context.deserialize(object.get("eggs"), new TypeToken<List<Egg>>() {}.getType());
|
||||
result.food = context.deserialize(object.get("food"), new TypeToken<List<Food>>() {}.getType());
|
||||
result.hatchingPotions = context.deserialize(object.get("hatchingPotions"), new TypeToken<List<HatchingPotion>>() {}.getType());
|
||||
|
||||
items.addAll(result.quests);
|
||||
items.addAll(result.eggs);
|
||||
items.addAll(result.food);
|
||||
items.addAll(result.hatchingPotions);
|
||||
|
||||
result.pets = context.deserialize(object.get("pets"), new TypeToken<List<Pet>>() {}.getType());
|
||||
result.specialPets = context.deserialize(object.get("specialPets"), new TypeToken<List<Pet>>() {}.getType());
|
||||
result.premiumPets = context.deserialize(object.get("premiumPets"), new TypeToken<List<Pet>>() {}.getType());
|
||||
result.questPets = context.deserialize(object.get("questPets"), new TypeToken<List<Pet>>() {}.getType());
|
||||
|
||||
for (Pet pet : result.pets) {
|
||||
pet.setAnimalGroup("pets");
|
||||
items.add(pet);
|
||||
}
|
||||
for (Pet pet : result.specialPets) {
|
||||
pet.setAnimalGroup("specialPets");
|
||||
items.add(pet);
|
||||
}
|
||||
for (Pet pet : result.premiumPets) {
|
||||
pet.setAnimalGroup("premiumPets");
|
||||
items.add(pet);
|
||||
}
|
||||
for (Pet pet : result.questPets) {
|
||||
pet.setAnimalGroup("questPets");
|
||||
items.add(pet);
|
||||
}
|
||||
|
||||
result.mounts = context.deserialize(object.get("mounts"), new TypeToken<List<Mount>>() {}.getType());
|
||||
result.specialMounts = context.deserialize(object.get("specialMounts"), new TypeToken<List<Mount>>() {}.getType());
|
||||
result.questMounts = context.deserialize(object.get("questMounts"), new TypeToken<List<Mount>>() {}.getType());
|
||||
|
||||
for (Mount mount : result.mounts) {
|
||||
mount.setAnimalGroup("mounts");
|
||||
items.add(mount);
|
||||
}
|
||||
for (Mount mount : result.specialMounts) {
|
||||
mount.setAnimalGroup("specialMounts");
|
||||
items.add(mount);
|
||||
}
|
||||
for (Mount mount : result.questMounts) {
|
||||
mount.setAnimalGroup("questMounts");
|
||||
items.add(mount);
|
||||
}
|
||||
|
||||
result.spells = context.deserialize(object.get("spells"), new TypeToken<List<Skill>>() {}.getType());
|
||||
|
||||
result.appearances = context.deserialize(object.get("appearances"), new TypeToken<List<Customization>>() {}.getType());
|
||||
result.backgrounds = context.deserialize(object.get("backgrounds"), new TypeToken<List<Customization>>() {}.getType());
|
||||
|
||||
result.faq = context.deserialize(object.get("faq"), new TypeToken<List<FAQArticle>>() {}.getType());
|
||||
|
||||
items.addAll(result.spells);
|
||||
|
||||
items.addAll(result.appearances);
|
||||
items.addAll(result.backgrounds);
|
||||
|
||||
items.addAll(result.faq);
|
||||
|
||||
TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(items)));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
@ -87,7 +87,6 @@ public class CustomizationDeserializer implements JsonDeserializer<List<Customiz
|
|||
}
|
||||
}
|
||||
}
|
||||
TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(customizations)));
|
||||
|
||||
return customizations;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,70 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.utils;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Egg;
|
||||
import com.raizlabs.android.dbflow.runtime.TransactionManager;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class EggListDeserializer implements JsonDeserializer<List<Egg>> {
|
||||
@Override
|
||||
public List<Egg> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
List<Egg> vals = new ArrayList<>();
|
||||
if (json.isJsonObject()) {
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
|
||||
List<Egg> existingItems = new Select().from(Egg.class).queryList();
|
||||
|
||||
for (Egg item : existingItems) {
|
||||
if(object.has(item.getKey())) {
|
||||
JsonElement itemObject = object.get(item.getKey());
|
||||
|
||||
if (itemObject.isJsonObject()) {
|
||||
Egg parsedItem = context.deserialize(itemObject.getAsJsonObject(), Egg.class);
|
||||
item.setText(parsedItem.getText());
|
||||
item.setNotes(parsedItem.getNotes());
|
||||
item.setValue(parsedItem.getValue());
|
||||
item.setAdjective(parsedItem.getAdjective());
|
||||
item.setMountText(parsedItem.getMountText());
|
||||
} else {
|
||||
item.setOwned(itemObject.getAsInt());
|
||||
}
|
||||
vals.add(item);
|
||||
object.remove(item.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
for (Map.Entry<String,JsonElement> entry : json.getAsJsonObject().entrySet()) {
|
||||
Egg item;
|
||||
if (entry.getValue().isJsonObject()) {
|
||||
item = context.deserialize(entry.getValue(), Egg.class);
|
||||
} else {
|
||||
item = new Egg();
|
||||
item.setKey(entry.getKey());
|
||||
if (entry.getValue().isJsonNull()) {
|
||||
item.setOwned(0);
|
||||
} else {
|
||||
item.setOwned(entry.getValue().getAsInt());
|
||||
}
|
||||
}
|
||||
vals.add(item);
|
||||
}
|
||||
} else {
|
||||
for (JsonElement item : json.getAsJsonArray()) {
|
||||
vals.add((Egg) context.deserialize(item.getAsJsonObject(), Egg.class));
|
||||
}
|
||||
}
|
||||
|
||||
return vals;
|
||||
}
|
||||
}
|
||||
|
|
@ -38,8 +38,6 @@ public class FAQArticleListDeserilializer implements JsonDeserializer<List<FAQAr
|
|||
position++;
|
||||
}
|
||||
|
||||
TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(vals)));
|
||||
|
||||
return vals;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,71 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.utils;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Food;
|
||||
import com.raizlabs.android.dbflow.runtime.TransactionManager;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class FoodListDeserializer implements JsonDeserializer<List<Food>> {
|
||||
@Override
|
||||
public List<Food> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
List<Food> vals = new ArrayList<>();
|
||||
if (json.isJsonObject()) {
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
|
||||
List<Food> existingItems = new Select().from(Food.class).queryList();
|
||||
|
||||
for (Food item : existingItems) {
|
||||
if(object.has(item.getKey())) {
|
||||
JsonElement itemObject = object.get(item.getKey());
|
||||
|
||||
if (itemObject.isJsonObject()) {
|
||||
Food parsedItem = context.deserialize(itemObject.getAsJsonObject(), Food.class);
|
||||
item.setText(parsedItem.getText());
|
||||
item.setNotes(parsedItem.getNotes());
|
||||
item.setValue(parsedItem.getValue());
|
||||
item.setArticle(parsedItem.getArticle());
|
||||
item.setCanDrop(parsedItem.getCanDrop());
|
||||
item.setTarget(parsedItem.getTarget());
|
||||
} else {
|
||||
item.setOwned(itemObject.getAsInt());
|
||||
}
|
||||
vals.add(item);
|
||||
object.remove(item.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
for (Map.Entry<String,JsonElement> entry : json.getAsJsonObject().entrySet()) {
|
||||
Food item;
|
||||
if (entry.getValue().isJsonObject()) {
|
||||
item = context.deserialize(entry.getValue(), Food.class);
|
||||
} else {
|
||||
item = new Food();
|
||||
item.setKey(entry.getKey());
|
||||
if (entry.getValue().isJsonNull()) {
|
||||
item.setOwned(0);
|
||||
} else {
|
||||
item.setOwned(entry.getValue().getAsInt());
|
||||
}
|
||||
}
|
||||
vals.add(item);
|
||||
}
|
||||
} else {
|
||||
for (JsonElement item : json.getAsJsonArray()) {
|
||||
vals.add((Food) context.deserialize(item.getAsJsonObject(), Food.class));
|
||||
}
|
||||
}
|
||||
|
||||
return vals;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.utils;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
import com.raizlabs.android.dbflow.runtime.TransactionManager;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class HatchingPotionListDeserializer implements JsonDeserializer<List<HatchingPotion>> {
|
||||
@Override
|
||||
public List<HatchingPotion> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
List<HatchingPotion> vals = new ArrayList<>();
|
||||
if (json.isJsonObject()) {
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
|
||||
List<HatchingPotion> existingItems = new Select().from(HatchingPotion.class).queryList();
|
||||
|
||||
for (HatchingPotion item : existingItems) {
|
||||
if(object.has(item.getKey())) {
|
||||
JsonElement itemObject = object.get(item.getKey());
|
||||
|
||||
if (itemObject.isJsonObject()) {
|
||||
HatchingPotion parsedItem = context.deserialize(itemObject.getAsJsonObject(), HatchingPotion.class);
|
||||
item.setText(parsedItem.getText());
|
||||
item.setNotes(parsedItem.getNotes());
|
||||
item.setValue(parsedItem.getValue());
|
||||
item.setLimited(parsedItem.getLimited());
|
||||
item.setPremium(parsedItem.getPremium());
|
||||
} else {
|
||||
item.setOwned(itemObject.getAsInt());
|
||||
}
|
||||
vals.add(item);
|
||||
object.remove(item.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
for (Map.Entry<String,JsonElement> entry : json.getAsJsonObject().entrySet()) {
|
||||
HatchingPotion item;
|
||||
if (entry.getValue().isJsonObject()) {
|
||||
item = context.deserialize(entry.getValue(), HatchingPotion.class);
|
||||
} else {
|
||||
item = new HatchingPotion();
|
||||
item.setKey(entry.getKey());
|
||||
if (entry.getValue().isJsonNull()) {
|
||||
item.setOwned(0);
|
||||
} else {
|
||||
item.setOwned(entry.getValue().getAsInt());
|
||||
}
|
||||
}
|
||||
vals.add(item);
|
||||
}
|
||||
} else {
|
||||
for (JsonElement item : json.getAsJsonArray()) {
|
||||
vals.add((HatchingPotion) context.deserialize(item.getAsJsonObject(), HatchingPotion.class));
|
||||
}
|
||||
}
|
||||
|
||||
return vals;
|
||||
}
|
||||
}
|
||||
|
|
@ -64,7 +64,6 @@ public class ItemDataListDeserializer implements JsonDeserializer<List<ItemData>
|
|||
}
|
||||
vals.add(item);
|
||||
}
|
||||
TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(vals)));
|
||||
} else {
|
||||
for (JsonElement item : json.getAsJsonArray()) {
|
||||
vals.add((ItemData) context.deserialize(item.getAsJsonObject(), ItemData.class));
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.utils;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Mount;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.raizlabs.android.dbflow.runtime.TransactionManager;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class MountListDeserializer implements JsonDeserializer<List<Mount>> {
|
||||
@Override
|
||||
public List<Mount> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
List<Mount> vals = new ArrayList<>();
|
||||
for (Map.Entry<String,JsonElement> entry : json.getAsJsonObject().entrySet()) {
|
||||
Mount pet = new Mount();
|
||||
pet.setKey(entry.getKey());
|
||||
pet.setAnimal(entry.getKey().split("-")[0]);
|
||||
pet.setColor(entry.getKey().split("-")[1]);
|
||||
vals.add(pet);
|
||||
}
|
||||
|
||||
return vals;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.utils;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.HatchingPotion;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.Pet;
|
||||
import com.raizlabs.android.dbflow.runtime.TransactionManager;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class PetListDeserializer implements JsonDeserializer<List<Pet>> {
|
||||
@Override
|
||||
public List<Pet> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
List<Pet> vals = new ArrayList<>();
|
||||
for (Map.Entry<String,JsonElement> entry : json.getAsJsonObject().entrySet()) {
|
||||
Pet pet = new Pet();
|
||||
pet.setKey(entry.getKey());
|
||||
pet.setAnimal(entry.getKey().split("-")[0]);
|
||||
pet.setColor(entry.getKey().split("-")[1]);
|
||||
vals.add(pet);
|
||||
}
|
||||
|
||||
return vals;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,75 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.utils;
|
||||
|
||||
import com.google.gson.JsonDeserializationContext;
|
||||
import com.google.gson.JsonDeserializer;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.inventory.QuestContent;
|
||||
import com.raizlabs.android.dbflow.runtime.TransactionManager;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class QuestListDeserializer implements JsonDeserializer<List<QuestContent>> {
|
||||
@Override
|
||||
public List<QuestContent> deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
|
||||
List<QuestContent> vals = new ArrayList<>();
|
||||
if (json.isJsonObject()) {
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
|
||||
List<QuestContent> existingItems = new Select().from(QuestContent.class).queryList();
|
||||
|
||||
for (QuestContent item : existingItems) {
|
||||
if(object.has(item.getKey())) {
|
||||
JsonElement itemObject = object.get(item.getKey());
|
||||
|
||||
if (itemObject.isJsonObject()) {
|
||||
QuestContent parsedItem = context.deserialize(itemObject.getAsJsonObject(), QuestContent.class);
|
||||
item.setText(parsedItem.getText());
|
||||
item.setNotes(parsedItem.getNotes());
|
||||
item.setValue(parsedItem.getValue());
|
||||
item.setPrevious(parsedItem.getPrevious());
|
||||
item.setCanBuy(parsedItem.isCanBuy());
|
||||
item.setBoss(parsedItem.getBoss());
|
||||
item.setCategory(parsedItem.getCategory());
|
||||
item.setCollect(parsedItem.getCollect());
|
||||
item.setLvl(parsedItem.getLvl());
|
||||
} else {
|
||||
item.setOwned(itemObject.getAsInt());
|
||||
}
|
||||
vals.add(item);
|
||||
object.remove(item.getKey());
|
||||
}
|
||||
}
|
||||
|
||||
for (Map.Entry<String,JsonElement> entry : json.getAsJsonObject().entrySet()) {
|
||||
QuestContent item;
|
||||
if (entry.getValue().isJsonObject()) {
|
||||
item = context.deserialize(entry.getValue(), QuestContent.class);
|
||||
} else {
|
||||
item = new QuestContent();
|
||||
item.setKey(entry.getKey());
|
||||
if (entry.getValue().isJsonNull()) {
|
||||
item.setOwned(0);
|
||||
} else {
|
||||
item.setOwned(entry.getValue().getAsInt());
|
||||
}
|
||||
}
|
||||
vals.add(item);
|
||||
}
|
||||
TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(vals)));
|
||||
} else {
|
||||
for (JsonElement item : json.getAsJsonArray()) {
|
||||
vals.add((QuestContent) context.deserialize(item.getAsJsonObject(), QuestContent.class));
|
||||
}
|
||||
}
|
||||
|
||||
return vals;
|
||||
}
|
||||
}
|
||||
|
|
@ -6,7 +6,6 @@ import com.google.gson.JsonElement;
|
|||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParseException;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SkillList;
|
||||
import com.raizlabs.android.dbflow.runtime.TransactionManager;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.ProcessModelInfo;
|
||||
import com.raizlabs.android.dbflow.runtime.transaction.process.SaveModelTransaction;
|
||||
|
|
@ -20,10 +19,10 @@ import java.util.Map;
|
|||
* Created by viirus on 25/11/15.
|
||||
*/
|
||||
public class SkillDeserializer
|
||||
implements JsonDeserializer<SkillList> {
|
||||
implements JsonDeserializer<List<Skill>> {
|
||||
|
||||
@Override
|
||||
public SkillList deserialize(JsonElement json, Type type,
|
||||
public List<Skill> deserialize(JsonElement json, Type type,
|
||||
JsonDeserializationContext context) throws JsonParseException {
|
||||
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
|
|
@ -49,10 +48,6 @@ public class SkillDeserializer
|
|||
}
|
||||
}
|
||||
|
||||
TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(skills)));
|
||||
|
||||
SkillList skillList = new SkillList();
|
||||
|
||||
return skillList;
|
||||
return skills;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue