mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-17 09:25:06 +01:00
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:
committed by
GitHub
parent
070edd263a
commit
21ff749dca
@@ -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()));
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user