Added database support for mail

Send mail command now works from console (to use it from console change the uuid in the 'SendMailCommand' file
This commit is contained in:
Benjamin Elsdon
2022-04-23 23:07:18 +08:00
parent e24de95d29
commit 69779a0321
5 changed files with 187 additions and 44 deletions

View File

@@ -74,6 +74,8 @@ public class GenshinPlayer {
private boolean showAvatar;
private ArrayList<AvatarProfileData> shownAvatars;
private Set<Integer> rewardedLevels;
private ArrayList<Mail> mail;
private int sceneId;
private int regionId;
@@ -112,6 +114,8 @@ public class GenshinPlayer {
this.flyCloakList = new HashSet<>();
this.costumeList = new HashSet<>();
this.mail = new ArrayList<>();
this.setSceneId(3);
this.setRegionId(1);
this.sceneState = SceneLoadState.NONE;
@@ -569,6 +573,16 @@ public class GenshinPlayer {
this.sendPacket(new PacketPrivateChatNotify(sender.getUid(), this.getUid(), message.toString()));
}
public List<Mail> getMail() { return mail; }
public void sendMail(Mail message) {
this.mail.add(message);
message._id = this.mail.size() + 1;
this.save();
this.sendPacket(new PacketMailChangeNotify(this, message));
}
public void interactWith(int gadgetEntityId) {
GenshinEntity entity = getScene().getEntityById(gadgetEntityId);

View File

@@ -0,0 +1,99 @@
package emu.grasscutter.game;
import java.time.Instant;
import java.util.ArrayList;
import java.util.List;
public class Mail {
public int _id;
public MailContent mailContent;
public List<MailItem> itemList;
public long sendTime;
public long expireTime;
public int importance;
public boolean isRead;
public boolean isAttachmentGot;
public int stateValue;
public Mail() {
_id = 1;
mailContent = new MailContent("No title set...", "No content set...");
itemList = new ArrayList<>();
sendTime = 0;
expireTime = 0;
importance = 1;
isRead = true;
isAttachmentGot = true;
stateValue = 1;
}
public Mail(MailContent mailContent, List<MailItem> itemList, long expireTime) {
this(mailContent, itemList, expireTime, 1);
}
public Mail(MailContent mailContent, List<MailItem> itemList, long expireTime, int importance) {
this(mailContent, itemList, expireTime, importance, 1);
}
public Mail(MailContent mailContent, List<MailItem> itemList, long expireTime, int importance, int state) {
this(0, mailContent, itemList, expireTime, importance, state);
}
public Mail(int _id, MailContent mailContent, List<MailItem> itemList, long expireTime, int importance, int state) {
this._id = _id;
this.mailContent = mailContent;
this.itemList = itemList;
this.sendTime = (int) Instant.now().EPOCH.getEpochSecond();
this.expireTime = expireTime;
this.importance = importance;
this.isRead = false;
this.isAttachmentGot = false;
this.stateValue = state;
}
public static class MailContent {
public String title;
public String content;
public String sender;
public MailContent() {
this.title = "";
this.content = "loading...";
this.sender = "loading";
}
public MailContent(String title, String content) {
this(title, content, "Server");
}
public MailContent(String title, String content, GenshinPlayer sender) {
this(title, content, sender.getNickname());
}
public MailContent(String title, String content, String sender) {
this.title = title;
this.content = content;
this.sender = sender;
}
}
public static class MailItem {
public int itemId;
public int itemCount;
public MailItem() {
this.itemId = 11101;
this.itemCount = 1;
}
public MailItem(int itemId) {
this(itemId, 1);
}
public MailItem(int itemId, int itemCount) {
this.itemId = itemId;
this.itemCount = itemCount;
}
}
}