Fix starlight/ember exchange stores

This commit is contained in:
Melledy
2023-11-27 06:44:25 -08:00
parent 8fd9b85b08
commit 09d169c582
4 changed files with 11 additions and 6 deletions

View File

@@ -2,8 +2,8 @@ package emu.lunarcore.data.excel;
import emu.lunarcore.data.GameResource; import emu.lunarcore.data.GameResource;
import emu.lunarcore.data.ResourceType; import emu.lunarcore.data.ResourceType;
import it.unimi.dsi.fastutil.ints.Int2ObjectAVLTreeMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import lombok.Getter; import lombok.Getter;
@Getter @Getter
@@ -15,7 +15,7 @@ public class ShopExcel extends GameResource {
private transient Int2ObjectMap<ShopGoodsExcel> goods; private transient Int2ObjectMap<ShopGoodsExcel> goods;
public ShopExcel() { public ShopExcel() {
this.goods = new Int2ObjectOpenHashMap<>(); this.goods = new Int2ObjectAVLTreeMap<>();
} }
@Override @Override

View File

@@ -34,6 +34,9 @@ public class ShopGoodsExcel extends GameResource {
@Override @Override
public void onLoad() { public void onLoad() {
// Skip if we dont have an item id associated with this goods excel
if (this.getItemID() == 0) return;
// Add to shop excel // Add to shop excel
ShopExcel shop = GameData.getShopExcelMap().get(this.ShopID); ShopExcel shop = GameData.getShopExcelMap().get(this.ShopID);
if (shop == null) return; if (shop == null) return;

View File

@@ -26,18 +26,20 @@ public class ShopService extends BaseGameService {
ShopGoodsExcel goods = shop.getGoods().get(goodsId); ShopGoodsExcel goods = shop.getGoods().get(goodsId);
if (goods == null) return null; if (goods == null) return null;
ItemExcel itemExcel = GameData.getItemExcelMap().get(goods.getItemID());
if (itemExcel == null) return null;
// Verify item params // Verify item params
if (!player.getInventory().verifyItems(goods.getCostList(), count)) { if (!player.getInventory().verifyItems(goods.getCostList(), count)) {
return null; return null;
} }
// Pay items // Handle payment
player.getInventory().removeItemsByParams(goods.getCostList(), count); player.getInventory().removeItemsByParams(goods.getCostList(), count);
// Buy items // Buy items
List<GameItem> items = new ArrayList<>(); List<GameItem> items = new ArrayList<>();
ItemExcel itemExcel = GameData.getItemExcelMap().get(goods.getItemID());
if (!itemExcel.isEquippable()) { if (!itemExcel.isEquippable()) {
GameItem item = new GameItem(itemExcel, goods.getItemCount() * count); GameItem item = new GameItem(itemExcel, goods.getItemCount() * count);
items.add(item); items.add(item);

View File

@@ -16,7 +16,7 @@ public class PacketGetShopListScRsp extends BasePacket {
.setShopType(shopType); .setShopType(shopType);
for (ShopExcel shopExcel : GameData.getShopExcelMap().values()) { for (ShopExcel shopExcel : GameData.getShopExcelMap().values()) {
if (shopExcel.getShopType() != shopType) { if (shopExcel.getShopType() != shopType || shopExcel.getGoods().size() == 0) {
continue; continue;
} }
@@ -24,7 +24,7 @@ public class PacketGetShopListScRsp extends BasePacket {
.setShopId(shopExcel.getId()) .setShopId(shopExcel.getId())
.setCityLevel(1) .setCityLevel(1)
.setEndTime(Integer.MAX_VALUE); .setEndTime(Integer.MAX_VALUE);
for (var goodsExcel : shopExcel.getGoods().values()) { for (var goodsExcel : shopExcel.getGoods().values()) {
shop.addGoodsList(goodsExcel.toProto()); shop.addGoodsList(goodsExcel.toProto());
} }