added missing currencies

This commit is contained in:
Camille 2022-01-20 00:01:25 +01:00
parent f0f6b6ae81
commit 0aa8a8b350
6 changed files with 79 additions and 39 deletions

View File

@ -0,0 +1,14 @@
using System;
namespace CurrencyAlert.Enum
{
internal class CategoryAttribute : Attribute
{
public CategoryAttribute(string v)
{
Value = v;
}
public string Value { get; }
}
}

View File

@ -2,9 +2,9 @@
namespace CurrencyAlert namespace CurrencyAlert
{ {
internal class SlotAttribute : Attribute internal class ItemIDAttribute : Attribute
{ {
public SlotAttribute(int v) public ItemIDAttribute(int v)
{ {
Value = v; Value = v;
} }

View File

@ -3,7 +3,7 @@
<PropertyGroup> <PropertyGroup>
<Authors></Authors> <Authors></Authors>
<Company></Company> <Company></Company>
<Version>0.2.4.0</Version> <Version>0.3.0.0</Version>
<Description>Currency Alert</Description> <Description>Currency Alert</Description>
<Copyright></Copyright> <Copyright></Copyright>
<PackageProjectUrl>https://github.com/Lharz/xiv-currency-alert</PackageProjectUrl> <PackageProjectUrl>https://github.com/Lharz/xiv-currency-alert</PackageProjectUrl>

View File

@ -8,19 +8,39 @@ namespace CurrencyAlert.Enum
{ {
public enum Currency public enum Currency
{ {
[Name("Tomestones of Poetics"), Slot(6), DefaultThreshold(1400)] [Name("Tomestones of Poetics"), ItemID(28), DefaultThreshold(1400), Category("Battle")]
TomestoneOfPoetics, TomestoneOfPoetics,
[Name("Tomestones of Astronomy"), Slot(10), DefaultThreshold(1800)] [Name("Tomestones of Aphorism"), ItemID(42), DefaultThreshold(1700), Category("Battle")]
TomestoneOfAphorism,
[Name("Tomestones of Astronomy"), ItemID(43), DefaultThreshold(1700), Category("Battle")]
TomestoneOfAstronomy, TomestoneOfAstronomy,
[Name("Storm Seals"), Slot(1), DefaultThreshold(75000)]
[Name("Storm Seals"), ItemID(20), DefaultThreshold(75000), Category("Common")]
StormSeal, StormSeal,
[Name("Serpent Seals"), Slot(2), DefaultThreshold(75000)] [Name("Serpent Seals"), ItemID(21), DefaultThreshold(75000), Category("Common")]
SerpentSeal, SerpentSeal,
[Name("Flame Seals"), Slot(3), DefaultThreshold(75000)] [Name("Flame Seals"), ItemID(22), DefaultThreshold(75000), Category("Common")]
FlameSeal, FlameSeal,
[Name("Wolf Marks"), Slot(4), DefaultThreshold(18000)]
[Name("Wolf Marks"), ItemID(25), DefaultThreshold(18000), Category("Battle")]
WolfMark, WolfMark,
[Name("Allied Seals"), Slot(8), DefaultThreshold(3500)]
AlliedSeal [Name("Allied Seals"), ItemID(27), DefaultThreshold(3500), Category("Battle")]
AlliedSeal,
[Name("Centurio Seals"), ItemID(10307), DefaultThreshold(3500), Category("Battle")]
CenturioSeal,
[Name("Sack of Nuts"), ItemID(26533), DefaultThreshold(3500), Category("Battle")]
SackOfNut,
[Name("White Crafters' Scrip"), ItemID(25199), DefaultThreshold(1500), Category("Other")]
WhiteCraftersScrip,
[Name("Purple Crafters' Scrip"), ItemID(33913), DefaultThreshold(1500), Category("Other")]
PurpleCraftersScrip,
[Name("White Gatherers' Scrip"), ItemID(25200), DefaultThreshold(1500), Category("Other")]
WhiteGatherersScrip,
[Name("Purple Gatherers' Scrip"), ItemID(33914), DefaultThreshold(1500), Category("Other")]
PurpleGatherersScrip,
[Name("Skybuilders' Scrip"), ItemID(28063), DefaultThreshold(7500), Category("Other")]
SkybuildersScrip
} }
} }

View File

@ -61,19 +61,11 @@ namespace CurrencyAlert
unsafe unsafe
{ {
InventoryManager* inventoryManager = InventoryManager.Instance(); InventoryManager* inventoryManager = InventoryManager.Instance();
InventoryContainer* currencyContainer = inventoryManager->GetInventoryContainer(InventoryType.Currency);
EnumHelper.Each<Currency>(currency => EnumHelper.Each<Currency>(currency =>
{ {
var slot = EnumHelper.GetAttributeOfType<SlotAttribute>(currency).Value; var itemID = EnumHelper.GetAttributeOfType<ItemIDAttribute>(currency).Value;
InventoryItem* item = currencyContainer->GetInventorySlot((int)slot); int quantity = inventoryManager->GetInventoryItemCount((uint)itemID);
if (item == null)
{
return; // TODO: write a log somewhere
}
uint quantity = item->Quantity;
if (this.Configuration.AlertEnabled[currency] && quantity >= this.Configuration.Threshold[currency]) if (this.Configuration.AlertEnabled[currency] && quantity >= this.Configuration.Threshold[currency])
{ {

View File

@ -80,15 +80,20 @@ namespace CurrencyAlert
public void DrawSettingsWindow() public void DrawSettingsWindow()
{ {
ImGui.SetNextWindowSize(new Vector2(400, 600), ImGuiCond.Always); ImGui.SetNextWindowSize(new Vector2(700, 500), ImGuiCond.Always);
if (ImGui.Begin("Currency Alert Configuration Window", ref this.settingsVisible, if (ImGui.Begin("Currency Alert Configuration Window", ref this.settingsVisible,
ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoScrollbar | ImGuiWindowFlags.NoScrollWithMouse)) ImGuiWindowFlags.NoResize | ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoScrollWithMouse))
{
if (ImGui.BeginTabBar("AlertsConfiguration_Tabs"))
{ {
EnumHelper.Each<Currency>(currency => EnumHelper.Each<Currency>(currency =>
{ {
var name = EnumHelper.GetAttributeOfType<NameAttribute>(currency).Value; var name = EnumHelper.GetAttributeOfType<NameAttribute>(currency).Value;
var category = EnumHelper.GetAttributeOfType<CategoryAttribute>(currency).Value;
var alertEnabled = this.configuration.AlertEnabled[currency]; var alertEnabled = this.configuration.AlertEnabled[currency];
if (ImGui.BeginTabItem(category))
{
if (ImGui.Checkbox($"{name} Alert Enabled", ref alertEnabled)) if (ImGui.Checkbox($"{name} Alert Enabled", ref alertEnabled))
{ {
this.configuration.AlertEnabled[currency] = alertEnabled; this.configuration.AlertEnabled[currency] = alertEnabled;
@ -103,8 +108,12 @@ namespace CurrencyAlert
this.configuration.Threshold[currency] = thresholdValue; this.configuration.Threshold[currency] = thresholdValue;
this.configuration.Save(); this.configuration.Save();
} }
ImGui.EndTabItem();
}
}); });
} }
}
#if DEBUG #if DEBUG
if (ImGui.Button("Open Debug")) if (ImGui.Button("Open Debug"))
@ -125,8 +134,13 @@ namespace CurrencyAlert
{ {
InventoryManager* inventoryManager = InventoryManager.Instance(); InventoryManager* inventoryManager = InventoryManager.Instance();
ImGui.Text($"ItemID: 42 Value: {inventoryManager->GetInventoryItemCount(42)}");
EnumHelper.Each<InventoryType>(type => EnumHelper.Each<InventoryType>(type =>
{ {
if (type != InventoryType.Currency)
return;
InventoryContainer* currencyContainer = inventoryManager->GetInventoryContainer(type); InventoryContainer* currencyContainer = inventoryManager->GetInventoryContainer(type);
if (currencyContainer == null) if (currencyContainer == null)