mirror of
https://github.com/Anime-Game-Servers/Grasscutter-Quests.git
synced 2025-02-11 16:05:33 +00:00
[Cleanup] Some code cleaups before merge
This commit is contained in:
parent
ca10b6e6b5
commit
1e3767b5f6
@ -165,7 +165,7 @@ public class GameData {
|
||||
protected static Int2ObjectMap<IntSet> avatarSkillLevels = new Int2ObjectOpenHashMap<>();
|
||||
@Getter private static final Map<String, List<QuestData>> beginCondQuestMap = new HashMap<>(); // cache filled by QuestData
|
||||
@Getter private static final Map<Integer, Integer> questTalkMap = new HashMap<>();
|
||||
@Getter private static final Map<Integer, TrialAvatarCustomData> trialAvatarCustomData = new HashMap<>();
|
||||
@Getter private static final Int2ObjectMap<TrialAvatarCustomData> trialAvatarCustomData = new Int2ObjectOpenHashMap<>();
|
||||
@Getter private static final Map<Integer, TrialAvatarActivityCustomData> trialAvatarActivityCustomData = new HashMap<>();
|
||||
@Getter private static final Map<Integer, TrialAvatarActivityDataCustomData> trialAvatarActivityDataCustomData = new HashMap<>();
|
||||
|
||||
|
@ -0,0 +1,8 @@
|
||||
package emu.grasscutter.data.common;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface BaseTrialActivityData {
|
||||
List<Integer> getAvatarIndexIdList();
|
||||
List<Integer> getRewardIdList();
|
||||
}
|
@ -1,10 +1,11 @@
|
||||
package emu.grasscutter.data.custom;
|
||||
|
||||
import emu.grasscutter.data.common.BaseTrialActivityData;
|
||||
import lombok.*;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class TrialAvatarActivityCustomData {
|
||||
public class TrialAvatarActivityCustomData implements BaseTrialActivityData {
|
||||
private int ScheduleId;
|
||||
private List<Integer> AvatarIndexIdList;
|
||||
private List<Integer> RewardIdList;
|
||||
|
@ -2,13 +2,14 @@ package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.common.BaseTrialActivityData;
|
||||
import lombok.*;
|
||||
import java.util.List;
|
||||
|
||||
@ResourceType(name = "TrialAvatarActivityExcelConfigData.json")
|
||||
@ResourceType(name = "TrialAvatarActivityExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Data
|
||||
public class TrialAvatarActivityData extends GameResource {
|
||||
public class TrialAvatarActivityData extends GameResource implements BaseTrialActivityData {
|
||||
private int ScheduleId;
|
||||
private List<Integer> AvatarIndexIdList;
|
||||
private List<Integer> RewardIdList;
|
||||
|
@ -5,7 +5,7 @@ import emu.grasscutter.data.ResourceType;
|
||||
import lombok.*;
|
||||
import java.util.List;
|
||||
|
||||
@ResourceType(name = "TrialAvatarExcelConfigData.json")
|
||||
@ResourceType(name = "TrialAvatarExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Data
|
||||
public class TrialAvatarData extends GameResource {
|
||||
|
@ -18,6 +18,7 @@ import emu.grasscutter.game.activity.PlayerActivityData;
|
||||
import emu.grasscutter.game.props.ActivityType;
|
||||
import emu.grasscutter.net.proto.ActivityInfoOuterClass.ActivityInfo;
|
||||
import emu.grasscutter.server.packet.send.PacketActivityInfoNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketScenePlayerLocationNotify;
|
||||
import emu.grasscutter.utils.JsonUtils;
|
||||
|
||||
import java.util.*;
|
||||
@ -88,12 +89,16 @@ public class TrialAvatarActivityHandler extends ActivityHandler {
|
||||
}
|
||||
|
||||
public boolean enterTrialDungeon(Player player, int trialAvatarIndexId, int enterPointId) {
|
||||
// TODO, not sure if this will cause problem in MP, since we are entering trial activity dungeon
|
||||
player.sendPacket(new PacketScenePlayerLocationNotify(player.getScene())); // official does send this
|
||||
|
||||
if (!player.getServer().getDungeonSystem().enterDungeon(
|
||||
player,
|
||||
enterPointId,
|
||||
player,
|
||||
enterPointId,
|
||||
getTrialActivityDungeonId(trialAvatarIndexId))) return false;
|
||||
|
||||
|
||||
setSelectedTrialAvatarIndex(trialAvatarIndexId);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -125,8 +130,14 @@ public class TrialAvatarActivityHandler extends ActivityHandler {
|
||||
setSelectedTrialAvatarIndex(0);
|
||||
}
|
||||
|
||||
public boolean getReward(Player player, PlayerActivityData playerActivityData, int trialAvatarIndexId) {
|
||||
TrialAvatarPlayerData trialAvatarPlayerData = getTrialAvatarPlayerData(playerActivityData);
|
||||
public boolean getReward(Player player, int trialAvatarIndexId) {
|
||||
val playerActivityData = player.getActivityManager().getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR);
|
||||
|
||||
if(playerActivityData.isEmpty()){
|
||||
return false;
|
||||
}
|
||||
|
||||
TrialAvatarPlayerData trialAvatarPlayerData = getTrialAvatarPlayerData(playerActivityData.get());
|
||||
TrialAvatarPlayerData.RewardInfoItem rewardInfo = trialAvatarPlayerData.getRewardInfo(trialAvatarIndexId);
|
||||
if (rewardInfo == null) return false;
|
||||
|
||||
@ -135,8 +146,8 @@ public class TrialAvatarActivityHandler extends ActivityHandler {
|
||||
|
||||
player.getInventory().addItemParamDatas(rewardParam.getRewardItemList(), ActionReason.TrialAvatarActivityFirstPassReward);
|
||||
rewardInfo.setReceivedReward(true);
|
||||
playerActivityData.setDetail(trialAvatarPlayerData);
|
||||
playerActivityData.save();
|
||||
playerActivityData.get().setDetail(trialAvatarPlayerData);
|
||||
playerActivityData.get().save();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
package emu.grasscutter.game.activity.trialavatar;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.TrialAvatarActivityData;
|
||||
import emu.grasscutter.game.activity.ActivityConfigItem;
|
||||
import emu.grasscutter.data.common.BaseTrialActivityData;
|
||||
import emu.grasscutter.net.proto.TrialAvatarActivityDetailInfoOuterClass.TrialAvatarActivityDetailInfo;
|
||||
import emu.grasscutter.net.proto.TrialAvatarActivityRewardDetailInfoOuterClass.TrialAvatarActivityRewardDetailInfo;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
import lombok.val;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.*;
|
||||
@ -19,24 +19,20 @@ import java.util.stream.*;
|
||||
public class TrialAvatarPlayerData {
|
||||
List<RewardInfoItem> rewardInfoList;
|
||||
|
||||
public static List<Integer> getAvatarIdList(int scheduleId) {
|
||||
if (GameData.getTrialAvatarActivityCustomData().isEmpty()) {
|
||||
if (GameData.getTrialAvatarActivityDataMap().get(scheduleId) == null) return List.of();
|
||||
private static BaseTrialActivityData getActivityData(int scheduleId){
|
||||
// prefer custom data over official data
|
||||
return GameData.getTrialAvatarActivityCustomData().isEmpty() ? GameData.getTrialAvatarActivityDataMap().get(scheduleId)
|
||||
: GameData.getTrialAvatarActivityCustomData().get(scheduleId);
|
||||
}
|
||||
|
||||
return GameData.getTrialAvatarActivityDataMap().get(scheduleId).getAvatarIndexIdList();
|
||||
}
|
||||
if (GameData.getTrialAvatarActivityCustomData().get(scheduleId) == null) return List.of();
|
||||
return GameData.getTrialAvatarActivityCustomData().get(scheduleId).getAvatarIndexIdList();
|
||||
public static List<Integer> getAvatarIdList(int scheduleId) {
|
||||
val activityData = getActivityData(scheduleId);
|
||||
return activityData != null ? activityData.getAvatarIndexIdList() : List.of();
|
||||
}
|
||||
|
||||
public static List<Integer> getRewardIdList(int scheduleId) {
|
||||
if (GameData.getTrialAvatarActivityCustomData().isEmpty()) {
|
||||
if (GameData.getTrialAvatarActivityDataMap().get(scheduleId) == null) return List.of();
|
||||
|
||||
return GameData.getTrialAvatarActivityDataMap().get(scheduleId).getRewardIdList();
|
||||
}
|
||||
if (GameData.getTrialAvatarActivityCustomData().get(scheduleId) == null) return List.of();
|
||||
return GameData.getTrialAvatarActivityCustomData().get(scheduleId).getRewardIdList();
|
||||
val activityData = getActivityData(scheduleId);
|
||||
return activityData != null ? activityData.getRewardIdList() : List.of();
|
||||
}
|
||||
|
||||
public static TrialAvatarPlayerData create(int scheduleId) {
|
||||
@ -46,7 +42,7 @@ public class TrialAvatarPlayerData {
|
||||
.rewardInfoList(IntStream.range(0, avatarIds.size())
|
||||
.filter(i -> avatarIds.get(i) > 0 && rewardIds.get(i) > 0)
|
||||
.mapToObj(i -> RewardInfoItem.create(
|
||||
avatarIds.get(i),
|
||||
avatarIds.get(i),
|
||||
rewardIds.get(i)))
|
||||
.collect(Collectors.toList()))
|
||||
.build();
|
||||
|
@ -233,7 +233,7 @@ public class DungeonManager {
|
||||
case DUNGEON_PLAY_TYPE_TRIAL_AVATAR -> {
|
||||
val playerData = player.getActivityManager()
|
||||
.getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR);
|
||||
if (playerData == null) return;
|
||||
if (playerData.isEmpty()) return;
|
||||
|
||||
val handler = (TrialAvatarActivityHandler) playerData.get().getActivityHandler();
|
||||
if (handler == null) return;
|
||||
|
@ -14,46 +14,20 @@ import lombok.val;
|
||||
|
||||
@Opcodes(PacketOpcodes.EnterTrialAvatarActivityDungeonReq)
|
||||
public class HandlerEnterTrialAvatarActivityDungeonReq extends PacketHandler {
|
||||
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
EnterTrialAvatarActivityDungeonReq req = EnterTrialAvatarActivityDungeonReq.parseFrom(payload);
|
||||
val req = EnterTrialAvatarActivityDungeonReq.parseFrom(payload);
|
||||
|
||||
val playerData = session.getPlayer().getActivityManager()
|
||||
.getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR);
|
||||
if (playerData == null) {
|
||||
session.getPlayer().sendPacket(new PacketEnterTrialAvatarActivityDungeonRsp(
|
||||
req.getActivityId(),
|
||||
req.getTrialAvatarIndexId(),
|
||||
Retcode.RET_FAIL_VALUE));
|
||||
return;
|
||||
}
|
||||
val handler = session.getPlayer().getActivityManager()
|
||||
.getActivityHandlerAs(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR, TrialAvatarActivityHandler.class);
|
||||
|
||||
val handler = (TrialAvatarActivityHandler) playerData.get().getActivityHandler();
|
||||
if (handler == null) {
|
||||
session.getPlayer().sendPacket(new PacketEnterTrialAvatarActivityDungeonRsp(
|
||||
req.getActivityId(),
|
||||
req.getTrialAvatarIndexId(),
|
||||
Retcode.RET_FAIL_VALUE));
|
||||
return;
|
||||
}
|
||||
boolean result = handler.isPresent() && handler.get().enterTrialDungeon(session.getPlayer(), req.getTrialAvatarIndexId(), req.getEnterPointId());
|
||||
|
||||
// TODO, not sure if this will cause problem in MP, since we are entering trial activity dungeon
|
||||
session.getPlayer().sendPacket(new PacketScenePlayerLocationNotify(session.getPlayer().getScene())); // official does send this
|
||||
|
||||
|
||||
if (!handler.enterTrialDungeon(session.getPlayer(), req.getTrialAvatarIndexId(), req.getEnterPointId())) {
|
||||
session.getPlayer().sendPacket(new PacketEnterTrialAvatarActivityDungeonRsp(
|
||||
req.getActivityId(),
|
||||
req.getTrialAvatarIndexId(),
|
||||
Retcode.RET_FAIL_VALUE));
|
||||
return;
|
||||
}
|
||||
|
||||
session.getPlayer().sendPacket(new PacketEnterTrialAvatarActivityDungeonRsp(
|
||||
req.getActivityId(),
|
||||
req.getTrialAvatarIndexId(),
|
||||
Retcode.RET_SUCC_VALUE));
|
||||
session.getPlayer().sendPacket(new PacketEnterTrialAvatarActivityDungeonRsp(
|
||||
req.getActivityId(),
|
||||
req.getTrialAvatarIndexId(),
|
||||
result));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,12 +1,11 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.game.props.ActivityType;
|
||||
import emu.grasscutter.game.activity.trialavatar.TrialAvatarActivityHandler;
|
||||
import emu.grasscutter.game.props.ActivityType;
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
import lombok.val;
|
||||
|
||||
@Opcodes(PacketOpcodes.PlayerQuitDungeonReq)
|
||||
@ -14,14 +13,10 @@ public class HandlerPlayerQuitDungeonReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
val playerData = session.getPlayer().getActivityManager()
|
||||
.getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR);
|
||||
if (playerData != null) {
|
||||
val handler = (TrialAvatarActivityHandler) playerData.get().getActivityHandler();
|
||||
if (handler != null) {
|
||||
handler.unsetTrialAvatarTeam(session.getPlayer());
|
||||
}
|
||||
}
|
||||
val handler = session.getPlayer().getActivityManager().getActivityHandlerAs(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR, TrialAvatarActivityHandler.class);
|
||||
|
||||
handler.ifPresent(trialAvatarActivityHandler -> trialAvatarActivityHandler.unsetTrialAvatarTeam(session.getPlayer()));
|
||||
|
||||
session.getPlayer().getServer().getDungeonSystem().exitDungeon(session.getPlayer());
|
||||
}
|
||||
|
||||
|
@ -14,41 +14,19 @@ import lombok.val;
|
||||
|
||||
@Opcodes(PacketOpcodes.ReceivedTrialAvatarActivityRewardReq)
|
||||
public class HandlerReceivedTrialAvatarActivityRewardReq extends PacketHandler {
|
||||
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
ReceivedTrialAvatarActivityRewardReq req = ReceivedTrialAvatarActivityRewardReq.parseFrom(payload);
|
||||
val req = ReceivedTrialAvatarActivityRewardReq.parseFrom(payload);
|
||||
val player = session.getPlayer();
|
||||
val handler = player.getActivityManager().getActivityHandlerAs(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR, TrialAvatarActivityHandler.class);
|
||||
|
||||
val playerData = session.getPlayer().getActivityManager()
|
||||
.getPlayerActivityDataByActivityType(ActivityType.NEW_ACTIVITY_TRIAL_AVATAR);
|
||||
if (playerData == null) {
|
||||
session.getPlayer().sendPacket(new PacketReceivedTrialAvatarActivityRewardRsp(
|
||||
5002, // trial activity id
|
||||
req.getTrialAvatarIndexId(),
|
||||
Retcode.RET_FAIL_VALUE));
|
||||
return;
|
||||
}
|
||||
boolean result = handler.isPresent() && handler.get().getReward(player, req.getTrialAvatarIndexId());
|
||||
|
||||
val handler = (TrialAvatarActivityHandler) playerData.get().getActivityHandler();
|
||||
if (handler == null) {
|
||||
session.getPlayer().sendPacket(new PacketReceivedTrialAvatarActivityRewardRsp(
|
||||
5002, // trial activity id
|
||||
req.getTrialAvatarIndexId(),
|
||||
Retcode.RET_FAIL_VALUE));
|
||||
return;
|
||||
}
|
||||
|
||||
if (!handler.getReward(session.getPlayer(), playerData.get(), req.getTrialAvatarIndexId())) {
|
||||
session.getPlayer().sendPacket(new PacketReceivedTrialAvatarActivityRewardRsp(
|
||||
5002, // trial activity id
|
||||
req.getTrialAvatarIndexId(),
|
||||
Retcode.RET_FAIL_VALUE));
|
||||
return;
|
||||
}
|
||||
session.getPlayer().sendPacket(new PacketReceivedTrialAvatarActivityRewardRsp(
|
||||
5002, // trial activity id
|
||||
req.getTrialAvatarIndexId(),
|
||||
Retcode.RET_SUCC_VALUE));
|
||||
session.getPlayer().sendPacket(new PacketReceivedTrialAvatarActivityRewardRsp(
|
||||
5002, // trial activity id
|
||||
req.getTrialAvatarIndexId(),
|
||||
result));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3,9 +3,13 @@ package emu.grasscutter.server.packet.send;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EnterTrialAvatarActivityDungeonRspOuterClass.EnterTrialAvatarActivityDungeonRsp;
|
||||
import emu.grasscutter.net.proto.RetcodeOuterClass;
|
||||
|
||||
public class PacketEnterTrialAvatarActivityDungeonRsp extends BasePacket {
|
||||
|
||||
|
||||
public PacketEnterTrialAvatarActivityDungeonRsp(int activityId, int trialAvatarIndexId, boolean success) {
|
||||
this(activityId, trialAvatarIndexId, success ? RetcodeOuterClass.Retcode.RET_SUCC_VALUE : RetcodeOuterClass.Retcode.RET_FAIL_VALUE);
|
||||
}
|
||||
public PacketEnterTrialAvatarActivityDungeonRsp(int activityId, int trialAvatarIndexId, int retcodeVal) {
|
||||
super(PacketOpcodes.EnterTrialAvatarActivityDungeonRsp);
|
||||
this.setData(EnterTrialAvatarActivityDungeonRsp.newBuilder()
|
||||
|
@ -6,7 +6,10 @@ import emu.grasscutter.net.proto.RetcodeOuterClass.Retcode;
|
||||
import emu.grasscutter.net.proto.ReceivedTrialAvatarActivityRewardRspOuterClass.ReceivedTrialAvatarActivityRewardRsp;
|
||||
|
||||
public class PacketReceivedTrialAvatarActivityRewardRsp extends BasePacket {
|
||||
|
||||
|
||||
public PacketReceivedTrialAvatarActivityRewardRsp(int activityId, int trialAvatarId, boolean success) {
|
||||
this(activityId, trialAvatarId, success ? Retcode.RET_SUCC_VALUE : Retcode.RET_FAIL_VALUE);
|
||||
}
|
||||
public PacketReceivedTrialAvatarActivityRewardRsp(int activityId, int trialAvatarId, int retcodeVal) {
|
||||
super(PacketOpcodes.ReceivedTrialAvatarActivityRewardRsp);
|
||||
this.setData(ReceivedTrialAvatarActivityRewardRsp.newBuilder()
|
||||
|
Loading…
x
Reference in New Issue
Block a user