improve item.go 3

This commit is contained in:
vietdungdev
2026-05-25 17:31:42 +07:00
parent 63e001982c
commit c2be2c1816
2 changed files with 9 additions and 7 deletions

View File

@@ -82,12 +82,16 @@ func (gd *GameReader) GetData() data.Data {
gd.monstersLastUpdate = now gd.monstersLastUpdate = now
} }
// Always update other critical data
corpseUnit := rawPlayerUnits.GetCorpse()
roster := gd.getRoster(rawPlayerUnits)
// Conditionally update inventory 500ms // Conditionally update inventory 500ms
// Except when hovering over an item // Except when hovering over an item
inventory := gd.cachedInventory inventory := gd.cachedInventory
if now.Sub(gd.inventoryLastUpdate) > 250*time.Millisecond || if now.Sub(gd.inventoryLastUpdate) > 250*time.Millisecond ||
(hover.IsHovered && hover.UnitType == 4) { // 4 = Item type (hover.IsHovered && hover.UnitType == 4) { // 4 = Item type
inventory = gd.Inventory(rawPlayerUnits, hover) inventory = gd.Inventory(rawPlayerUnits, len(roster) > 1, hover)
gd.cachedInventory = inventory gd.cachedInventory = inventory
gd.inventoryLastUpdate = now gd.inventoryLastUpdate = now
} }
@@ -100,9 +104,6 @@ func (gd *GameReader) GetData() data.Data {
gd.objectsLastUpdate = now gd.objectsLastUpdate = now
} }
// Always update other critical data
corpseUnit := rawPlayerUnits.GetCorpse()
roster := gd.getRoster(rawPlayerUnits)
openMenus := gd.OpenMenus() openMenus := gd.OpenMenus()
// Quests // Quests
@@ -155,8 +156,9 @@ func (gd *GameReader) GetData() data.Data {
func (gd *GameReader) GetInventory() data.Inventory { func (gd *GameReader) GetInventory() data.Inventory {
rawPlayerUnits := gd.GetRawPlayerUnits() rawPlayerUnits := gd.GetRawPlayerUnits()
roster := gd.getRoster(rawPlayerUnits)
hover := gd.HoveredData() hover := gd.HoveredData()
return gd.Inventory(rawPlayerUnits, hover) return gd.Inventory(rawPlayerUnits, len(roster) > 1, hover)
} }
func (gd *GameReader) InGame() bool { func (gd *GameReader) InGame() bool {

View File

@@ -13,7 +13,7 @@ import (
"github.com/hectorgimenez/d2go/pkg/utils" "github.com/hectorgimenez/d2go/pkg/utils"
) )
func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, hover data.HoverData) data.Inventory { func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, partyMode bool, hover data.HoverData) data.Inventory {
mainPlayer := rawPlayerUnits.GetMainPlayer() mainPlayer := rawPlayerUnits.GetMainPlayer()
baseAddr := gd.Process.moduleBaseAddressPtr + gd.offset.UnitTable + (4 * 1024) baseAddr := gd.Process.moduleBaseAddressPtr + gd.offset.UnitTable + (4 * 1024)
unitTableBuffer := gd.Process.ReadBytesFromMemory(baseAddr, 128*8) unitTableBuffer := gd.Process.ReadBytesFromMemory(baseAddr, 128*8)
@@ -275,7 +275,7 @@ func (gd *GameReader) Inventory(rawPlayerUnits RawPlayerUnits, hover data.HoverD
// In party mode / current memory layout: // In party mode / current memory layout:
// shared stash page 1 belongs to the current character. // shared stash page 1 belongs to the current character.
// Other pages are other shared stash containers and should keep raw owner. // Other pages are other shared stash containers and should keep raw owner.
if page == 1 { if !partyMode || page == 1 {
itm.Owner = mainPlayer.UnitID itm.Owner = mainPlayer.UnitID
} }