More import changes and more options

This commit is contained in:
Zeffuro
2025-12-22 05:42:36 +01:00
parent 5561305af8
commit c198663184
6 changed files with 174 additions and 21 deletions
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Numerics;
using System.Text.Json.Serialization;
using KamiToolKit.Classes;
namespace AetherBags.Configuration;
@@ -33,8 +34,14 @@ public class CategoryRuleSet
public List<uint> AllowedUiCategoryIds { get; set; } = new();
public List<int> AllowedRarities { get; set; } = new();
public RangeFilter<int> Level { get; set; } = new() { Enabled = false, Min = 0, Max = 200 };
public RangeFilter<int> ItemLevel { get; set; } = new() { Enabled = false, Min = 0, Max = 2000 };
public RangeFilter<uint> VendorPrice { get; set; } = new() { Enabled = false, Min = 0, Max = 9_999_999 };
public StateFilter Untradable { get; set; } = new();
public StateFilter Unique { get; set; } = new();
public StateFilter Collectable { get; set; } = new();
public StateFilter Dyeable { get; set; } = new();
public StateFilter Repairable { get; set; } = new();
}
public class RangeFilter<T> where T : struct, IComparable<T>
@@ -42,4 +49,24 @@ public class RangeFilter<T> where T : struct, IComparable<T>
public bool Enabled { get; set; }
public T Min { get; set; }
public T Max { get; set; }
}
public class StateFilter
{
public int State { get; set; } = 0;
public int Filter { get; set; } = 0;
[JsonIgnore]
public ToggleFilterState ToggleState
{
get => Enum.IsDefined(typeof(ToggleFilterState), State) ? (ToggleFilterState)State : ToggleFilterState.Ignored;
set => State = (int)value;
}
}
public enum ToggleFilterState
{
Ignored = 0,
Allow = 1,
Disallow = 2,
}
@@ -3,13 +3,12 @@ using System.Numerics;
namespace AetherBags.Configuration.Import;
// Possible Mapping:
// Index -> Order
// Color/Id/Name
// AllowedItemNames -> AllowedItemNamePatterns
// AllowedItemTypes -> AllowedUiCategoryIds
// AllowedItemRarities -> AllowedRarities
// ItemLevelFilter / VendorPriceFilter -> RangeFilter
public sealed class SortaKindaImportFile
{
public List<SortaKindaCategory> Rules { get; set; } = new();
public object? MainInventory { get; set; }
}
public sealed class SortaKindaCategory
{
@@ -19,15 +18,38 @@ public sealed class SortaKindaCategory
public int Index { get; set; }
public List<string> AllowedItemNames { get; set; } = new();
public List<AllowedNameRegexDto> AllowedNameRegexes { get; set; } = new();
// Common
public List<uint> AllowedItemTypes { get; set; } = new();
public List<int> AllowedItemRarities { get; set; } = new();
public ExternalRangeFilterDto<int>? LevelFilter { get; set; }
public ExternalRangeFilterDto<int> ItemLevelFilter { get; set; } = new();
public ExternalRangeFilterDto<uint> VendorPriceFilter { get; set; } = new();
public ExternalStateFilterDto? UntradableFilter { get; set; }
public ExternalStateFilterDto? UniqueFilter { get; set; }
public ExternalStateFilterDto? CollectableFilter { get; set; }
public ExternalStateFilterDto? DyeableFilter { get; set; }
public ExternalStateFilterDto? RepairableFilter { get; set; }
public int Direction { get; set; }
public int FillMode { get; set; }
public int SortMode { get; set; }
public bool InclusiveAnd { get; set; }
}
public sealed class AllowedNameRegexDto
{
public string Text { get; set; } = string.Empty;
}
public sealed class ExternalStateFilterDto
{
public int State { get; set; }
public int Filter { get; set; }
}
public sealed class ExternalRangeFilterDto<T> where T : struct