fix: mail

This commit is contained in:
ハムスケ ハム
2023-04-03 00:18:48 +09:00
parent 4a6ff4721c
commit ddafeb9ed3
9 changed files with 1967 additions and 123 deletions

View File

@@ -6,13 +6,14 @@ import dev.morphia.annotations.Indexed;
import dev.morphia.annotations.Transient;
import emu.grasscutter.database.DatabaseHelper;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.proto.*;
import emu.grasscutter.utils.Utils;
import org.bson.types.ObjectId;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
import org.bson.types.ObjectId;
@Entity(value = "mail", useDiscriminator = false)
public class Mail {
@Id private ObjectId id;
@@ -51,18 +52,32 @@ public class Mail {
}
public ObjectId getId() {
return id;
}
return id;
}
public int getOwnerUid() {
return ownerUid;
}
public int getOwnerUid() {
return ownerUid;
}
public void setOwnerUid(int ownerUid) {
this.ownerUid = ownerUid;
}
public void setOwnerUid(int ownerUid) {
this.ownerUid = ownerUid;
}
@Entity
public MailDataOuterClass.MailData toProto(Player player) {
return MailDataOuterClass.MailData.newBuilder()
.setMailId(player.getMailId(this))
.setMailTextContent(this.mailContent.toProto())
.addAllItemList(this.itemList.stream().map(MailItem::toProto).toList())
.setSendTime((int) this.sendTime)
.setExpireTime((int) this.expireTime)
.setImportance(this.importance)
.setIsRead(this.isRead)
.setIsAttachmentGot(this.isAttachmentGot)
.setCollectState(MailCollectStateOuterClass.MailCollectState.MAIL_COLLECT_STATE_NOT_COLLECTIBLE)
.build();
}
@Entity
public static class MailContent {
public String title;
public String content;
@@ -87,6 +102,14 @@ public class Mail {
this.content = content;
this.sender = sender;
}
public MailTextContentOuterClass.MailTextContent toProto() {
return MailTextContentOuterClass.MailTextContent.newBuilder()
.setTitle(this.title)
.setContent(this.content)
.setSender(this.sender)
.build();
}
}
@Entity
@@ -105,13 +128,25 @@ public class Mail {
this(itemId, 1);
}
public MailItem(int itemId, int itemCount) { this(itemId, itemCount, 1); }
public MailItem(int itemId, int itemCount) {
this(itemId, itemCount, 1);
}
public MailItem(int itemId, int itemCount, int itemLevel) {
this.itemId = itemId;
this.itemCount = itemCount;
this.itemLevel = itemLevel;
}
public MailItemOuterClass.MailItem toProto() {
return MailItemOuterClass.MailItem.newBuilder()
.setEquipParam(Utils.make(() -> EquipParamOuterClass.EquipParam.newBuilder()
.setItemId(this.itemId)
.setItemNum(this.itemCount)
.setItemLevel(this.itemLevel)
.setPromoteLevel(0)//mock
.build())).build();
}
}
public void save() {