Add support for propperly showing activity shops (#1774)

* Add support for propperly showing activity shops

* Update src/main/java/emu/grasscutter/data/excels/ActivityShopData.java

Co-authored-by: hartie95 <mail@hartie95.de>
This commit is contained in:
Alexander Hartmann
2022-09-14 12:27:16 +02:00
committed by GitHub
parent 070edd263a
commit 21ff749dca
10 changed files with 2413 additions and 1 deletions

View File

@@ -0,0 +1,19 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.GetActivityShopSheetInfoReqOuterClass.GetActivityShopSheetInfoReq;
import emu.grasscutter.server.game.GameSession;
import emu.grasscutter.server.packet.send.PacketGetActivityShopSheetInfoRsp;
@Opcodes(PacketOpcodes.GetActivityShopSheetInfoReq)
public class HandlerGetActivityShopSheetInfoReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
GetActivityShopSheetInfoReq req = GetActivityShopSheetInfoReq.parseFrom(payload);
session.getPlayer().sendPacket(new PacketGetActivityShopSheetInfoRsp(req.getShopType()));
}
}

View File

@@ -0,0 +1,50 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.data.GameData;
import emu.grasscutter.game.activity.ActivityConfigItem;
import emu.grasscutter.game.activity.ActivityManager;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ActivityShopSheetInfoOuterClass.ActivityShopSheetInfo;
import emu.grasscutter.net.proto.GetActivityShopSheetInfoRspOuterClass.GetActivityShopSheetInfoRsp;
import emu.grasscutter.net.proto.RetcodeOuterClass;
import java.util.ArrayList;
import java.util.List;
public class PacketGetActivityShopSheetInfoRsp extends BasePacket {
public PacketGetActivityShopSheetInfoRsp(int shopType) {
super(PacketOpcodes.GetActivityShopSheetInfoRsp);
var sheetInfo = GameData.getActivityShopDataMap().get(shopType);
ActivityConfigItem activityConfigItem = null;
if (sheetInfo != null) {
activityConfigItem = ActivityManager.getScheduleActivityConfigMap().get(sheetInfo.getScheduleId());
}
if (sheetInfo == null || activityConfigItem == null) {
setData(GetActivityShopSheetInfoRsp.newBuilder()
.setShopType(shopType)
.setRetcode(RetcodeOuterClass.Retcode.RET_SHOP_NOT_OPEN_VALUE)
.build());
return;
}
List<ActivityShopSheetInfo> sheetInfos = new ArrayList<>(sheetInfo.getSheetList().size());
for (int id : sheetInfo.getSheetList()) {
sheetInfos.add(ActivityShopSheetInfo.newBuilder()
.setSheetId(id)
.setBeginTime((int) activityConfigItem.getBeginTime().getTime())
.setEndTime((int) activityConfigItem.getEndTime().getTime())
.build());
}
setData(GetActivityShopSheetInfoRsp.newBuilder()
.setShopType(shopType)
.addAllSheetInfoList(sheetInfos)
.build());
}
}