From fc9b6a671a4d6af736d8fda777a9b12e1a1ef8ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20R=C3=A4tzel?= Date: Sat, 7 Nov 2020 11:28:43 +0000 Subject: [PATCH] Add shortcuts to windows discovered by Neled77 this week Add shortcuts to the fleet and watchlist windows discovered by Neled77 on 2020-11-04 at https://forum.botengine.org/t/warp-to-fleet-member-with-watchlist/3642/12 Implement shortcuts based on the sample shared by Neled77 at https://github.com/Viir/bots/files/5488094/session-2020-11-04T13-24-50-d23d4e.zip --- .../alternate-ui/source/src/Common/App.elm | 2 +- .../src/EveOnline/ParseUserInterface.elm | 60 +++++++++++++++++++ .../InspectParsedUserInterface.elm | 44 ++++++++++++++ 3 files changed, 105 insertions(+), 1 deletion(-) diff --git a/implement/alternate-ui/source/src/Common/App.elm b/implement/alternate-ui/source/src/Common/App.elm index c38f2984..3aff1cca 100644 --- a/implement/alternate-ui/source/src/Common/App.elm +++ b/implement/alternate-ui/source/src/Common/App.elm @@ -3,4 +3,4 @@ module Common.App exposing (versionId) versionId : String versionId = - "2020-08-26" + "2020-11-07" diff --git a/implement/alternate-ui/source/src/EveOnline/ParseUserInterface.elm b/implement/alternate-ui/source/src/EveOnline/ParseUserInterface.elm index 3b26e983..a1beeccf 100644 --- a/implement/alternate-ui/source/src/EveOnline/ParseUserInterface.elm +++ b/implement/alternate-ui/source/src/EveOnline/ParseUserInterface.elm @@ -30,6 +30,8 @@ type alias ParsedUserInterface = , bookmarkLocationWindow : Maybe BookmarkLocationWindow , repairShopWindow : Maybe RepairShopWindow , characterSheetWindow : Maybe CharacterSheetWindow + , fleetWindow : Maybe FleetWindow + , watchListPanel : Maybe WatchListPanel , moduleButtonTooltip : Maybe ModuleButtonTooltip , neocom : Maybe Neocom , messageBoxes : List MessageBox @@ -469,6 +471,18 @@ type alias ScrollControls = } +type alias FleetWindow = + { uiNode : UITreeNodeWithDisplayRegion + , fleetMembers : List UITreeNodeWithDisplayRegion + } + + +type alias WatchListPanel = + { uiNode : UITreeNodeWithDisplayRegion + , entries : List UITreeNodeWithDisplayRegion + } + + parseUITreeWithDisplayRegionFromUITree : EveOnline.MemoryReading.UITreeNode -> UITreeNodeWithDisplayRegion parseUITreeWithDisplayRegionFromUITree uiTree = let @@ -505,6 +519,8 @@ parseUserInterfaceFromUITree uiTree = , bookmarkLocationWindow = parseBookmarkLocationWindowFromUITreeRoot uiTree , repairShopWindow = parseRepairShopWindowFromUITreeRoot uiTree , characterSheetWindow = parseCharacterSheetWindowFromUITreeRoot uiTree + , fleetWindow = parseFleetWindowFromUITreeRoot uiTree + , watchListPanel = parseWatchListPanelFromUITreeRoot uiTree , neocom = parseNeocomFromUITreeRoot uiTree , messageBoxes = parseMessageBoxesFromUITreeRoot uiTree , layerAbovemain = parseLayerAbovemainFromUITreeRoot uiTree @@ -2214,6 +2230,50 @@ parseCharacterSheetWindow windowUINode = } +parseFleetWindowFromUITreeRoot : UITreeNodeWithDisplayRegion -> Maybe FleetWindow +parseFleetWindowFromUITreeRoot uiTreeRoot = + uiTreeRoot + |> listDescendantsWithDisplayRegion + |> List.filter (.uiNode >> .pythonObjectTypeName >> (==) "FleetWindow") + |> List.head + |> Maybe.map parseFleetWindow + + +parseFleetWindow : UITreeNodeWithDisplayRegion -> FleetWindow +parseFleetWindow windowUINode = + let + fleetMembers = + windowUINode + |> listDescendantsWithDisplayRegion + |> List.filter (.uiNode >> .pythonObjectTypeName >> (==) "FleetMember") + in + { uiNode = windowUINode + , fleetMembers = fleetMembers + } + + +parseWatchListPanelFromUITreeRoot : UITreeNodeWithDisplayRegion -> Maybe WatchListPanel +parseWatchListPanelFromUITreeRoot uiTreeRoot = + uiTreeRoot + |> listDescendantsWithDisplayRegion + |> List.filter (.uiNode >> .pythonObjectTypeName >> (==) "WatchListPanel") + |> List.head + |> Maybe.map parseWatchListPanel + + +parseWatchListPanel : UITreeNodeWithDisplayRegion -> WatchListPanel +parseWatchListPanel windowUINode = + let + entries = + windowUINode + |> listDescendantsWithDisplayRegion + |> List.filter (.uiNode >> .pythonObjectTypeName >> (==) "WatchListEntry") + in + { uiNode = windowUINode + , entries = entries + } + + parseNeocomFromUITreeRoot : UITreeNodeWithDisplayRegion -> Maybe Neocom parseNeocomFromUITreeRoot uiTreeRoot = case diff --git a/implement/alternate-ui/source/src/FrontendWeb/InspectParsedUserInterface.elm b/implement/alternate-ui/source/src/FrontendWeb/InspectParsedUserInterface.elm index 4e22cce8..92f12887 100644 --- a/implement/alternate-ui/source/src/FrontendWeb/InspectParsedUserInterface.elm +++ b/implement/alternate-ui/source/src/FrontendWeb/InspectParsedUserInterface.elm @@ -222,6 +222,18 @@ renderTreeNodeFromParsedUserInterface maybeInputRoute uiNodesWithDisplayRegion p , fieldValueSummary = always "..." , fieldValueChildren = treeNodeChildrenFromCharacterSheetWindow viewConfig } + , parsedUserInterface.fleetWindow + |> fieldFromMaybeInstance + { fieldName = "fleetWindow" + , fieldValueSummary = always "..." + , fieldValueChildren = treeNodeChildrenFromFleetWindow viewConfig + } + , parsedUserInterface.watchListPanel + |> fieldFromMaybeInstance + { fieldName = "watchListPanel" + , fieldValueSummary = always "..." + , fieldValueChildren = treeNodeChildrenFromWatchListPanel viewConfig + } , parsedUserInterface.moduleButtonTooltip |> fieldFromMaybeInstance { fieldName = "moduleButtonTooltip" @@ -1205,6 +1217,38 @@ treeNodeChildrenFromCharacterSheetWindow viewConfig characterSheetWindow = ] +treeNodeChildrenFromFleetWindow : + ViewConfig event + -> EveOnline.ParseUserInterface.FleetWindow + -> List (TreeViewNode event ParsedUITreeViewPathNode) +treeNodeChildrenFromFleetWindow viewConfig fleetWindow = + treeNodeChildrenFromRecordWithUINode + viewConfig + fleetWindow.uiNode + [ fleetWindow.fleetMembers + |> fieldFromListInstance + { fieldName = "fleetMembers" + , fieldValueChildren = treeViewNodeFromUINode viewConfig >> List.singleton + } + ] + + +treeNodeChildrenFromWatchListPanel : + ViewConfig event + -> EveOnline.ParseUserInterface.WatchListPanel + -> List (TreeViewNode event ParsedUITreeViewPathNode) +treeNodeChildrenFromWatchListPanel viewConfig watchListPanel = + treeNodeChildrenFromRecordWithUINode + viewConfig + watchListPanel.uiNode + [ watchListPanel.entries + |> fieldFromListInstance + { fieldName = "entries" + , fieldValueChildren = treeViewNodeFromUINode viewConfig >> List.singleton + } + ] + + treeNodeChildrenFromNeocom : ViewConfig event -> EveOnline.ParseUserInterface.Neocom