|
|
|
@@ -1,48 +1,54 @@
|
|
|
|
package memory
|
|
|
|
package memory
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/hectorgimenez/d2go/pkg/data/quest"
|
|
|
|
"github.com/hectorgimenez/d2go/pkg/data/quest"
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
func (gd *GameReader) getQuests(questBytes []byte) quest.Quests {
|
|
|
|
func (gd *GameReader) getQuests(questBytes []byte) quest.Quests {
|
|
|
|
return quest.Quests{
|
|
|
|
return quest.Quests{
|
|
|
|
// Act 1
|
|
|
|
// Act 1
|
|
|
|
quest.Act1DenOfEvil: gd.getQuestStatus([2]byte(questBytes[0:2])),
|
|
|
|
quest.Act1DenOfEvil: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 0, 1)),
|
|
|
|
quest.Act1SistersBurialGrounds: gd.getQuestStatus([2]byte(questBytes[2:4])),
|
|
|
|
quest.Act1SistersBurialGrounds: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 1, 1)),
|
|
|
|
quest.Act1ToolsOfTheTrade: gd.getQuestStatus([2]byte(questBytes[4:6])),
|
|
|
|
quest.Act1ToolsOfTheTrade: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 2, 1)),
|
|
|
|
quest.Act1TheSearchForCain: gd.getQuestStatus([2]byte(questBytes[6:8])),
|
|
|
|
quest.Act1TheSearchForCain: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 3, 1)),
|
|
|
|
quest.Act1TheForgottenTower: gd.getQuestStatus([2]byte(questBytes[8:10])),
|
|
|
|
quest.Act1TheForgottenTower: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 4, 1)),
|
|
|
|
quest.Act1SistersToTheSlaughter: gd.getQuestStatus([2]byte(questBytes[10:12])),
|
|
|
|
quest.Act1SistersToTheSlaughter: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 5, 1)),
|
|
|
|
// Act 2
|
|
|
|
// Act 2
|
|
|
|
quest.Act2RadamentsLair: gd.getQuestStatus([2]byte(questBytes[16:18])),
|
|
|
|
quest.Act2RadamentsLair: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 8, 1)),
|
|
|
|
quest.Act2TheHoradricStaff: gd.getQuestStatus([2]byte(questBytes[18:20])),
|
|
|
|
quest.Act2TheHoradricStaff: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 9, 1)),
|
|
|
|
quest.Act2TaintedSun: gd.getQuestStatus([2]byte(questBytes[20:22])),
|
|
|
|
quest.Act2TaintedSun: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 10, 1)),
|
|
|
|
quest.Act2ArcaneSanctuary: gd.getQuestStatus([2]byte(questBytes[22:24])),
|
|
|
|
quest.Act2ArcaneSanctuary: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 11, 1)),
|
|
|
|
quest.Act2TheSummoner: gd.getQuestStatus([2]byte(questBytes[24:26])),
|
|
|
|
quest.Act2TheSummoner: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 12, 1)),
|
|
|
|
quest.Act2TheSevenTombs: gd.getQuestStatus([2]byte(questBytes[26:28])),
|
|
|
|
quest.Act2TheSevenTombs: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 13, 1)),
|
|
|
|
// Act 3
|
|
|
|
// Act 3
|
|
|
|
quest.Act3LamEsensTome: gd.getQuestStatus([2]byte(questBytes[32:34])),
|
|
|
|
quest.Act3LamEsensTome: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 16, 1)),
|
|
|
|
quest.Act3KhalimsWill: gd.getQuestStatus([2]byte(questBytes[34:36])),
|
|
|
|
quest.Act3KhalimsWill: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 17, 1)),
|
|
|
|
quest.Act3BladeOfTheOldReligion: gd.getQuestStatus([2]byte(questBytes[36:38])),
|
|
|
|
quest.Act3BladeOfTheOldReligion: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 18, 1)),
|
|
|
|
quest.Act3TheGoldenBird: gd.getQuestStatus([2]byte(questBytes[38:40])),
|
|
|
|
quest.Act3TheGoldenBird: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 19, 1)),
|
|
|
|
quest.Act3TheBlackenedTemple: gd.getQuestStatus([2]byte(questBytes[40:42])),
|
|
|
|
quest.Act3TheBlackenedTemple: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 20, 1)),
|
|
|
|
quest.Act3TheGuardian: gd.getQuestStatus([2]byte(questBytes[42:44])),
|
|
|
|
quest.Act3TheGuardian: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 21, 1)),
|
|
|
|
// Act 4
|
|
|
|
// Act 4
|
|
|
|
quest.Act4TheFallenAngel: gd.getQuestStatus([2]byte(questBytes[48:50])),
|
|
|
|
quest.Act4TheFallenAngel: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 24, 1)),
|
|
|
|
quest.Act4TerrorsEnd: gd.getQuestStatus([2]byte(questBytes[50:52])),
|
|
|
|
quest.Act4TerrorsEnd: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 25, 1)),
|
|
|
|
quest.Act4HellForge: gd.getQuestStatus([2]byte(questBytes[52:54])),
|
|
|
|
quest.Act4HellForge: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 26, 1)),
|
|
|
|
// Act 5
|
|
|
|
// Act 5
|
|
|
|
quest.Act5SiegeOnHarrogath: gd.getQuestStatus([2]byte(questBytes[68:70])),
|
|
|
|
quest.Act5SiegeOnHarrogath: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 34, 1)),
|
|
|
|
quest.Act5RescueOnMountArreat: gd.getQuestStatus([2]byte(questBytes[70:72])),
|
|
|
|
quest.Act5RescueOnMountArreat: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 35, 1)),
|
|
|
|
quest.Act5PrisonOfIce: gd.getQuestStatus([2]byte(questBytes[72:74])),
|
|
|
|
quest.Act5PrisonOfIce: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 36, 1)),
|
|
|
|
quest.Act5BetrayalOfHarrogath: gd.getQuestStatus([2]byte(questBytes[74:76])),
|
|
|
|
quest.Act5BetrayalOfHarrogath: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 37, 1)),
|
|
|
|
quest.Act5RiteOfPassage: gd.getQuestStatus([2]byte(questBytes[76:78])),
|
|
|
|
quest.Act5RiteOfPassage: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 38, 1)),
|
|
|
|
quest.Act5EveOfDestruction: gd.getQuestStatus([2]byte(questBytes[78:80])),
|
|
|
|
quest.Act5EveOfDestruction: gd.getQuestStatus(ReadUIntFromBuffer(questBytes, 39, 1)),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (gd *GameReader) getQuestStatus(questStatusInt uint) []quest.Status {
|
|
|
|
|
|
|
|
var activeStates []quest.Status
|
|
|
|
|
|
|
|
activeStates = append(activeStates, quest.Status(questStatusInt))
|
|
|
|
|
|
|
|
return activeStates
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (gd *GameReader) getQuestStatus(questBytes [2]byte) []quest.Status {
|
|
|
|
//outdated
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* func (gd *GameReader) getQuestStatus(questBytes []byte) []quest.Status {
|
|
|
|
combinedValue := uint16(questBytes[0])<<8 | uint16(questBytes[1])
|
|
|
|
combinedValue := uint16(questBytes[0])<<8 | uint16(questBytes[1])
|
|
|
|
|
|
|
|
|
|
|
|
binaryRepresentation := fmt.Sprintf("%016b", combinedValue)
|
|
|
|
binaryRepresentation := fmt.Sprintf("%016b", combinedValue)
|
|
|
|
@@ -57,4 +63,4 @@ func (gd *GameReader) getQuestStatus(questBytes [2]byte) []quest.Status {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return activeStates
|
|
|
|
return activeStates
|
|
|
|
}
|
|
|
|
}*/
|
|
|
|
|