mirror of
https://github.com/EggLinks/DanhengServer-OpenSource.git
synced 2026-01-02 20:26:03 +08:00
More Document
This commit is contained in:
@@ -50,8 +50,8 @@ public class SceneEntityLoader(SceneInstance scene)
|
||||
|
||||
if (oldGroupId.Contains(group.Id)) // check if it should be unloaded
|
||||
{
|
||||
if (group.ForceUnloadCondition.IsTrue(Scene.Player.MissionManager!.Data, false) ||
|
||||
group.UnloadCondition.IsTrue(Scene.Player.MissionManager!.Data, false))
|
||||
if (group.ForceUnloadCondition.IsTrue(Scene.Player.MissionManager!.Data, false) || // condition: Force Unload Condition
|
||||
group.UnloadCondition.IsTrue(Scene.Player.MissionManager!.Data, false)) // condition: Unload Condition anyone of the conditions is true then unload
|
||||
{
|
||||
foreach (var entity in Scene.Entities.Values.Where(entity => entity.GroupID == group.Id))
|
||||
{
|
||||
@@ -64,7 +64,7 @@ public class SceneEntityLoader(SceneInstance scene)
|
||||
}
|
||||
else if (group.OwnerMainMissionID != 0 &&
|
||||
Scene.Player.MissionManager!.GetMainMissionStatus(group.OwnerMainMissionID) !=
|
||||
MissionPhaseEnum.Accept)
|
||||
MissionPhaseEnum.Accept) // condition: Owner Main Mission ID
|
||||
{
|
||||
foreach (var entity in Scene.Entities.Values.Where(entity => entity.GroupID == group.Id))
|
||||
{
|
||||
@@ -89,21 +89,21 @@ public class SceneEntityLoader(SceneInstance scene)
|
||||
|
||||
public virtual async ValueTask<List<IGameEntity>?> LoadGroup(GroupInfo info, bool forceLoad = false)
|
||||
{
|
||||
if (!LoadGroups.Contains(info.Id)) return null;
|
||||
var missionData = Scene.Player.MissionManager!.Data;
|
||||
if (info.LoadSide == GroupLoadSideEnum.Client) return null;
|
||||
if (info.GroupName.Contains("TrainVisitor")) return null;
|
||||
if (!LoadGroups.Contains(info.Id)) return null; // check if group should be loaded in this dimension
|
||||
var missionData = Scene.Player.MissionManager!.Data; // get mission data
|
||||
if (info.LoadSide == GroupLoadSideEnum.Client) return null; // check if group should be loaded on client side
|
||||
if (info.GroupName.Contains("TrainVisitor")) return null; // certain group name
|
||||
if (info.GroupName.Contains("DeployPuzzle_Repeat_Area")) return null;
|
||||
if (info.GroupName.Contains("TrainVisiter")) return null;
|
||||
|
||||
if (info.SystemUnlockCondition != null)
|
||||
if (info.SystemUnlockCondition != null) // condition: System Unlock Condition
|
||||
{
|
||||
var result = info.SystemUnlockCondition.Operation != OperationEnum.Or;
|
||||
var result = info.SystemUnlockCondition.Operation != OperationEnum.Or; // operation
|
||||
foreach (var conditionId in info.SystemUnlockCondition.Conditions)
|
||||
{
|
||||
GameData.GroupSystemUnlockDataData.TryGetValue(conditionId, out var unlockExcel);
|
||||
if (unlockExcel == null) continue;
|
||||
var part = Scene.Player.QuestManager?.UnlockHandler.GetUnlockStatus(unlockExcel.UnlockID) ?? false;
|
||||
var part = Scene.Player.QuestManager?.UnlockHandler.GetUnlockStatus(unlockExcel.UnlockID) ?? false; // check if unlock condition is met
|
||||
if (info.SystemUnlockCondition.Operation == OperationEnum.Or && part)
|
||||
{
|
||||
result = true;
|
||||
@@ -124,20 +124,20 @@ public class SceneEntityLoader(SceneInstance scene)
|
||||
if (!result) return null;
|
||||
}
|
||||
|
||||
if (!(info.OwnerMainMissionID == 0 ||
|
||||
if (!(info.OwnerMainMissionID == 0 || // condition: Owner Main Mission ID
|
||||
Scene.Player.MissionManager!.GetMainMissionStatus(info.OwnerMainMissionID) ==
|
||||
MissionPhaseEnum.Accept)) return null;
|
||||
MissionPhaseEnum.Accept)) return null; // check if main mission is accepted
|
||||
|
||||
if (Scene.FloorId == 20332001 && info.Id == 109)
|
||||
if (Scene.FloorId == 20332001 && info.Id == 109) // certain group id
|
||||
if (Scene.Player.SceneData?.FloorSavedData.GetValueOrDefault(20332001, [])
|
||||
.GetValueOrDefault("ShowFeather", 0) != 1)
|
||||
return null; // a temp solution for Sunday
|
||||
|
||||
if ((!info.LoadCondition.IsTrue(missionData) || info.UnloadCondition.IsTrue(missionData, false) ||
|
||||
info.ForceUnloadCondition.IsTrue(missionData, false)) && !forceLoad) return null;
|
||||
if ((!info.LoadCondition.IsTrue(missionData) || info.UnloadCondition.IsTrue(missionData, false) || // condition: Load Condition, Unload Condition, Force Unload Condition
|
||||
info.ForceUnloadCondition.IsTrue(missionData, false)) && !forceLoad) return null; // check if group should be loaded forcefully
|
||||
|
||||
if (!info.SavedValueCondition.IsTrue(
|
||||
Scene.Player.SceneData!.FloorSavedData.GetValueOrDefault(Scene.FloorId, [])) && !forceLoad)
|
||||
Scene.Player.SceneData!.FloorSavedData.GetValueOrDefault(Scene.FloorId, [])) && !forceLoad) // condition: Saved Value Condition
|
||||
return null;
|
||||
|
||||
if (Scene.Entities.Values.ToList().FindIndex(x => x.GroupID == info.Id) !=
|
||||
@@ -145,7 +145,7 @@ public class SceneEntityLoader(SceneInstance scene)
|
||||
return null;
|
||||
|
||||
// load
|
||||
Scene.Groups.Add(info.Id);
|
||||
Scene.Groups.Add(info.Id); // add group to loaded groups
|
||||
|
||||
var entityList = new List<IGameEntity>();
|
||||
foreach (var npc in info.NPCList)
|
||||
|
||||
Reference in New Issue
Block a user