quest fix & personal line impl

This commit is contained in:
Akka
2022-07-05 20:41:07 +08:00
committed by Luke H-W
parent 7bae35f51b
commit 910008216f
51 changed files with 924 additions and 200 deletions

View File

@@ -0,0 +1,19 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.AddQuestContentProgressRspOuterClass;
public class PacketAddQuestContentProgressRsp extends BasePacket {
public PacketAddQuestContentProgressRsp(int contentType) {
super(PacketOpcodes.AddQuestContentProgressRsp);
var proto = AddQuestContentProgressRspOuterClass.AddQuestContentProgressRsp.newBuilder();
proto.setContentType(contentType);
this.setData(proto);
}
}

View File

@@ -0,0 +1,20 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.ChapterStateNotifyOuterClass;
import emu.grasscutter.net.proto.ChapterStateOuterClass;
public class PacketChapterStateNotify extends BasePacket {
public PacketChapterStateNotify(int id, ChapterStateOuterClass.ChapterState state) {
super(PacketOpcodes.ChapterStateNotify);
var proto = ChapterStateNotifyOuterClass.ChapterStateNotify.newBuilder();
proto.setChapterId(id)
.setChapterState(state);
this.setData(proto);
}
}

View File

@@ -0,0 +1,14 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.EvtEntityRenderersChangedNotifyOuterClass;
public class PacketEvtEntityRenderersChangedNotify extends BasePacket {
public PacketEvtEntityRenderersChangedNotify(EvtEntityRenderersChangedNotifyOuterClass.EvtEntityRenderersChangedNotify req) {
super(PacketOpcodes.EvtEntityRenderersChangedNotify, true);
this.setData(req);
}
}

View File

@@ -1,10 +1,12 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.data.binout.SceneNpcBornEntry;
import emu.grasscutter.game.quest.QuestGroupSuite;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.GroupSuiteNotifyOuterClass;
import java.util.Collection;
import java.util.List;
public class PacketGroupSuiteNotify extends BasePacket {
@@ -27,4 +29,24 @@ public class PacketGroupSuiteNotify extends BasePacket {
this.setData(proto);
}
public PacketGroupSuiteNotify(int groupId, int suiteId) {
super(PacketOpcodes.GroupSuiteNotify);
var proto = GroupSuiteNotifyOuterClass.GroupSuiteNotify.newBuilder();
proto.putGroupMap(groupId, suiteId);
this.setData(proto);
}
public PacketGroupSuiteNotify(Collection<QuestGroupSuite> questGroupSuites) {
super(PacketOpcodes.GroupSuiteNotify);
var proto = GroupSuiteNotifyOuterClass.GroupSuiteNotify.newBuilder();
questGroupSuites.forEach(i -> proto.putGroupMap(i.getGroup(), i.getSuite()));
this.setData(proto);
}
}

View File

@@ -0,0 +1,35 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.data.GameData;
import emu.grasscutter.game.quest.GameMainQuest;
import emu.grasscutter.game.quest.GameQuest;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.PersonalLineAllDataRspOuterClass;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class PacketPersonalLineAllDataRsp extends BasePacket {
public PacketPersonalLineAllDataRsp(Collection<GameMainQuest> gameMainQuestList) {
super(PacketOpcodes.PersonalLineAllDataRsp);
var proto = PersonalLineAllDataRspOuterClass.PersonalLineAllDataRsp.newBuilder();
var questList = gameMainQuestList.stream()
.map(GameMainQuest::getChildQuests)
.map(Map::values)
.flatMap(Collection::stream)
.map(GameQuest::getQuestId)
.collect(Collectors.toSet());
GameData.getPersonalLineDataMap().values().stream()
.filter(i -> !questList.contains(i.getStartQuestId()))
.forEach(i -> proto.addCanBeUnlockedPersonalLineList(i.getId()));
this.setData(proto);
}
}

View File

@@ -0,0 +1,22 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.QueryPathReqOuterClass;
import emu.grasscutter.net.proto.QueryPathRspOuterClass;
public class PacketQueryPathRsp extends BasePacket {
public PacketQueryPathRsp(QueryPathReqOuterClass.QueryPathReq req) {
super(PacketOpcodes.QueryPathRsp);
var proto = QueryPathRspOuterClass.QueryPathRsp.newBuilder();
proto.addCorners(req.getSourcePos())
.addCorners(req.getDestinationPos(0))
.setQueryId(req.getQueryId())
.setQueryStatus(QueryPathRspOuterClass.QueryPathRsp.PathStatusType.PATH_STATUS_TYPE_SUCC);
this.setData(proto);
}
}

View File

@@ -0,0 +1,20 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.UnlockPersonalLineRspOuterClass;
public class PacketUnlockPersonalLineRsp extends BasePacket {
public PacketUnlockPersonalLineRsp(int id, int level, int chapterId) {
super(PacketOpcodes.UnlockPersonalLineRsp);
var proto = UnlockPersonalLineRspOuterClass.UnlockPersonalLineRsp.newBuilder();
proto.setPersonalLineId(id)
.setLevel(level)
.setChapterId(chapterId);
this.setData(proto);
}
}