RuneHive-Tarnish
Neural OSRS Enhancement Framework
Loading...
Searching...
No Matches
StoreParser.java
1package com.osroyale.util.parser.impl;
2
3import com.google.gson.JsonObject;
4import com.osroyale.content.store.SellType;
5import com.osroyale.content.store.Store;
6import com.osroyale.content.store.StoreItem;
7import com.osroyale.content.store.currency.CurrencyType;
8import com.osroyale.content.store.impl.DefaultStore;
9import com.osroyale.util.parser.GsonParser;
10
11import java.util.*;
12
13//import com.osroyale.content.shop.Store;
14//import com.osroyale.content.shop.StoreItem;
15//import com.osroyale.content.shop.StoreRepository;
16
49
50public class StoreParser extends GsonParser {
51
52 public StoreParser() {
53 super("def/store/stores", false);
54 }
55
56 @Override
57 protected void parse(JsonObject data) {
58 final String name = Objects.requireNonNull(data.get("name").getAsString());
59 final CurrencyType currency = builder.fromJson(data.get("currency"), CurrencyType.class);
60 final boolean restock = data.get("restock").getAsBoolean();
61 final String sellType = data.get("sellType").getAsString().toUpperCase();
62 final LoadedItem[] loadedItems = builder.fromJson(data.get("items"), LoadedItem[].class);
63
64 final List<StoreItem> storeItems = new ArrayList<>(loadedItems.length);
65
66 for(LoadedItem loadedItem : loadedItems) {
67 if (loadedItem.value == 0) {
68 loadedItem.value = -1;
69 }
70 storeItems.add(new StoreItem(loadedItem.id, loadedItem.amount, OptionalInt.of(loadedItem.value), Optional.ofNullable(loadedItem.type)));
71 }
72
73 StoreItem[] items = storeItems.toArray(new StoreItem[storeItems.size()]);
74 Store.STORES.put(name, new DefaultStore(items, name, SellType.valueOf(sellType), restock, currency));
75 }
76
77 private static final class LoadedItem {
78
79 private final int id;
80
81 private final int amount;
82
83 private int value;
84
85 private final CurrencyType type;
86
87 public LoadedItem(int id, int amount, int value, CurrencyType type) {
88 this.id = id;
89 this.amount = amount;
90 this.value = value;
91 this.type = type;
92 }
93 }
94
95}