Ejemplo n.º 1
0
 public QuestTask addTask(Quest quest) {
   QuestTask prev =
       quest.getTasks().size() > 0 ? quest.getTasks().get(quest.getTasks().size() - 1) : null;
   try {
     Constructor ex = clazz.getConstructor(Quest.class, String.class, String.class);
     QuestTask task = (QuestTask) ex.newInstance(quest, name, description);
     if (prev != null) {
       task.addRequirement(prev);
     }
     quest.getTasks().add(task);
     SaveHelper.add(SaveHelper.EditType.TASK_CREATE);
     return task;
   } catch (Exception e) {
     e.printStackTrace();
   }
   return null;
 }
Ejemplo n.º 2
0
 @Override
 public void write(JsonWriter out, QuestTask value) throws IOException {
   out.beginObject();
   TaskType type = TaskType.getType(value.getClass());
   out.name(TYPE).value(type.name());
   if (!value.getDescription().equals(type.name))
     out.name(DESCRIPTION).value(value.getDescription());
   if (!value.getLongDescription().equals(type.description))
     out.name(LONG_DESCRIPTION).value(value.getLongDescription());
   if (value instanceof QuestTaskItems) {
     out.name(ITEMS).beginArray();
     for (QuestTaskItems.ItemRequirement requirement : ((QuestTaskItems) value).getItems()) {
       ITEM_REQUIREMENT_ADAPTER.write(out, requirement);
     }
     out.endArray();
   } else if (value instanceof QuestTaskDeath) {
     out.name(DEATHS).value(((QuestTaskDeath) value).getDeaths());
   } else if (value instanceof QuestTaskLocation) {
     out.name(LOCATIONS).beginArray();
     for (QuestTaskLocation.Location requirement : ((QuestTaskLocation) value).locations) {
       LOCATION_ADAPTER.write(out, requirement);
     }
     out.endArray();
   } else if (value instanceof QuestTaskMob) {
     out.name(MOBS).beginArray();
     for (QuestTaskMob.Mob requirement : ((QuestTaskMob) value).mobs) {
       MOB_ADAPTER.write(out, requirement);
     }
     out.endArray();
   } else if (value instanceof QuestTaskReputation) {
     out.name(REPUTATION).beginArray();
     for (QuestTaskReputation.ReputationSetting requirement :
         ((QuestTaskReputation) value).getSettings()) {
       REPUTATION_ADAPTER.write(out, requirement);
     }
     out.endArray();
     if (value instanceof QuestTaskReputationKill) {
       out.name(KILLS).value(((QuestTaskReputationKill) value).getKills());
     }
   }
   out.endObject();
 }
Ejemplo n.º 3
0
 @Override
 public QuestTask read(JsonReader in) throws IOException {
   in.beginObject();
   if (!in.nextName().equalsIgnoreCase(TYPE)) {
     throw new IOException("Tasks *MUST* start with the type");
   }
   String task = in.nextString();
   TaskType type = TaskType.valueOf(task);
   if (type == null) {
     throw new IOException("Invalid Task Type: " + task);
   }
   TASK = type.addTask(QUEST);
   while (in.hasNext()) {
     String name = in.nextName();
     if (name.equalsIgnoreCase(DESCRIPTION)) {
       TASK.description = in.nextString();
     } else if (name.equalsIgnoreCase(LONG_DESCRIPTION)) {
       TASK.setLongDescription(in.nextString());
     } else if (TASK instanceof QuestTaskItems && name.equalsIgnoreCase(ITEMS)) {
       List<QuestTaskItems.ItemRequirement> list = new ArrayList<>();
       in.beginArray();
       while (in.hasNext()) {
         QuestTaskItems.ItemRequirement entry = ITEM_REQUIREMENT_ADAPTER.read(in);
         if (entry != null) list.add(entry);
       }
       in.endArray();
       ((QuestTaskItems) TASK)
           .setItems(list.toArray(new QuestTaskItems.ItemRequirement[list.size()]));
     } else if (TASK instanceof QuestTaskDeath && name.equalsIgnoreCase(DEATHS)) {
       int death = in.nextInt();
       ((QuestTaskDeath) TASK).setDeaths(death);
     } else if (TASK instanceof QuestTaskLocation && name.equalsIgnoreCase(LOCATIONS)) {
       List<QuestTaskLocation.Location> list = new ArrayList<QuestTaskLocation.Location>();
       in.beginArray();
       while (in.hasNext()) {
         QuestTaskLocation.Location entry = LOCATION_ADAPTER.read(in);
         if (entry != null) list.add(entry);
       }
       in.endArray();
       ((QuestTaskLocation) TASK).locations =
           list.toArray(new QuestTaskLocation.Location[list.size()]);
     } else if (TASK instanceof QuestTaskMob && name.equalsIgnoreCase(MOBS)) {
       List<QuestTaskMob.Mob> list = new ArrayList<QuestTaskMob.Mob>();
       in.beginArray();
       while (in.hasNext()) {
         QuestTaskMob.Mob entry = MOB_ADAPTER.read(in);
         if (entry != null) list.add(entry);
       }
       in.endArray();
       ((QuestTaskMob) TASK).mobs = list.toArray(new QuestTaskMob.Mob[list.size()]);
     } else if (TASK instanceof QuestTaskReputation && name.equalsIgnoreCase(REPUTATION)) {
       List<QuestTaskReputation.ReputationSetting> list =
           new ArrayList<QuestTaskReputation.ReputationSetting>();
       in.beginArray();
       while (in.hasNext()) {
         list.add(REPUTATION_ADAPTER.read(in));
       }
       in.endArray();
       ReflectionHelper.setPrivateValue(
           QuestTaskReputation.class,
           (QuestTaskReputation) TASK,
           list.toArray(new QuestTaskReputation.ReputationSetting[list.size()]),
           "settings");
     } else if (name.equalsIgnoreCase(KILLS) && TASK instanceof QuestTaskReputationKill) {
       ((QuestTaskReputationKill) TASK).setKills(in.nextInt());
     }
   }
   in.endObject();
   type.addTaskData(QUEST);
   return null;
 }