From 1060403951d211df9d822eb8deb6ffa4bde70871 Mon Sep 17 00:00:00 2001 From: Axel Berardino Date: Mon, 25 May 2020 19:52:22 +0200 Subject: [PATCH] Fix a bug with multi influences display --- data/template/parts/item.tmpl | 2 +- data/template/parts/itemdesc.tmpl | 4 +- demo/all_stash_types/stash_0.json | 18 +- demo/all_stash_types/stash_1.json | 1 - demo/all_stash_types/stash_19.json | 768 +++++++++++++++++++++++++++++ generate/generator.go | 68 ++- misc/version.go | 2 +- 7 files changed, 834 insertions(+), 29 deletions(-) create mode 100644 demo/all_stash_types/stash_19.json diff --git a/data/template/parts/item.tmpl b/data/template/parts/item.tmpl index 0e29628..dd71edc 100644 --- a/data/template/parts/item.tmpl +++ b/data/template/parts/item.tmpl @@ -36,7 +36,7 @@
-
+
{{ if .Sockets }} diff --git a/data/template/parts/itemdesc.tmpl b/data/template/parts/itemdesc.tmpl index 52a50d4..0a05497 100644 --- a/data/template/parts/itemdesc.tmpl +++ b/data/template/parts/itemdesc.tmpl @@ -16,7 +16,7 @@
- + {{ if .Name }}
{{ .Name }} @@ -33,7 +33,7 @@ {{ .Type }}
{{ end }} - +
diff --git a/demo/all_stash_types/stash_0.json b/demo/all_stash_types/stash_0.json index ebffe46..47a8137 100644 --- a/demo/all_stash_types/stash_0.json +++ b/demo/all_stash_types/stash_0.json @@ -1,5 +1,5 @@ { - "numTabs": 19, + "numTabs": 20, "tabs": [ { "n": "empty", @@ -304,6 +304,22 @@ "srcL": "https:\/\/web.poecdn.com\/gen\/image\/WzIzLDEseyJ0IjoibCIsImMiOi04NjI5MTk0fV0\/10d10e4923\/Stash_TabL.png", "srcC": "https:\/\/web.poecdn.com\/gen\/image\/WzIzLDEseyJ0IjoibSIsImMiOi04NjI5MTk0fV0\/bc028daabc\/Stash_TabL.png", "srcR": "https:\/\/web.poecdn.com\/gen\/image\/WzIzLDEseyJ0IjoiciIsImMiOi04NjI5MTk0fV0\/6aa79009ee\/Stash_TabL.png" + }, + { + "n": "Influences", + "i": 19, + "id": "1c073013340d4dc60d2db47c6c31ca9c6fc36767b2c24dcd2af4bb3bb595dbac", + "type": "NormalStash", + "hidden": false, + "selected": true, + "colour": { + "r": 255, + "g": 170, + "b": 0 + }, + "srcL": "https:\/\/web.poecdn.com\/gen\/image\/WzIzLDEseyJ0IjoibCIsImMiOi04NjI5MTk0fV0\/10d10e4923\/Stash_TabL.png", + "srcC": "https:\/\/web.poecdn.com\/gen\/image\/WzIzLDEseyJ0IjoibSIsImMiOi04NjI5MTk0fV0\/bc028daabc\/Stash_TabL.png", + "srcR": "https:\/\/web.poecdn.com\/gen\/image\/WzIzLDEseyJ0IjoiciIsImMiOi04NjI5MTk0fV0\/6aa79009ee\/Stash_TabL.png" } ], "items": [] diff --git a/demo/all_stash_types/stash_1.json b/demo/all_stash_types/stash_1.json index b2dfa1b..f2fdaca 100644 --- a/demo/all_stash_types/stash_1.json +++ b/demo/all_stash_types/stash_1.json @@ -1,5 +1,4 @@ { - "numTabs": 14, "currencyLayout": { "0": { "x": 302.4340770791075, diff --git a/demo/all_stash_types/stash_19.json b/demo/all_stash_types/stash_19.json new file mode 100644 index 0000000..40f3584 --- /dev/null +++ b/demo/all_stash_types/stash_19.json @@ -0,0 +1,768 @@ +{ + "items": [ + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_00", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "shaper": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 0, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_01", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "elder": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 1, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_02", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "crusader": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 2, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_03", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "redeemer": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 3, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_04", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "hunter": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 4, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_05", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "warlord": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 5, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_06", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "synthesised": true, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 6, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_07", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "veiled": true, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 7, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_08", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "crusader": true + }, + "synthesised": true, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 8, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&elder=1&shaper=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_09", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "shaper": true, + "elder": true + }, + "veiled": true, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 9, + "y": 0, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&elder=1&shaper=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_10", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "shaper": true, + "elder": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 0, + "y": 1, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_11", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "shaper": true, + "crusader": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 1, + "y": 1, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_12", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "shaper": true, + "redeemer": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 2, + "y": 1, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_13", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "shaper": true, + "hunter": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 3, + "y": 1, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_14", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "shaper": true, + "warlord": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 4, + "y": 1, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_20", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "elder": true, + "crusader": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 0, + "y": 2, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_21", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "elder": true, + "redeemer": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 1, + "y": 2, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_22", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "elder": true, + "hunter": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 2, + "y": 2, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_23", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "elder": true, + "warlord": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 3, + "y": 2, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_30", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "crusader": true, + "redeemer": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 0, + "y": 3, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_31", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "crusader": true, + "hunter": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 1, + "y": 3, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_32", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "crusader": true, + "warlord": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 2, + "y": 3, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_40", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "redeemer": true, + "hunter": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 0, + "y": 4, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_41", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "redeemer": true, + "warlord": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 1, + "y": 4, + "inventoryId": "Stash19" + }, + { + "verified": false, + "w": 1, + "h": 1, + "icon": "https:\/\/web.poecdn.com\/image\/Art\/2DItems\/Rings\/Ring1.png?w=1&h=1&scale=1&v=7c04d5a65caa0371eccfe06a129a7407", + "league": "Standard", + "id": "test19_50", + "typeLine": "Iron Ring", + "identified": true, + "ilvl": 82, + "influences": { + "hunter": true, + "warlord": true + }, + "requirements": [ + { + "name": "Level", + "values": [ + [ + "57", + 0 + ] + ], + "displayMode": 0 + } + ], + "frameType": 0, + "x": 0, + "y": 5, + "inventoryId": "Stash19" + } + ] +} diff --git a/generate/generator.go b/generate/generator.go index 2a1882d..f5d547b 100644 --- a/generate/generator.go +++ b/generate/generator.go @@ -315,34 +315,45 @@ func ItemRarityHeight(frameType models.FrameType) string { } // InfluenceName returns the influence name. -func InfluenceName(item models.Item) string { - if item.IsSynthesised { - return "synthetic" +// The left icon follows a predetermined hierarchy with Shaper always having top +// priority. It seems to follow the following order: +// Shaper > Elder > Crusader > Redeemer > Hunter > Warlord. +func InfluenceName(item models.Item, leftInfluence bool) string { + res := "" + + // Shaper/Elder are top display priority. + if item.Influences.Shaper && (!leftInfluence || res == "") { + res = "shaper" } - if item.IsVeiled { - return "veiled" + if item.Influences.Elder && (!leftInfluence || res == "") { + res = "elder" } - if item.Influences.Shaper { - return "shaper" + // Influences are display in a defined order. + if item.Influences.Crusader && (!leftInfluence || res == "") { + res = "crusader" } - if item.Influences.Elder { - return "elder" + if item.Influences.Redeemer && (!leftInfluence || res == "") { + res = "redeemer" } - if item.Influences.Redeemer { - return "redeemer" + if item.Influences.Hunter && (!leftInfluence || res == "") { + res = "hunter" } - if item.Influences.Crusader { - return "crusader" + if item.Influences.Warlord && (!leftInfluence || res == "") { + res = "warlord" } - if item.Influences.Hunter { - return "hunter" + + // Synthesised can't be influenced. + if item.IsSynthesised && res == "" { + res = "synthetic" } - if item.Influences.Warlord { - return "warlord" + // Influenced veiled items are displayed as influenced items. + // Very low priority. + if item.IsVeiled && res == "" { + res = "veiled" } - return "" + return res } // GenSpecialBackground generates a special background @@ -714,25 +725,36 @@ func GenNaiveSearchIndex(item models.Item) string { // itemCategoryAttribute returns attributes of an item category. func itemCategoryAttribute(item models.Item) []string { res := make([]string, 0, 5) + hasInfluence := false if item.Influences.Elder { - res = append(res, "influences", "influence", "elder") + hasInfluence = true + res = append(res, "elder") } if item.Influences.Shaper { - res = append(res, "influences", "influence", "shaper") + hasInfluence = true + res = append(res, "shaper") } if item.Influences.Crusader { - res = append(res, "influences", "influence", "crusader") + hasInfluence = true + res = append(res, "crusader") } if item.Influences.Hunter { - res = append(res, "influences", "influence", "hunter") + hasInfluence = true + res = append(res, "hunter") } if item.Influences.Redeemer { - res = append(res, "influences", "influence", "redeemer") + hasInfluence = true + res = append(res, "redeemer") } if item.Influences.Warlord { + hasInfluence = true res = append(res, "warlord") } + if hasInfluence { + res = append(res, "influences", "influence") + } + if item.IsIdentified { res = append(res, "identified") } else { diff --git a/misc/version.go b/misc/version.go index 7061d30..66d0472 100644 --- a/misc/version.go +++ b/misc/version.go @@ -1,4 +1,4 @@ package misc // Version of the application. -const Version = "v0.9" +const Version = "v1.0"