mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-01-25 04:15:34 +08:00
Player level reward
This commit is contained in:
parent
f536da0c77
commit
b2840b1740
@ -0,0 +1,43 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import emu.grasscutter.data.GenshinData;
|
||||
import emu.grasscutter.data.common.RewardItemData;
|
||||
import emu.grasscutter.game.inventory.GenshinItem;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.TakePlayerLevelRewardReqOuterClass.TakePlayerLevelRewardReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketTakePlayerLevelRewardRsp;
|
||||
|
||||
@Opcodes(PacketOpcodes.TakePlayerLevelRewardReq)
|
||||
public class HandlerTakePlayerLevelRewardReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
TakePlayerLevelRewardReq req = TakePlayerLevelRewardReq.parseFrom(payload);
|
||||
|
||||
int level = req.getLevel();
|
||||
int rewardId = GenshinData.getPlayerLevelDataMap().get(level).getRewardId();
|
||||
|
||||
if (rewardId != 0) {
|
||||
List<RewardItemData> rewardItems = GenshinData.getRewardDataMap().get(rewardId).getRewardItemList();
|
||||
List<GenshinItem> items = new LinkedList<>();
|
||||
for (RewardItemData rewardItem : rewardItems) {
|
||||
if (rewardItem != null) {
|
||||
if (rewardItem.getItemId() != 0) {
|
||||
items.add(new GenshinItem(rewardItem.getItemId(), rewardItem.getItemCount()));
|
||||
}
|
||||
}
|
||||
}
|
||||
session.getPlayer().getInventory().addItems(items);
|
||||
session.getPlayer().sendPacket(new PacketItemAddHintNotify(items, ActionReason.PlayerUpgradeReward));
|
||||
}
|
||||
|
||||
session.send(new PacketTakePlayerLevelRewardRsp(level, rewardId));
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.GenshinPacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.TakePlayerLevelRewardRspOuterClass.TakePlayerLevelRewardRsp;
|
||||
|
||||
public class PacketTakePlayerLevelRewardRsp extends GenshinPacket {
|
||||
|
||||
public PacketTakePlayerLevelRewardRsp(int level, int rewardId) {
|
||||
super(PacketOpcodes.TakePlayerLevelRewardRsp);
|
||||
|
||||
int retcode = 0;
|
||||
|
||||
if (rewardId == 0) {
|
||||
retcode = 1;
|
||||
}
|
||||
|
||||
TakePlayerLevelRewardRsp proto = TakePlayerLevelRewardRsp.newBuilder()
|
||||
.setLevel(level)
|
||||
.setRewardId(rewardId)
|
||||
.setRetcode(retcode)
|
||||
.build();
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user