mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-20 10:55:08 +01:00
shop improvement
This commit is contained in:
@@ -1,10 +1,9 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.def.ShopGoodsData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.shop.ShopInfo;
|
||||
import emu.grasscutter.game.shop.ShopLimit;
|
||||
import emu.grasscutter.game.shop.ShopManager;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
@@ -12,13 +11,13 @@ import emu.grasscutter.net.proto.GetShopRspOuterClass;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass;
|
||||
import emu.grasscutter.net.proto.ShopGoodsOuterClass.ShopGoods;
|
||||
import emu.grasscutter.net.proto.ShopOuterClass.Shop;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class PacketGetShopRsp extends BasePacket {
|
||||
|
||||
public PacketGetShopRsp(Player inv, int shopType) {
|
||||
super(PacketOpcodes.GetShopRsp);
|
||||
|
||||
@@ -38,11 +37,9 @@ public class PacketGetShopRsp extends BasePacket {
|
||||
.setGoodsItem(ItemParamOuterClass.ItemParam.newBuilder().setItemId(info.getGoodsItem().getId()).setCount(info.getGoodsItem().getCount()).build())
|
||||
.setScoin(info.getScoin())
|
||||
.setHcoin(info.getHcoin())
|
||||
.setBoughtNum(inv.getGoodsLimitNum(info.getGoodsId()))
|
||||
.setBuyLimit(info.getBuyLimit())
|
||||
.setBeginTime(info.getBeginTime())
|
||||
.setEndTime(info.getEndTime())
|
||||
.setNextRefreshTime(info.getNextRefreshTime())
|
||||
.setMinLevel(info.getMinLevel())
|
||||
.setMaxLevel(info.getMaxLevel())
|
||||
.setMcoin(info.getMcoin())
|
||||
@@ -54,11 +51,28 @@ public class PacketGetShopRsp extends BasePacket {
|
||||
if (info.getPreGoodsIdList() != null) {
|
||||
goods.addAllPreGoodsIdList(info.getPreGoodsIdList());
|
||||
}
|
||||
|
||||
int currentTs = Utils.getCurrentSeconds();
|
||||
ShopLimit currentShopLimit = inv.getGoodsLimit(info.getGoodsId());
|
||||
int nextRefreshTime = ShopManager.getShopNextRefreshTime(info);
|
||||
if (currentShopLimit != null) {
|
||||
if (currentShopLimit.getNextRefreshTime() < currentTs) { // second game day
|
||||
currentShopLimit.setHasBoughtInPeriod(0);
|
||||
currentShopLimit.setNextRefreshTime(nextRefreshTime);
|
||||
}
|
||||
goods.setBoughtNum(currentShopLimit.getHasBoughtInPeriod());
|
||||
goods.setNextRefreshTime(currentShopLimit.getNextRefreshTime());
|
||||
} else {
|
||||
inv.addShopLimit(goods.getGoodsId(), 0, nextRefreshTime); // save generated refresh time
|
||||
goods.setNextRefreshTime(nextRefreshTime);
|
||||
}
|
||||
|
||||
goodsList.add(goods.build());
|
||||
}
|
||||
shop.addAllGoodsList(goodsList);
|
||||
}
|
||||
|
||||
inv.save();
|
||||
this.setData(GetShopRspOuterClass.GetShopRsp.newBuilder().setShop(shop).build());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user