Deleting mail + a bit of cleanup

This commit is contained in:
Benjamin Elsdon
2022-04-25 14:30:56 +08:00
parent 9bf94f9539
commit 67b4c274ec
7 changed files with 145 additions and 81 deletions

View File

@@ -1,5 +1,8 @@
package emu.grasscutter.game;
import java.time.Instant;
import java.util.*;
import dev.morphia.annotations.*;
import emu.grasscutter.GenshinConstants;
import emu.grasscutter.Grasscutter;
@@ -588,8 +591,9 @@ public class GenshinPlayer {
Mail message = getMailById(mailId);
if(message != null) {
this.mail.remove(message);
this.save();
int index = getMailIndex(message);
message.expireTime = (int) Instant.now().getEpochSecond(); // Just set the mail as expired for now. I don't want to implement a counter specifically for an account...
this.replaceMailByIndex(index, message);
return true;
}
@@ -604,9 +608,10 @@ public class GenshinPlayer {
return this.mail.indexOf(message);
}
public boolean replaceMailByIndex(int mailId, Mail message) {
if(getMailById(mailId) != null) {
this.mail.set(mailId, message);
public boolean replaceMailByIndex(int index, Mail message) {
if(getMailById(index) != null) {
this.mail.set(index, message);
this.save();
return true;
} else {
return false;

View File

@@ -25,14 +25,14 @@ public class Mail {
itemList = new ArrayList<>();
sendTime = 0;
expireTime = 0;
importance = 1;
importance = 0; // Starred mail, 0 = No star, 1 = Star.
isRead = true;
isAttachmentGot = true;
stateValue = 1;
stateValue = 1; // Different mailboxes, 1 = Default, 3 = Gift-box.
}
public Mail(MailContent mailContent, List<MailItem> itemList, long expireTime) {
this(mailContent, itemList, expireTime, 1);
this(mailContent, itemList, expireTime, 0);
}
public Mail(MailContent mailContent, List<MailItem> itemList, long expireTime, int importance) {
@@ -90,19 +90,24 @@ public class Mail {
public static class MailItem {
public int itemId;
public int itemCount;
public int itemLevel;
public MailItem() {
this.itemId = 11101;
this.itemCount = 1;
this.itemLevel = 1;
}
public MailItem(int itemId) {
this(itemId, 1);
}
public MailItem(int itemId, int itemCount) {
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;
}
}
}