Load activity config on server startup

This commit is contained in:
KingRainbow44 2023-05-31 22:11:58 -04:00
parent 4113b42707
commit 44a557a1dc
No known key found for this signature in database
GPG Key ID: FC2CB64B00D257BE
2 changed files with 29 additions and 50 deletions

View File

@ -1,9 +1,5 @@
package emu.grasscutter.data; package emu.grasscutter.data;
import static emu.grasscutter.utils.FileUtils.getDataPath;
import static emu.grasscutter.utils.FileUtils.getResourcePath;
import static emu.grasscutter.utils.lang.Language.translate;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
@ -11,47 +7,32 @@ import emu.grasscutter.data.binout.*;
import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction; import emu.grasscutter.data.binout.AbilityModifier.AbilityModifierAction;
import emu.grasscutter.data.binout.config.*; import emu.grasscutter.data.binout.config.*;
import emu.grasscutter.data.common.PointData; import emu.grasscutter.data.common.PointData;
import emu.grasscutter.data.custom.TrialAvatarActivityCustomData; import emu.grasscutter.data.custom.*;
import emu.grasscutter.data.custom.TrialAvatarCustomData;
import emu.grasscutter.data.excels.trial.TrialAvatarActivityDataData; import emu.grasscutter.data.excels.trial.TrialAvatarActivityDataData;
import emu.grasscutter.data.server.ActivityCondGroup; import emu.grasscutter.data.server.*;
import emu.grasscutter.data.server.GadgetMapping; import emu.grasscutter.game.activity.ActivityManager;
import emu.grasscutter.data.server.MonsterMapping;
import emu.grasscutter.game.managers.blossom.BlossomConfig; import emu.grasscutter.game.managers.blossom.BlossomConfig;
import emu.grasscutter.game.quest.QuestEncryptionKey; import emu.grasscutter.game.quest.*;
import emu.grasscutter.game.quest.RewindData; import emu.grasscutter.game.world.*;
import emu.grasscutter.game.quest.TeleportData; import emu.grasscutter.game.world.SpawnDataEntry.*;
import emu.grasscutter.game.world.GroupReplacementData; import emu.grasscutter.scripts.*;
import emu.grasscutter.game.world.SpawnDataEntry; import emu.grasscutter.utils.*;
import emu.grasscutter.game.world.SpawnDataEntry.GridBlockId;
import emu.grasscutter.game.world.SpawnDataEntry.SpawnGroupEntry;
import emu.grasscutter.scripts.EntityControllerScriptManager;
import emu.grasscutter.scripts.SceneIndexManager;
import emu.grasscutter.scripts.ScriptLoader;
import emu.grasscutter.utils.FileUtils;
import emu.grasscutter.utils.JsonUtils;
import emu.grasscutter.utils.TsvUtils;
import emu.grasscutter.utils.Utils;
import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.Pair;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.*;
import it.unimi.dsi.fastutil.ints.IntArrayList; import lombok.*;
import it.unimi.dsi.fastutil.ints.IntArraySet; import org.reflections.Reflections;
import java.io.IOException;
import java.io.InputStreamReader; import javax.script.*;
import java.nio.file.Files; import java.io.*;
import java.nio.file.Path; import java.nio.file.*;
import java.util.*; import java.util.*;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.*;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors; import java.util.stream.*;
import java.util.stream.Stream;
import javax.script.Bindings; import static emu.grasscutter.utils.FileUtils.*;
import javax.script.CompiledScript; import static emu.grasscutter.utils.lang.Language.translate;
import lombok.SneakyThrows;
import lombok.val;
import org.reflections.Reflections;
public final class ResourceLoader { public final class ResourceLoader {
@ -129,6 +110,8 @@ public final class ResourceLoader {
loadNpcBornData(); loadNpcBornData();
loadBlossomResources(); loadBlossomResources();
cacheTalentLevelSets(); cacheTalentLevelSets();
// Load activities.
ActivityManager.loadActivityConfigData();
// Load custom server resources. // Load custom server resources.
loadConfigLevelEntityData(); loadConfigLevelEntityData();

View File

@ -2,21 +2,18 @@ package emu.grasscutter.game.activity;
import com.esotericsoftware.reflectasm.ConstructorAccess; import com.esotericsoftware.reflectasm.ConstructorAccess;
import emu.grasscutter.Grasscutter; import emu.grasscutter.Grasscutter;
import emu.grasscutter.data.DataLoader; import emu.grasscutter.data.*;
import emu.grasscutter.data.GameData;
import emu.grasscutter.game.activity.condition.*; import emu.grasscutter.game.activity.condition.*;
import emu.grasscutter.game.player.BasePlayerManager; import emu.grasscutter.game.player.*;
import emu.grasscutter.game.player.Player; import emu.grasscutter.game.props.*;
import emu.grasscutter.game.props.ActivityType;
import emu.grasscutter.game.props.WatcherTriggerType;
import emu.grasscutter.net.proto.ActivityInfoOuterClass; import emu.grasscutter.net.proto.ActivityInfoOuterClass;
import emu.grasscutter.server.packet.send.PacketActivityScheduleInfoNotify; import emu.grasscutter.server.packet.send.PacketActivityScheduleInfoNotify;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import lombok.Getter; import lombok.Getter;
import org.reflections.Reflections; import org.reflections.Reflections;
import java.util.*;
import java.util.concurrent.*;
@Getter @Getter
public class ActivityManager extends BasePlayerManager { public class ActivityManager extends BasePlayerManager {
private static final Map<Integer, ActivityConfigItem> activityConfigItemMap; private static final Map<Integer, ActivityConfigItem> activityConfigItemMap;
@ -27,10 +24,9 @@ public class ActivityManager extends BasePlayerManager {
static { static {
activityConfigItemMap = new HashMap<>(); activityConfigItemMap = new HashMap<>();
scheduleActivityConfigMap = new HashMap<>(); scheduleActivityConfigMap = new HashMap<>();
loadActivityConfigData();
} }
private static void loadActivityConfigData() { public static void loadActivityConfigData() {
// scan activity type handler & watcher type // scan activity type handler & watcher type
var activityHandlerTypeMap = new HashMap<ActivityType, ConstructorAccess<?>>(); var activityHandlerTypeMap = new HashMap<ActivityType, ConstructorAccess<?>>();
var activityWatcherTypeMap = new HashMap<WatcherTriggerType, ConstructorAccess<?>>(); var activityWatcherTypeMap = new HashMap<WatcherTriggerType, ConstructorAccess<?>>();