feat: item influence

This commit is contained in:
Alexander Drozdov
2020-01-12 19:44:01 +02:00
parent 02baa87eeb
commit d55f520d72
10 changed files with 77 additions and 17 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

+14 -12
View File
@@ -33,7 +33,7 @@ export interface ParsedItem {
isUnidentified: boolean
isCorrupted: boolean
gemLevel?: number
influence: ItemInfluence // @TODO items can have second transfered influence type
influences: ItemInfluence[]
rawText: string
computed: {
type?: WellKnownType
@@ -179,7 +179,7 @@ function parseNamePlate (section: string[]) {
baseType: section[2],
isUnidentified: false,
isCorrupted: false,
influence: ItemInfluence.Normal,
influences: [] as ItemInfluence[],
computed: {}
} as ParsedItem
default:
@@ -189,17 +189,19 @@ function parseNamePlate (section: string[]) {
function parseInfluence (section: string[], item: ParsedItem) {
if (section[0].endsWith(SUFFIX_INFLUENCE)) {
const influence = section[0].slice(0, -SUFFIX_INFLUENCE.length)
switch (influence) {
case ItemInfluence.Crusader:
case ItemInfluence.Elder:
case ItemInfluence.Shaper:
case ItemInfluence.Hunter:
case ItemInfluence.Redeemer:
case ItemInfluence.Warlord:
item.influence = influence
return SECTION_PARSED
for (const line of section) {
const influence = line.slice(0, -SUFFIX_INFLUENCE.length)
switch (influence) {
case ItemInfluence.Crusader:
case ItemInfluence.Elder:
case ItemInfluence.Shaper:
case ItemInfluence.Hunter:
case ItemInfluence.Redeemer:
case ItemInfluence.Warlord:
item.influences.push(influence)
}
}
return SECTION_PARSED
}
return SECTION_SKIPPED
}
+26 -2
View File
@@ -4,11 +4,35 @@
<span>Requesting search results...</span>
</div>
<div v-else-if="results" class="layout-column overflow-y-auto overflow-x-hidden">
<div v-if="!item.stackSize" class="flex mb-2 -mx-1">
<div v-if="!item.stackSize" class="flex flex-wrap mb-2 -m-1">
<div v-if="socket_filters.links.min" class="trade-tag">Links: {{ socket_filters.links.min }}</div>
<div v-if="map_filters.map_tier.min" class="trade-tag">Map Tier: {{ map_filters.map_tier.min }}</div>
<div v-if="misc_filters.gem_level.min" class="trade-tag">Level: {{ misc_filters.gem_level.min }}</div>
<div v-if="misc_filters.quality.min" class="trade-tag">Quality: {{ misc_filters.quality.min }}%</div>
<div v-if="misc_filters.shaper_item.option === 'true'" class="trade-tag flex items-center">
<img class="w-5 h-5 -m-1" src="@/assets/influence/Shaper.png">
<span class="ml-2">Shaper</span>
</div>
<div v-if="misc_filters.elder_item.option === 'true'" class="trade-tag flex items-center">
<img class="w-5 h-5 -m-1" src="@/assets/influence/Elder.png">
<span class="ml-2">Elder</span>
</div>
<div v-if="misc_filters.crusader_item.option === 'true'" class="trade-tag flex items-center">
<img class="w-5 h-5 -m-1" src="@/assets/influence/Crusader.png">
<span class="ml-2">Crusader</span>
</div>
<div v-if="misc_filters.hunter_item.option === 'true'" class="trade-tag flex items-center">
<img class="w-5 h-5 -m-1" src="@/assets/influence/Hunter.png">
<span class="ml-2">Hunter</span>
</div>
<div v-if="misc_filters.redeemer_item.option === 'true'" class="trade-tag flex items-center">
<img class="w-5 h-5 -m-1" src="@/assets/influence/Redeemer.png">
<span class="ml-2">Redeemer</span>
</div>
<div v-if="misc_filters.warlord_item.option === 'true'" class="trade-tag flex items-center">
<img class="w-5 h-5 -m-1" src="@/assets/influence/Warlord.png">
<span class="ml-2">Warlord</span>
</div>
<div v-if="misc_filters.corrupted.option" class="trade-tag">
<span v-if="misc_filters.corrupted.option === 'true'" class="text-red-500">Corrupted</span>
<span v-if="misc_filters.corrupted.option === 'false'">Not Corrupted</span>
@@ -117,6 +141,6 @@ export default {
<style lang="postcss">
.trade-tag {
@apply bg-gray-900 py-1 px-2 mx-1 rounded-full leading-none;
@apply bg-gray-900 py-1 px-2 m-1 rounded-full leading-none;
}
</style>
-1
View File
@@ -9,7 +9,6 @@ export enum ItemRarity {
}
export enum ItemInfluence {
Normal = 'Normal',
Crusader = 'Crusader',
Elder = 'Elder',
Hunter = 'Hunter',
+37 -2
View File
@@ -1,5 +1,5 @@
import { ParsedItem, WellKnownType } from './Parser'
import { ItemRarity } from './parser-constants'
import { ItemRarity, ItemInfluence } from './parser-constants'
import { Leagues } from './Leagues'
const TradeOpts = {
@@ -44,6 +44,12 @@ interface TradeRequest { /* eslint-disable camelcase */
corrupted: {
option?: 'true' | 'false'
}
shaper_item: { option?: 'true' | 'false' }
crusader_item: { option?: 'true' | 'false' }
hunter_item: { option?: 'true' | 'false' }
elder_item: { option?: 'true' | 'false' }
redeemer_item: { option?: 'true' | 'false' }
warlord_item: { option?: 'true' | 'false' }
}
}
map_filters: {
@@ -115,7 +121,13 @@ export function createTradeRequest (item: ParsedItem) {
filters: {
quality: {},
gem_level: {},
corrupted: {}
corrupted: {},
crusader_item: {},
elder_item: {},
hunter_item: {},
redeemer_item: {},
shaper_item: {},
warlord_item: {}
}
},
map_filters: {
@@ -192,6 +204,29 @@ export function createTradeRequest (item: ParsedItem) {
query.filters.socket_filters.filters.links.min = item.linkedSockets
}
for (const influence of item.influences) {
switch (influence) {
case ItemInfluence.Shaper:
query.filters.misc_filters.filters.shaper_item.option = 'true'
break
case ItemInfluence.Elder:
query.filters.misc_filters.filters.elder_item.option = 'true'
break
case ItemInfluence.Crusader:
query.filters.misc_filters.filters.crusader_item.option = 'true'
break
case ItemInfluence.Hunter:
query.filters.misc_filters.filters.hunter_item.option = 'true'
break
case ItemInfluence.Redeemer:
query.filters.misc_filters.filters.redeemer_item.option = 'true'
break
case ItemInfluence.Warlord:
query.filters.misc_filters.filters.warlord_item.option = 'true'
break
}
}
return body
}