Skip to content

Commit

Permalink
v1.52.2 merge
Browse files Browse the repository at this point in the history
- fixed: centered overlays were misplaced on multi-monitor setups
- fixed: there's a new windows snipping tool the script didn't recognize
- notepad: any tab can be turned into a grouped widget, and more than one can exist
- maptracker: added new date selection, and column summaries
- maptracker: added notes for individual map runs, and a search-filter
  • Loading branch information
Lailloken authored Feb 28, 2024
2 parents 4113315 + acdf4c1 commit b8d9f69
Show file tree
Hide file tree
Showing 24 changed files with 1,456 additions and 494 deletions.
97 changes: 60 additions & 37 deletions Lailloken UI.ahk

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions data/changelog.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
[
[
["1.52.2", 15202],
"fixed: centered overlays were misplaced on multi-monitor setups",
"fixed: there's a new windows snipping tool the script didn't recognize",
"notepad: any tab can be turned into a grouped widget, and more than one can exist",
"maptracker: added new date selection, and column summaries",
"maptracker: added notes for individual map runs, and a search-filter"
],
[
["1.52.1", 15201],
"certain movable ui elements can now snap to the center of the game client",
Expand Down
36 changes: 22 additions & 14 deletions data/english/UI.txt
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,7 @@
global_ultrawide = "Unless you're using a mod, the client will display black bars on the sides."
global_ultrawide = "Are there black bars on the sides of the client?"
global_credits = "credits"
global_none = "none"

mechanic_bestiary = "bestiary"
mechanic_betrayal = "betrayal"
Expand Down Expand Up @@ -312,31 +313,38 @@
maptracker_loot = "item logged"
maptracker_loot = "item removed"
maptracker_loot = "error"
maptracker_export = "export:"
maptracker_export = "day"
maptracker_export = "all"
maptracker_export = "folder"
maptracker_export = "export"
maptracker_logs = "logs:"
maptracker_logs = "couldn't find any map-logs"
maptracker_page = "page:"
maptracker_header = "map-log viewer"
maptracker_dialogue = "<output dialogue to chat> has to;be enabled in the game's <ui> settings"

;## these strings are displayed/required at the top of the map-log viewer, using the shortest length possible in order to be more compact
;## "time" refers to time of day (e.g. 13:37), "t/l" stands for tier/level (as in map tier / area level), "run" refers to run-time (as in how long it took to finish a map)
;## "e-exp" stands for effective exp (i.e. exp gained after penalties), "content" refers to map-content (i.e. mechanics, side-areas, etc.)
maptracker_time = "time" ;## time of day (e.g. 14:20)
maptracker_time = "time" ;## time of day (e.g. 14:20)
maptracker_time = "date, time"
maptracker_map = "map"
maptracker_tier = "t/l"
maptracker_tier = "tier/level" ;## as in map-tier / area-level
maptracker_run = "run" ;## refers to run-time (how long it took to finish the map)
maptracker_e-exp = "e-exp" ;## effective exp (after penalties)
maptracker_tier = "t/l" ;## (map) tier / (area) level
maptracker_tier = "tier/level" ;## as in map-tier / area-level
maptracker_run = "run" ;## refers to run-time (how long it took to finish the map)
maptracker_e-exp = "e-exp" ;## effective exp (after penalties)
maptracker_deaths = "deaths"
maptracker_portals = "portals"
maptracker_kills1 = "kills"
maptracker_loot1 = "loot"
maptracker_content = "content" ;## refers to map-content (league-mechanics, side-areas, etc.)
maptracker_content = "content" ;## refers to map-content (league-mechanics, side-areas, etc.)
maptracker_search = "search:"

;## these strings are displayed in the sum/average tooltips (while long-clicking colored cells in the Σ row)
maptracker_sum = "sum"
maptracker_average = "avg"

;## these strings are displayed in the date selection
maptracker_all = "select all"
maptracker_periods = "years:"
maptracker_periods = "leagues:"
maptracker_periods = "months:"
maptracker_periods = "days:"



Expand Down Expand Up @@ -411,7 +419,6 @@

;## these strings are displayed/required when using the minor QoL features
notepad_add = "add a new tab:"
notepad_group = "grouped widget"
notepad_howto = "how to use widgets"


Expand Down Expand Up @@ -621,7 +628,8 @@
m_maptracker_hide = "hide the panel when the tracker is paused"
m_maptracker_loot = "loot"
m_maptracker_kills = "kills"
m_maptracker_mapinfo = "map-info data"
m_maptracker_mapinfo = "map-info data" ;## option to include data from the map-info feature
m_maptracker_notes = "notes" ;## option to add notes to map runs
m_maptracker_sidearea = "side-areas"
m_maptracker_rename = "tag && rename boss maps" ;## adds a "boss:"-tag to logged map-runs
m_maptracker_content = "track atlas mechanics"
Expand Down
5 changes: 5 additions & 0 deletions data/english/client.txt
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,11 @@
;## NOTE: the following sections are divided into groups depending on where to find the required patterns (to make it simpler), but the script itself always checks the text copied from the game via ALT + CTRL + C
;## NOTE: it's possible that there's a difference in the ALT-CTRL-C text and the easier-to-find text (e.g. German tooltips display "ss" whenever the ALT-CTRL-C text contains "ß"), so be aware of that if the target language has such variations


;## these are some item-names the tool requires to identify what kind of item was clicked
items_voidstone = "Voidstone"


;## these strings are displayed in the in-game tooltip when hovering over an item
items_unidentified = "Unidentified"
items_unmodifiable = "Unmodifiable" ;## example: memories (atlas item), sanctum relics
Expand Down
106 changes: 77 additions & 29 deletions data/english/help tooltips.json
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@
"click a box to open the color-palette, right click to reset"
],
"iteminfo override": [
"undesired mods will always be marked as t6, except fractured ones"
"undesired mods will always be highlighted like t6, except fractured ones"
],
"iteminfo rules": [
"single-click solution to mark larger mod groups as un/desired",
Expand Down Expand Up @@ -316,7 +316,7 @@
"tracks map-times, deaths, portals, loot, kills, and certain types of side-content"
],
"maptracker rename": [
"tags and renames boss maps for easier filtering",
"tags and renames boss maps for easier searching",
"example: <boss: elder> instead of <absence of value and meaning>"
],
"maptracker side-content": [
Expand Down Expand Up @@ -363,7 +363,24 @@
"refreshing kills only has to be done if you have finished the map and won't go back in"
],
"maptracker mapinfo": [
"map-mod data loaded into the map-info panel will be logged"
"map-mod data loaded into the map-info panel will be logged",
"the map-info panel is a separate feature and has to be enabled"
],
"maptracker notes": [
"adds an icon to the tracker panel to log custom notes for individual map runs",
"long-click to view current notes, right-click to edit"
],
"maptracker color unselected": [
"used for highlighted cells in the log-viewer, and for non-league dates in the date selection",
"click to open the color-palette, right-click to reset to default"
],
"maptracker color selected": [
"used for the currently-selected year and its months in the date selection",
"click to open the color-palette, right-click to reset to default"
],
"maptracker color leagues": [
"used to highlight dates that correspond with a league",
"click to open the color-palette, right-click to reset to default"
],
"mapinfo enable": [
"provides a compact and customizable info-panel for map mods",
Expand Down Expand Up @@ -635,48 +652,78 @@
},
"maptracker": {
"logviewer day-select": [
"list of dates with logged map runs"
],
"logviewer day-delete": [
"hold to delete the logs of the selected date",
"hold right-click to clear the entire log collection"
],
"logviewer export-day": [
"hold to export the logs of the selected date into a separate file, overwriting any existing file with the same date"
],
"logviewer export-all": [
"hold to export the entire log collection into a single file, overwriting any existing file"
],
"logviewer export-folder": [
"opens the folder containing the exported csv-files"
"click to open the date selection: shows a breakdown of logged map runs",
"the current search-filter will affect the available dates"
],
"logviewer date help": [
"general: click a button to show runs within that period, hold <DEL> while hovering to delete those runs",
"years: click a year to show its breakdown below, double-click to load the whole year"
],
"logviewer export": [
"long-click to export the list of runs below as a CSV-file, overwriting any existing file with the same date",
"right-click to open the export folder"
],
"logviewer filter": [
"type in keywords (separated by commas) and press ENTER to only show specific runs: simple words are treated as map names, simple numbers as map tiers (e.g. \"crimson temple, 16\")",
"you can search inside columns by using search operators (check the book icon on the far left)"
],
"logviewer sum avg": [
"click highlighted cells in this row to display the data within a column as totals / percentages / averages"
],
"logviewer headers": [
"some column headers can be clicked for searching: left = paste search-operator, right = paste !operator",
"double-clicking will immediately start the search with the bare operator: using an operator without any keywords will simply search for runs where corresponding data had any value other than 0 or blank"
],
"logviewer header map": [
"click a name to edit it, hold right-click to delete a specific run"
"long-click a map name to edit it, hold right-click to delete the run",
"names can be clicked for searching, just like some of the headers (check the book icon in the top left)"
],
"logviewer header run": [
"searching for \"r:XYZ\" will only list runs that took XYZ amount of time and below",
"if XYZ doesn't include any colons, the value is treated as seconds, otherwise it's treated as hh:mm:ss"
],
"logviewer header e-exp": [
"effective exp gained in a map, based on your level and the monsters'",
"requires specifying your character name in the <general> section of the settings menu"
"requires your character name in the <general> section of the settings menu"
],
"logviewer header deaths": [
"searching for \"d:X\" will only list runs with at least X deaths"
],
"logviewer header portals": [
"searching for \"p:X\" will only list runs with at least X portals used"
],
"logviewer header kills": [
"number of monsters killed in a map (uses /kills command)",
"has to be enabled in the <mapping tracker> section of the menu"
"number of monsters killed in a map: uses /kills command (optional setting, has to be enabled first)",
"searching for \"k:X\" will only list runs with at least X kills"
],
"logviewer header loot": [
"loot found in a map: long-click green cells in this column",
"has to be enabled in the <mapping tracker> section of the menu"
"loot found in a map (optional setting, has to be enabled first)",
"click highlighted cells in this column to view the list"
],
"logviewer header mapinfo": [
"mods rolled on a map: long-click green cells in this column",
"has to be enabled in the <mapping tracker> section of the menu"
"mods rolled on a map (optional setting, has to be enabled first): click highlighted cells in this column to view the list",
"the operator also allows searching for general stats (mod-count, quant, etc.), e.g. \"m:100q\" will search for 100% quant and above"
],
"logviewer header notes": [
"notes can be added to individual map runs by right-clicking cells in this column",
"click highlighted cells in this column to view the notes"
],
"logviewer header content": [
"side-content you have found in a map",
"has to be enabled in the <mapping tracker> section of the menu"
"side-content you encountered in a map (optional setting, has to be enabled first)",
"the icons can be clicked for searching, just like some of the headers (check the book icon in the top left)"
],
"logviewer header tier": [
"the tier (map) or level (e.g. contract) of the run"
"the tier (map) or level (e.g. contract) of the run",
"tiers can be clicked for searching, just like some of the headers (check the book icon in the top left)"
]
},
"maptrackernotes": {
"help": [
"type in custom notes and press ENTER: include \"X#\" before the note to limit it to X runs",
"omni-click voidstones, scarabs, etc.",
"long-click a note to remove it, or the header to clear everything"
]
},
"notepad": {
"colors": [
"text color: click to open the color-palette, right-click to reset"
Expand All @@ -689,7 +736,8 @@
],
"widget help": [
"widgets are inactive (unclickable) unless tab is held down",
"left-click to drag widgets, right-click to destroy widgets"
"left-click to drag widgets, right-click to destroy widgets",
"you can create scrollable widgets with individual pages by separating the text with lines that only contain a single hash-sign (#)"
],
"widget grouped": [
"drag to combine every note into a single, scrollable widget"
Expand Down
2 changes: 1 addition & 1 deletion data/versions.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"_release": [
15201,
15202,
"https://github.com/Lailloken/Lailloken-UI/archive/refs/heads/main.zip"
]
}
Binary file added img/GUI/mapping tracker/notes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/GUI/mapping tracker/notes0.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion modules/GUI.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ GuiName(GuiHWND)
global vars

For index, val in vars.GUI
If LLK_HasVal(val, GuiHWND)
If !Blank(LLK_HasVal(val, GuiHWND))
Return val.name
}

Expand Down
20 changes: 10 additions & 10 deletions modules/betrayal-info.ahk
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ BetrayalCalibrate(cHWND := "")
Clipboard := ""
SendInput, +#{s}
WinWaitActive, ahk_group snipping_tools,, 2
WinWaitNotActive, ahk_group snipping_tools
WinWaitActive, ahk_group poe_ahk_window
pBetrayal := Gdip_CreateBitmapFromClipboard()
If (pBetrayal < 0)
{
Expand Down Expand Up @@ -120,7 +120,7 @@ BetrayalCalibrate(cHWND := "")
Gui, betrayal_setup: Add, Text, xs Section wp, % LangTrans("betrayal_abort")
Gui, betrayal_setup: Show, NA x10000 y10000
WinGetPos,,, w, h, % "ahk_id " vars.hwnd.betrayal_setup.main
Gui, betrayal_setup: Show, % "x"vars.client.xc - w//2 " y"vars.client.yc - h//2
Gui, betrayal_setup: Show, % "x" vars.monitor.x + vars.client.xc - w//2 " y" vars.monitor.y + vars.client.yc - h//2
Loop ;use this kind of loop instead of a hard-coded hotkey to close this setup-window
{
If !WinActive("ahk_id "vars.hwnd.betrayal_setup.main) || GetKeyState("ESC", "P")
Expand Down Expand Up @@ -250,7 +250,7 @@ BetrayalPrioview()
For member in vars.betrayal.divisions[div_check[A_LoopField]] ;check if division has the BIS constellation
{
;if a given member is not in this division, check if they are in a secondary T1 position
If (vars.betrayal.board[member] != div_check[A_LoopField]) && !LLK_HasVal(vars.betrayal.members[member].first, vars.betrayal.board[member]) ;cont
If (vars.betrayal.board[member] != div_check[A_LoopField]) && Blank(LLK_HasVal(vars.betrayal.members[member].first, vars.betrayal.board[member])) ;cont
|| (vars.betrayal.divisions[div_check[A_LoopField]].Count() = 1) && (vars.betrayal.board[member] != division) ;don't highlight a division if it only has one T1 spot and that member is in a different T1 spot
color := "Gray"
}
Expand All @@ -265,12 +265,12 @@ BetrayalPrioview()
{
If (division = vars.betrayal.board[member])
{
If IsObject(vars.betrayal.members[member].first) && !LLK_HasVal(vars.betrayal.members[member].first, division) ;cont
If IsObject(vars.betrayal.members[member].first) && Blank(LLK_HasVal(vars.betrayal.members[member].first, division)) ;cont
|| !IsObject(vars.betrayal.members[member].first) && IsObject(vars.betrayal.members[member].second) && !LLK_HasVal(vars.betrayal.members[member].second, division)
color := settings.betrayal.colors.3
Else If !IsObject(vars.betrayal.members[member].first) && IsObject(vars.betrayal.members[member].second) && LLK_HasVal(vars.betrayal.members[member].second, division)
Else If !IsObject(vars.betrayal.members[member].first) && IsObject(vars.betrayal.members[member].second) && !Blank(LLK_HasVal(vars.betrayal.members[member].second, division))
color := settings.betrayal.colors.1
Else If LLK_HasVal(vars.betrayal.members[member].first, division)
Else If !Blank(LLK_HasVal(vars.betrayal.members[member].first, division))
color := settings.betrayal.colors.1
Else color := "White"

Expand All @@ -285,7 +285,7 @@ BetrayalPrioview()
}
Gui, %GUI_name%: Show, % "NA x10000 y10000"
WinGetPos,,, w, h, % "ahk_id "vars.hwnd.betrayal_prioview.main
Gui, %GUI_name%: Show, % "NA x"vars.client.xc - w//2 " y"vars.client.y
Gui, %GUI_name%: Show, % "NA x" vars.monitor.x + vars.client.xc - w//2 " y" vars.client.y
vars.betrayal.hPrioview := h, LLK_Overlay(betrayal_prioview, "show",, GUI_name), LLK_Overlay(hwnd_old, "destroy")
}

Expand Down Expand Up @@ -347,9 +347,9 @@ BetrayalSearch(hotkey)

While GetKeyState(hotkey, "P")
{
If vars.general.cMouse && LLK_HasVal(vars.hwnd.betrayal_prioview, vars.general.cMouse)
If vars.general.cMouse && !Blank(LLK_HasVal(vars.hwnd.betrayal_prioview, vars.general.cMouse))
hover := [LLK_HasVal(vars.hwnd.betrayal_prioview, vars.general.cMouse), "betrayal_prioview"]
Else If vars.general.cMouse && LLK_HasVal(vars.hwnd.betrayal_info, vars.general.cMouse)
Else If vars.general.cMouse && !Blank(LLK_HasVal(vars.hwnd.betrayal_info, vars.general.cMouse))
hover := [LLK_HasVal(vars.hwnd.betrayal_info, vars.general.cMouse), "betrayal_info"]
Else hover := ""

Expand Down Expand Up @@ -409,7 +409,7 @@ BetrayalSearch(hotkey)
Loop, Files, % "img\Recognition ("vars.client.h "p)\Betrayal\*.bmp"
{
parse := SubStr(A_LoopFileName, 1, InStr(A_LoopFileName, ".") - 1)
If vars.betrayal.divisions.HasKey(parse) ;|| LLK_HasVal(removed, parse) ;skip divisions and recently unassigned members
If vars.betrayal.divisions.HasKey(parse) ;skip divisions and recently unassigned members
continue
pNeedle := Gdip_CreateBitmapFromFile(A_LoopFilePath)
width := Gdip_GetImageWidth(pNeedle)
Expand Down
Loading

0 comments on commit b8d9f69

Please sign in to comment.