Implement hcoin exchange handler

This commit is contained in:
Melledy
2023-11-08 21:57:22 -08:00
parent aa24e8aed2
commit 03d2ff7186
3 changed files with 32 additions and 346 deletions

View File

@@ -19,7 +19,7 @@ public final class ExchangeHcoinCsReqOuterClass {
private static final long serialVersionUID = 0L;
/**
* <code>optional uint32 num = 6;</code>
* <code>optional uint32 num = 8;</code>
*/
private int num;
@@ -34,7 +34,7 @@ public final class ExchangeHcoinCsReqOuterClass {
}
/**
* <code>optional uint32 num = 6;</code>
* <code>optional uint32 num = 8;</code>
* @return whether the num field is set
*/
public boolean hasNum() {
@@ -42,7 +42,7 @@ public final class ExchangeHcoinCsReqOuterClass {
}
/**
* <code>optional uint32 num = 6;</code>
* <code>optional uint32 num = 8;</code>
* @return this
*/
public ExchangeHcoinCsReq clearNum() {
@@ -52,7 +52,7 @@ public final class ExchangeHcoinCsReqOuterClass {
}
/**
* <code>optional uint32 num = 6;</code>
* <code>optional uint32 num = 8;</code>
* @return the num
*/
public int getNum() {
@@ -60,7 +60,7 @@ public final class ExchangeHcoinCsReqOuterClass {
}
/**
* <code>optional uint32 num = 6;</code>
* <code>optional uint32 num = 8;</code>
* @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;

View File

@@ -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<ExchangeHcoinScRsp> implements Cloneable {
private static final long serialVersionUID = 0L;
/**
* <code>optional uint32 num = 2;</code>
*/
private int num;
/**
* <code>optional uint32 retcode = 7;</code>
*/
private int retcode;
private ExchangeHcoinScRsp() {
}
/**
* @return a new empty instance of {@code ExchangeHcoinScRsp}
*/
public static ExchangeHcoinScRsp newInstance() {
return new ExchangeHcoinScRsp();
}
/**
* <code>optional uint32 num = 2;</code>
* @return whether the num field is set
*/
public boolean hasNum() {
return (bitField0_ & 0x00000001) != 0;
}
/**
* <code>optional uint32 num = 2;</code>
* @return this
*/
public ExchangeHcoinScRsp clearNum() {
bitField0_ &= ~0x00000001;
num = 0;
return this;
}
/**
* <code>optional uint32 num = 2;</code>
* @return the num
*/
public int getNum() {
return num;
}
/**
* <code>optional uint32 num = 2;</code>
* @param value the num to set
* @return this
*/
public ExchangeHcoinScRsp setNum(final int value) {
bitField0_ |= 0x00000001;
num = value;
return this;
}
/**
* <code>optional uint32 retcode = 7;</code>
* @return whether the retcode field is set
*/
public boolean hasRetcode() {
return (bitField0_ & 0x00000002) != 0;
}
/**
* <code>optional uint32 retcode = 7;</code>
* @return this
*/
public ExchangeHcoinScRsp clearRetcode() {
bitField0_ &= ~0x00000002;
retcode = 0;
return this;
}
/**
* <code>optional uint32 retcode = 7;</code>
* @return the retcode
*/
public int getRetcode() {
return retcode;
}
/**
* <code>optional uint32 retcode = 7;</code>
* @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<ExchangeHcoinScRsp> getFactory() {
return ExchangeHcoinScRspFactory.INSTANCE;
}
private enum ExchangeHcoinScRspFactory implements MessageFactory<ExchangeHcoinScRsp> {
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");
}
}
}

View File

@@ -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);
}
}