From da3eb3d26cc0871520c7cad1e6b5df756374bad8 Mon Sep 17 00:00:00 2001 From: Kinesis Date: Sun, 1 May 2022 12:43:44 +0800 Subject: [PATCH] implement McoinExchange packet Handler --- .../recv/HandlerMcoinExchangeHcoinReq.java | 26 +++++++++++++++++++ .../send/PacketMcoinExchangeHcoinRsp.java | 18 +++++++++++++ 2 files changed, 44 insertions(+) create mode 100644 src/main/java/emu/grasscutter/server/packet/recv/HandlerMcoinExchangeHcoinReq.java create mode 100644 src/main/java/emu/grasscutter/server/packet/send/PacketMcoinExchangeHcoinRsp.java diff --git a/src/main/java/emu/grasscutter/server/packet/recv/HandlerMcoinExchangeHcoinReq.java b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMcoinExchangeHcoinReq.java new file mode 100644 index 000000000..0f3d2e7f8 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/recv/HandlerMcoinExchangeHcoinReq.java @@ -0,0 +1,26 @@ +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.McoinExchangeHcoinReqOuterClass; +import emu.grasscutter.server.game.GameSession; +import emu.grasscutter.server.packet.send.PacketMcoinExchangeHcoinRsp; + +@Opcodes(PacketOpcodes.McoinExchangeHcoinReq) +public class HandlerMcoinExchangeHcoinReq extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] payload) throws Exception { + McoinExchangeHcoinReqOuterClass.McoinExchangeHcoinReq exchangeReq = McoinExchangeHcoinReqOuterClass.McoinExchangeHcoinReq.parseFrom(payload); + if (session == null) { + return; + } else if (session.getPlayer().getCrystals() < exchangeReq.getMCoinNum()) { + return; + } + session.getPlayer().setCrystals(session.getPlayer().getCrystals() - exchangeReq.getMCoinNum()); + session.getPlayer().setPrimogems(session.getPlayer().getPrimogems() + exchangeReq.getHCoinNum()); + session.getPlayer().save(); + session.send(new PacketMcoinExchangeHcoinRsp(session.getPlayer().getCrystals(), session.getPlayer().getPrimogems())); + } +} diff --git a/src/main/java/emu/grasscutter/server/packet/send/PacketMcoinExchangeHcoinRsp.java b/src/main/java/emu/grasscutter/server/packet/send/PacketMcoinExchangeHcoinRsp.java new file mode 100644 index 000000000..65bef7b27 --- /dev/null +++ b/src/main/java/emu/grasscutter/server/packet/send/PacketMcoinExchangeHcoinRsp.java @@ -0,0 +1,18 @@ +package emu.grasscutter.server.packet.send; + +import emu.grasscutter.net.packet.BasePacket; +import emu.grasscutter.net.packet.PacketOpcodes; +import emu.grasscutter.net.proto.McoinExchangeHcoinRspOuterClass; + +public class PacketMcoinExchangeHcoinRsp extends BasePacket { + + public PacketMcoinExchangeHcoinRsp(int mcoin, int hcoin) { + super(PacketOpcodes.McoinExchangeHcoinRsp); + + McoinExchangeHcoinRspOuterClass.McoinExchangeHcoinRsp mcoinExchangeHcoinRsp = McoinExchangeHcoinRspOuterClass.McoinExchangeHcoinRsp.newBuilder() + .setMCoinNum(mcoin) + .setHCoinNum(hcoin).build(); + + this.setData(mcoinExchangeHcoinRsp); + } +}