Add missing forging protos, add data for ongoing forges to player, handler for ForgeStartReq.

This commit is contained in:
ImmuState
2022-06-04 11:40:58 -07:00
committed by Melledy
parent 3fc63c2c4b
commit 8db0500e9d
7 changed files with 165 additions and 24 deletions

View File

@@ -0,0 +1,52 @@
package emu.grasscutter.game.managers.ForgingManager;
import dev.morphia.annotations.Entity;
@Entity
public class ActiveForgeData {
private int queueId;
private int forgeId;
private int avatarId;
private int startTime;
private int forgeTime;
// private int finishedCount;
// private int unfinishedCount;
// private int nextFinishTimestamp;
// private int totalFinishTimestamp;
public int getQueueId() {
return this.queueId;
}
public void setQueueId(int value) {
this.queueId = value;
}
public int getForgeId() {
return this.forgeId;
}
public void setForgeId(int value) {
this.forgeId = value;
}
public int getAvatarId() {
return this.avatarId;
}
public void setAvatarId(int value) {
this.avatarId = value;
}
public int getStartTime() {
return this.startTime;
}
public void setStartTime(int value) {
this.startTime = value;
}
public int getForgeTime() {
return this.forgeTime;
}
public void setForgeTime(int value) {
this.forgeTime = value;
}
}

View File

@@ -1,11 +1,17 @@
package emu.grasscutter.game.managers.ForgingManager;
import java.util.HashMap;
import java.util.Map;
import emu.grasscutter.game.inventory.GameItem;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.proto.ForgeStartReqOuterClass;
import emu.grasscutter.net.proto.ForgeQueueDataOuterClass.ForgeQueueData;
import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
import emu.grasscutter.server.packet.send.PacketForgeDataNotify;
import emu.grasscutter.server.packet.send.PacketForgeFormulaDataNotify;
import emu.grasscutter.server.packet.send.PacketForgeGetQueueDataRsp;
import emu.grasscutter.server.packet.send.PacketForgeStartRsp;
public class ForgingManager {
private final Player player;
@@ -46,20 +52,49 @@ public class ForgingManager {
: 1;
}
private Map<Integer, ForgeQueueData> determineCurrentForgeQueueData() {
// Dummy for now.
ForgeQueueData data = ForgeQueueData.newBuilder()
.setQueueId(1)
.setForgeId(11001)
.setFinishCount(2)
.setUnfinishCount(3)
.setNextFinishTimestamp(0)
.setNextFinishTimestamp(0)
.setAvatarId(0)
.build();
Map<Integer, ForgeQueueData> res = new HashMap<>();
res.put(1, data);
return res;
}
public void sendForgeDataNotify() {
// Determine the number of queues and unlocked items.
int numQueues = this.determineNumberOfQueues();
var unlockedItems = this.player.getUnlockedForgingBlueprints();
var queueData = this.determineCurrentForgeQueueData();
// Send notification.
this.player.sendPacket(new PacketForgeDataNotify(unlockedItems, numQueues));
this.player.sendPacket(new PacketForgeDataNotify(unlockedItems, numQueues, queueData));
}
public void handleForgeGetQueueDataReq() {
// Determine the number of queues.
int numQueues = this.determineNumberOfQueues();
var queueData = this.determineCurrentForgeQueueData();
// Reply.
this.player.sendPacket(new PacketForgeGetQueueDataRsp(Retcode.RET_SUCC, numQueues));
this.player.sendPacket(new PacketForgeGetQueueDataRsp(Retcode.RET_SUCC, numQueues, queueData));
}
/**********
Initiate forging process.
**********/
public void startForging(ForgeStartReqOuterClass.ForgeStartReq req) {
// Dummy for now.
this.player.sendPacket(new PacketForgeStartRsp(Retcode.RET_SUCC));
}
}