use better shop config structure

This commit is contained in:
Kengxxiao
2022-04-27 19:56:53 +08:00
committed by Melledy
parent 3e0ccbbbde
commit ee3a0c32fc
4 changed files with 94 additions and 114 deletions

View File

@@ -6,23 +6,22 @@ import java.util.ArrayList;
import java.util.List;
public class ShopInfo {
public int shopId = 1004;
public int goodsId = 0;
public ItemParamData goodsItem;
public int scoin = 0;
public List<ItemParamData> costItemList;
public int boughtNum = 0;
public int buyLimit = 0;
public int beginTime = 0;
public int endTime = 1924992000;
public int nextRefreshTime = 1924992000;
public int minLevel = 0;
public int maxLevel = 61;
public List<Integer> preGoodsIdList = new ArrayList<>();
public int mcoin = 0;
public int hcoin = 0;
public int disableType = 0;
public int secondarySheetId = 0;
private int goodsId = 0;
private ItemParamData goodsItem;
private int scoin = 0;
private List<ItemParamData> costItemList;
private int boughtNum = 0;
private int buyLimit = 0;
private int beginTime = 0;
private int endTime = 1924992000;
private int nextRefreshTime = 1924992000;
private int minLevel = 0;
private int maxLevel = 61;
private List<Integer> preGoodsIdList = new ArrayList<>();
private int mcoin = 0;
private int hcoin = 0;
private int disableType = 0;
private int secondarySheetId = 0;
public int getHcoin() {
return hcoin;
@@ -64,14 +63,6 @@ public class ShopInfo {
this.secondarySheetId = secondarySheetId;
}
public int getShopId() {
return shopId;
}
public void setShopId(int shopId) {
this.shopId = shopId;
}
public int getGoodsId() {
return goodsId;
}

View File

@@ -7,7 +7,6 @@ import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
@@ -19,7 +18,7 @@ public class ShopManager {
}
private final Int2ObjectMap<List<ShopInfo>> shopData;
public ShopManager(GameServer server) {
this.server = server;
this.shopData = new Int2ObjectOpenHashMap<>();
@@ -29,13 +28,10 @@ public class ShopManager {
public synchronized void load() {
try (FileReader fileReader = new FileReader(Grasscutter.getConfig().DATA_FOLDER + "Shop.json")) {
getShopData().clear();
List<ShopInfo> banners = Grasscutter.getGsonFactory().fromJson(fileReader, TypeToken.getParameterized(Collection.class, ShopInfo.class).getType());
List<ShopTable> banners = Grasscutter.getGsonFactory().fromJson(fileReader, TypeToken.getParameterized(Collection.class, ShopTable.class).getType());
if(banners.size() > 0) {
for (ShopInfo shopInfo : banners) {
if (!getShopData().containsKey(shopInfo.getShopId()))
getShopData().put(shopInfo.getShopId(), new ArrayList<>());
getShopData().get(shopInfo.getShopId()).add(shopInfo);
Grasscutter.getLogger().info(String.format("Shop add: id [%d], data [%d*%d]", shopInfo.getShopId(), shopInfo.getGoodsItem().getId(), shopInfo.getGoodsItem().getCount()));
for (ShopTable shopTable : banners) {
getShopData().put(shopTable.getShopId(), shopTable.getItems());
}
Grasscutter.getLogger().info("Shop data successfully loaded.");
} else {

View File

@@ -0,0 +1,25 @@
package emu.grasscutter.game.shop;
import java.util.ArrayList;
import java.util.List;
public class ShopTable {
private int shopId;
private List<ShopInfo> items = new ArrayList<>();
public int getShopId() {
return shopId;
}
public void setShopId(int shopId) {
this.shopId = shopId;
}
public List<ShopInfo> getItems() {
return items;
}
public void setItems(List<ShopInfo> items) {
this.items = items;
}
}