Skip to content

Commit

Permalink
Fix bugs, Improve UI
Browse files Browse the repository at this point in the history
Lots of minor improvements
  • Loading branch information
DanielWieder committed Jul 9, 2017
1 parent 131b440 commit 655ba65
Show file tree
Hide file tree
Showing 27 changed files with 506 additions and 112 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,10 @@ PoeCrafting/PoeCrafting.Entities/bin/*
PoeCrafting/PoeCrafting.Entities/obj/*
PoeCrafting/PoeCrafting.Test/bin/*
PoeCrafting/PoeCrafting.Test/obj/*
PoeCrafting/Output/*
PoeSimCraftImporter/PoeSimCraftImporter/bin/*
PoeSimCraftImporter/PoeSimCraftImporter/obj/*

*.pfx
*.suo
*.user
Binary file modified PoeCrafting/.vs/PoeCrafting/v14/.suo
Binary file not shown.
7 changes: 0 additions & 7 deletions PoeCrafting/PoeCrafting.Data/FetchAccessoriesByItemName.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,9 @@ public ItemBase Execute()
string command = $@"SELECT
i.Name,
i.Level,
a.Armour,
a.Evasion,
a.EnergyShield,
a.Str,
a.Dex,
a.Int,
ist.Name as Subtype,
it.Name as Type
FROM Item i
JOIN Armour a ON i.ItemId = a.ItemId
JOIN ItemSubType ist ON ist.ItemSubtypeId = i.ItemSubtypeId
JOIN ItemType it ON ist.ItemTypeId = it.ItemTypeId
WHERE i.Name = '{Name.Replace("'", "''")}'";
Expand Down
2 changes: 1 addition & 1 deletion PoeCrafting/PoeCrafting.Data/Random.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ namespace PoeCrafting.Data
{
public class PoeRandom : IRandom
{
Random _random = new Random();
readonly Random _random = new Random();
public int Next()
{
return _random.Next();
Expand Down
15 changes: 2 additions & 13 deletions PoeCrafting/PoeCrafting.Domain/Crafting/CraftingTree.cs
Original file line number Diff line number Diff line change
Expand Up @@ -117,20 +117,13 @@ public void Select(ICraftingStep selected)
selectedList.Insert(afterIndex, afterSelected);
}

if (selected.Children != null && !selected.Children.Any())
if (selected.Children != null)
{
var insideSelected = new InsertCraftingStep(_factory);
InsideSelected = insideSelected;
selected.Children.Add(insideSelected);
selected.Children.Insert(0, InsideSelected);
}

//if ( selected == CraftingSteps.Last() && CraftingSteps.Last().Children != null)
//{
// var lastAfterConditional = new InsertCraftingStep(_factory);
// LastAfterConditional = lastAfterConditional;
// CraftingSteps.Add(lastAfterConditional);
//}

UpdateStatus();

if (selected.Status == CraftingStepStatus.Unreachable)
Expand Down Expand Up @@ -244,10 +237,6 @@ private void RemoveInsertNodes()
{
Remove(InsideSelected, CraftingSteps);
}
//if (LastAfterConditional != null)
//{
// Remove(LastAfterConditional, CraftingSteps);
//}
}

private void UpdateStatus()
Expand Down
12 changes: 2 additions & 10 deletions PoeCrafting/PoeCrafting.Domain/Crafting/CurrencyCraftingStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,17 +57,9 @@ public void ClearStatus()

public ItemStatus UpdateStatus(ItemStatus current)
{
if (!_status.Initialized)
{
_status = current;
}
else
{
// We combine the status since update status can be run multiple times due to if/while statements
_status = current.Initialized ? ItemStatus.Combine(new List<ItemStatus> { current, _status }) : current;
}
_status = (ItemStatus)current.Clone();

return _currency.GetNextStatus((ItemStatus)current.Clone());
return _currency.GetNextStatus(current);
}

public Equipment Craft(Equipment equipment)
Expand Down
8 changes: 4 additions & 4 deletions PoeCrafting/PoeCrafting.Domain/Crafting/IfCraftingStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,15 @@ public ItemStatus UpdateStatus(ItemStatus status)
var nextSteps = Children.ToList();
nextSteps.RemoveAt(0);

var nextStatus = (ItemStatus) status.Clone();
nextStatus = first.NavigateTree(nextStatus, nextSteps, (step, item) => step.UpdateStatus(nextStatus));
var initialStatus = (ItemStatus) status.Clone();
var endStatus = first.NavigateTree(initialStatus, nextSteps, (step, nextStatus) => step.UpdateStatus(nextStatus));

if (nextStatus.Completed)
if (endStatus.Completed)
{
return status;
}

return ItemStatus.Combine(new List<ItemStatus> {status, nextStatus});
return ItemStatus.Combine(new List<ItemStatus> {status, endStatus });

}
return status;
Expand Down
13 changes: 7 additions & 6 deletions PoeCrafting/PoeCrafting.Domain/Crafting/WhileCraftingStep.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,6 @@ public ItemStatus UpdateStatus(ItemStatus status)
if (Children.Count > 0)
{
var first = Children.First();
var nextSteps = Children.ToList();
nextSteps.RemoveAt(0);

ItemStatus endStatus = (ItemStatus) status.Clone();
bool isStatusEquilibrium = false;
Expand All @@ -44,17 +42,20 @@ public ItemStatus UpdateStatus(ItemStatus status)
// Combining status always take the widest value within the max/min so it should always converge.
while (!isStatusEquilibrium)
{
var nextStatus = first.NavigateTree((ItemStatus) endStatus.Clone(), nextSteps,
(step, item) => step.UpdateStatus(status));
var nextSteps = Children.ToList();
nextSteps.RemoveAt(0);

var lastStatus = first.NavigateTree((ItemStatus) endStatus.Clone(), nextSteps,
(step, nextStatus) => step.UpdateStatus(nextStatus));

if (nextStatus.Completed)
if (lastStatus.Completed)
{
isStatusEquilibrium = true;
}
else
{

var combinedStatus = ItemStatus.Combine(new List<ItemStatus> {endStatus, nextStatus});
var combinedStatus = ItemStatus.Combine(new List<ItemStatus> {endStatus, lastStatus });
if (endStatus.AreEqual(combinedStatus))
{
isStatusEquilibrium = true;
Expand Down
2 changes: 1 addition & 1 deletion PoeCrafting/PoeCrafting.Domain/Currency/AlterationOrb.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ public bool Execute(Equipment item)

item.Stats.Clear();

int affixCount = Random.Next(2);
int affixCount = Random.Next(2) + 1;
for (int i = 0; i < affixCount; i++)
{
StatFactory.AddExplicit(Random, item);
Expand Down
2 changes: 1 addition & 1 deletion PoeCrafting/PoeCrafting.Domain/EquipmentFactory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public void Initialize(string baseItemName, int itemLevel = 84)
_fetchArmorByItemName.Name = baseItemName;
_baseItem = _fetchArmorByItemName.Execute();
}
else if (type.Contains("Accessory"))
else if (type.Contains("Jewelry"))
{
_fetchAccessoriesByName.Name = baseItemName;
_baseItem = _fetchAccessoriesByName.Execute();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="127,88,0,0" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Subtypes}" SelectedItem="{Binding SelectedSubtype}"/>
<ComboBox x:Name="comboBox1" HorizontalAlignment="Left" Margin="127,133,0,0" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Bases}" SelectedItem="{Binding SelectedBase}"/>
<ComboBox x:Name="comboBox1" HorizontalAlignment="Left" Margin="127,133,0,0" VerticalAlignment="Top" Width="120" ItemsSource="{Binding Bases}" SelectedItem="{Binding SelectedBase}" IsEnabled="{Binding HasSubtype}"/>
<Label x:Name="label" Content="Type" HorizontalAlignment="Left" Margin="43,84,0,0" VerticalAlignment="Top"/>
<Label x:Name="label_Copy" Content="Subtype" HorizontalAlignment="Left" Margin="43,133,0,0" VerticalAlignment="Top"/>
<Label x:Name="label1" Content="Level" HorizontalAlignment="Left" Margin="43,173,0,0" VerticalAlignment="Top"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,14 +31,17 @@ public partial class BaseSelectionControl : UserControl, INotifyPropertyChanged,
public List<string> Subtypes { get; }
public List<string> Bases { get; set; }

public bool HasSubtype => !string.IsNullOrEmpty(_selectedSubtype);

public string SelectedSubtype
{
get { return _selectedSubtype; }
set
{
_selectedSubtype = value;
Bases = _fetch.FetchBasesBySubtype(_selectedSubtype);
Bases = _fetch.FetchBasesBySubtype(_selectedSubtype).OrderBy(x => x).ToList();
OnPropertyChanged(nameof(Bases));
OnPropertyChanged(nameof(HasSubtype));
}
}

Expand All @@ -60,7 +63,7 @@ public void Save()
public BaseSelectionControl(EquipmentFetch fetch)
{
_fetch = fetch;
Subtypes = fetch.FetchSubtypes();
Subtypes = fetch.FetchSubtypes().OrderBy(x => x).ToList();
InitializeComponent();
DataContext = this;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,20 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:PoeCrafting.UI.Controls"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
mc:Ignorable="d">
<Grid>
<ProgressBar Minimum="0" Maximum="100" Value="{Binding Progress, Mode=TwoWay}"/>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>

<StackPanel Grid.Row="1" Grid.Column="0" Orientation="Vertical">
<ProgressBar HorizontalAlignment="Center" VerticalAlignment="Center" Height="30" Width="200" Minimum="0" Maximum="100" Value="{Binding Progress, Mode=TwoWay}"/>
<Label FontSize="20" Content="{Binding Message}" HorizontalAlignment="Center" VerticalAlignment="Center" Height="40"/>
</StackPanel>
</Grid>
</UserControl>
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ public partial class CraftingControl : UserControl, INotifyPropertyChanged, ISim
{
private int _totalCurrency;
public int Progress { get; set; } = 0;
public string Message { get; set; } = "Crafting...";

public List<Equipment> EquipmentList = new List<Equipment>();

private CraftingTree _craftingTree;
Expand Down Expand Up @@ -70,6 +72,10 @@ public void Initialize(CraftingTree craftingTree, EquipmentFactory factory, List

ItemCount = 0;
Progress = 0;
Message = "Crafting...";

OnPropertyChanged(nameof(Message));
OnPropertyChanged(nameof(Progress));

RunTask();
}
Expand Down Expand Up @@ -98,6 +104,8 @@ private void Run(CancellationToken ct)
if (ItemCount == 1 && currencySpent == 0)
{
Progress = 100;
Message = "Completed";
OnPropertyChanged(nameof(Message));
OnPropertyChanged(nameof(Progress));
return;
}
Expand Down Expand Up @@ -125,8 +133,10 @@ private void Run(CancellationToken ct)
OnPropertyChanged(nameof(Progress));
}
}
Message = "Completed";
Progress = 100;
OnPropertyChanged(nameof(Progress));
OnPropertyChanged(nameof(Message));
}

public bool IsReady()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ public CraftingResultsControl()

public void Initialize(Dictionary<ItemPrototypeModel, List<Equipment>> items)
{
ItemResults = string.Empty;
OnPropertyChanged(nameof(ItemResults));

ItemDictionary = items;
ItemPrototypes.Clear();
foreach (var itemPrototype in ItemDictionary.Keys)
Expand Down Expand Up @@ -90,7 +93,7 @@ private void OnItemSelected(object sender, SelectionChangedEventArgs e)
builder.Append(Environment.NewLine);


if (item.ItemBase.Properties["EnergyShield"] > 0)
if (item.ItemBase.Properties.ContainsKey("EnergyShield") && item.ItemBase.Properties["EnergyShield"] > 0)
{
var totalEs = AffixValueCalculator.GetAffixValue("TotalEnergyShield", item, AffixType.Meta, SubconditionValueType.Flat);
var maxEs = AffixValueCalculator.GetAffixValue("TotalEnergyShield", item, AffixType.Meta, SubconditionValueType.Max);
Expand All @@ -100,7 +103,7 @@ private void OnItemSelected(object sender, SelectionChangedEventArgs e)
builder.Append(Environment.NewLine);
}

if (item.ItemBase.Properties["Armour"] > 0)
if (item.ItemBase.Properties.ContainsKey("Armour") && item.ItemBase.Properties["Armour"] > 0)
{
var totalArmour = AffixValueCalculator.GetAffixValue("TotalArmour", item, AffixType.Meta, SubconditionValueType.Flat);
var maxArmour = AffixValueCalculator.GetAffixValue("TotalArmour", item, AffixType.Meta, SubconditionValueType.Max);
Expand All @@ -110,7 +113,7 @@ private void OnItemSelected(object sender, SelectionChangedEventArgs e)
builder.Append(Environment.NewLine);
}

if (item.ItemBase.Properties["Evasion"] > 0)
if (item.ItemBase.Properties.ContainsKey("Evasion") && item.ItemBase.Properties["Evasion"] > 0)
{
var totalEvasion = AffixValueCalculator.GetAffixValue("TotalEvasion", item, AffixType.Meta, SubconditionValueType.Flat);
var maxEvasion = AffixValueCalculator.GetAffixValue("TotalEvasion", item, AffixType.Meta, SubconditionValueType.Max);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,20 @@ private void AddItem()
Index = index
};
ItemPrototypes.Add(prototypeModel);
SelectedItem = prototypeModel;
UpdateSelectedItem();

OnPropertyChanged(nameof(SelectedItem));
OnPropertyChanged(nameof(ItemControl));
OnPropertyChanged(nameof(ItemPrototypes));
}

private void OnItemSelected(object sender, SelectionChangedEventArgs e)
{
UpdateSelectedItem();
}

private void UpdateSelectedItem()
{
if (SelectedItem == null)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,19 +9,21 @@
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="30" />

<RowDefinition Height="20" />
<RowDefinition Height="*" MinHeight="200"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>

<Grid.ColumnDefinitions>
<ColumnDefinition Width="90"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="120"/>
<ColumnDefinition Width="40"/>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="*" MinWidth="40"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<ComboBox Grid.Column="0" Grid.Row="0" SelectedItem="{Binding SelectedSubcondition, Mode=TwoWay}" ItemsSource="{Binding SubconditionControls}" DisplayMemberPath="SubconditionName"/>
<Button Grid.Column="2" Grid.Row="0" Content="Add" Click="OnAddClick"/>
<Label Grid.Column="0" Grid.Row="0">Subconditions</Label>
<ComboBox Grid.Column="1" Grid.Row="0" SelectedItem="{Binding SelectedSubcondition, Mode=TwoWay}" ItemsSource="{Binding SubconditionControls}" DisplayMemberPath="SubconditionName"/>
<Button Grid.Column="2" Grid.Row="0" Content="Add Subcondition" Click="OnAddClick"/>
<Border Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="4" BorderThickness="0 1 0 1" BorderBrush="Black">
<ScrollViewer>
<ContentControl ScrollViewer.VerticalScrollBarVisibility="Auto" Content="{Binding SelectedSubcondition, Mode=TwoWay }"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,9 +53,9 @@ public ConditionControl(CraftingCondition condition, ItemBase itemBase, List<Aff

SubconditionControls = new ObservableCollection<SubconditionControl>();

foreach (CraftingSubcondition t in condition.CraftingSubConditions)
for (int i = condition.CraftingSubConditions.Count - 1; i >= 0; i--)
{
var subconditionControl = new SubconditionControl(t, affixes, GetNextIndex());
var subconditionControl = new SubconditionControl(condition.CraftingSubConditions[i], affixes, GetNextIndex());
subconditionControl.OnDeleteEvent += (x, y) => RemoveSubcondition(y.Control);
SubconditionControls.Add(subconditionControl);
}
Expand All @@ -82,7 +82,8 @@ public void AddSubcondition()

_craftingCondition.CraftingSubConditions.Add(subcondition);
SubconditionControls.Add(subconditionControl);

SelectedSubcondition = subconditionControl;
OnPropertyChanged(nameof(SelectedSubcondition));
OnPropertyChanged(nameof(SubconditionControls));
}

Expand Down
Loading

0 comments on commit 655ba65

Please sign in to comment.