示例#1
0
        private void UpdateAllDataViews(Backstory bs)
        {
            GridViewUtility.UpdateView(dataGridViewSkills, bs?.skillGains,
                                       bs != null ? new int[] { 125, 25, 25 } : null);
            GridViewUtility.UpdateView(dataGridViewTraitsForced, bs?.forcedTraits,
                                       bs != null ? new int[] { 135, 25 } : null,
                                       bs != null ? new List <string> {
                "defName", "degree"
            } : null);
            GridViewUtility.UpdateView(dataGridViewTraitsDisallowed, bs?.disallowedTraits,
                                       bs != null ? new int[] { 135, 25 } : null,
                                       bs != null ? new List <string> {
                "defName", "degree"
            } : null);

            richTextBoxRequiredWorkTypes.Text = bs?.requiredWorkTags?.FirstOrDefault() == null ? "" : string.Join(", ", bs.requiredWorkTags); //bs?.requiredWorkTags.ToString() ?? "";
            richTextBoxDisabledWorkTypes.Text = bs?.workDisables?.FirstOrDefault() == null ? "" : string.Join(", ", bs.workDisables);         //bs?.workDisables.ToString() ?? "";


            richTextBoxSpawnCategories.Text =
                bs?.spawnCategories?.Count > 0 ?
                richTextBoxSpawnCategories.Text = string.Join(", ", bs.spawnCategories)
                    :
                                                  "";
        }
        internal bool TryAddSkillGain(ComboBox comboBoxSkills, DataGridView dataGridView)
        {
            try
            {
                if (!TryGettingBackstory(out Backstory selectedBackstory))
                {
                    return(false);
                }
                Enum.TryParse <SkillDef>(comboBoxSkills.Items[comboBoxSkills.SelectedIndex].ToString(), out var skill);


                bool newList = false;
                if (selectedBackstory.skillGains == null || selectedBackstory.skillGains.Count() == 0)
                {
                    newList = true;
                    selectedBackstory.skillGains = new BindingList <SkillGain>();
                }
                else
                {
                    if (selectedBackstory.skillGains.FirstOrDefault(x => x.defName == skill) != null)
                    {
                        MessageBox.Show("Skill gain entry \"" + skill + "\" already exists.");
                        return(false);
                    }
                }

                var newSkill = new SkillGain()
                {
                    defName = skill, amount = 1
                };

                selectedBackstory.skillGains.Add(newSkill);
                if (newList)
                {
                    GridViewUtility.UpdateView(dataGridView, selectedBackstory.skillGains,
                                               selectedBackstory != null ? new int[] { 125, 25, 25 } : null);
                }

                return(true);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString() + "\n" + e.StackTrace.ToString());
            }
            return(false);
        }
        internal bool TryAddForcedTrait(ComboBox comboBoxTraitsForced, DataGridView dataGridView)
        {
            if (!TryGettingBackstory(out Backstory selectedBackstory))
            {
                return(false);
            }

            var selectedItem = (TraitEntry)comboBoxTraitsForced.Items[comboBoxTraitsForced.SelectedIndex];



            bool newList = false;

            if (selectedBackstory.forcedTraits == null || selectedBackstory.forcedTraits.Count() == 0)
            {
                newList = true;
                selectedBackstory.forcedTraits = new BindingList <TraitEntry>();
            }

            if (selectedBackstory?.forcedTraits?.FirstOrDefault(x => x.defName == selectedItem.defName) != null)
            {
                MessageBox.Show("Failed to add new forced trait entry. Trait entry already exists.");
                return(false);
            }

            selectedBackstory.forcedTraits.Add(selectedItem);

            if (dataGridView.DataSource != selectedBackstory.forcedTraits)
            {
                dataGridView.DataSource = selectedBackstory.forcedTraits;
            }


            if (newList)
            {
                GridViewUtility.UpdateView(dataGridView, selectedBackstory?.forcedTraits,
                                           selectedBackstory != null ? new int[] { 135, 25 } : null,
                                           selectedBackstory != null ? new List <string> {
                    "defName", "degree"
                } : null);
            }
            return(true);
        }