public void DumpPartition(EbxInfo ebxInfo, PartitionFile partition) { string[] unknownTypeNames; if (HasPlotFlagId(partition, out unknownTypeNames) == false) { return; } if (unknownTypeNames.Length > 0) { return; throw new NotSupportedException(); } using (var reader = new PartitionReader( partition, typeof(PlotConditionType), typeof(PlotActionType), typeof(PlotLogicOperator))) { var allObjects = reader.GetObjects().ToArray(); foreach (var kv in this._Handlers) { var typeName = kv.Key; var handler = kv.Value; foreach (var data in reader.GetObjectsOfType(typeName)) { handler(ebxInfo, this, typeName, data); } } } }
private static void DumpSetPlotFlagReferenceValue(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { Func <string> callback = () => data.Value.ToString(); var guid = (Guid)data.PlotFlagReference.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, callback, typeName, "PlotFlagReference"); }
private static void DumpPlotSubLevelStreamingTriggerEntityData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var runtimeStates = (object[])data.RuntimeStates; if (runtimeStates == null || runtimeStates.Length == 0) { return; } foreach (dynamic runtimeState in runtimeStates) { var conditions = (object[])runtimeState.Conditions; if (conditions == null || conditions.Length <= 0) { continue; } foreach (var condition in conditions) { dumper.AddConditionResult(ebxInfo, data, condition, typeName, "RuntimeStates", "Conditions"); } } }
private static void DumpPlotLogicIntFlagRule(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var guid = (Guid)data.Flag.PlotFlagId.Guid; Func <string> callback = () => string.Format("{0}, {1}", (PlotLogicOperator)data.Operator, data.DesiredValue); dumper.AddGuidResult(ebxInfo, data, guid, callback, typeName, "Flag"); }
private static void DumpJournalEntry(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var displayConditions = (object[])data.DisplayConditions; if (displayConditions != null && displayConditions.Length > 0) { foreach (dynamic condition in displayConditions) { dumper.AddConditionResult(ebxInfo, data, condition, typeName, "DisplayConditions"); } } var failureConditions = (object[])data.FailureConditions; if (failureConditions != null && failureConditions.Length > 0) { foreach (dynamic condition in failureConditions) { dumper.AddConditionResult(ebxInfo, data, condition, typeName, "FailureConditions"); } } var hideConditions = (object[])data.HideConditions; if (hideConditions != null && hideConditions.Length > 0) { foreach (dynamic condition in hideConditions) { dumper.AddConditionResult(ebxInfo, data, condition, typeName, "HideConditions"); } } }
private static void DumpPlotLogicBooleanFlagRule(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var guid = (Guid)data.Flag.PlotFlagId.Guid; Func <string> callback = () => data.DesiredValue.ToString(); dumper.AddGuidResult(ebxInfo, data, guid, callback, typeName, "Flag"); }
private static void DumpPerk(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data, dynamic parent) { var plotFlagAcquired = (Guid)data.PlotFlagAcquired.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, parent, plotFlagAcquired, typeName, "PerkCategories", "Perks", "PlotFlagAcquired"); var plotFlagRequirements = (object[])data.PlotFlagRequirement; if (plotFlagRequirements != null) { foreach (dynamic plotFlagRequirement in plotFlagRequirements) { var plotFlagRequirementGuid = (Guid)plotFlagRequirement.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, parent, plotFlagRequirementGuid, typeName, "PerkCategories", "Perks", "PlotFlagRequirement"); } } var visibilityFlag = (Guid)data.VisibilityFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, parent, visibilityFlag, typeName, "PerkCategories", "Perks", "VisibilityFlag"); }
private static void DumpPlotLocationMarkerComponentData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { dumper.AddConditionResult(ebxInfo, data, data.DisplayCondition, typeName, "DisplayCondition"); dumper.AddConditionResult(ebxInfo, data, data.HideCondition, typeName, "HideCondition"); }
private static void DumpSystemData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var availableFlag = (Guid)data.AvailableFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, availableFlag, typeName, "AvailableFlag"); var visitedFlag = (Guid)data.VisitedFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, visitedFlag, typeName, "VisitedFlag"); }
private static void DumpTutorialEntry(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var entrySeenFlag = (Guid)data.EntrySeenFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, entrySeenFlag, typeName, "EntrySeenFlag"); var entryVisibleFlag = (Guid)data.EntryVisibleFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, entryVisibleFlag, typeName, "EntryVisibleFlag"); }
private static void DumpGalaxyCompletionData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var criticalPathFlags = (object[])data.CriticalPathFlags; if (criticalPathFlags != null) { foreach (dynamic criticalPathFlag in criticalPathFlags) { var guid = (Guid)criticalPathFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "CriticalPathFlags"); } } var enemyBaseFlags = (object[])data.EnemyBaseFlags; if (enemyBaseFlags != null) { foreach (dynamic enemyBaseFlag in enemyBaseFlags) { var guid = (Guid)enemyBaseFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "EnemyBaseFlags"); } } var loyaltyAndBStoryFlags = (object[])data.LoyaltyAndBStoryFlags; if (loyaltyAndBStoryFlags != null) { foreach (dynamic loyaltyAndBStoryFlag in loyaltyAndBStoryFlags) { var guid = (Guid)loyaltyAndBStoryFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "LoyaltyAndBStoryFlags"); } } var remnantVaultFlags = (object[])data.RemnantVaultFlags; if (remnantVaultFlags != null) { foreach (dynamic remnantVaultFlag in remnantVaultFlags) { var guid = (Guid)remnantVaultFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "RemnantVaultFlags"); } } var sideQuestFlags = (object[])data.SideQuestFlags; if (sideQuestFlags != null) { foreach (dynamic sideQuestFlag in sideQuestFlags) { var guid = (Guid)sideQuestFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "SideQuestFlags"); } } }
private static void DumpGiveJournalPlotFlagReward(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var plotFlagValueDestination = (Guid)data.PlotFlagValueDestination.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, plotFlagValueDestination, typeName, "PlotFlagValueDestination"); var plotFlagValueSource = (Guid)data.PlotFlagValueSource.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, plotFlagValueSource, typeName, "PlotFlagValueSource"); }
private static void DumpSetPlotFlagValue(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var guid1 = (Guid)data.PlotFlagReference.PlotFlagId.Guid; var guid2 = (Guid)data.PlotFlagValue.PlotFlagId.Guid; Func <string> callback1 = guid2.ToString; Func <string> callback2 = guid1.ToString; dumper.AddGuidResult(ebxInfo, data, guid1, callback1, typeName, "PlotFlagReference"); dumper.AddGuidResult(ebxInfo, data, guid2, callback2, typeName, "PlotFlagValue"); }
private static void DumpLootManagerEntityData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { dynamic lootConfiguration = data.LootConfiguration; if (lootConfiguration != null) { var guid = (Guid)lootConfiguration.DisableLootInteraction.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "LootConfiguration", "DisableLootInteraction"); } }
private static void DumpDebugIntegerPlotFlag(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var guid1 = (Guid)data.Target.PlotFlagId.Guid; var guid2 = (Guid)data.Source.PlotFlagId.Guid; Func <string> callback1 = guid2.ToString; Func <string> callback2 = guid1.ToString; dumper.AddGuidResult(ebxInfo, data, guid1, callback1, typeName, "Target"); dumper.AddGuidResult(ebxInfo, data, guid2, callback2, typeName, "Source"); }
private static void DumpSystemDataReference(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var neighboringSystemsInfos = (object[])data.NeighboringSystemsInfo; if (neighboringSystemsInfos != null) { foreach (dynamic neighboringSystemsInfo in neighboringSystemsInfos) { DumpNeighboringSystemsInfo(ebxInfo, dumper, typeName, neighboringSystemsInfo, data); } } }
private static void DumpConversationConditionData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { Func <string> callback = () => data.DebugName; var activationConditions = (object[])data.ActivationConditions; if (activationConditions != null && activationConditions.Length > 0) { foreach (dynamic condition in activationConditions) { dumper.AddConditionResult(ebxInfo, data, condition, callback, typeName, "ActivationConditions"); } } }
private static void DumpPlotCompareIntegerEntityData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var guid1 = (Guid)data.PlotFlagReferenceA.PlotFlagId.Guid; var guid2 = (Guid)data.PlotFlagReferenceB.PlotFlagId.Guid; Func <string> callback1 = guid2.ToString; Func <string> callback2 = guid1.ToString; dumper.AddGuidResult(ebxInfo, data, guid1, callback1, typeName, "PlotFlagReferenceA"); dumper.AddGuidResult(ebxInfo, data, guid2, callback2, typeName, "PlotFlagReferenceB"); }
private static void DumpItemCountTrackerAsset(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var itemCountTrackers = (object[])data.ItemCountTracker; if (itemCountTrackers != null) { foreach (dynamic itemCountTracker in itemCountTrackers) { var guid = (Guid)itemCountTracker.ItemCountFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "ItemCountTracker", "ItemCountFlag"); } } }
private static void DumpPlotConfigurationAsset(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var newGamePlusPlotFlags = (object[])data.NewGamePlusPlotFlags; if (newGamePlusPlotFlags != null) { foreach (dynamic newGamePlusPlotFlag in newGamePlusPlotFlags) { var guid = (Guid)newGamePlusPlotFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "NewGamePlusPlotFlags"); } } }
private static void DumpSaveLevelContext(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var extraDatas = (object[])data.ExtraData; if (extraDatas != null) { foreach (dynamic extraData in extraDatas) { var guid = (Guid)extraData.ShouldUse.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "ExtraData", "ShouldUse"); } } }
public void AddConditionResult(EbxInfo ebxInfo, dynamic parent, dynamic data, Func <string> callback, params string[] typeParts) { if (typeParts.Length < 1) { throw new ArgumentOutOfRangeException("typeParts"); } var guid = (Guid)data.PlotFlagReference.PlotFlagId.Guid; if (guid == Guid.Empty) { return; } var conditionType = (PlotConditionType)data.ConditionType; var desiredValue = (bool)data.DesiredValue; if (conditionType == PlotConditionType.Expression || conditionType == PlotConditionType.Custom) { throw new NotSupportedException(); } var sb = new StringBuilder(); Guid dataGuid = parent.__GUID; if (dataGuid == Guid.Empty) { dataGuid = data.__GUID; } if (dataGuid != Guid.Empty) { sb.Append("[`"); sb.Append(dataGuid); sb.Append("`] "); } sb.AppendFormat("{0} => {1}, {2}", string.Join(".", typeParts), conditionType, desiredValue); if (callback != null) { var extra = callback(); if (string.IsNullOrEmpty(extra) == false) { sb.Append(": "); sb.Append(extra); } } this.AddResult(ebxInfo, guid, sb.ToString()); }
private static void DumpProgressiveTaskData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var currentProgress = (Guid)data.CurrentProgress.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, currentProgress, typeName, "CurrentProgress"); var displayConditions = (object[])data.DisplayConditions; if (displayConditions != null) { foreach (var condition in displayConditions) { dumper.AddConditionResult(ebxInfo, data, condition, typeName, "DisplayConditions"); } } var failureConditions = (object[])data.FailureConditions; if (failureConditions != null) { foreach (var condition in failureConditions) { dumper.AddConditionResult(ebxInfo, data, condition, typeName, "FailureConditions"); } } var hideConditions = (object[])data.HideConditions; if (hideConditions != null) { foreach (var condition in hideConditions) { dumper.AddConditionResult(ebxInfo, data, condition, typeName, "HideConditions"); } } var successConditions = (object[])data.SuccessConditions; if (successConditions != null) { foreach (var condition in successConditions) { dumper.AddConditionResult(ebxInfo, data, condition, typeName, "SuccessConditions"); } } var total = (Guid)data.Total.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, total, typeName, "Total"); }
private static void DumpPlotConditions(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var plotConditions = (object[])data.PlotConditions; if (plotConditions == null || plotConditions.Length == 0) { return; } foreach (dynamic condition in plotConditions) { dumper.AddConditionResult(ebxInfo, data, condition, typeName, "PlotConditions"); } }
public void AddActionResult(EbxInfo ebxInfo, dynamic parent, dynamic data, Func <string> callback, params string[] typeParts) { if (typeParts.Length < 1) { throw new ArgumentOutOfRangeException("typeParts"); } var guid = (Guid)data.PlotFlagReference.PlotFlagId.Guid; if (guid == Guid.Empty) { return; } var actionType = (PlotActionType)data.ActionType; if (actionType == PlotActionType.Custom) { throw new NotSupportedException(); } var sb = new StringBuilder(); Guid dataGuid = parent.__GUID; if (dataGuid == Guid.Empty) { dataGuid = data.__GUID; } if (dataGuid != Guid.Empty) { sb.Append("[`"); sb.Append(dataGuid); sb.Append("`] "); } sb.AppendFormat("{0} => {1}", string.Join(".", typeParts), actionType); if (callback != null) { var extra = callback(); if (string.IsNullOrEmpty(extra) == false) { sb.Append(": "); sb.Append(extra); } } }
private static void DumpCraftingResearchProjectItemData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var guid1 = (Guid)data.CompletedFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid1, typeName, "CompletedFlag"); if (data.ResearchNexusLevel != null) { var guid2 = (Guid)data.ResearchNexusLevel.NexusLevelPlotFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid2, typeName, "ResearchNexusLevel", "NexusLevelPlotFlag"); } }
private static void DumpTelemetryManagerData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var critPathPlotCompletion = (object[])data.CritPathPlotCompletion; if (critPathPlotCompletion == null || critPathPlotCompletion.Length == 0) { return; } foreach (dynamic critPathPlot in critPathPlotCompletion) { var guid = (Guid)critPathPlot.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "CritPathPlotCompletion"); } }
private void AddResult(EbxInfo ebxInfo, Guid guid, string line) { Dictionary <string, List <string> > resultsByPaths; if (this._Results.TryGetValue(guid, out resultsByPaths) == false) { this._Results[guid] = resultsByPaths = new Dictionary <string, List <string> >(); } List <string> resultsByPath; if (resultsByPaths.TryGetValue(ebxInfo.Name, out resultsByPath) == false) { resultsByPaths[ebxInfo.Name] = resultsByPath = new List <string>(); } resultsByPath.Add(line); }
private static void DumpViabilitySystemManagerEntityData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var viabilityDatas = (object[])data.ViabilityData; if (viabilityDatas != null) { foreach (dynamic viabilityData in viabilityDatas) { var guid = (Guid)viabilityData.PlotFlag.PlotFlagId.Guid; dumper.AddGuidResult(ebxInfo, data, guid, typeName, "ViabilityData", "PlotFlag"); } } }
private static void DumpPerksUIDataProviderData(EbxInfo ebxInfo, Dumper dumper, string typeName, dynamic data) { var perkCategories = (object[])data.PerkCategories; if (perkCategories != null) { foreach (dynamic perkCategory in perkCategories) { var perks = (object[])perkCategory.Perks; if (perks != null) { foreach (dynamic perk in perks) { DumpPerk(ebxInfo, dumper, typeName, perk, data); } } } } }