From 03d2ff71861497144aba563491ba3f42f88e9b26 Mon Sep 17 00:00:00 2001 From: Melledy <121644117+Melledy@users.noreply.github.com> Date: Wed, 8 Nov 2023 21:57:22 -0800 Subject: [PATCH] Implement hcoin exchange handler --- .../proto/ExchangeHcoinCsReqOuterClass.java | 14 +- .../proto/ExchangeHcoinScRspOuterClass.java | 339 ------------------ .../recv/HandlerExchangeHcoinCsReq.java | 25 ++ 3 files changed, 32 insertions(+), 346 deletions(-) delete mode 100644 src/generated/main/emu/lunarcore/proto/ExchangeHcoinScRspOuterClass.java create mode 100644 src/main/java/emu/lunarcore/server/packet/recv/HandlerExchangeHcoinCsReq.java diff --git a/src/generated/main/emu/lunarcore/proto/ExchangeHcoinCsReqOuterClass.java b/src/generated/main/emu/lunarcore/proto/ExchangeHcoinCsReqOuterClass.java index 0b0aad5..0873a93 100644 --- a/src/generated/main/emu/lunarcore/proto/ExchangeHcoinCsReqOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/ExchangeHcoinCsReqOuterClass.java @@ -19,7 +19,7 @@ public final class ExchangeHcoinCsReqOuterClass { private static final long serialVersionUID = 0L; /** - * optional uint32 num = 6; + * optional uint32 num = 8; */ private int num; @@ -34,7 +34,7 @@ public final class ExchangeHcoinCsReqOuterClass { } /** - * optional uint32 num = 6; + * optional uint32 num = 8; * @return whether the num field is set */ public boolean hasNum() { @@ -42,7 +42,7 @@ public final class ExchangeHcoinCsReqOuterClass { } /** - * optional uint32 num = 6; + * optional uint32 num = 8; * @return this */ public ExchangeHcoinCsReq clearNum() { @@ -52,7 +52,7 @@ public final class ExchangeHcoinCsReqOuterClass { } /** - * optional uint32 num = 6; + * optional uint32 num = 8; * @return the num */ public int getNum() { @@ -60,7 +60,7 @@ public final class ExchangeHcoinCsReqOuterClass { } /** - * optional uint32 num = 6; + * optional uint32 num = 8; * @param value the num to set * @return this */ @@ -129,7 +129,7 @@ public final class ExchangeHcoinCsReqOuterClass { @Override public void writeTo(final ProtoSink output) throws IOException { if ((bitField0_ & 0x00000001) != 0) { - output.writeRawByte((byte) 48); + output.writeRawByte((byte) 64); output.writeUInt32NoTag(num); } } @@ -150,7 +150,7 @@ public final class ExchangeHcoinCsReqOuterClass { int tag = input.readTag(); while (true) { switch (tag) { - case 48: { + case 64: { // num num = input.readUInt32(); bitField0_ |= 0x00000001; diff --git a/src/generated/main/emu/lunarcore/proto/ExchangeHcoinScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/ExchangeHcoinScRspOuterClass.java deleted file mode 100644 index 36d8b0a..0000000 --- a/src/generated/main/emu/lunarcore/proto/ExchangeHcoinScRspOuterClass.java +++ /dev/null @@ -1,339 +0,0 @@ -// Code generated by protocol buffer compiler. Do not edit! -package emu.lunarcore.proto; - -import java.io.IOException; -import us.hebi.quickbuf.FieldName; -import us.hebi.quickbuf.InvalidProtocolBufferException; -import us.hebi.quickbuf.JsonSink; -import us.hebi.quickbuf.JsonSource; -import us.hebi.quickbuf.MessageFactory; -import us.hebi.quickbuf.ProtoMessage; -import us.hebi.quickbuf.ProtoSink; -import us.hebi.quickbuf.ProtoSource; - -public final class ExchangeHcoinScRspOuterClass { - /** - * Protobuf type {@code ExchangeHcoinScRsp} - */ - public static final class ExchangeHcoinScRsp extends ProtoMessage implements Cloneable { - private static final long serialVersionUID = 0L; - - /** - * optional uint32 num = 2; - */ - private int num; - - /** - * optional uint32 retcode = 7; - */ - private int retcode; - - private ExchangeHcoinScRsp() { - } - - /** - * @return a new empty instance of {@code ExchangeHcoinScRsp} - */ - public static ExchangeHcoinScRsp newInstance() { - return new ExchangeHcoinScRsp(); - } - - /** - * optional uint32 num = 2; - * @return whether the num field is set - */ - public boolean hasNum() { - return (bitField0_ & 0x00000001) != 0; - } - - /** - * optional uint32 num = 2; - * @return this - */ - public ExchangeHcoinScRsp clearNum() { - bitField0_ &= ~0x00000001; - num = 0; - return this; - } - - /** - * optional uint32 num = 2; - * @return the num - */ - public int getNum() { - return num; - } - - /** - * optional uint32 num = 2; - * @param value the num to set - * @return this - */ - public ExchangeHcoinScRsp setNum(final int value) { - bitField0_ |= 0x00000001; - num = value; - return this; - } - - /** - * optional uint32 retcode = 7; - * @return whether the retcode field is set - */ - public boolean hasRetcode() { - return (bitField0_ & 0x00000002) != 0; - } - - /** - * optional uint32 retcode = 7; - * @return this - */ - public ExchangeHcoinScRsp clearRetcode() { - bitField0_ &= ~0x00000002; - retcode = 0; - return this; - } - - /** - * optional uint32 retcode = 7; - * @return the retcode - */ - public int getRetcode() { - return retcode; - } - - /** - * optional uint32 retcode = 7; - * @param value the retcode to set - * @return this - */ - public ExchangeHcoinScRsp setRetcode(final int value) { - bitField0_ |= 0x00000002; - retcode = value; - return this; - } - - @Override - public ExchangeHcoinScRsp copyFrom(final ExchangeHcoinScRsp other) { - cachedSize = other.cachedSize; - if ((bitField0_ | other.bitField0_) != 0) { - bitField0_ = other.bitField0_; - num = other.num; - retcode = other.retcode; - } - return this; - } - - @Override - public ExchangeHcoinScRsp mergeFrom(final ExchangeHcoinScRsp other) { - if (other.isEmpty()) { - return this; - } - cachedSize = -1; - if (other.hasNum()) { - setNum(other.num); - } - if (other.hasRetcode()) { - setRetcode(other.retcode); - } - return this; - } - - @Override - public ExchangeHcoinScRsp clear() { - if (isEmpty()) { - return this; - } - cachedSize = -1; - bitField0_ = 0; - num = 0; - retcode = 0; - return this; - } - - @Override - public ExchangeHcoinScRsp clearQuick() { - if (isEmpty()) { - return this; - } - cachedSize = -1; - bitField0_ = 0; - return this; - } - - @Override - public boolean equals(Object o) { - if (o == this) { - return true; - } - if (!(o instanceof ExchangeHcoinScRsp)) { - return false; - } - ExchangeHcoinScRsp other = (ExchangeHcoinScRsp) o; - return bitField0_ == other.bitField0_ - && (!hasNum() || num == other.num) - && (!hasRetcode() || retcode == other.retcode); - } - - @Override - public void writeTo(final ProtoSink output) throws IOException { - if ((bitField0_ & 0x00000001) != 0) { - output.writeRawByte((byte) 16); - output.writeUInt32NoTag(num); - } - if ((bitField0_ & 0x00000002) != 0) { - output.writeRawByte((byte) 56); - output.writeUInt32NoTag(retcode); - } - } - - @Override - protected int computeSerializedSize() { - int size = 0; - if ((bitField0_ & 0x00000001) != 0) { - size += 1 + ProtoSink.computeUInt32SizeNoTag(num); - } - if ((bitField0_ & 0x00000002) != 0) { - size += 1 + ProtoSink.computeUInt32SizeNoTag(retcode); - } - return size; - } - - @Override - @SuppressWarnings("fallthrough") - public ExchangeHcoinScRsp mergeFrom(final ProtoSource input) throws IOException { - // Enabled Fall-Through Optimization (QuickBuffers) - int tag = input.readTag(); - while (true) { - switch (tag) { - case 16: { - // num - num = input.readUInt32(); - bitField0_ |= 0x00000001; - tag = input.readTag(); - if (tag != 56) { - break; - } - } - case 56: { - // retcode - retcode = input.readUInt32(); - bitField0_ |= 0x00000002; - tag = input.readTag(); - if (tag != 0) { - break; - } - } - case 0: { - return this; - } - default: { - if (!input.skipField(tag)) { - return this; - } - tag = input.readTag(); - break; - } - } - } - } - - @Override - public void writeTo(final JsonSink output) throws IOException { - output.beginObject(); - if ((bitField0_ & 0x00000001) != 0) { - output.writeUInt32(FieldNames.num, num); - } - if ((bitField0_ & 0x00000002) != 0) { - output.writeUInt32(FieldNames.retcode, retcode); - } - output.endObject(); - } - - @Override - public ExchangeHcoinScRsp mergeFrom(final JsonSource input) throws IOException { - if (!input.beginObject()) { - return this; - } - while (!input.isAtEnd()) { - switch (input.readFieldHash()) { - case 109446: { - if (input.isAtField(FieldNames.num)) { - if (!input.trySkipNullValue()) { - num = input.readUInt32(); - bitField0_ |= 0x00000001; - } - } else { - input.skipUnknownField(); - } - break; - } - case 1097936398: { - if (input.isAtField(FieldNames.retcode)) { - if (!input.trySkipNullValue()) { - retcode = input.readUInt32(); - bitField0_ |= 0x00000002; - } - } else { - input.skipUnknownField(); - } - break; - } - default: { - input.skipUnknownField(); - break; - } - } - } - input.endObject(); - return this; - } - - @Override - public ExchangeHcoinScRsp clone() { - return new ExchangeHcoinScRsp().copyFrom(this); - } - - @Override - public boolean isEmpty() { - return ((bitField0_) == 0); - } - - public static ExchangeHcoinScRsp parseFrom(final byte[] data) throws - InvalidProtocolBufferException { - return ProtoMessage.mergeFrom(new ExchangeHcoinScRsp(), data).checkInitialized(); - } - - public static ExchangeHcoinScRsp parseFrom(final ProtoSource input) throws IOException { - return ProtoMessage.mergeFrom(new ExchangeHcoinScRsp(), input).checkInitialized(); - } - - public static ExchangeHcoinScRsp parseFrom(final JsonSource input) throws IOException { - return ProtoMessage.mergeFrom(new ExchangeHcoinScRsp(), input).checkInitialized(); - } - - /** - * @return factory for creating ExchangeHcoinScRsp messages - */ - public static MessageFactory getFactory() { - return ExchangeHcoinScRspFactory.INSTANCE; - } - - private enum ExchangeHcoinScRspFactory implements MessageFactory { - INSTANCE; - - @Override - public ExchangeHcoinScRsp create() { - return ExchangeHcoinScRsp.newInstance(); - } - } - - /** - * Contains name constants used for serializing JSON - */ - static class FieldNames { - static final FieldName num = FieldName.forField("num"); - - static final FieldName retcode = FieldName.forField("retcode"); - } - } -} diff --git a/src/main/java/emu/lunarcore/server/packet/recv/HandlerExchangeHcoinCsReq.java b/src/main/java/emu/lunarcore/server/packet/recv/HandlerExchangeHcoinCsReq.java new file mode 100644 index 0000000..c94ee1f --- /dev/null +++ b/src/main/java/emu/lunarcore/server/packet/recv/HandlerExchangeHcoinCsReq.java @@ -0,0 +1,25 @@ +package emu.lunarcore.server.packet.recv; + +import emu.lunarcore.proto.ExchangeHcoinCsReqOuterClass.ExchangeHcoinCsReq; +import emu.lunarcore.server.game.GameSession; +import emu.lunarcore.server.packet.CmdId; +import emu.lunarcore.server.packet.Opcodes; +import emu.lunarcore.server.packet.PacketHandler; + +@Opcodes(CmdId.ExchangeHcoinCsReq) +public class HandlerExchangeHcoinCsReq extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] data) throws Exception { + var req = ExchangeHcoinCsReq.parseFrom(data); + + if (session.getPlayer().getMcoin() >= req.getNum()) { + session.getPlayer().addMCoin(-req.getNum()); + session.getPlayer().addHCoin(req.getNum()); + session.getPlayer().save(); + } + + session.send(CmdId.ExchangeHcoinScRsp); + } + +}