Move player mail to MailHandler class

This is so we dont have to save the entire player to the db every time we send mail
This commit is contained in:
Melledy
2022-05-02 02:01:01 -07:00
parent afa8fb7a51
commit 19396a63c7
7 changed files with 176 additions and 52 deletions

View File

@@ -1,5 +1,6 @@
package emu.grasscutter.server.packet.recv;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.net.packet.Opcodes;
import emu.grasscutter.net.packet.PacketHandler;
import emu.grasscutter.net.packet.PacketOpcodes;
@@ -14,8 +15,8 @@ public class HandlerDelMailReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
DelMailReqOuterClass.DelMailReq req = DelMailReqOuterClass.DelMailReq.parseFrom(payload);
session.send(new PacketDelMailRsp(session.getPlayer(), req.getMailIdListList()));
session.getPlayer().getMailHandler().deleteMail(req.getMailIdListList());
}
}

View File

@@ -13,17 +13,10 @@ public class PacketDelMailRsp extends BasePacket {
public PacketDelMailRsp(Player player, List<Integer> toDeleteIds) {
super(PacketOpcodes.DelMailRsp);
DelMailRsp.Builder proto = DelMailRsp.newBuilder();
List<Integer> deletedIds = new ArrayList<>();
for(int mailId : toDeleteIds) {
if(player.deleteMail(mailId)) {
deletedIds.add(mailId);
}
}
this.setData(proto.build());
player.getSession().send(new PacketMailChangeNotify(player, null, deletedIds));
DelMailRsp proto = DelMailRsp.newBuilder()
.addAllMailIdList(toDeleteIds)
.build();
this.setData(proto);
}
}