Files
Grasscutter/src/main/java/emu/grasscutter/server/packet/send/PacketAvatarSatiationDataNotify.java
T
2023-05-11 02:23:43 +00:00

47 lines
1.8 KiB
Java

package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.avatar.Avatar;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.AvatarSatiationDataNotifyOuterClass.AvatarSatiationDataNotify;
import emu.grasscutter.net.proto.AvatarSatiationDataOuterClass.AvatarSatiationData;
public class PacketAvatarSatiationDataNotify extends BasePacket {
public PacketAvatarSatiationDataNotify(Avatar avatar, float finishTime, long penaltyTime) {
super(PacketOpcodes.AvatarSatiationDataNotify);
AvatarSatiationData.Builder avatarSatiation =
AvatarSatiationData.newBuilder().setAvatarGuid(avatar.getGuid()).setFinishTime(finishTime);
// Penalty for overeating
if (penaltyTime > 0) {
avatarSatiation.setPenaltyFinishTime(penaltyTime);
}
avatarSatiation.build();
AvatarSatiationDataNotify notify =
AvatarSatiationDataNotify.newBuilder().addSatiationDataList(0, avatarSatiation).build();
this.setData(notify);
}
public PacketAvatarSatiationDataNotify(float time, Avatar avatar) {
super(PacketOpcodes.AvatarSatiationDataNotify);
var avatarSatiation =
AvatarSatiationData.newBuilder()
.setAvatarGuid(avatar.getGuid())
.setFinishTime(time + (avatar.getSatiation() / 30f))
// Penalty time always ends before finish time
.setPenaltyFinishTime(time + (avatar.getSatiationPenalty() / 100f))
.build();
AvatarSatiationDataNotify notify =
AvatarSatiationDataNotify.newBuilder().addSatiationDataList(0, avatarSatiation).build();
this.setData(notify);
}
}