Refactor Checks (#39)

- Refactor IsInLobby
- Refactor IsInCharacterCreationScreen
- Refactor IsInCharacterSelectionScreen
This commit is contained in:
Arto Simonyan
2024-08-26 15:38:00 +03:00
committed by GitHub
parent ddeb350bee
commit 7ec2f584f5

View File

@@ -50,24 +50,24 @@ func (gd *GameReader) GetData() data.Data {
LastGamePassword: gd.LastGamePass(), LastGamePassword: gd.LastGamePass(),
FPS: gd.FPS(), FPS: gd.FPS(),
}, },
Monsters: gd.Monsters(pu.Position, hover), Monsters: gd.Monsters(pu.Position, hover),
Corpses: gd.Corpses(pu.Position, hover), Corpses: gd.Corpses(pu.Position, hover),
PlayerUnit: pu, PlayerUnit: pu,
Inventory: gd.Inventory(rawPlayerUnits, hover), Inventory: gd.Inventory(rawPlayerUnits, hover),
Objects: gd.Objects(pu.Position, hover), Objects: gd.Objects(pu.Position, hover),
OpenMenus: gd.openMenus(), OpenMenus: gd.openMenus(),
Widgets: gd.UpdateWidgets(), Widgets: gd.UpdateWidgets(),
Roster: roster, Roster: roster,
HoverData: hover, HoverData: hover,
TerrorZones: gd.TerrorZones(), TerrorZones: gd.TerrorZones(),
Quests: gd.getQuests(gameQuestsBytes), Quests: gd.getQuests(gameQuestsBytes),
KeyBindings: gd.GetKeyBindings(), KeyBindings: gd.GetKeyBindings(),
LegacyGraphics: gd.LegacyGraphics(), LegacyGraphics: gd.LegacyGraphics(),
IsOnline: gd.IsOnline(), IsOnline: gd.IsOnline(),
IsIngame: gd.IsIngame(), IsIngame: gd.IsIngame(),
IsInCharCreationScreen: gd.IsInCharacterCreationScreen(), IsInCharCreationScreen: gd.IsInCharacterCreationScreen(),
//IsInLobby: gd.IsInLobby(), IsInLobby: gd.IsInLobby(),
//IsInCharSelectionScreen: gd.IsInCharacterSelectionScreen(), IsInCharSelectionScreen: gd.IsInCharacterSelectionScreen(),
} }
return d return d
@@ -215,27 +215,40 @@ func (gd *GameReader) IsIngame() bool {
return gd.ReadUInt(gd.moduleBaseAddressPtr+0x22D5D78, 1) == 1 return gd.ReadUInt(gd.moduleBaseAddressPtr+0x22D5D78, 1) == 1
} }
/*
func (gd *GameReader) IsInLobby() bool { func (gd *GameReader) IsInLobby() bool {
return gd.ReadUInt(gd.moduleBaseAddressPtr+0x21CF488, 1) == 1 widgets := gd.UpdateWidgets()
if lobbyWidget, found := widgets["LobbyBackgroundPanel"]; found {
return lobbyWidget["WidgetActive"].(bool) && lobbyWidget["WidgetVisible"].(bool)
}
return false
} }
func (gd *GameReader) IsInCharacterSelectionScreen() bool { func (gd *GameReader) IsInCharacterSelectionScreen() bool {
return gd.ReadUInt(gd.moduleBaseAddressPtr+0x1DC7276, 1) != 0 widgets := gd.UpdateWidgets()
if csWidget, found := widgets["CharacterSelectPanel"]; found {
return csWidget["WidgetActive"].(bool) && csWidget["WidgetVisible"].(bool)
}
return false
} }
*/
func (gd *GameReader) IsInCharacterCreationScreen() bool { func (gd *GameReader) IsInCharacterCreationScreen() bool {
// Dont use this ;) widgets := gd.UpdateWidgets()
// This will bug out if you switch to legacy graphics in the character select screen and return 1 until you go back to character screen with d2r graphics if ccWidget, found := widgets["CharacterCreatePanel"]; found {
return gd.ReadUInt(gd.moduleBaseAddressPtr+0x234A1CE, 1) == 1 return ccWidget["WidgetActive"].(bool) && ccWidget["WidgetVisible"].(bool)
}
return false
} }
func (gd *GameReader) LastGameName() string { func (gd *GameReader) LastGameName() string {
// outdated
return gd.ReadStringFromMemory(gd.moduleBaseAddressPtr+0x29DBD10+0x8, 0) return gd.ReadStringFromMemory(gd.moduleBaseAddressPtr+0x29DBD10+0x8, 0)
} }
func (gd *GameReader) LastGamePass() string { func (gd *GameReader) LastGamePass() string {
// outdated
return gd.ReadStringFromMemory(gd.moduleBaseAddressPtr+0x29DBD10+0x60, 0) return gd.ReadStringFromMemory(gd.moduleBaseAddressPtr+0x29DBD10+0x60, 0)
} }