diff --git a/src/ipc/types.ts b/src/ipc/types.ts
index 95c96262..00c95f48 100644
--- a/src/ipc/types.ts
+++ b/src/ipc/types.ts
@@ -62,7 +62,7 @@ type WidgetWellKnownFlag =
'hide-on-focus'
export const defaultConfig: Config = {
- configVersion: 7,
+ configVersion: 8,
priceCheckKey: 'D',
priceCheckKeyHold: 'Ctrl',
priceCheckLocked: 'Ctrl + Alt + D',
@@ -148,41 +148,27 @@ export const defaultConfig: Config = {
wmZorder: 'exclusive',
wmFlags: ['hide-on-blur', 'skip-menu'],
maps: {
+ showNewStats: false,
selectedStats: [
{
matcher: 'Slaying Enemies close together has a #% chance to attract monsters from Beyond',
- invert: false,
- valueWarning: '',
- valueDanger: '',
- valueDesirable: '+'
+ decision: 'desirable'
},
{
matcher: '#% maximum Player Resistances',
- invert: true,
- valueWarning: '-10',
- valueDanger: '',
- valueDesirable: ''
+ decision: 'warning'
},
{
matcher: 'Monsters reflect #% of Physical Damage',
- invert: false,
- valueWarning: '',
- valueDanger: '+',
- valueDesirable: ''
+ decision: 'danger'
},
{
matcher: 'Monsters reflect #% of Elemental Damage',
- invert: false,
- valueWarning: '',
- valueDanger: '+',
- valueDesirable: ''
+ decision: 'danger'
},
{
matcher: 'Area contains two Unique Bosses',
- invert: false,
- valueWarning: '',
- valueDanger: '',
- valueDesirable: '+'
+ decision: 'desirable'
}
]
}
diff --git a/src/main/config.ts b/src/main/config.ts
index c92d5a01..e870dbaf 100644
--- a/src/main/config.ts
+++ b/src/main/config.ts
@@ -118,7 +118,7 @@ export const config = (() => {
if (config.configVersion < 7) {
const mapCheck = config.widgets.find(w => w.wmType === 'map-check')!
mapCheck.wmType = 'item-check'
- ;(mapCheck as ItemCheckWidget).maps = { selectedStats: mapCheck.selectedStats }
+ mapCheck.maps = { selectedStats: mapCheck.selectedStats }
mapCheck.selectedStats = undefined
config.itemCheckKey = (config as any).mapCheckKey || null
@@ -127,6 +127,21 @@ export const config = (() => {
config.configVersion = 7
}
+ if (config.configVersion < 8) {
+ const itemCheck = config.widgets.find(w => w.wmType === 'item-check')!
+ ;(itemCheck as ItemCheckWidget).maps.showNewStats = false
+ itemCheck.maps.selectedStats = (itemCheck as ItemCheckWidget).maps.selectedStats.map(entry => ({
+ matcher: entry.matcher,
+ decision:
+ (entry as any).valueDanger ? 'danger'
+ : (entry as any).valueWarning ? 'warning'
+ : (entry as any).valueDesirable ? 'desirable'
+ : 'seen'
+ }))
+
+ config.configVersion = 8
+ }
+
store.store = config
return store
})()
diff --git a/src/web/map-check/MapStatButton.vue b/src/web/map-check/MapStatButton.vue
index 435102f4..ae0ab186 100644
--- a/src/web/map-check/MapStatButton.vue
+++ b/src/web/map-check/MapStatButton.vue
@@ -2,24 +2,24 @@
-
-
-
+
@@ -42,89 +42,47 @@ export default defineComponent({
const config = computed(() => {
return Config.store.widgets.find(widget => widget.wmType === 'item-check') as ItemCheckWidget
})
-
- const entryInSelected = computed(() => {
+ const entry = computed(() => {
return config.value.maps.selectedStats.find(_ => _.matcher === props.stat.matcher)
})
- const state = computed(() => {
- if (!entryInSelected.value) return undefined
-
- const valueDanger = Number(entryInSelected.value.valueDanger || 'NaN')
- const valueWarning = Number(entryInSelected.value.valueWarning || 'NaN')
- const valueDesirable = Number(entryInSelected.value.valueDesirable || 'NaN')
-
- if (entryInSelected.value.valueDanger !== '' && Number.isNaN(valueDanger)) {
- return 'danger'
- }
- if (entryInSelected.value.valueWarning !== '' && Number.isNaN(valueWarning)) {
- return 'warning'
- }
- if (entryInSelected.value.valueDesirable !== '' && Number.isNaN(valueDesirable)) {
- return 'desirable'
- }
-
- if (!entryInSelected.value.invert) {
- if (!Number.isNaN(valueDanger) && props.stat.roll! >= valueDanger) {
- return 'danger'
- }
- if (!Number.isNaN(valueWarning) && props.stat.roll! >= valueWarning) {
- return 'warning'
- }
- if (!Number.isNaN(valueDesirable) && props.stat.roll! >= valueDesirable) {
- return 'desirable'
- }
- } else {
- if (!Number.isNaN(valueDanger) && props.stat.roll! <= valueDanger) {
- return 'danger'
- }
- if (!Number.isNaN(valueWarning) && props.stat.roll! <= valueWarning) {
- return 'warning'
- }
- if (!Number.isNaN(valueDesirable) && props.stat.roll! <= valueDesirable) {
- return 'desirable'
- }
- }
-
- return 'not-matched'
+ const showNewStatIcon = computed(() => {
+ return config.value.maps.showNewStats && !entry.value
})
- const canCycle = computed(() => {
- const values = [
- entryInSelected.value!.valueDanger,
- entryInSelected.value!.valueWarning,
- entryInSelected.value!.valueDesirable
- ]
- return (
- values.filter(_ => _ === '+').length === 1 &&
- values.filter(_ => _ === '').length === 2
- )
- })
+ function toggleSeenStatus () {
+ if (!config.value.maps.showNewStats) return
+
+ if (!entry.value) {
+ config.value.maps.selectedStats.push({
+ matcher: props.stat.matcher,
+ decision: 'seen'
+ })
+ } else if (entry.value.decision === 'seen') {
+ config.value.maps.selectedStats = config.value.maps.selectedStats.filter(selected => selected !== entry.value)
+ }
+ }
return {
- state,
+ decision: computed(() => entry.value?.decision),
+ showNewStatIcon,
+ toggleSeenStatus,
handleClick () {
- if (!entryInSelected.value) {
+ if (!entry.value) {
config.value.maps.selectedStats.push({
matcher: props.stat.matcher,
- invert: false,
- valueDanger: '+',
- valueWarning: '',
- valueDesirable: ''
+ decision: 'danger'
})
- return
- }
-
- if (!canCycle.value) return
-
- if (entryInSelected.value.valueDanger === '+') {
- entryInSelected.value.valueDanger = ''
- entryInSelected.value.valueWarning = '+'
- } else if (entryInSelected.value.valueWarning === '+') {
- entryInSelected.value.valueWarning = ''
- entryInSelected.value.valueDesirable = '+'
- } else if (entryInSelected.value.valueDesirable === '+') {
- config.value.maps.selectedStats = config.value.maps.selectedStats.filter(selected => selected !== entryInSelected.value)
+ } else {
+ if (entry.value.decision === 'danger') {
+ entry.value.decision = 'warning'
+ } else if (entry.value.decision === 'warning') {
+ entry.value.decision = 'desirable'
+ } else if (entry.value.decision === 'desirable') {
+ entry.value.decision = 'seen'
+ } else if (entry.value.decision === 'seen') {
+ entry.value.decision = 'danger'
+ }
}
}
}
diff --git a/src/web/overlay/interfaces.ts b/src/web/overlay/interfaces.ts
index 11f237f1..cd0ae389 100644
--- a/src/web/overlay/interfaces.ts
+++ b/src/web/overlay/interfaces.ts
@@ -53,12 +53,10 @@ export interface PriceCheckWidget extends Widget {
export interface ItemCheckWidget extends Widget {
maps: {
+ showNewStats: boolean
selectedStats: Array<{
matcher: string
- invert: boolean
- valueWarning: string
- valueDanger: string
- valueDesirable: string
+ decision: string
}>
}
}
diff --git a/src/web/settings/MapsStatEntry.vue b/src/web/settings/MapsStatEntry.vue
index 0daaf98e..02147a6a 100644
--- a/src/web/settings/MapsStatEntry.vue
+++ b/src/web/settings/MapsStatEntry.vue
@@ -1,13 +1,12 @@
{{ matcher }}
-
-
-
-
-
+
+
+
+
-
@@ -16,8 +15,7 @@