mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-01-25 08:42:53 +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