Add options to choose which numbering system to use #357

This commit is contained in:
kvan7
2025-01-25 15:22:21 -06:00
parent 90027471d8
commit fa2b562e44
15 changed files with 99 additions and 28 deletions

View File

@@ -174,7 +174,8 @@
"tag_explicit_incursion": "穿越",
"tag_rune": "符文",
"tag_sanctum": "Sanctum",
"fill_rune_iron": "Fill Runes(Iron)"
"fill_rune_iron": "Fill Runes(Iron)",
"grade": "Grade {0}"
},
"online_filter": {
"offline_toggle": "離線 & 在線",
@@ -358,7 +359,11 @@
"use_tooltip_hover": "將滑鼠懸停在價格上時顯示物品",
"use_tooltip_keybind": "SHIFT + 懸停",
"use_tooltip_always": "始終懸停顯示",
"use_tooltip_off": "關閉"
"use_tooltip_off": "關閉",
"tier_numbering": "Tier numbering style",
"tier_numbering_poe1": "PoE1 (lower is better)",
"tier_numbering_poe2": "PoE2 (higher is better)",
"tier_numbering_help": "To try to reduce confusion due to conflicting naming conventions with the game, PoE1 tiers will use the name \"Grade\" instead of \"Tier\". "
},
"poe2_new": {
"beta_warning": "這是 POE2 的測試版,某些功能可能無法正常運作。",

View File

@@ -178,7 +178,8 @@
"tag_explicit_incursion": "Incursion",
"tag_rune": "Rune",
"tag_sanctum": "Sanctum",
"fill_rune_iron": "Fill Runes(Iron)"
"fill_rune_iron": "Fill Runes(Iron)",
"grade": "Grade {0}"
},
"online_filter": {
"offline_toggle": "Offline & Online",
@@ -347,7 +348,11 @@
"use_tooltip_hover": "Show item when hovering over price",
"use_tooltip_keybind": "SHIFT + hover",
"use_tooltip_always": "hover",
"use_tooltip_off": "off"
"use_tooltip_off": "off",
"tier_numbering": "Tier numbering style",
"tier_numbering_poe1": "PoE1 (lower is better)",
"tier_numbering_poe2": "PoE2 (higher is better)",
"tier_numbering_help": "To try to reduce confusion due to conflicting naming conventions with the game, PoE1 tiers will use the name \"Grade\" instead of \"Tier\". "
},
"poe2_new": {
"beta_warning": "Dies ist eine BETA für POE2, es wird nicht immer wie erwartet funktionieren.",

View File

@@ -178,7 +178,8 @@
"tag_explicit_incursion": "Incursion",
"tag_rune": "Rune",
"tag_sanctum": "Sanctum",
"fill_rune_iron": "Fill Runes(Iron)"
"fill_rune_iron": "Fill Runes(Iron)",
"grade": "Grade {0}"
},
"online_filter": {
"offline_toggle": "Offline & Online",
@@ -374,7 +375,11 @@
"use_tooltip_hover": "Show item when hovering over price",
"use_tooltip_keybind": "SHIFT + hover",
"use_tooltip_always": "hover",
"use_tooltip_off": "off"
"use_tooltip_off": "off",
"tier_numbering": "Tier numbering style",
"tier_numbering_poe1": "PoE1 (lower is better)",
"tier_numbering_poe2": "PoE2 (higher is better)",
"tier_numbering_help": "To try to reduce confusion due to conflicting naming conventions with the game, PoE1 tiers will use the name \"Grade\" instead of \"Tier\". "
},
"poe2_new": {
"beta_warning": "This is in BETA for POE2, things will not work always as expected.",

View File

@@ -178,7 +178,8 @@
"tag_explicit_incursion": "Incursión",
"tag_rune": "Runa",
"tag_sanctum": "Sanctum",
"fill_rune_iron": "Fill Runes(Iron)"
"fill_rune_iron": "Fill Runes(Iron)",
"grade": "Grade {0}"
},
"online_filter": {
"offline_toggle": "Desconectado & En línea",
@@ -374,7 +375,11 @@
"use_tooltip_hover": "Show item when hovering over price",
"use_tooltip_keybind": "SHIFT + hover",
"use_tooltip_always": "hover",
"use_tooltip_off": "off"
"use_tooltip_off": "off",
"tier_numbering": "Tier numbering style",
"tier_numbering_poe1": "PoE1 (lower is better)",
"tier_numbering_poe2": "PoE2 (higher is better)",
"tier_numbering_help": "To try to reduce confusion due to conflicting naming conventions with the game, PoE1 tiers will use the name \"Grade\" instead of \"Tier\". "
},
"poe2_new": {
"beta_warning": "Esto está en BETA para POE2, las cosas no siempre funcionarán como se espera.",

View File

@@ -174,7 +174,8 @@
"tag_explicit_incursion": "インカージョン",
"tag_rune": "ルーン",
"tag_sanctum": "Sanctum",
"fill_rune_iron": "Fill Runes(Iron)"
"fill_rune_iron": "Fill Runes(Iron)",
"grade": "Grade {0}"
},
"online_filter": {
"offline_toggle": "オフライン & オンライン",
@@ -358,7 +359,11 @@
"use_tooltip_hover": "Show item when hovering over price",
"use_tooltip_keybind": "SHIFT + hover",
"use_tooltip_always": "hover",
"use_tooltip_off": "off"
"use_tooltip_off": "off",
"tier_numbering": "Tier numbering style",
"tier_numbering_poe1": "PoE1 (lower is better)",
"tier_numbering_poe2": "PoE2 (higher is better)",
"tier_numbering_help": "To try to reduce confusion due to conflicting naming conventions with the game, PoE1 tiers will use the name \"Grade\" instead of \"Tier\". "
},
"poe2_new": {
"beta_warning": "これはPOE2のベータ版です、期待通りに動作しないことがあります。",

View File

@@ -171,7 +171,8 @@
"tag_explicit_incursion": "기습",
"tag_rune": "룬",
"tag_sanctum": "Sanctum",
"fill_rune_iron": "Fill Runes(Iron)"
"fill_rune_iron": "Fill Runes(Iron)",
"grade": "Grade {0}"
},
"online_filter": {
"offline_toggle": "오프라인 & 온라인",
@@ -354,7 +355,11 @@
"use_tooltip_hover": "Show item when hovering over price",
"use_tooltip_keybind": "SHIFT + hover",
"use_tooltip_always": "hover",
"use_tooltip_off": "off"
"use_tooltip_off": "off",
"tier_numbering": "Tier numbering style",
"tier_numbering_poe1": "PoE1 (lower is better)",
"tier_numbering_poe2": "PoE2 (higher is better)",
"tier_numbering_help": "To try to reduce confusion due to conflicting naming conventions with the game, PoE1 tiers will use the name \"Grade\" instead of \"Tier\". "
},
"poe2_new": {
"beta_warning": "이 버전은 베타버전입니다. 예기치 못한 버그가 있을 수 있습니다.",

View File

@@ -190,7 +190,8 @@
"tag_explicit_incursion": "Вмешательство",
"tag_rune": "Руна",
"tag_sanctum": "Sanctum",
"fill_rune_iron": "Fill Runes(Iron)"
"fill_rune_iron": "Fill Runes(Iron)",
"grade": "Grade {0}"
},
"online_filter": {
"offline_toggle": "Офлайн и Онлайн",
@@ -373,7 +374,11 @@
"use_tooltip_hover": "Show item when hovering over price",
"use_tooltip_keybind": "SHIFT + hover",
"use_tooltip_always": "hover",
"use_tooltip_off": "off"
"use_tooltip_off": "off",
"tier_numbering": "Tier numbering style",
"tier_numbering_poe1": "PoE1 (lower is better)",
"tier_numbering_poe2": "PoE2 (higher is better)",
"tier_numbering_help": "To try to reduce confusion due to conflicting naming conventions with the game, PoE1 tiers will use the name \"Grade\" instead of \"Tier\". "
},
"poe2_new": {
"beta_warning": "Функционал для PoE2 находится в стадии бета тестирования и не всегда работает так, как задумано.",

View File

@@ -1401,7 +1401,8 @@ function parseStatsFromMod(
const { stat: parsedStat, tier } = parsedStatAndTier;
modifier.stats.push(parsedStat);
if (tier) {
modifier.info.tier = tier;
modifier.info.tier = tier.poe1;
modifier.info.rank = tier.poe2;
}
stat = statIterator.next(true);
} else {

View File

@@ -295,15 +295,15 @@ export function getTierNumber(
mod: StatTierMod,
itemCategory: ItemCategory,
tierArray: StatTierMod[],
): number {
): { poe1: number; poe2: number } | undefined {
if (mod === undefined || mod.mods === undefined || !mod.mods) {
console.warn("No mods found for mod", mod);
return -1;
return;
}
if (tier === undefined || itemCategory === undefined) {
console.warn("No tier or itemCategory found");
return -1;
return;
}
// Map the itemCategory to its corresponding key(s)
@@ -315,7 +315,7 @@ export function getTierNumber(
);
if (!categoryExists || !primaryCategoryKey) {
return -1; // Return -1 if the category is not found in any mod
return; // Return if the category is not found in any mod
}
// Find the index of the given tier in mod.mods
@@ -331,5 +331,5 @@ export function getTierNumber(
.filter((t) => t.items.includes(primaryCategoryKey)).length;
// Return the tier number (1-based)
return matchingTiersAfter + 1;
return { poe1: matchingTiersAfter + 1, poe2: tierIndex + 1 };
}

View File

@@ -161,7 +161,9 @@ export function tryParseTranslation(
stat: StatString,
modType: ModifierType,
item?: ParsedItem,
): { stat: ParsedStat; tier: number | undefined } | undefined {
):
| { stat: ParsedStat; tier: { poe1: number; poe2: number } | undefined }
| undefined {
let itemRarity: ItemRarity | undefined;
let itemCategory: ItemCategory | undefined;
if (item) {
@@ -195,7 +197,7 @@ export function tryParseTranslation(
};
}
let foundTier: number | undefined;
let foundTier: { poe1: number; poe2: number } | undefined;
if (
modType === ModifierType.Explicit &&
@@ -226,7 +228,7 @@ export function tryParseTranslation(
const tierNumber = getTierNumber(tierMatch, modTiers, itemCategory, [
modTiers,
]);
if (tierNumber !== -1) {
if (tierNumber) {
foundTier = tierNumber;
}
}

View File

@@ -490,6 +490,7 @@ function upgradeConfig(_config: Config): Config {
}
if (config.configVersion < 22) {
// NOTE: v0.7.0
config.widgets.find(
(w) => w.wmType === "price-check",
)!.autoFillEmptyRuneSockets = "Iron Rune";
@@ -518,6 +519,9 @@ function upgradeConfig(_config: Config): Config {
return 0;
});
config.widgets.find((w) => w.wmType === "price-check")!.tierNumbering =
"poe2";
config.configVersion = 22;
}

View File

@@ -55,6 +55,7 @@ export interface PriceCheckWidget extends Widget {
defaultAllSelected: boolean;
itemHoverTooltip: "off" | "keybind" | "always";
autoFillEmptyRuneSockets: "Iron Rune" | false;
tierNumbering: "poe1" | "poe2";
}
export interface StopwatchWidget extends Widget {

View File

@@ -191,6 +191,7 @@ export default defineComponent({
defaultAllSelected: false,
itemHoverTooltip: "keybind",
autoFillEmptyRuneSockets: false,
tierNumbering: "poe2",
};
},
} satisfies WidgetSpec,

View File

@@ -14,6 +14,8 @@ import { defineComponent, PropType, computed } from "vue";
import { useI18n } from "vue-i18n";
import { ItemCategory, ParsedItem } from "@/parser";
import { FilterTag, StatFilter } from "./interfaces";
import { AppConfig } from "@/web/Config";
import { PriceCheckWidget } from "@/web/overlay/widgets";
export default defineComponent({
props: {
@@ -27,12 +29,18 @@ export default defineComponent({
},
},
setup(props) {
const tierOption = computed(
() => AppConfig<PriceCheckWidget>("price-check")!.tierNumbering,
);
const tags = computed(() => {
const { filter, item } = props;
const out: Array<{ type: string; tier: number }> = [];
for (const source of filter.sources) {
const tier = source.modifier.info.tier;
if (!tier) continue;
const rank = source.modifier.info.rank;
if (!tier || !rank) continue;
const usedTier = tierOption.value === "poe1" ? tier : rank;
if (
(filter.tag === FilterTag.Explicit ||
@@ -42,11 +50,11 @@ export default defineComponent({
item.category !== ItemCategory.ClusterJewel &&
item.category !== ItemCategory.MemoryLine
) {
if (tier === 1) out.push({ type: "tier-1", tier });
else if (tier === 2) out.push({ type: "tier-2", tier });
if (tier === 1) out.push({ type: "tier-1", tier: usedTier });
else if (tier === 2) out.push({ type: "tier-2", tier: usedTier });
} else if (tier >= 2) {
// fractured, explicit-* filters
out.push({ type: "not-tier-1", tier });
out.push({ type: "not-tier-1", tier: usedTier });
}
}
out.sort((a, b) => a.tier - b.tier);
@@ -54,7 +62,7 @@ export default defineComponent({
});
const { t } = useI18n();
return { t, tags };
return { t, tags, tierOption };
},
});
</script>

View File

@@ -82,6 +82,21 @@
}}</ui-radio>
</div>
</div>
<div class="mb-4">
<div class="flex-1 mb-1">{{ t(":tier_numbering") }}</div>
<div class="mb-1 flex">
<ui-radio v-model="tierNumbering" value="poe1" class="mr-4">{{
t(":tier_numbering_poe1")
}}</ui-radio>
<ui-radio v-model="tierNumbering" value="poe2" class="mr-4">{{
t(":tier_numbering_poe2")
}}</ui-radio>
</div>
<div class="mb-4 italic text-gray-500">
{{ t(":tier_numbering_help") }}
</div>
</div>
<ui-checkbox class="mb-4" v-model="rememberCurrency">{{
t(":remember_currency")
}}</ui-checkbox>
@@ -296,6 +311,10 @@ export default defineComponent({
() => configWidget.value,
"autoFillEmptyRuneSockets",
),
tierNumbering: configModelValue(
() => configWidget.value,
"tierNumbering",
),
};
},
});