mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-05-20 04:39:04 +00:00
Display skills
This commit is contained in:
parent
116020171e
commit
2d2e8ad9ab
15 changed files with 378 additions and 13 deletions
10
Habitica/res/layout/fragment_skills.xml
Normal file
10
Habitica/res/layout/fragment_skills.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v7.widget.RecyclerView
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/recyclerView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:scrollbarSize="3dp"
|
||||
android:scrollbarThumbVertical="@color/md_grey_500"
|
||||
|
||||
android:scrollbars="vertical" />
|
||||
38
Habitica/res/layout/skill_list_item.xml
Normal file
38
Habitica/res/layout/skill_list_item.xml
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="5dp">
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:padding="8dp">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceLarge"
|
||||
android:id="@+id/skill_text" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/skill_notes"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
</LinearLayout>
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:id="@+id/price_button"
|
||||
android:background="@color/brand_100"
|
||||
android:textColor="@android:color/white" />
|
||||
</LinearLayout>
|
||||
|
||||
</android.support.v7.widget.CardView>
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="sidebar.tasks">Tasks</string>
|
||||
<string name="sidebar.skills">Skills</string>
|
||||
<string name="sidebar.section.social">Social</string>
|
||||
<string name="sidebar.tavern">Tavern</string>
|
||||
<string name="sidebar.party">Party</string>
|
||||
|
|
|
|||
|
|
@ -177,4 +177,6 @@
|
|||
|
||||
<string name="filter">Filter</string>
|
||||
<string name="profile_image">Profile Image</string>
|
||||
|
||||
<string name="mana_price_button" formatted="false">%d MP</string>
|
||||
</resources>
|
||||
|
|
@ -4,7 +4,6 @@ import android.app.Activity;
|
|||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.support.v7.app.AlertDialog;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.google.gson.ExclusionStrategy;
|
||||
|
|
@ -22,7 +21,7 @@ import com.habitrpg.android.habitica.callbacks.TaskScoringCallback;
|
|||
import com.magicmicky.habitrpgwrapper.lib.api.ApiService;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.Server;
|
||||
import com.magicmicky.habitrpgwrapper.lib.api.TypeAdapter.TagsAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.SkillList;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.TaskDirection;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuth;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthResponse;
|
||||
|
|
@ -30,6 +29,7 @@ import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocial;
|
|||
import com.magicmicky.habitrpgwrapper.lib.models.UserAuthSocialTokens;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.Task;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.TaskTag;
|
||||
import com.magicmicky.habitrpgwrapper.lib.utils.SkillDeserializer;
|
||||
import com.raizlabs.android.dbflow.structure.ModelAdapter;
|
||||
|
||||
import java.io.IOException;
|
||||
|
|
@ -87,6 +87,7 @@ public class APIHelper implements ErrorHandler, Profiler {
|
|||
.registerTypeAdapter(taskTagClassListType, new TagsAdapter())
|
||||
.registerTypeAdapter(Boolean.class, booleanAsIntAdapter)
|
||||
.registerTypeAdapter(boolean.class, booleanAsIntAdapter)
|
||||
.registerTypeAdapter(SkillList.class, new SkillDeserializer())
|
||||
.setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
|
||||
.create();
|
||||
|
||||
|
|
|
|||
|
|
@ -17,9 +17,7 @@ import retrofit.Callback;
|
|||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
/**
|
||||
* Created by Negue on 29.09.2015.
|
||||
*/
|
||||
|
||||
public class ContentCache {
|
||||
public interface GotContentEntryCallback<T extends Object> {
|
||||
void GotObject(T obj);
|
||||
|
|
|
|||
|
|
@ -10,5 +10,5 @@ public class HabitDatabase {
|
|||
|
||||
public static final String NAME = "Habitica";
|
||||
|
||||
public static final int VERSION = 2;
|
||||
public static final int VERSION = 3;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,7 +20,10 @@ import com.habitrpg.android.habitica.ui.fragments.BaseFragment;
|
|||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPictureRunnable;
|
||||
import com.instabug.wrapper.support.activity.InstabugAppCompatActivity;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ContentResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.QuestContent;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.tasks.ItemData;
|
||||
import com.mikepenz.materialdrawer.AccountHeader;
|
||||
import com.mikepenz.materialdrawer.Drawer;
|
||||
import com.mikepenz.materialdrawer.model.interfaces.IProfile;
|
||||
|
|
@ -32,9 +35,14 @@ import com.raizlabs.android.dbflow.sql.language.Select;
|
|||
import com.raizlabs.android.dbflow.structure.BaseModel;
|
||||
import com.raizlabs.android.dbflow.structure.Model;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.InjectView;
|
||||
import io.fabric.sdk.android.Fabric;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
/**
|
||||
* Created by admin on 18/11/15.
|
||||
|
|
@ -111,6 +119,19 @@ public class MainActivity extends InstabugAppCompatActivity implements HabitRPGU
|
|||
.build();
|
||||
|
||||
drawer.setSelectionAtPosition(1);
|
||||
|
||||
mAPIHelper.apiService.getContent(new Callback<ContentResult>() {
|
||||
@Override
|
||||
public void success(ContentResult contentResult, Response response) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void failure(RetrofitError error) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.habitrpg.android.habitica.MainActivity;
|
|||
import com.habitrpg.android.habitica.ui.fragments.GemsPurchaseFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.PartyFragment;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.ui.fragments.SkillsFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.TasksFragment;
|
||||
import com.habitrpg.android.habitica.ui.fragments.TavernFragment;
|
||||
import com.habitrpg.android.habitica.prefs.PrefsActivity;
|
||||
|
|
@ -33,11 +34,12 @@ public class MainDrawerBuilder {
|
|||
|
||||
// Change the identificationIDs to the position IDs so that its easier to set the selected entry
|
||||
static final int SIDEBAR_TASKS = 0;
|
||||
static final int SIDEBAR_TAVERN = 2;
|
||||
static final int SIDEBAR_PARTY = 3;
|
||||
static final int SIDEBAR_PURCHASE = 4;
|
||||
static final int SIDEBAR_SETTINGS = 6;
|
||||
static final int SIDEBAR_ABOUT = 7;
|
||||
static final int SIDEBAR_SKILLS = 1;
|
||||
static final int SIDEBAR_TAVERN = 3;
|
||||
static final int SIDEBAR_PARTY = 4;
|
||||
static final int SIDEBAR_PURCHASE = 5;
|
||||
static final int SIDEBAR_SETTINGS = 7;
|
||||
static final int SIDEBAR_ABOUT = 8;
|
||||
|
||||
|
||||
|
||||
|
|
@ -71,11 +73,11 @@ public class MainDrawerBuilder {
|
|||
.withAccountHeader(accountHeader)
|
||||
.addDrawerItems(
|
||||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_tasks)).withIdentifier(SIDEBAR_TASKS),
|
||||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_skills)).withIdentifier(SIDEBAR_SKILLS),
|
||||
|
||||
new SectionDrawerItem().withName(activity.getString(R.string.sidebar_section_social)),
|
||||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_tavern)).withIdentifier(SIDEBAR_TAVERN),
|
||||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_party)).withIdentifier(SIDEBAR_PARTY),
|
||||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_purchaseGems)).withIdentifier(SIDEBAR_PURCHASE),
|
||||
/*new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_guilds)),
|
||||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_challenges)),
|
||||
|
||||
|
|
@ -83,6 +85,7 @@ public class MainDrawerBuilder {
|
|||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_avatar)),
|
||||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_equipment)),
|
||||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_stable)),*/
|
||||
new PrimaryDrawerItem().withName(activity.getString(R.string.sidebar_purchaseGems)).withIdentifier(SIDEBAR_PURCHASE),
|
||||
|
||||
new DividerDrawerItem(),
|
||||
//new SecondaryDrawerItem().withName(activity.getString(R.string.sidebar_news)),
|
||||
|
|
@ -102,6 +105,10 @@ public class MainDrawerBuilder {
|
|||
fragment = new TasksFragment();
|
||||
break;
|
||||
}
|
||||
case SIDEBAR_SKILLS: {
|
||||
fragment = new SkillsFragment();
|
||||
break;
|
||||
}
|
||||
case SIDEBAR_PARTY: {
|
||||
fragment = new PartyFragment();
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,107 @@
|
|||
package com.habitrpg.android.habitica.ui.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.Resources;
|
||||
import android.databinding.DataBindingUtil;
|
||||
import android.support.v7.widget.AppCompatEditText;
|
||||
import android.support.v7.widget.PopupMenu;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.databinding.ValueBarBinding;
|
||||
import com.habitrpg.android.habitica.events.commands.CopyChatAsTodoCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.DeleteChatMessageCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.FlagChatMessageCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.OpenNewPMActivityCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.SendNewGroupMessageCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.ToggleInnCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.ToggleLikeMessageCommand;
|
||||
import com.habitrpg.android.habitica.ui.AvatarWithBarsViewModel;
|
||||
import com.habitrpg.android.habitica.ui.helpers.DataBindingUtils;
|
||||
import com.habitrpg.android.habitica.ui.helpers.ViewHelper;
|
||||
import com.habitrpg.android.habitica.userpicture.UserPicture;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
import com.mikepenz.fontawesome_typeface_library.FontAwesome;
|
||||
import com.mikepenz.iconics.Iconics;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.InjectView;
|
||||
import butterknife.Optional;
|
||||
import de.greenrobot.event.EventBus;
|
||||
|
||||
/**
|
||||
* Created by viirus on 25/11/15.
|
||||
*/
|
||||
public class SkillsRecyclerViewAdapter extends RecyclerView.Adapter<SkillsRecyclerViewAdapter.SkillViewHolder> {
|
||||
|
||||
|
||||
private List<Skill> skillList;
|
||||
|
||||
public void setSkillList(List<Skill> skillList) {
|
||||
this.skillList = skillList;
|
||||
this.notifyDataSetChanged();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public SkillViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
|
||||
View view = LayoutInflater.from(parent.getContext())
|
||||
.inflate(R.layout.skill_list_item, parent, false);
|
||||
|
||||
return new SkillViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(SkillViewHolder holder, int position) {
|
||||
holder.bind(skillList.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return skillList == null ? 0 : skillList.size();
|
||||
}
|
||||
|
||||
class SkillViewHolder extends RecyclerView.ViewHolder {
|
||||
|
||||
@InjectView(R.id.skill_text)
|
||||
TextView skillNameTextView;
|
||||
|
||||
@InjectView(R.id.skill_notes)
|
||||
TextView skillNotesTextView;
|
||||
|
||||
@InjectView(R.id.price_button)
|
||||
Button priceButton;
|
||||
|
||||
Resources resources;
|
||||
|
||||
public SkillViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
|
||||
ButterKnife.inject(this, itemView);
|
||||
|
||||
resources = itemView.getResources();
|
||||
}
|
||||
|
||||
public void bind(Skill skill) {
|
||||
skillNameTextView.setText(skill.text);
|
||||
skillNotesTextView.setText(skill.notes);
|
||||
priceButton.setText(String.format(resources.getString(R.string.mana_price_button), skill.mana));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,86 @@
|
|||
package com.habitrpg.android.habitica.ui.fragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Color;
|
||||
import android.os.Bundle;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
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.APIHelper;
|
||||
import com.habitrpg.android.habitica.R;
|
||||
import com.habitrpg.android.habitica.events.ToggledInnStateEvent;
|
||||
import com.habitrpg.android.habitica.events.commands.DeleteChatMessageCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.FlagChatMessageCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.SendNewGroupMessageCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.ToggleInnCommand;
|
||||
import com.habitrpg.android.habitica.events.commands.ToggleLikeMessageCommand;
|
||||
import com.habitrpg.android.habitica.ui.adapter.ChatRecyclerViewAdapter;
|
||||
import com.habitrpg.android.habitica.ui.adapter.SkillsRecyclerViewAdapter;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.ChatMessage;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.HabitRPGUser;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.PostChatMessageResult;
|
||||
import com.magicmicky.habitrpgwrapper.lib.models.Skill;
|
||||
import com.raizlabs.android.dbflow.sql.builder.Condition;
|
||||
import com.raizlabs.android.dbflow.sql.language.Select;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.InjectView;
|
||||
import de.greenrobot.event.EventBus;
|
||||
import retrofit.Callback;
|
||||
import retrofit.RetrofitError;
|
||||
import retrofit.client.Response;
|
||||
|
||||
/**
|
||||
* Created by viirus on 25/11/15.
|
||||
*/
|
||||
public class SkillsFragment extends BaseFragment {
|
||||
|
||||
private View view;
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
if (view == null)
|
||||
view = inflater.inflate(R.layout.fragment_skills, container, false);
|
||||
|
||||
adapter = new SkillsRecyclerViewAdapter();
|
||||
|
||||
loadSkills();
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
@InjectView(R.id.recyclerView)
|
||||
RecyclerView mRecyclerView;
|
||||
|
||||
SkillsRecyclerViewAdapter adapter;
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
|
||||
ButterKnife.inject(this, view);
|
||||
|
||||
mRecyclerView.setLayoutManager(new LinearLayoutManager(activity));
|
||||
mRecyclerView.setAdapter(adapter);
|
||||
}
|
||||
|
||||
public void loadSkills() {
|
||||
List<Skill> skills = new Select()
|
||||
.from(Skill.class)
|
||||
.where(Condition.column("habitClass").eq(user.getStats().get_class()))
|
||||
.and(Condition.column("lvl").lessThanOrEq(user.getStats().getLvl()))
|
||||
.queryList();
|
||||
adapter.setSkillList(skills);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -15,7 +15,8 @@ public class ContentResult {
|
|||
|
||||
public ContentGear gear;
|
||||
|
||||
|
||||
public HashMap<String, QuestContent> quests;
|
||||
|
||||
public SkillList spells;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models;
|
||||
|
||||
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, allFields = true)
|
||||
public class Skill extends BaseModel {
|
||||
|
||||
@Column
|
||||
@PrimaryKey()
|
||||
public String key;
|
||||
|
||||
@Column
|
||||
public String text, notes, target, habitClass;
|
||||
|
||||
@Column
|
||||
public Integer mana, lvl;
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
package com.magicmicky.habitrpgwrapper.lib.models;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* Created by viirus on 25/11/15.
|
||||
*/
|
||||
public class SkillList {
|
||||
|
||||
}
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
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.ContentResult;
|
||||
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;
|
||||
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created by viirus on 25/11/15.
|
||||
*/
|
||||
public class SkillDeserializer
|
||||
implements JsonDeserializer<SkillList> {
|
||||
|
||||
@Override
|
||||
public SkillList deserialize(JsonElement json, Type type,
|
||||
JsonDeserializationContext context) throws JsonParseException {
|
||||
|
||||
JsonObject object = json.getAsJsonObject();
|
||||
List<Skill> skills = new ArrayList<Skill>();
|
||||
for (Map.Entry<String,JsonElement> classEntry : object.entrySet()) {
|
||||
String classname = classEntry.getKey();
|
||||
JsonObject classObject = classEntry.getValue().getAsJsonObject();
|
||||
if (classname.equals("special")) {
|
||||
continue;
|
||||
}
|
||||
for (Map.Entry<String,JsonElement> skillEntry : classObject.entrySet()) {
|
||||
JsonObject skillObject = skillEntry.getValue().getAsJsonObject();
|
||||
Skill skill = new Skill();
|
||||
skill.key = skillObject.get("key").getAsString();
|
||||
skill.text = skillObject.get("text").getAsString();
|
||||
skill.notes = skillObject.get("notes").getAsString();
|
||||
skill.key = skillObject.get("key").getAsString();
|
||||
skill.target = skillObject.get("target").getAsString();
|
||||
skill.habitClass = classname;
|
||||
skill.mana = skillObject.get("mana").getAsInt();
|
||||
skill.lvl = skillObject.get("lvl").getAsInt();
|
||||
skills.add(skill);
|
||||
}
|
||||
}
|
||||
|
||||
TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(skills)));
|
||||
|
||||
SkillList skillList = new SkillList();
|
||||
|
||||
return skillList;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue