Skip to content

Commit

Permalink
now reports specific low components
Browse files Browse the repository at this point in the history
  • Loading branch information
patri0t86 committed Jul 6, 2020
1 parent 31b091f commit 5cbff41
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 12 deletions.
4 changes: 2 additions & 2 deletions Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,5 +31,5 @@
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("2.3.1")]
[assembly: AssemblyFileVersion("2.3.1")]
[assembly: AssemblyVersion("2.4.0")]
[assembly: AssemblyFileVersion("2.4.0")]
42 changes: 36 additions & 6 deletions StateMachine/Inventory.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@
using Decal.Adapter.Wrappers;
using Decal.Filters;
using System.Collections.Generic;
using System.Text;

namespace ACManager.StateMachine
{
internal class Inventory
{
private Machine Machine { get; set; }
internal Dictionary<string, int> SpellComponents { get; set; } = new Dictionary<string, int>();
internal List<string> LowComponents { get; set; } = new List<string>();
internal int ComponentThreshold { get; set; }
internal int LeadScarabThreshold { get; set; }
internal int IronScarabThreshold { get; set; }
Expand All @@ -18,7 +20,6 @@ internal class Inventory
internal int PyrealScarabThreshold { get; set; }
internal int PlatinumScarabThreshold { get; set; }
internal int ManaScarabThreshold { get; set; }
internal bool IsLowOnComponents { get; set; } = false;

public Inventory(Machine machine)
{
Expand Down Expand Up @@ -60,20 +61,49 @@ internal void GetComponentLevels()

private void CheckComponentThresholds()
{
IsLowOnComponents = false;
LowComponents.Clear();
foreach (KeyValuePair<string, int> component in SpellComponents)
{
if (component.Key.Contains("Scarab"))
{
IsLowOnComponents = IsScarabLow(component.Key, component.Value);
if (IsLowOnComponents) break;
if (IsScarabLow(component.Key, component.Value))
{
LowComponents.Add(component.Key);
}
}
else
{
if (IsComponentLow(component.Value))
{
LowComponents.Add(component.Key);
}
}
}
}

internal string LowCompsReport()
{
StringBuilder sb = new StringBuilder();
sb.Append("I'm low on ");
for (int i = 0; i < LowComponents.Count; i++)
{
if (!i.Equals(LowComponents.Count - 1))
{
sb.Append($"{LowComponents[i]}s");
sb.Append(", ");
}
else
{
IsLowOnComponents = IsComponentLow(component.Value);
if (IsLowOnComponents) break;
if (LowComponents.Count.Equals(1))
{
sb.Append($"{LowComponents[i]}s.");
} else
{
sb.Append($"and {LowComponents[i]}s.");
}
}
}
return sb.ToString();
}

private bool IsComponentLow(int qty)
Expand Down
5 changes: 3 additions & 2 deletions StateMachine/States/Casting.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Decal.Adapter.Wrappers;
using Decal.Filters;
using System.Text;

namespace ACManager.StateMachine.States
{
Expand All @@ -13,9 +14,9 @@ public void Enter(Machine machine)
machine.Fizzled = false;
machine.CastCompleted = false;
machine.CastStarted = false;
if (machine.Inventory.IsLowOnComponents)
if (machine.Inventory.LowComponents.Count > 0)
{
machine.ChatManager.Broadcast($"I'm low on spell components, please '/t {machine.Core.CharacterFilter.Name}, comps' to see what I'm low on.");
machine.ChatManager.Broadcast(machine.Inventory.LowCompsReport());
}
}

Expand Down
5 changes: 3 additions & 2 deletions StateMachine/States/Idle.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Decal.Adapter.Wrappers;
using System;
using System.Text;

namespace ACManager.StateMachine.States
{
Expand Down Expand Up @@ -140,9 +141,9 @@ public void Process(Machine machine)
{
machine.ChatManager.Broadcast(machine.Utility.BotSettings.Advertisements[machine.RandomNumber.Next(0, machine.Utility.BotSettings.Advertisements.Count)].Message);
}
if (machine.Inventory.IsLowOnComponents)
if (machine.Inventory.LowComponents.Count > 0)
{
machine.ChatManager.Broadcast($"I'm low on spell components, please '/t {machine.Core.CharacterFilter.Name}, comps' to see what I'm low on.");
machine.ChatManager.Broadcast(machine.Inventory.LowCompsReport());
}
}
}
Expand Down

0 comments on commit 5cbff41

Please sign in to comment.