skill <> kb
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
package data
|
package data
|
||||||
|
|
||||||
|
import "github.com/hectorgimenez/d2go/pkg/data/skill"
|
||||||
|
|
||||||
type KeyBindings struct {
|
type KeyBindings struct {
|
||||||
CharacterScreen KeyBinding
|
CharacterScreen KeyBinding
|
||||||
Inventory KeyBinding
|
Inventory KeyBinding
|
||||||
@@ -12,7 +14,7 @@ type KeyBindings struct {
|
|||||||
|
|
||||||
SkillTree KeyBinding
|
SkillTree KeyBinding
|
||||||
SkillSpeedBar KeyBinding
|
SkillSpeedBar KeyBinding
|
||||||
Skills [16]KeyBinding
|
Skills [16]SkillBinding
|
||||||
SelectPreviousSkill KeyBinding
|
SelectPreviousSkill KeyBinding
|
||||||
SelectNextSkill KeyBinding
|
SelectNextSkill KeyBinding
|
||||||
|
|
||||||
@@ -54,3 +56,18 @@ type KeyBinding struct {
|
|||||||
Key1 [2]byte
|
Key1 [2]byte
|
||||||
Key2 [2]byte
|
Key2 [2]byte
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SkillBinding struct {
|
||||||
|
SkillID skill.ID
|
||||||
|
KeyBinding
|
||||||
|
}
|
||||||
|
|
||||||
|
func (kb KeyBindings) KeyBindingForSkill(skillID skill.ID) (KeyBinding, bool) {
|
||||||
|
for _, sk := range kb.Skills {
|
||||||
|
if sk.SkillID == skillID {
|
||||||
|
return sk.KeyBinding, true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return KeyBinding{}, false
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,23 +1,33 @@
|
|||||||
package memory
|
package memory
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/binary"
|
||||||
"github.com/hectorgimenez/d2go/pkg/data"
|
"github.com/hectorgimenez/d2go/pkg/data"
|
||||||
|
"github.com/hectorgimenez/d2go/pkg/data/skill"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (gd *GameReader) GetKeyBindings() data.KeyBindings {
|
func (gd *GameReader) GetKeyBindings() data.KeyBindings {
|
||||||
blob := gd.ReadBytesFromMemory(gd.moduleBaseAddressPtr+0x1e26934, 0x500)
|
blob := gd.ReadBytesFromMemory(gd.moduleBaseAddressPtr+0x1e26934, 0x500)
|
||||||
|
blobSkills := gd.ReadBytesFromMemory(gd.moduleBaseAddressPtr+0x224edc0, 0x500)
|
||||||
|
|
||||||
skills := [16]data.KeyBinding{}
|
skillsKB := [16]data.SkillBinding{}
|
||||||
for i := 0; i < 7; i++ {
|
for i := 0; i < 7; i++ {
|
||||||
skills[i] = data.KeyBinding{
|
skillsKB[i] = data.SkillBinding{
|
||||||
|
SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[i*0x1c : i*0x1c+4])),
|
||||||
|
KeyBinding: data.KeyBinding{
|
||||||
Key1: [2]byte{blob[0x118+(i*0x14)], blob[0x119+(i*0x14)]},
|
Key1: [2]byte{blob[0x118+(i*0x14)], blob[0x119+(i*0x14)]},
|
||||||
Key2: [2]byte{blob[0x122+(i*0x14)], blob[0x123+(i*0x14)]},
|
Key2: [2]byte{blob[0x122+(i*0x14)], blob[0x123+(i*0x14)]},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for i := 0; i < 9; i++ {
|
for i := 0; i < 9; i++ {
|
||||||
skills[i+7] = data.KeyBinding{
|
skillIdx := i + 7
|
||||||
|
skillsKB[skillIdx] = data.SkillBinding{
|
||||||
|
SkillID: skill.ID(binary.LittleEndian.Uint32(blobSkills[skillIdx*0x1c : skillIdx*0x1c+4])),
|
||||||
|
KeyBinding: data.KeyBinding{
|
||||||
Key1: [2]byte{blob[0x384+(i*0x14)], blob[0x385+(i*0x14)]},
|
Key1: [2]byte{blob[0x384+(i*0x14)], blob[0x385+(i*0x14)]},
|
||||||
Key2: [2]byte{blob[0x38e+(i*0x14)], blob[0x38f+(i*0x14)]},
|
Key2: [2]byte{blob[0x38e+(i*0x14)], blob[0x38f+(i*0x14)]},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,7 +80,7 @@ func (gd *GameReader) GetKeyBindings() data.KeyBindings {
|
|||||||
Key1: [2]byte{blob[0x104], blob[0x105]},
|
Key1: [2]byte{blob[0x104], blob[0x105]},
|
||||||
Key2: [2]byte{blob[0x10e], blob[0x10f]},
|
Key2: [2]byte{blob[0x10e], blob[0x10f]},
|
||||||
},
|
},
|
||||||
Skills: skills,
|
Skills: skillsKB,
|
||||||
SelectPreviousSkill: data.KeyBinding{
|
SelectPreviousSkill: data.KeyBinding{
|
||||||
Key1: [2]byte{blob[0x2f8], blob[0x2f9]},
|
Key1: [2]byte{blob[0x2f8], blob[0x2f9]},
|
||||||
Key2: [2]byte{blob[0x302], blob[0x303]},
|
Key2: [2]byte{blob[0x302], blob[0x303]},
|
||||||
|
|||||||
Reference in New Issue
Block a user