package d2datadict import ( "log" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2resource" "github.com/OpenDiablo2/OpenDiablo2/d2common/d2interface" "github.com/OpenDiablo2/OpenDiablo2/d2common" ) type LevelWarpRecord struct { Id int32 SelectX int32 SelectY int32 SelectDX int32 SelectDY int32 ExitWalkX int32 ExitWalkY int32 OffsetX int32 OffsetY int32 LitVersion bool Tiles int32 Direction string } var LevelWarps map[int]*LevelWarpRecord func LoadLevelWarps(fileProvider d2interface.FileProvider) { LevelWarps = make(map[int]*LevelWarpRecord) levelWarpData := fileProvider.LoadFile(d2resource.LevelWarp) streamReader := d2common.CreateStreamReader(levelWarpData) numRecords := int(streamReader.GetInt32()) for i := 0; i < numRecords; i++ { id := int(streamReader.GetInt32()) LevelWarps[id] = &LevelWarpRecord{} LevelWarps[id].Id = int32(id) LevelWarps[id].SelectX = streamReader.GetInt32() LevelWarps[id].SelectY = streamReader.GetInt32() LevelWarps[id].SelectDX = streamReader.GetInt32() LevelWarps[id].SelectDY = streamReader.GetInt32() LevelWarps[id].ExitWalkX = streamReader.GetInt32() LevelWarps[id].ExitWalkY = streamReader.GetInt32() LevelWarps[id].OffsetX = streamReader.GetInt32() LevelWarps[id].OffsetY = streamReader.GetInt32() LevelWarps[id].LitVersion = streamReader.GetInt32() == 1 LevelWarps[id].Tiles = streamReader.GetInt32() LevelWarps[id].Direction = string(streamReader.GetByte()) streamReader.SkipBytes(3) } log.Printf("Loaded %d level warps", len(LevelWarps)) }