public Ob_ResearchDefinition GetObjectBuilder()
        {
            Ob_Trigger trigger = Trigger.GetObjectBuilder();

            if (!(trigger is Ob_Trigger_All))
            {
                trigger = new Ob_Trigger_All()
                {
                    Elements = new List <Ob_Trigger> {
                        trigger
                    }
                }
            }
            ;
            return(new Ob_ResearchDefinition()
            {
                Id = Id,
                Unlocks = UnlocksOriginal.Select(x => new NullableDefinitionId()
                {
                    Id = x
                }).ToList(),
                AutoStart = AutoStart,
                Description = Description,
                DisplayName = DisplayName,
                CompletionMessage = CompletionMessage,
                UpdatesAsNotifications = UpdatesAsNotifications,
                ShowCompletionWindow = ShowCompletionWindow,
                Trigger = (Ob_Trigger_All)trigger
            });
        }
    }
Example #2
0
        public Ob_Trigger GetObjectBuilder()
        {
            var any = new Ob_Trigger_Any()
            {
                Elements = new List <Ob_Trigger>(Branches.Count)
            };

            foreach (var branch in Branches)
            {
                var all = new Ob_Trigger_All()
                {
                    Elements = new List <Ob_Trigger>(branch.ResearchStates.Count + branch.Unlocked.Count +
                                                     branch.StatefulTriggers.Count)
                };
                foreach (var state in branch.ResearchStates)
                {
                    all.Elements.Add(new Ob_Trigger_ResearchState()
                    {
                        Id = state.Key, RequiredState = state.Value
                    });
                }
                foreach (var unlock in branch.Unlocked)
                {
                    all.Elements.Add(new Ob_Trigger_Unlocked()
                    {
                        DefinitionId = unlock
                    });
                }
                all.Elements.AddRange(branch.StatefulTriggers.Select(StateStorageProvider));
                any.Elements.Add(all);
            }
            return(any.Simplify());
        }