diff --git a/src/generated/main/emu/lunarcore/proto/EnableRogueTalentCsReqOuterClass.java b/src/generated/main/emu/lunarcore/proto/EnableRogueTalentCsReqOuterClass.java new file mode 100644 index 0000000..306c67f --- /dev/null +++ b/src/generated/main/emu/lunarcore/proto/EnableRogueTalentCsReqOuterClass.java @@ -0,0 +1,260 @@ +// 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 EnableRogueTalentCsReqOuterClass { + /** + * Protobuf type {@code EnableRogueTalentCsReq} + */ + public static final class EnableRogueTalentCsReq extends ProtoMessage implements Cloneable { + private static final long serialVersionUID = 0L; + + /** + * optional uint32 talent_id = 8; + */ + private int talentId; + + private EnableRogueTalentCsReq() { + } + + /** + * @return a new empty instance of {@code EnableRogueTalentCsReq} + */ + public static EnableRogueTalentCsReq newInstance() { + return new EnableRogueTalentCsReq(); + } + + /** + * optional uint32 talent_id = 8; + * @return whether the talentId field is set + */ + public boolean hasTalentId() { + return (bitField0_ & 0x00000001) != 0; + } + + /** + * optional uint32 talent_id = 8; + * @return this + */ + public EnableRogueTalentCsReq clearTalentId() { + bitField0_ &= ~0x00000001; + talentId = 0; + return this; + } + + /** + * optional uint32 talent_id = 8; + * @return the talentId + */ + public int getTalentId() { + return talentId; + } + + /** + * optional uint32 talent_id = 8; + * @param value the talentId to set + * @return this + */ + public EnableRogueTalentCsReq setTalentId(final int value) { + bitField0_ |= 0x00000001; + talentId = value; + return this; + } + + @Override + public EnableRogueTalentCsReq copyFrom(final EnableRogueTalentCsReq other) { + cachedSize = other.cachedSize; + if ((bitField0_ | other.bitField0_) != 0) { + bitField0_ = other.bitField0_; + talentId = other.talentId; + } + return this; + } + + @Override + public EnableRogueTalentCsReq mergeFrom(final EnableRogueTalentCsReq other) { + if (other.isEmpty()) { + return this; + } + cachedSize = -1; + if (other.hasTalentId()) { + setTalentId(other.talentId); + } + return this; + } + + @Override + public EnableRogueTalentCsReq clear() { + if (isEmpty()) { + return this; + } + cachedSize = -1; + bitField0_ = 0; + talentId = 0; + return this; + } + + @Override + public EnableRogueTalentCsReq 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 EnableRogueTalentCsReq)) { + return false; + } + EnableRogueTalentCsReq other = (EnableRogueTalentCsReq) o; + return bitField0_ == other.bitField0_ + && (!hasTalentId() || talentId == other.talentId); + } + + @Override + public void writeTo(final ProtoSink output) throws IOException { + if ((bitField0_ & 0x00000001) != 0) { + output.writeRawByte((byte) 64); + output.writeUInt32NoTag(talentId); + } + } + + @Override + protected int computeSerializedSize() { + int size = 0; + if ((bitField0_ & 0x00000001) != 0) { + size += 1 + ProtoSink.computeUInt32SizeNoTag(talentId); + } + return size; + } + + @Override + @SuppressWarnings("fallthrough") + public EnableRogueTalentCsReq mergeFrom(final ProtoSource input) throws IOException { + // Enabled Fall-Through Optimization (QuickBuffers) + int tag = input.readTag(); + while (true) { + switch (tag) { + case 64: { + // talentId + talentId = input.readUInt32(); + bitField0_ |= 0x00000001; + 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.talentId, talentId); + } + output.endObject(); + } + + @Override + public EnableRogueTalentCsReq mergeFrom(final JsonSource input) throws IOException { + if (!input.beginObject()) { + return this; + } + while (!input.isAtEnd()) { + switch (input.readFieldHash()) { + case -615305433: + case -1894577842: { + if (input.isAtField(FieldNames.talentId)) { + if (!input.trySkipNullValue()) { + talentId = input.readUInt32(); + bitField0_ |= 0x00000001; + } + } else { + input.skipUnknownField(); + } + break; + } + default: { + input.skipUnknownField(); + break; + } + } + } + input.endObject(); + return this; + } + + @Override + public EnableRogueTalentCsReq clone() { + return new EnableRogueTalentCsReq().copyFrom(this); + } + + @Override + public boolean isEmpty() { + return ((bitField0_) == 0); + } + + public static EnableRogueTalentCsReq parseFrom(final byte[] data) throws + InvalidProtocolBufferException { + return ProtoMessage.mergeFrom(new EnableRogueTalentCsReq(), data).checkInitialized(); + } + + public static EnableRogueTalentCsReq parseFrom(final ProtoSource input) throws IOException { + return ProtoMessage.mergeFrom(new EnableRogueTalentCsReq(), input).checkInitialized(); + } + + public static EnableRogueTalentCsReq parseFrom(final JsonSource input) throws IOException { + return ProtoMessage.mergeFrom(new EnableRogueTalentCsReq(), input).checkInitialized(); + } + + /** + * @return factory for creating EnableRogueTalentCsReq messages + */ + public static MessageFactory getFactory() { + return EnableRogueTalentCsReqFactory.INSTANCE; + } + + private enum EnableRogueTalentCsReqFactory implements MessageFactory { + INSTANCE; + + @Override + public EnableRogueTalentCsReq create() { + return EnableRogueTalentCsReq.newInstance(); + } + } + + /** + * Contains name constants used for serializing JSON + */ + static class FieldNames { + static final FieldName talentId = FieldName.forField("talentId", "talent_id"); + } + } +} diff --git a/src/generated/main/emu/lunarcore/proto/EnableRogueTalentScRspOuterClass.java b/src/generated/main/emu/lunarcore/proto/EnableRogueTalentScRspOuterClass.java new file mode 100644 index 0000000..9b7dbaa --- /dev/null +++ b/src/generated/main/emu/lunarcore/proto/EnableRogueTalentScRspOuterClass.java @@ -0,0 +1,362 @@ +// 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 EnableRogueTalentScRspOuterClass { + /** + * Protobuf type {@code EnableRogueTalentScRsp} + */ + public static final class EnableRogueTalentScRsp extends ProtoMessage implements Cloneable { + private static final long serialVersionUID = 0L; + + /** + * optional uint32 retcode = 11; + */ + private int retcode; + + /** + * optional .RogueTalentInfo talent_info = 15; + */ + private final RogueTalentInfoOuterClass.RogueTalentInfo talentInfo = RogueTalentInfoOuterClass.RogueTalentInfo.newInstance(); + + private EnableRogueTalentScRsp() { + } + + /** + * @return a new empty instance of {@code EnableRogueTalentScRsp} + */ + public static EnableRogueTalentScRsp newInstance() { + return new EnableRogueTalentScRsp(); + } + + /** + * optional uint32 retcode = 11; + * @return whether the retcode field is set + */ + public boolean hasRetcode() { + return (bitField0_ & 0x00000001) != 0; + } + + /** + * optional uint32 retcode = 11; + * @return this + */ + public EnableRogueTalentScRsp clearRetcode() { + bitField0_ &= ~0x00000001; + retcode = 0; + return this; + } + + /** + * optional uint32 retcode = 11; + * @return the retcode + */ + public int getRetcode() { + return retcode; + } + + /** + * optional uint32 retcode = 11; + * @param value the retcode to set + * @return this + */ + public EnableRogueTalentScRsp setRetcode(final int value) { + bitField0_ |= 0x00000001; + retcode = value; + return this; + } + + /** + * optional .RogueTalentInfo talent_info = 15; + * @return whether the talentInfo field is set + */ + public boolean hasTalentInfo() { + return (bitField0_ & 0x00000002) != 0; + } + + /** + * optional .RogueTalentInfo talent_info = 15; + * @return this + */ + public EnableRogueTalentScRsp clearTalentInfo() { + bitField0_ &= ~0x00000002; + talentInfo.clear(); + return this; + } + + /** + * optional .RogueTalentInfo talent_info = 15; + * + * This method returns the internal storage object without modifying any has state. + * The returned object should not be modified and be treated as read-only. + * + * Use {@link #getMutableTalentInfo()} if you want to modify it. + * + * @return internal storage object for reading + */ + public RogueTalentInfoOuterClass.RogueTalentInfo getTalentInfo() { + return talentInfo; + } + + /** + * optional .RogueTalentInfo talent_info = 15; + * + * This method returns the internal storage object and sets the corresponding + * has state. The returned object will become part of this message and its + * contents may be modified as long as the has state is not cleared. + * + * @return internal storage object for modifications + */ + public RogueTalentInfoOuterClass.RogueTalentInfo getMutableTalentInfo() { + bitField0_ |= 0x00000002; + return talentInfo; + } + + /** + * optional .RogueTalentInfo talent_info = 15; + * @param value the talentInfo to set + * @return this + */ + public EnableRogueTalentScRsp setTalentInfo( + final RogueTalentInfoOuterClass.RogueTalentInfo value) { + bitField0_ |= 0x00000002; + talentInfo.copyFrom(value); + return this; + } + + @Override + public EnableRogueTalentScRsp copyFrom(final EnableRogueTalentScRsp other) { + cachedSize = other.cachedSize; + if ((bitField0_ | other.bitField0_) != 0) { + bitField0_ = other.bitField0_; + retcode = other.retcode; + talentInfo.copyFrom(other.talentInfo); + } + return this; + } + + @Override + public EnableRogueTalentScRsp mergeFrom(final EnableRogueTalentScRsp other) { + if (other.isEmpty()) { + return this; + } + cachedSize = -1; + if (other.hasRetcode()) { + setRetcode(other.retcode); + } + if (other.hasTalentInfo()) { + getMutableTalentInfo().mergeFrom(other.talentInfo); + } + return this; + } + + @Override + public EnableRogueTalentScRsp clear() { + if (isEmpty()) { + return this; + } + cachedSize = -1; + bitField0_ = 0; + retcode = 0; + talentInfo.clear(); + return this; + } + + @Override + public EnableRogueTalentScRsp clearQuick() { + if (isEmpty()) { + return this; + } + cachedSize = -1; + bitField0_ = 0; + talentInfo.clearQuick(); + return this; + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (!(o instanceof EnableRogueTalentScRsp)) { + return false; + } + EnableRogueTalentScRsp other = (EnableRogueTalentScRsp) o; + return bitField0_ == other.bitField0_ + && (!hasRetcode() || retcode == other.retcode) + && (!hasTalentInfo() || talentInfo.equals(other.talentInfo)); + } + + @Override + public void writeTo(final ProtoSink output) throws IOException { + if ((bitField0_ & 0x00000001) != 0) { + output.writeRawByte((byte) 88); + output.writeUInt32NoTag(retcode); + } + if ((bitField0_ & 0x00000002) != 0) { + output.writeRawByte((byte) 122); + output.writeMessageNoTag(talentInfo); + } + } + + @Override + protected int computeSerializedSize() { + int size = 0; + if ((bitField0_ & 0x00000001) != 0) { + size += 1 + ProtoSink.computeUInt32SizeNoTag(retcode); + } + if ((bitField0_ & 0x00000002) != 0) { + size += 1 + ProtoSink.computeMessageSizeNoTag(talentInfo); + } + return size; + } + + @Override + @SuppressWarnings("fallthrough") + public EnableRogueTalentScRsp mergeFrom(final ProtoSource input) throws IOException { + // Enabled Fall-Through Optimization (QuickBuffers) + int tag = input.readTag(); + while (true) { + switch (tag) { + case 88: { + // retcode + retcode = input.readUInt32(); + bitField0_ |= 0x00000001; + tag = input.readTag(); + if (tag != 122) { + break; + } + } + case 122: { + // talentInfo + input.readMessage(talentInfo); + 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.retcode, retcode); + } + if ((bitField0_ & 0x00000002) != 0) { + output.writeMessage(FieldNames.talentInfo, talentInfo); + } + output.endObject(); + } + + @Override + public EnableRogueTalentScRsp mergeFrom(final JsonSource input) throws IOException { + if (!input.beginObject()) { + return this; + } + while (!input.isAtEnd()) { + switch (input.readFieldHash()) { + case 1097936398: { + if (input.isAtField(FieldNames.retcode)) { + if (!input.trySkipNullValue()) { + retcode = input.readUInt32(); + bitField0_ |= 0x00000001; + } + } else { + input.skipUnknownField(); + } + break; + } + case 1396978618: + case 376840225: { + if (input.isAtField(FieldNames.talentInfo)) { + if (!input.trySkipNullValue()) { + input.readMessage(talentInfo); + bitField0_ |= 0x00000002; + } + } else { + input.skipUnknownField(); + } + break; + } + default: { + input.skipUnknownField(); + break; + } + } + } + input.endObject(); + return this; + } + + @Override + public EnableRogueTalentScRsp clone() { + return new EnableRogueTalentScRsp().copyFrom(this); + } + + @Override + public boolean isEmpty() { + return ((bitField0_) == 0); + } + + public static EnableRogueTalentScRsp parseFrom(final byte[] data) throws + InvalidProtocolBufferException { + return ProtoMessage.mergeFrom(new EnableRogueTalentScRsp(), data).checkInitialized(); + } + + public static EnableRogueTalentScRsp parseFrom(final ProtoSource input) throws IOException { + return ProtoMessage.mergeFrom(new EnableRogueTalentScRsp(), input).checkInitialized(); + } + + public static EnableRogueTalentScRsp parseFrom(final JsonSource input) throws IOException { + return ProtoMessage.mergeFrom(new EnableRogueTalentScRsp(), input).checkInitialized(); + } + + /** + * @return factory for creating EnableRogueTalentScRsp messages + */ + public static MessageFactory getFactory() { + return EnableRogueTalentScRspFactory.INSTANCE; + } + + private enum EnableRogueTalentScRspFactory implements MessageFactory { + INSTANCE; + + @Override + public EnableRogueTalentScRsp create() { + return EnableRogueTalentScRsp.newInstance(); + } + } + + /** + * Contains name constants used for serializing JSON + */ + static class FieldNames { + static final FieldName retcode = FieldName.forField("retcode"); + + static final FieldName talentInfo = FieldName.forField("talentInfo", "talent_info"); + } + } +} diff --git a/src/generated/main/emu/lunarcore/proto/RogueInfoOuterClass.java b/src/generated/main/emu/lunarcore/proto/RogueInfoOuterClass.java index 16d2686..93dcf92 100644 --- a/src/generated/main/emu/lunarcore/proto/RogueInfoOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/RogueInfoOuterClass.java @@ -56,9 +56,9 @@ public final class RogueInfoOuterClass { private int status; /** - * optional .RogueVirtualItems rogue_virtual_items = 5; + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 5; */ - private final RogueVirtualItemsOuterClass.RogueVirtualItems rogueVirtualItems = RogueVirtualItemsOuterClass.RogueVirtualItems.newInstance(); + private final RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo rogueVirtualItemInfo = RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo.newInstance(); /** * optional .RogueCurrentInfo rogue_progress = 83; @@ -390,39 +390,39 @@ public final class RogueInfoOuterClass { } /** - * optional .RogueVirtualItems rogue_virtual_items = 5; - * @return whether the rogueVirtualItems field is set + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 5; + * @return whether the rogueVirtualItemInfo field is set */ - public boolean hasRogueVirtualItems() { + public boolean hasRogueVirtualItemInfo() { return (bitField0_ & 0x00000080) != 0; } /** - * optional .RogueVirtualItems rogue_virtual_items = 5; + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 5; * @return this */ - public RogueInfo clearRogueVirtualItems() { + public RogueInfo clearRogueVirtualItemInfo() { bitField0_ &= ~0x00000080; - rogueVirtualItems.clear(); + rogueVirtualItemInfo.clear(); return this; } /** - * optional .RogueVirtualItems rogue_virtual_items = 5; + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 5; * * This method returns the internal storage object without modifying any has state. * The returned object should not be modified and be treated as read-only. * - * Use {@link #getMutableRogueVirtualItems()} if you want to modify it. + * Use {@link #getMutableRogueVirtualItemInfo()} if you want to modify it. * * @return internal storage object for reading */ - public RogueVirtualItemsOuterClass.RogueVirtualItems getRogueVirtualItems() { - return rogueVirtualItems; + public RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo getRogueVirtualItemInfo() { + return rogueVirtualItemInfo; } /** - * optional .RogueVirtualItems rogue_virtual_items = 5; + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 5; * * This method returns the internal storage object and sets the corresponding * has state. The returned object will become part of this message and its @@ -430,20 +430,20 @@ public final class RogueInfoOuterClass { * * @return internal storage object for modifications */ - public RogueVirtualItemsOuterClass.RogueVirtualItems getMutableRogueVirtualItems() { + public RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo getMutableRogueVirtualItemInfo() { bitField0_ |= 0x00000080; - return rogueVirtualItems; + return rogueVirtualItemInfo; } /** - * optional .RogueVirtualItems rogue_virtual_items = 5; - * @param value the rogueVirtualItems to set + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 5; + * @param value the rogueVirtualItemInfo to set * @return this */ - public RogueInfo setRogueVirtualItems( - final RogueVirtualItemsOuterClass.RogueVirtualItems value) { + public RogueInfo setRogueVirtualItemInfo( + final RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo value) { bitField0_ |= 0x00000080; - rogueVirtualItems.copyFrom(value); + rogueVirtualItemInfo.copyFrom(value); return this; } @@ -881,7 +881,7 @@ public final class RogueInfoOuterClass { talentPoints = other.talentPoints; hDBPIDMBJOH = other.hDBPIDMBJOH; status = other.status; - rogueVirtualItems.copyFrom(other.rogueVirtualItems); + rogueVirtualItemInfo.copyFrom(other.rogueVirtualItemInfo); rogueProgress.copyFrom(other.rogueProgress); rogueData.copyFrom(other.rogueData); rogueAeonInfo.copyFrom(other.rogueAeonInfo); @@ -920,8 +920,8 @@ public final class RogueInfoOuterClass { if (other.hasStatus()) { setStatusValue(other.status); } - if (other.hasRogueVirtualItems()) { - getMutableRogueVirtualItems().mergeFrom(other.rogueVirtualItems); + if (other.hasRogueVirtualItemInfo()) { + getMutableRogueVirtualItemInfo().mergeFrom(other.rogueVirtualItemInfo); } if (other.hasRogueProgress()) { getMutableRogueProgress().mergeFrom(other.rogueProgress); @@ -961,7 +961,7 @@ public final class RogueInfoOuterClass { talentPoints = 0; hDBPIDMBJOH = 0; status = 0; - rogueVirtualItems.clear(); + rogueVirtualItemInfo.clear(); rogueProgress.clear(); rogueData.clear(); rogueAeonInfo.clear(); @@ -979,7 +979,7 @@ public final class RogueInfoOuterClass { } cachedSize = -1; bitField0_ = 0; - rogueVirtualItems.clearQuick(); + rogueVirtualItemInfo.clearQuick(); rogueProgress.clearQuick(); rogueData.clearQuick(); rogueAeonInfo.clearQuick(); @@ -1007,7 +1007,7 @@ public final class RogueInfoOuterClass { && (!hasTalentPoints() || talentPoints == other.talentPoints) && (!hasHDBPIDMBJOH() || hDBPIDMBJOH == other.hDBPIDMBJOH) && (!hasStatus() || status == other.status) - && (!hasRogueVirtualItems() || rogueVirtualItems.equals(other.rogueVirtualItems)) + && (!hasRogueVirtualItemInfo() || rogueVirtualItemInfo.equals(other.rogueVirtualItemInfo)) && (!hasRogueProgress() || rogueProgress.equals(other.rogueProgress)) && (!hasRogueData() || rogueData.equals(other.rogueData)) && (!hasRogueAeonInfo() || rogueAeonInfo.equals(other.rogueAeonInfo)) @@ -1049,7 +1049,7 @@ public final class RogueInfoOuterClass { } if ((bitField0_ & 0x00000080) != 0) { output.writeRawByte((byte) 42); - output.writeMessageNoTag(rogueVirtualItems); + output.writeMessageNoTag(rogueVirtualItemInfo); } if ((bitField0_ & 0x00000100) != 0) { output.writeRawLittleEndian16((short) 1434); @@ -1110,7 +1110,7 @@ public final class RogueInfoOuterClass { size += 1 + ProtoSink.computeEnumSizeNoTag(status); } if ((bitField0_ & 0x00000080) != 0) { - size += 1 + ProtoSink.computeMessageSizeNoTag(rogueVirtualItems); + size += 1 + ProtoSink.computeMessageSizeNoTag(rogueVirtualItemInfo); } if ((bitField0_ & 0x00000100) != 0) { size += 2 + ProtoSink.computeMessageSizeNoTag(rogueProgress); @@ -1210,8 +1210,8 @@ public final class RogueInfoOuterClass { } } case 42: { - // rogueVirtualItems - input.readMessage(rogueVirtualItems); + // rogueVirtualItemInfo + input.readMessage(rogueVirtualItemInfo); bitField0_ |= 0x00000080; tag = input.readTag(); if (tag != 666) { @@ -1325,7 +1325,7 @@ public final class RogueInfoOuterClass { output.writeEnum(FieldNames.status, status, RogueStatusOuterClass.RogueStatus.converter()); } if ((bitField0_ & 0x00000080) != 0) { - output.writeMessage(FieldNames.rogueVirtualItems, rogueVirtualItems); + output.writeMessage(FieldNames.rogueVirtualItemInfo, rogueVirtualItemInfo); } if ((bitField0_ & 0x00000100) != 0) { output.writeMessage(FieldNames.rogueProgress, rogueProgress); @@ -1444,11 +1444,11 @@ public final class RogueInfoOuterClass { } break; } - case 370696815: - case -768163865: { - if (input.isAtField(FieldNames.rogueVirtualItems)) { + case 1066755410: + case 1452147457: { + if (input.isAtField(FieldNames.rogueVirtualItemInfo)) { if (!input.trySkipNullValue()) { - input.readMessage(rogueVirtualItems); + input.readMessage(rogueVirtualItemInfo); bitField0_ |= 0x00000080; } } else { @@ -1606,7 +1606,7 @@ public final class RogueInfoOuterClass { static final FieldName status = FieldName.forField("status"); - static final FieldName rogueVirtualItems = FieldName.forField("rogueVirtualItems", "rogue_virtual_items"); + static final FieldName rogueVirtualItemInfo = FieldName.forField("rogueVirtualItemInfo", "rogue_virtual_item_info"); static final FieldName rogueProgress = FieldName.forField("rogueProgress", "rogue_progress"); diff --git a/src/generated/main/emu/lunarcore/proto/RogueVirtualItemsOuterClass.java b/src/generated/main/emu/lunarcore/proto/RogueVirtualItemInfoOuterClass.java similarity index 82% rename from src/generated/main/emu/lunarcore/proto/RogueVirtualItemsOuterClass.java rename to src/generated/main/emu/lunarcore/proto/RogueVirtualItemInfoOuterClass.java index 7fb2cf5..9226931 100644 --- a/src/generated/main/emu/lunarcore/proto/RogueVirtualItemsOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/RogueVirtualItemInfoOuterClass.java @@ -11,11 +11,11 @@ import us.hebi.quickbuf.ProtoMessage; import us.hebi.quickbuf.ProtoSink; import us.hebi.quickbuf.ProtoSource; -public final class RogueVirtualItemsOuterClass { +public final class RogueVirtualItemInfoOuterClass { /** - * Protobuf type {@code RogueVirtualItems} + * Protobuf type {@code RogueVirtualItemInfo} */ - public static final class RogueVirtualItems extends ProtoMessage implements Cloneable { + public static final class RogueVirtualItemInfo extends ProtoMessage implements Cloneable { private static final long serialVersionUID = 0L; /** @@ -38,14 +38,14 @@ public final class RogueVirtualItemsOuterClass { */ private int rogueTalentPoints; - private RogueVirtualItems() { + private RogueVirtualItemInfo() { } /** - * @return a new empty instance of {@code RogueVirtualItems} + * @return a new empty instance of {@code RogueVirtualItemInfo} */ - public static RogueVirtualItems newInstance() { - return new RogueVirtualItems(); + public static RogueVirtualItemInfo newInstance() { + return new RogueVirtualItemInfo(); } /** @@ -60,7 +60,7 @@ public final class RogueVirtualItemsOuterClass { * optional uint32 ALLDDMKKICK = 1; * @return this */ - public RogueVirtualItems clearALLDDMKKICK() { + public RogueVirtualItemInfo clearALLDDMKKICK() { bitField0_ &= ~0x00000001; aLLDDMKKICK = 0; return this; @@ -79,7 +79,7 @@ public final class RogueVirtualItemsOuterClass { * @param value the aLLDDMKKICK to set * @return this */ - public RogueVirtualItems setALLDDMKKICK(final int value) { + public RogueVirtualItemInfo setALLDDMKKICK(final int value) { bitField0_ |= 0x00000001; aLLDDMKKICK = value; return this; @@ -97,7 +97,7 @@ public final class RogueVirtualItemsOuterClass { * optional uint32 DOMMGENHGKE = 4; * @return this */ - public RogueVirtualItems clearDOMMGENHGKE() { + public RogueVirtualItemInfo clearDOMMGENHGKE() { bitField0_ &= ~0x00000002; dOMMGENHGKE = 0; return this; @@ -116,7 +116,7 @@ public final class RogueVirtualItemsOuterClass { * @param value the dOMMGENHGKE to set * @return this */ - public RogueVirtualItems setDOMMGENHGKE(final int value) { + public RogueVirtualItemInfo setDOMMGENHGKE(final int value) { bitField0_ |= 0x00000002; dOMMGENHGKE = value; return this; @@ -134,7 +134,7 @@ public final class RogueVirtualItemsOuterClass { * optional uint32 KMAGFHIIALA = 10; * @return this */ - public RogueVirtualItems clearKMAGFHIIALA() { + public RogueVirtualItemInfo clearKMAGFHIIALA() { bitField0_ &= ~0x00000004; kMAGFHIIALA = 0; return this; @@ -153,7 +153,7 @@ public final class RogueVirtualItemsOuterClass { * @param value the kMAGFHIIALA to set * @return this */ - public RogueVirtualItems setKMAGFHIIALA(final int value) { + public RogueVirtualItemInfo setKMAGFHIIALA(final int value) { bitField0_ |= 0x00000004; kMAGFHIIALA = value; return this; @@ -171,7 +171,7 @@ public final class RogueVirtualItemsOuterClass { * optional uint32 rogue_talent_points = 14; * @return this */ - public RogueVirtualItems clearRogueTalentPoints() { + public RogueVirtualItemInfo clearRogueTalentPoints() { bitField0_ &= ~0x00000008; rogueTalentPoints = 0; return this; @@ -190,14 +190,14 @@ public final class RogueVirtualItemsOuterClass { * @param value the rogueTalentPoints to set * @return this */ - public RogueVirtualItems setRogueTalentPoints(final int value) { + public RogueVirtualItemInfo setRogueTalentPoints(final int value) { bitField0_ |= 0x00000008; rogueTalentPoints = value; return this; } @Override - public RogueVirtualItems copyFrom(final RogueVirtualItems other) { + public RogueVirtualItemInfo copyFrom(final RogueVirtualItemInfo other) { cachedSize = other.cachedSize; if ((bitField0_ | other.bitField0_) != 0) { bitField0_ = other.bitField0_; @@ -210,7 +210,7 @@ public final class RogueVirtualItemsOuterClass { } @Override - public RogueVirtualItems mergeFrom(final RogueVirtualItems other) { + public RogueVirtualItemInfo mergeFrom(final RogueVirtualItemInfo other) { if (other.isEmpty()) { return this; } @@ -231,7 +231,7 @@ public final class RogueVirtualItemsOuterClass { } @Override - public RogueVirtualItems clear() { + public RogueVirtualItemInfo clear() { if (isEmpty()) { return this; } @@ -245,7 +245,7 @@ public final class RogueVirtualItemsOuterClass { } @Override - public RogueVirtualItems clearQuick() { + public RogueVirtualItemInfo clearQuick() { if (isEmpty()) { return this; } @@ -259,10 +259,10 @@ public final class RogueVirtualItemsOuterClass { if (o == this) { return true; } - if (!(o instanceof RogueVirtualItems)) { + if (!(o instanceof RogueVirtualItemInfo)) { return false; } - RogueVirtualItems other = (RogueVirtualItems) o; + RogueVirtualItemInfo other = (RogueVirtualItemInfo) o; return bitField0_ == other.bitField0_ && (!hasALLDDMKKICK() || aLLDDMKKICK == other.aLLDDMKKICK) && (!hasDOMMGENHGKE() || dOMMGENHGKE == other.dOMMGENHGKE) @@ -310,7 +310,7 @@ public final class RogueVirtualItemsOuterClass { @Override @SuppressWarnings("fallthrough") - public RogueVirtualItems mergeFrom(final ProtoSource input) throws IOException { + public RogueVirtualItemInfo mergeFrom(final ProtoSource input) throws IOException { // Enabled Fall-Through Optimization (QuickBuffers) int tag = input.readTag(); while (true) { @@ -384,7 +384,7 @@ public final class RogueVirtualItemsOuterClass { } @Override - public RogueVirtualItems mergeFrom(final JsonSource input) throws IOException { + public RogueVirtualItemInfo mergeFrom(final JsonSource input) throws IOException { if (!input.beginObject()) { return this; } @@ -446,8 +446,8 @@ public final class RogueVirtualItemsOuterClass { } @Override - public RogueVirtualItems clone() { - return new RogueVirtualItems().copyFrom(this); + public RogueVirtualItemInfo clone() { + return new RogueVirtualItemInfo().copyFrom(this); } @Override @@ -455,32 +455,32 @@ public final class RogueVirtualItemsOuterClass { return ((bitField0_) == 0); } - public static RogueVirtualItems parseFrom(final byte[] data) throws + public static RogueVirtualItemInfo parseFrom(final byte[] data) throws InvalidProtocolBufferException { - return ProtoMessage.mergeFrom(new RogueVirtualItems(), data).checkInitialized(); + return ProtoMessage.mergeFrom(new RogueVirtualItemInfo(), data).checkInitialized(); } - public static RogueVirtualItems parseFrom(final ProtoSource input) throws IOException { - return ProtoMessage.mergeFrom(new RogueVirtualItems(), input).checkInitialized(); + public static RogueVirtualItemInfo parseFrom(final ProtoSource input) throws IOException { + return ProtoMessage.mergeFrom(new RogueVirtualItemInfo(), input).checkInitialized(); } - public static RogueVirtualItems parseFrom(final JsonSource input) throws IOException { - return ProtoMessage.mergeFrom(new RogueVirtualItems(), input).checkInitialized(); + public static RogueVirtualItemInfo parseFrom(final JsonSource input) throws IOException { + return ProtoMessage.mergeFrom(new RogueVirtualItemInfo(), input).checkInitialized(); } /** - * @return factory for creating RogueVirtualItems messages + * @return factory for creating RogueVirtualItemInfo messages */ - public static MessageFactory getFactory() { - return RogueVirtualItemsFactory.INSTANCE; + public static MessageFactory getFactory() { + return RogueVirtualItemInfoFactory.INSTANCE; } - private enum RogueVirtualItemsFactory implements MessageFactory { + private enum RogueVirtualItemInfoFactory implements MessageFactory { INSTANCE; @Override - public RogueVirtualItems create() { - return RogueVirtualItems.newInstance(); + public RogueVirtualItemInfo create() { + return RogueVirtualItemInfo.newInstance(); } } diff --git a/src/generated/main/emu/lunarcore/proto/SyncRogueVirtualItemInfoScNotifyOuterClass.java b/src/generated/main/emu/lunarcore/proto/SyncRogueVirtualItemInfoScNotifyOuterClass.java new file mode 100644 index 0000000..c6b896b --- /dev/null +++ b/src/generated/main/emu/lunarcore/proto/SyncRogueVirtualItemInfoScNotifyOuterClass.java @@ -0,0 +1,285 @@ +// 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 SyncRogueVirtualItemInfoScNotifyOuterClass { + /** + * Protobuf type {@code SyncRogueVirtualItemInfoScNotify} + */ + public static final class SyncRogueVirtualItemInfoScNotify extends ProtoMessage implements Cloneable { + private static final long serialVersionUID = 0L; + + /** + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 15; + */ + private final RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo rogueVirtualItemInfo = RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo.newInstance(); + + private SyncRogueVirtualItemInfoScNotify() { + } + + /** + * @return a new empty instance of {@code SyncRogueVirtualItemInfoScNotify} + */ + public static SyncRogueVirtualItemInfoScNotify newInstance() { + return new SyncRogueVirtualItemInfoScNotify(); + } + + /** + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 15; + * @return whether the rogueVirtualItemInfo field is set + */ + public boolean hasRogueVirtualItemInfo() { + return (bitField0_ & 0x00000001) != 0; + } + + /** + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 15; + * @return this + */ + public SyncRogueVirtualItemInfoScNotify clearRogueVirtualItemInfo() { + bitField0_ &= ~0x00000001; + rogueVirtualItemInfo.clear(); + return this; + } + + /** + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 15; + * + * This method returns the internal storage object without modifying any has state. + * The returned object should not be modified and be treated as read-only. + * + * Use {@link #getMutableRogueVirtualItemInfo()} if you want to modify it. + * + * @return internal storage object for reading + */ + public RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo getRogueVirtualItemInfo() { + return rogueVirtualItemInfo; + } + + /** + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 15; + * + * This method returns the internal storage object and sets the corresponding + * has state. The returned object will become part of this message and its + * contents may be modified as long as the has state is not cleared. + * + * @return internal storage object for modifications + */ + public RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo getMutableRogueVirtualItemInfo() { + bitField0_ |= 0x00000001; + return rogueVirtualItemInfo; + } + + /** + * optional .RogueVirtualItemInfo rogue_virtual_item_info = 15; + * @param value the rogueVirtualItemInfo to set + * @return this + */ + public SyncRogueVirtualItemInfoScNotify setRogueVirtualItemInfo( + final RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo value) { + bitField0_ |= 0x00000001; + rogueVirtualItemInfo.copyFrom(value); + return this; + } + + @Override + public SyncRogueVirtualItemInfoScNotify copyFrom(final SyncRogueVirtualItemInfoScNotify other) { + cachedSize = other.cachedSize; + if ((bitField0_ | other.bitField0_) != 0) { + bitField0_ = other.bitField0_; + rogueVirtualItemInfo.copyFrom(other.rogueVirtualItemInfo); + } + return this; + } + + @Override + public SyncRogueVirtualItemInfoScNotify mergeFrom( + final SyncRogueVirtualItemInfoScNotify other) { + if (other.isEmpty()) { + return this; + } + cachedSize = -1; + if (other.hasRogueVirtualItemInfo()) { + getMutableRogueVirtualItemInfo().mergeFrom(other.rogueVirtualItemInfo); + } + return this; + } + + @Override + public SyncRogueVirtualItemInfoScNotify clear() { + if (isEmpty()) { + return this; + } + cachedSize = -1; + bitField0_ = 0; + rogueVirtualItemInfo.clear(); + return this; + } + + @Override + public SyncRogueVirtualItemInfoScNotify clearQuick() { + if (isEmpty()) { + return this; + } + cachedSize = -1; + bitField0_ = 0; + rogueVirtualItemInfo.clearQuick(); + return this; + } + + @Override + public boolean equals(Object o) { + if (o == this) { + return true; + } + if (!(o instanceof SyncRogueVirtualItemInfoScNotify)) { + return false; + } + SyncRogueVirtualItemInfoScNotify other = (SyncRogueVirtualItemInfoScNotify) o; + return bitField0_ == other.bitField0_ + && (!hasRogueVirtualItemInfo() || rogueVirtualItemInfo.equals(other.rogueVirtualItemInfo)); + } + + @Override + public void writeTo(final ProtoSink output) throws IOException { + if ((bitField0_ & 0x00000001) != 0) { + output.writeRawByte((byte) 122); + output.writeMessageNoTag(rogueVirtualItemInfo); + } + } + + @Override + protected int computeSerializedSize() { + int size = 0; + if ((bitField0_ & 0x00000001) != 0) { + size += 1 + ProtoSink.computeMessageSizeNoTag(rogueVirtualItemInfo); + } + return size; + } + + @Override + @SuppressWarnings("fallthrough") + public SyncRogueVirtualItemInfoScNotify mergeFrom(final ProtoSource input) throws IOException { + // Enabled Fall-Through Optimization (QuickBuffers) + int tag = input.readTag(); + while (true) { + switch (tag) { + case 122: { + // rogueVirtualItemInfo + input.readMessage(rogueVirtualItemInfo); + bitField0_ |= 0x00000001; + 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.writeMessage(FieldNames.rogueVirtualItemInfo, rogueVirtualItemInfo); + } + output.endObject(); + } + + @Override + public SyncRogueVirtualItemInfoScNotify mergeFrom(final JsonSource input) throws IOException { + if (!input.beginObject()) { + return this; + } + while (!input.isAtEnd()) { + switch (input.readFieldHash()) { + case 1066755410: + case 1452147457: { + if (input.isAtField(FieldNames.rogueVirtualItemInfo)) { + if (!input.trySkipNullValue()) { + input.readMessage(rogueVirtualItemInfo); + bitField0_ |= 0x00000001; + } + } else { + input.skipUnknownField(); + } + break; + } + default: { + input.skipUnknownField(); + break; + } + } + } + input.endObject(); + return this; + } + + @Override + public SyncRogueVirtualItemInfoScNotify clone() { + return new SyncRogueVirtualItemInfoScNotify().copyFrom(this); + } + + @Override + public boolean isEmpty() { + return ((bitField0_) == 0); + } + + public static SyncRogueVirtualItemInfoScNotify parseFrom(final byte[] data) throws + InvalidProtocolBufferException { + return ProtoMessage.mergeFrom(new SyncRogueVirtualItemInfoScNotify(), data).checkInitialized(); + } + + public static SyncRogueVirtualItemInfoScNotify parseFrom(final ProtoSource input) throws + IOException { + return ProtoMessage.mergeFrom(new SyncRogueVirtualItemInfoScNotify(), input).checkInitialized(); + } + + public static SyncRogueVirtualItemInfoScNotify parseFrom(final JsonSource input) throws + IOException { + return ProtoMessage.mergeFrom(new SyncRogueVirtualItemInfoScNotify(), input).checkInitialized(); + } + + /** + * @return factory for creating SyncRogueVirtualItemInfoScNotify messages + */ + public static MessageFactory getFactory() { + return SyncRogueVirtualItemInfoScNotifyFactory.INSTANCE; + } + + private enum SyncRogueVirtualItemInfoScNotifyFactory implements MessageFactory { + INSTANCE; + + @Override + public SyncRogueVirtualItemInfoScNotify create() { + return SyncRogueVirtualItemInfoScNotify.newInstance(); + } + } + + /** + * Contains name constants used for serializing JSON + */ + static class FieldNames { + static final FieldName rogueVirtualItemInfo = FieldName.forField("rogueVirtualItemInfo", "rogue_virtual_item_info"); + } + } +} diff --git a/src/main/java/emu/lunarcore/game/player/Player.java b/src/main/java/emu/lunarcore/game/player/Player.java index 5dec1f0..69d8c47 100644 --- a/src/main/java/emu/lunarcore/game/player/Player.java +++ b/src/main/java/emu/lunarcore/game/player/Player.java @@ -38,6 +38,7 @@ import emu.lunarcore.game.scene.triggers.PropTriggerType; import emu.lunarcore.proto.BoardDataSyncOuterClass.BoardDataSync; import emu.lunarcore.proto.HeadIconOuterClass.HeadIcon; import emu.lunarcore.proto.PlayerBasicInfoOuterClass.PlayerBasicInfo; +import emu.lunarcore.proto.RogueVirtualItemInfoOuterClass.RogueVirtualItemInfo; import emu.lunarcore.server.game.GameServer; import emu.lunarcore.server.game.GameSession; import emu.lunarcore.server.packet.BasePacket; @@ -45,6 +46,7 @@ import emu.lunarcore.server.packet.SessionState; import emu.lunarcore.server.packet.send.PacketEnterSceneByServerScNotify; import emu.lunarcore.server.packet.send.PacketPlayerSyncScNotify; import emu.lunarcore.server.packet.send.PacketSceneEntityMoveScNotify; +import emu.lunarcore.server.packet.send.PacketSyncRogueVirtualItemInfoScNotify; import emu.lunarcore.util.Position; import lombok.Getter; @@ -303,6 +305,7 @@ public class Player { public void addTalentPoints(int amount) { this.talentPoints += amount; + this.sendPacket(new PacketSyncRogueVirtualItemInfoScNotify(this)); } public void addStamina(int amount) { @@ -548,7 +551,8 @@ public class Player { this.getInventory().loadFromDatabase(); this.getMailbox().loadFromDatabase(); this.getChallengeManager().loadFromDatabase(); - + this.getRogueManager().loadFromDatabase(); + // Load Etc this.getLineupManager().validate(this); this.getAvatars().setupHeroPaths(); @@ -588,4 +592,11 @@ public class Player { return proto; } + + public RogueVirtualItemInfo toRogueVirtualItemsProto() { + var proto = RogueVirtualItemInfo.newInstance() + .setRogueTalentPoints(this.getTalentPoints()); + + return proto; + } } diff --git a/src/main/java/emu/lunarcore/game/rogue/RogueManager.java b/src/main/java/emu/lunarcore/game/rogue/RogueManager.java index ce54c99..91b3409 100644 --- a/src/main/java/emu/lunarcore/game/rogue/RogueManager.java +++ b/src/main/java/emu/lunarcore/game/rogue/RogueManager.java @@ -4,8 +4,10 @@ import java.util.Arrays; import java.util.concurrent.TimeUnit; import emu.lunarcore.GameConstants; +import emu.lunarcore.LunarCore; import emu.lunarcore.data.GameData; import emu.lunarcore.data.GameDepot; +import emu.lunarcore.data.excel.RogueTalentExcel; import emu.lunarcore.game.player.BasePlayerManager; import emu.lunarcore.game.player.Player; import emu.lunarcore.game.player.PlayerLineup; @@ -17,15 +19,53 @@ import emu.lunarcore.proto.RogueInfoDataOuterClass.RogueInfoData; import emu.lunarcore.proto.RogueInfoOuterClass.RogueInfo; import emu.lunarcore.proto.RogueScoreRewardInfoOuterClass.RogueScoreRewardInfo; import emu.lunarcore.proto.RogueSeasonInfoOuterClass.RogueSeasonInfo; +import emu.lunarcore.proto.RogueTalentInfoOuterClass.RogueTalentInfo; +import emu.lunarcore.proto.RogueTalentOuterClass.RogueTalent; +import emu.lunarcore.proto.RogueTalentStatusOuterClass.RogueTalentStatus; import emu.lunarcore.server.packet.CmdId; import emu.lunarcore.server.packet.send.PacketStartRogueScRsp; +import it.unimi.dsi.fastutil.ints.IntOpenHashSet; +import it.unimi.dsi.fastutil.ints.IntSet; +import lombok.Getter; import us.hebi.quickbuf.RepeatedInt; +@Getter public class RogueManager extends BasePlayerManager { + private IntSet talents; public RogueManager(Player player) { super(player); + this.talents = new IntOpenHashSet(); + } + + public boolean hasTalent(int talentId) { + return this.getTalents().contains(talentId); + } + + public boolean enableTalent(int talentId) { + // Sanity check so we dont enable the same talent + if (this.getTalents().contains(talentId)) { + return false; + } + + // Get talent excel + RogueTalentExcel excel = GameData.getRogueTalentExcelMap().get(talentId); + if (excel == null) return false; + + // Verify items + if (!getPlayer().getInventory().verifyItems(excel.getCost())) { + return false; + } + + // Pay items + getPlayer().getInventory().removeItemsByParams(excel.getCost()); + + // Add talent + RogueTalentData talent = new RogueTalentData(getPlayer(), excel.getTalentID()); + talent.save(); + + return getTalents().add(talentId); } public void startRogue(int areaId, int aeonId, RepeatedInt avatarIdList) { @@ -133,26 +173,24 @@ public class RogueManager extends BasePlayerManager { .setRogueScoreInfo(score) .setRogueAeonInfo(aeonInfo) .setRogueData(data) + .setRogueVirtualItemInfo(getPlayer().toRogueVirtualItemsProto()) .setTalentPoints(getPlayer().getTalentPoints()) .setSeasonId(seasonId) .setBeginTime(beginTime) .setEndTime(endTime); - proto.getMutableRogueVirtualItems() - .setRogueTalentPoints(getPlayer().getTalentPoints()); - // Rogue data - RogueInstance curRogue = this.getPlayer().getRogueInstance(); - if (curRogue != null) { - proto.setStatus(curRogue.getStatus()); + RogueInstance instance = this.getPlayer().getRogueInstance(); + if (instance != null) { + proto.setStatus(instance.getStatus()); proto.setRogueProgress(this.getPlayer().getRogueInstance().toProto()); proto.setRoomMap(proto.getRogueProgress().getRoomMap()); - for (int id : curRogue.getBaseAvatarIds()) { + for (int id : instance.getBaseAvatarIds()) { proto.addBaseAvatarIdList(id); } - aeonInfo.setSelectedAeonId(curRogue.getAeonId()); + aeonInfo.setSelectedAeonId(instance.getAeonId()); } // Add areas @@ -165,10 +203,10 @@ public class RogueManager extends BasePlayerManager { .setAreaId(excel.getRogueAreaID()) .setRogueAreaStatus(RogueAreaStatus.ROGUE_AREA_STATUS_FIRST_PASS); - if (curRogue != null && excel == curRogue.getExcel()) { - area.setMapId(curRogue.getExcel().getMapId()); - area.setCurReachRoomNum(curRogue.getCurrentRoomProgress()); - area.setRogueStatus(curRogue.getStatus()); + if (instance != null && excel == instance.getExcel()) { + area.setMapId(instance.getExcel().getMapId()); + area.setCurReachRoomNum(instance.getCurrentRoomProgress()); + area.setRogueStatus(instance.getStatus()); } proto.addRogueAreaList(area); @@ -177,4 +215,34 @@ public class RogueManager extends BasePlayerManager { return proto; } + + public RogueTalentInfo toTalentInfoProto() { + var proto = RogueTalentInfo.newInstance(); + + for (RogueTalentExcel excel : GameData.getRogueTalentExcelMap().values()) { + var talent = RogueTalent.newInstance() + .setTalentId(excel.getTalentID()); + + if (this.hasTalent(excel.getTalentID())) { + talent.setStatus(RogueTalentStatus.ROGUE_TALENT_STATUS_ENABLE); + } else { + talent.setStatus(RogueTalentStatus.ROGUE_TALENT_STATUS_UNLOCK); + } + + proto.addRogueTalent(talent); + } + + return proto; + } + + // Database + + public void loadFromDatabase() { + // Load talent data + var stream = LunarCore.getGameDatabase().getObjects(RogueTalentData.class, "ownerUid", this.getPlayer().getUid()); + + stream.forEach(talent -> { + this.getTalents().add(talent.getTalentId()); + }); + } } \ No newline at end of file diff --git a/src/main/java/emu/lunarcore/game/rogue/RogueTalentData.java b/src/main/java/emu/lunarcore/game/rogue/RogueTalentData.java new file mode 100644 index 0000000..acdf436 --- /dev/null +++ b/src/main/java/emu/lunarcore/game/rogue/RogueTalentData.java @@ -0,0 +1,33 @@ +package emu.lunarcore.game.rogue; + +import org.bson.types.ObjectId; + +import dev.morphia.annotations.Entity; +import dev.morphia.annotations.Id; +import dev.morphia.annotations.Indexed; +import emu.lunarcore.LunarCore; +import emu.lunarcore.game.player.Player; +import lombok.Getter; + +@Getter +@Entity(value = "rogueTalents", useDiscriminator = false) +public class RogueTalentData { + @Id + private ObjectId id; + + @Indexed + private int ownerUid; + private int talentId; + + @Deprecated // Morphia only + public RogueTalentData() {} + + public RogueTalentData(Player player, int talentId) { + this.ownerUid = player.getUid(); + this.talentId = talentId; + } + + public void save() { + LunarCore.getGameDatabase().save(this); + } +} diff --git a/src/main/java/emu/lunarcore/server/packet/recv/HandlerEnableRogueTalentCsReq.java b/src/main/java/emu/lunarcore/server/packet/recv/HandlerEnableRogueTalentCsReq.java new file mode 100644 index 0000000..3ebab1d --- /dev/null +++ b/src/main/java/emu/lunarcore/server/packet/recv/HandlerEnableRogueTalentCsReq.java @@ -0,0 +1,24 @@ +package emu.lunarcore.server.packet.recv; + +import emu.lunarcore.proto.EnableRogueTalentCsReqOuterClass.EnableRogueTalentCsReq; +import emu.lunarcore.server.game.GameSession; +import emu.lunarcore.server.packet.CmdId; +import emu.lunarcore.server.packet.Opcodes; +import emu.lunarcore.server.packet.PacketHandler; +import emu.lunarcore.server.packet.send.PacketEnableRogueTalentScRsp; + +@Opcodes(CmdId.EnableRogueTalentCsReq) +public class HandlerEnableRogueTalentCsReq extends PacketHandler { + + @Override + public void handle(GameSession session, byte[] header, byte[] data) throws Exception { + var req = EnableRogueTalentCsReq.parseFrom(data); + + if (session.getPlayer().getRogueManager().enableTalent(req.getTalentId())) { + session.send(new PacketEnableRogueTalentScRsp(session.getPlayer().getRogueManager())); + } else { + session.send(new PacketEnableRogueTalentScRsp()); + } + } + +} diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketEnableRogueTalentScRsp.java b/src/main/java/emu/lunarcore/server/packet/send/PacketEnableRogueTalentScRsp.java new file mode 100644 index 0000000..03f9a4c --- /dev/null +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketEnableRogueTalentScRsp.java @@ -0,0 +1,28 @@ +package emu.lunarcore.server.packet.send; + +import emu.lunarcore.game.rogue.RogueManager; +import emu.lunarcore.proto.EnableRogueTalentScRspOuterClass.EnableRogueTalentScRsp; +import emu.lunarcore.server.packet.BasePacket; +import emu.lunarcore.server.packet.CmdId; + +public class PacketEnableRogueTalentScRsp extends BasePacket { + + public PacketEnableRogueTalentScRsp() { + super(CmdId.EnableRogueTalentScRsp); + + var data = EnableRogueTalentScRsp.newInstance() + .setRetcode(1); + + this.setData(data); + } + + public PacketEnableRogueTalentScRsp(RogueManager rogueManager) { + super(CmdId.EnableRogueTalentScRsp); + + var data = EnableRogueTalentScRsp.newInstance() + .setTalentInfo(rogueManager.toTalentInfoProto()); + + this.setData(data); + } + +} \ No newline at end of file diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueTalentInfoScRsp.java b/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueTalentInfoScRsp.java index 3fea49a..e4e1697 100644 --- a/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueTalentInfoScRsp.java +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketGetRogueTalentInfoScRsp.java @@ -1,11 +1,7 @@ package emu.lunarcore.server.packet.send; -import emu.lunarcore.data.GameData; -import emu.lunarcore.data.excel.RogueTalentExcel; import emu.lunarcore.game.rogue.RogueManager; import emu.lunarcore.proto.GetRogueTalentInfoScRspOuterClass.GetRogueTalentInfoScRsp; -import emu.lunarcore.proto.RogueTalentOuterClass.RogueTalent; -import emu.lunarcore.proto.RogueTalentStatusOuterClass.RogueTalentStatus; import emu.lunarcore.server.packet.BasePacket; import emu.lunarcore.server.packet.CmdId; @@ -14,15 +10,8 @@ public class PacketGetRogueTalentInfoScRsp extends BasePacket { public PacketGetRogueTalentInfoScRsp(RogueManager rogueManager) { super(CmdId.GetRogueTalentInfoScRsp); - var data = GetRogueTalentInfoScRsp.newInstance(); - - for (RogueTalentExcel excel : GameData.getRogueTalentExcelMap().values()) { - var talent = RogueTalent.newInstance() - .setTalentId(excel.getTalentID()) - .setStatus(RogueTalentStatus.ROGUE_TALENT_STATUS_UNLOCK); - - data.getMutableTalentInfo().addRogueTalent(talent); - } + var data = GetRogueTalentInfoScRsp.newInstance() + .setTalentInfo(rogueManager.toTalentInfoProto()); this.setData(data); } diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketSyncRogueVirtualItemInfoScNotify.java b/src/main/java/emu/lunarcore/server/packet/send/PacketSyncRogueVirtualItemInfoScNotify.java new file mode 100644 index 0000000..e0644b1 --- /dev/null +++ b/src/main/java/emu/lunarcore/server/packet/send/PacketSyncRogueVirtualItemInfoScNotify.java @@ -0,0 +1,18 @@ +package emu.lunarcore.server.packet.send; + +import emu.lunarcore.game.player.Player; +import emu.lunarcore.proto.SyncRogueVirtualItemInfoScNotifyOuterClass.SyncRogueVirtualItemInfoScNotify; +import emu.lunarcore.server.packet.BasePacket; +import emu.lunarcore.server.packet.CmdId; + +public class PacketSyncRogueVirtualItemInfoScNotify extends BasePacket { + + public PacketSyncRogueVirtualItemInfoScNotify(Player player) { + super(CmdId.SyncRogueVirtualItemInfoScNotify); + + var data = SyncRogueVirtualItemInfoScNotify.newInstance() + .setRogueVirtualItemInfo(player.toRogueVirtualItemsProto()); + + this.setData(data); + } +}