|
|
This crash happened while execution was paused. I had breakpoints set and I was reviewing code in Visual Studio. I was in this code block:
public override void OnUpdate()
{
_SkillPointsTextBlock.Text = SessionState.Instance.Player.AvailableSkillPoints + " Points";
_WrapPanel.Children.Clear();
List<BaseSkill> skills = Starpedia.Skills.OrderBy(a => a.TypeName).ToList();
for (int i = 0; i < skills.Count; i++)
{
BaseSkill skill = skills[i];
bool isSkillLearned = false;
if (SessionState.Instance.Player.Skills.TryGetValue(skill.TypeId, out BaseSkill playerSkill))
{
isSkillLearned = true;
skill = playerSkill;
}
Grid rootGrid = new Grid();
rootGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Auto) });
rootGrid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star) });
rootGrid.Margin = new Thickness(5, 5, 5, 5);
rootGrid.Width = 400;
Image containerImage = new Image() { Width = 96, Height = 96 };
containerImage.Margin = new Thickness(10, 0, 20, 0);
containerImage.VerticalAlignment = VerticalAlignment.Top;
containerImage.Source = UIUtility.GetImageSource(_Root, "skill_image_container");
rootGrid.Children.Add(containerImage);
Grid.SetColumn(containerImage, 0);
if (isSkillLearned)
{
Image trainedImage = new Image() { Width = 96, Height = 96 };
trainedImage.Margin = new Thickness(10, 0, 20, 0);
trainedImage.VerticalAlignment = VerticalAlignment.Top;
trainedImage.Source = UIUtility.GetImageSource(_Root, "skill_image_trained");
rootGrid.Children.Add(trainedImage);
Grid.SetColumn(trainedImage, 0);
}
Image bwImage = new Image() { Width = 96, Height = 96 };
bwImage.Margin = new Thickness(10, 0, 20, 0);
bwImage.VerticalAlignment = VerticalAlignment.Top;
bwImage.Source = UIUtility.GetImageSource(_Root, skill.ThumbImageUrl + "_bw");
rootGrid.Children.Add(bwImage);
Grid.SetColumn(bwImage, 0);
if (isSkillLearned)
bwImage.Visibility = Visibility.Collapsed;
Image colorImage = new Image() { Width = 96, Height = 96 };
colorImage.Margin = new Thickness(10, 0, 20, 0);
colorImage.VerticalAlignment = VerticalAlignment.Top;
colorImage.Source = UIUtility.GetImageSource(_Root, skill.ThumbImageUrl);
rootGrid.Children.Add(colorImage);
Grid.SetColumn(colorImage, 0);
if (!isSkillLearned)
colorImage.Visibility = Visibility.Collapsed;
Grid rightColumnGrid = new Grid();
rightColumnGrid.Margin = new Thickness(0, 0, 0, 10);
rightColumnGrid.HorizontalAlignment = HorizontalAlignment.Stretch;
rightColumnGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) });
rightColumnGrid.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Auto) });
rightColumnGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); // title
rightColumnGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); // description
rightColumnGrid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Auto) }); // modifier
rootGrid.Children.Add(rightColumnGrid);
Grid.SetColumn(rightColumnGrid, 1);
TextBlock title = new TextBlock();
title.Margin = new Thickness(0, 5, 0, 0);
title.Style = (Style)_Root.FindResource("Heading5Primary");
title.Text = skill.TypeName;
rightColumnGrid.Children.Add(title);
Grid.SetRow(title, 0);
Grid.SetColumn(title, 0);
if (isSkillLearned && skill.Levels > 0)
{
StackPanel skillLevelStackPanel = new StackPanel();
skillLevelStackPanel.VerticalAlignment = VerticalAlignment.Top;
skillLevelStackPanel.LayoutTransform = new ScaleTransform(0.5f, 0.5f);
skillLevelStackPanel.Margin = new Thickness(0, 0, 9, -8);
skillLevelStackPanel.Orientation = Orientation.Horizontal;
rightColumnGrid.Children.Add(skillLevelStackPanel);
Grid.SetRow(skillLevelStackPanel, 0);
Grid.SetColumn(skillLevelStackPanel, 1);
for (int j = 1; j <= skill.Levels; j++)
{
Image image = new Image();
image.ToolTip = "Level [" + skill.Level.ToString() + " / " + skill.Levels.ToString() + "]";
if (skill.Level >= j)
{
image.Source = UIUtility.GetImageSource(_Root, "skill_level_on");
image.Width = 22;
image.Height = 47;
}
else
{
image.Source = UIUtility.GetImageSource(_Root, "skill_level_off");
image.Margin = new Thickness(4, 4, 4, 4);
image.Width = 14;
image.Height = 39;
}
skillLevelStackPanel.Children.Add(image);
}
}
TextBlock description = new TextBlock();
description.VerticalAlignment = VerticalAlignment.Top;
description.Margin = new Thickness(0, 5, 0, 0);
description.Style = (Style)_Root.FindResource("Heading5Secondary");
if (!string.IsNullOrEmpty(skill.TypeDescription))
description.Text = skill.TypeDescription;
description.TextWrapping = TextWrapping.Wrap;
rightColumnGrid.Children.Add(description);
Grid.SetRow(description, 1);
Grid.SetColumnSpan(description, 2);
if (isSkillLearned && !string.IsNullOrEmpty(skill.ModifierDescription))
{
TextBlock modifier = new TextBlock();
modifier.VerticalAlignment = VerticalAlignment.Top;
modifier.Margin = new Thickness(0, 5, 0, 0);
modifier.Style = (Style)_Root.FindResource("Heading5Secondary");
modifier.Text = skill.ModifierDescription + " " + skill.ModifierValueString;
modifier.TextWrapping = TextWrapping.Wrap;
rightColumnGrid.Children.Add(modifier);
Grid.SetRow(modifier, 2);
Grid.SetColumnSpan(modifier, 2);
}
rootGrid.Margin = new Thickness(0, 8, 0, 8);
ItemControl button = new ItemControl();
button.Tag = skill.Category;
button.Name = skill.TypeName;
button.Add(rootGrid);
button.Button.Click += (sender, e) =>
{
IActionProvider actionProvider = skill as IActionProvider;
UIUtility.ShowActions(_Root, actionProvider);
};
_WrapPanel.Children.Add(button);
}
ApplyFilter();
}
Not 100% certain, but I believe I was inspecting the children property of WrapPanel. I see that this code was executed -- Noesis.ContentControl.ToString(). |