コード例 #1
0
        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);
                    }
                }
            }
        }
コード例 #2
0
        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");
        }
コード例 #3
0
        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");
                }
            }
        }
コード例 #4
0
        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");
        }
コード例 #5
0
        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");
                }
            }
        }
コード例 #6
0
        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");
        }
コード例 #7
0
        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");
        }
コード例 #8
0
 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");
 }
コード例 #9
0
        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");
        }
コード例 #10
0
        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");
        }
コード例 #11
0
        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");
                }
            }
        }
コード例 #12
0
        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");
        }
コード例 #13
0
        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");
        }
コード例 #14
0
        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");
            }
        }
コード例 #15
0
        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");
        }
コード例 #16
0
        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);
                }
            }
        }
コード例 #17
0
        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");
                }
            }
        }
コード例 #18
0
        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");
        }
コード例 #19
0
        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");
                }
            }
        }
コード例 #20
0
        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");
                }
            }
        }
コード例 #21
0
        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");
                }
            }
        }
コード例 #22
0
        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());
        }
コード例 #23
0
        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");
        }
コード例 #24
0
        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");
            }
        }
コード例 #25
0
        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);
                }
            }
        }
コード例 #26
0
        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");
            }
        }
コード例 #27
0
        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");
            }
        }
コード例 #28
0
        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);
        }
コード例 #29
0
        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");
                }
            }
        }
コード例 #30
0
        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);
                        }
                    }
                }
            }
        }