Added Entrance/Stairs unittype5 table lvlwrap.txt (#64)

This commit is contained in:
elb
2024-12-23 13:06:15 -05:00
committed by GitHub
parent 8203394c9f
commit 2924189fe8
10 changed files with 378 additions and 0 deletions

View File

@@ -26,6 +26,11 @@ var textFiles = []TextFileDesc{
DestFile: "pkg/data/object/objects.go",
Template: templateObjects,
},
{
SourceFile: "cmd/txttocode/txt/lvlwarp.txt",
DestFile: "pkg/data/entrance/entrances.go",
Template: templateEntrances,
},
}
type TextFileDesc struct {

View File

@@ -70,3 +70,13 @@ var Desc = map[int]Description{
{{ index $value "*ID" }}: {Name: "{{ $value.Name }}", ID: {{ index $value "*ID" }}, SizeX: {{ $value.SizeX }}, SizeY: {{ $value.SizeY }}, Left: {{ $value.Left }}, Top: {{ $value.Top }}, Width: {{ $value.Width }}, Height: {{ $value.Height }}, Yoffset: {{ $value.Yoffset }}, Xoffset: {{ $value.Xoffset }}, HasCollision: {{ if eq $value.HasCollision0 "1" }}true{{ else }}false{{ end }}},
{{- end }}
}`
const templateEntrances = `// Code generated by cmd/txttocode. DO NOT EDIT.
// source: cmd/txttocode/txt/lvlwarp.txt
package entrance
var Desc = map[int]Description{
{{- range $key, $value := . }}
{{ $value.UniqueId }}: {ID: {{ $value.UniqueId }}, Name: "{{ $value.Name }}", SelectX: {{ $value.SelectX }}, SelectY: {{ $value.SelectY }}, SelectDX: {{ $value.SelectDX }}, SelectDY: {{ $value.SelectDY }}, OffsetX: {{ $value.OffsetX }}, OffsetY: {{ $value.OffsetY }}, Direction: "{{ $value.Direction }}"},
{{- end }}
}`

View File

@@ -0,0 +1,90 @@
Name Id SelectX SelectY SelectDX SelectDY ExitWalkX ExitWalkY OffsetX OffsetY LitVersion Tiles NoInteract Direction UniqueId
Act 1 Wilderness to Cave Cliff L 0 -90 -100 90 110 5 0 1 -1 1 2 0 b 0
Act 1 Wilderness to Cave Cliff R 1 -15 -90 90 110 0 5 3 1 1 2 0 b 1
Act 1 Wilderness to Cave Floor L 2 -60 -60 85 100 5 0 -1 1 1 2 0 b 2
Act 1 Wilderness to Cave Floor R 3 -25 -60 85 100 0 5 1 -1 1 2 0 b 3
Act 1 Cave Up 4 -30 -120 120 150 3 5 2 5 1 2 0 b 4
Act 1 Cave Down 5 -25 -75 80 100 3 5 1 3 1 2 0 b 5
Act 1 Graveyard to Crypt 1 6 -90 -110 110 140 5 0 5 0 0 2 0 b 6
Act 1 Graveyard to Crypt 2 7 -70 -90 90 120 5 0 5 2 0 2 0 b 7
Act 1 Crypt Up 8 -10 -90 60 110 0 5 5 1 1 2 0 b 8
Act 1 Crypt Down 9 -30 -90 60 110 5 0 1 1 1 2 0 b 9
Act 1 Wilderness to Tower 10 -10 -50 150 80 3 5 -4 0 1 2 0 b 10
Act 1 Tower to Wilderness 11 -50 -130 60 140 5 3 4 -2 0 2 0 b 11
Act 1 Tower to Crypt 12 -50 -90 80 110 5 0 2 3 1 2 0 b 12
Act 1 Jail Up 13 -50 -110 110 150 0 5 5 1 1 2 0 b 13
Act 1 Jail Down 14 -40 -80 210 110 0 5 -1 3 1 2 0 b 14
Act 1 Cathedral To Catacombs 15 -30 -110 85 130 0 5 3 1 1 2 0 b 15
Act 1 Catacombs to Cathedral 16 -35 -130 90 150 0 5 7 1 1 2 0 b 16
Act 1 Catacombs Up 17 -50 -110 110 150 0 5 5 1 1 2 0 b 17
Act 1 Catacombs Down 18 -60 -80 210 110 0 5 -1 3 1 2 0 b 18
Act 2 Town to Sewer Trap 19 -10 -10 0 0 5 5 0 0 0 2 1 b 19
Act 2 Town to Sewer Dock 20 -25 -95 70 130 5 0 -2 0 0 2 0 b 20
Act 2 Sewer Dock to Town 21 20 -80 65 140 -5 0 10 -2 0 2 0 b 21
Act 2 Sewer Up 22 -25 -160 100 180 2 5 5 3 1 2 0 b 22
Act 2 Sewer Down 23 -65 -55 150 110 0 -5 0 0 1 2 0 b 23
Act 2 Town to Harem 24 -120 -20 150 130 5 0 5 2 0 2 0 b 24
Act 2 Harem to Town 25 -35 -70 95 130 5 2 0 -2 0 2 0 b 25
Act 2 Harem Up 1 26 -25 -150 80 180 0 5 4 0 1 2 0 b 26
Act 2 Harem Up 2 27 -40 -160 80 180 5 0 0 5 1 2 0 b 27
Act 2 Harem Down 1 28 -20 -40 170 100 -5 5 -3 1 1 2 0 b 28
Act 2 Harem Down 2 29 -50 -20 160 85 -5 0 -1 -3 1 2 0 b 29
Act 2 Basement Up 1 30 -25 -100 60 125 0 5 2 0 1 2 0 b 30
Act 2 Basement Up 2 31 -40 -100 60 125 5 0 0 2 1 2 0 b 31
Act 2 Basement Down 32 -30 -30 170 90 -5 5 -3 0 1 2 0 b 32
Act 2 Desert to Tomb L 1 33 -70 -140 80 160 5 0 1 1 0 2 0 b 33
Act 2 Desert to Tomb L 2 34 -50 -120 90 150 5 0 1 1 0 2 0 b 34
Act 2 Desert to Tomb R 1 35 -30 -140 80 160 0 5 6 2 0 2 0 b 35
Act 2 Desert to Tomb R 2 36 0 -140 100 150 0 5 1 2 0 2 0 b 36
Act 2 Desert to Tomb Viper 37 -30 -140 80 160 0 5 4 1 0 2 0 b 37
Act 2 Desert to Tomb Tal 1 38 -40 -190 90 210 5 5 0 0 0 2 0 b 38
Act 2 Desert to Tomb Tal 2 39 -40 -210 50 230 5 0 -1 1 0 2 0 b 39
Act 2 Desert to Tomb Tal 3 40 -30 -100 60 140 5 0 0 1 0 2 0 b 40
Act 2 Desert to Tomb Tal 4 41 -90 -140 70 160 5 0 -1 -5 0 2 0 b 41
Act 2 Desert to Tomb Tal 5 42 -10 -110 60 150 0 5 -2 -3 0 2 0 b 42
Act 2 Desert to Tomb Tal 6 43 0 -130 90 150 0 5 -1 0 0 2 0 b 43
Act 2 Desert to Tomb Tal 7 44 -10 -210 70 240 0 5 0 -3 0 2 0 b 44
Act 2 Tomb Up 45 -30 -115 75 145 0 5 2 0 1 2 0 b 45
Act 2 Tomb Down 46 -45 -120 85 145 5 0 0 2 1 2 0 b 46
Act 2 Desert to Lair 47 -10 -60 90 90 5 5 -2 2 1 2 0 b 47
Act 2 Lair Up 48 -20 -70 80 85 0 5 1 0 1 2 0 b 48
Act 2 Lair Down 49 -115 -10 160 70 0 -5 -3 -5 1 2 0 b 49
Act 2 Desert to Sewer Trap 50 -10 -10 0 0 5 5 0 0 0 2 1 b 50
Act 3 Jungle to Spider 51 -60 -70 70 90 5 0 0 1 0 2 0 b 51
Act 3 Spider to Jungle 52 10 -100 80 110 0 5 4 1 1 2 0 b 52
Act 3 Jungle to Dungeon Fort 53 -15 -70 70 110 0 5 0 0 0 2 0 b 53
Act 3 Jungle to Dungeon Hole 54 -130 -10 170 100 0 -5 -4 -6 0 2 0 b 54
Act 3 Dungeon Up 55 -10 -100 90 130 0 5 3 1 1 2 0 b 55
Act 3 Dungeon Down 56 -40 -20 170 100 -5 0 -4 -1 1 2 0 b 56
Act 3 Kurast to Sewer 57 -60 -40 120 90 0 5 0 0 1 2 0 b 57
Act 3 Sewer Up L 58 -75 -110 100 150 5 0 1 1 1 2 0 b 58
Act 3 Sewer Up R 59 -25 -110 100 150 0 5 6 1 1 2 0 b 59
Act 3 Sewer Down 60 -10 -10 0 0 5 5 0 0 0 2 1 b 60
Act 3 Kurast to Temple 61 -10 -10 0 0 5 5 0 0 0 2 1 b 61
Act 3 Temple Up L 62 -50 -110 80 140 5 0 1 2 1 2 0 b 62
Act 3 Temple Up R 63 -30 -110 80 140 0 5 2 1 1 2 0 b 63
Act 3 Travincal to Mephisto 64 -10 -10 0 0 5 5 0 0 0 2 1 b 64
Act 3 Mephisto Up L 65 -65 -150 125 180 5 0 1 0 1 2 0 b 65
Act 3 Mephisto Up R 66 -60 -150 125 180 0 5 5 1 1 2 0 b 66
Act 3 Mephisto Down L 67 -65 -150 125 180 5 0 1 0 1 2 0 b 67
Act 3 Mephisto Down R 68 -60 -150 125 180 0 5 5 1 1 2 0 b 68
Act 4 Mesa to Lava 69 -60 -40 150 160 -5 0 2 2 0 2 0 b 69
Act 4 Lava to Mesa 70 -90 -50 160 120 5 2 0 0 0 2 0 b 70
Expansion
Act 5 Barricade Down Wall L 71 -70 -80 80 100 5 2 2 6 1 4 0 l 71
Act 5 Barricade Down Wall R 71 -15 -90 70 100 -1 5 6 2 1 4 0 r 72
Act 5 Barricade Down Floor 72 -20 -120 75 100 5 2 2 2 1 4 0 b 73
Act 5 Ice Caves Up L 73 -60 -110 90 115 5 2 0 5 1 2 0 l 74
Act 5 Ice Caves Up R 73 -10 -120 100 120 2 5 5 1 1 2 0 r 75
Act 5 Ice Caves Down L 74 -60 -110 90 115 5 2 0 5 1 2 0 l 76
Act 5 Ice Caves Down R 74 -20 -110 90 115 2 5 4 0 1 2 0 r 77
Act 5 Ice Caves Down Floor 75 -5 -110 80 110 2 5 6 3 1 2 0 b 78
Act 5 Temple Entrance 76 0 -110 95 100 2 5 2 0 1 2 0 b 79
Act 5 Temple Down 77 0 -70 140 80 5 2 -2 3 1 2 0 b 80
Act 5 Temple Up 78 -20 -110 100 110 5 2 3 0 1 2 0 b 81
Act 5 Mountain Top To Ice 79 -40 -110 0 0 2 5 2 1 0 2 1 b 82
Act 5 Mountain Top To Baal 80 -20 -110 0 0 2 5 2 1 0 2 1 b 83
Act 5 Baal Temple Up L 81 -70 -110 95 115 5 2 1 4 1 2 0 l 84
Act 5 Baal Temple Up R 81 -20 -110 80 115 2 5 4 1 1 2 0 r 85
Act 5 Baal Temple Down L 82 -70 -110 95 115 5 2 1 4 1 2 0 l 86
Act 5 Baal Temple Down R 82 -20 -110 80 115 2 5 4 1 1 2 0 r 87

View File

@@ -35,6 +35,7 @@ type Data struct {
NPCs NPCs
Inventory Inventory
Objects Objects
Entrances Entrances
AdjacentLevels []Level
Rooms []Room
OpenMenus OpenMenus

View File

@@ -0,0 +1,13 @@
package entrance
type Description struct {
ID int
Name string
SelectX int
SelectY int
SelectDX int
SelectDY int
OffsetX int
OffsetY int
Direction string
}

View File

@@ -0,0 +1,94 @@
// Code generated by cmd/txttocode. DO NOT EDIT.
// source: cmd/txttocode/txt/lvlwarp.txt
package entrance
var Desc = map[int]Description{
0: {ID: 0, Name: "Act 1 Wilderness to Cave Cliff L", SelectX: -90, SelectY: -100, SelectDX: 90, SelectDY: 110, OffsetX: 1, OffsetY: -1, Direction: "b"},
1: {ID: 1, Name: "Act 1 Wilderness to Cave Cliff R", SelectX: -15, SelectY: -90, SelectDX: 90, SelectDY: 110, OffsetX: 3, OffsetY: 1, Direction: "b"},
2: {ID: 2, Name: "Act 1 Wilderness to Cave Floor L", SelectX: -60, SelectY: -60, SelectDX: 85, SelectDY: 100, OffsetX: -1, OffsetY: 1, Direction: "b"},
3: {ID: 3, Name: "Act 1 Wilderness to Cave Floor R", SelectX: -25, SelectY: -60, SelectDX: 85, SelectDY: 100, OffsetX: 1, OffsetY: -1, Direction: "b"},
4: {ID: 4, Name: "Act 1 Cave Up", SelectX: -30, SelectY: -120, SelectDX: 120, SelectDY: 150, OffsetX: 2, OffsetY: 5, Direction: "b"},
5: {ID: 5, Name: "Act 1 Cave Down", SelectX: -25, SelectY: -75, SelectDX: 80, SelectDY: 100, OffsetX: 1, OffsetY: 3, Direction: "b"},
6: {ID: 6, Name: "Act 1 Graveyard to Crypt 1", SelectX: -90, SelectY: -110, SelectDX: 110, SelectDY: 140, OffsetX: 5, OffsetY: 0, Direction: "b"},
7: {ID: 7, Name: "Act 1 Graveyard to Crypt 2", SelectX: -70, SelectY: -90, SelectDX: 90, SelectDY: 120, OffsetX: 5, OffsetY: 2, Direction: "b"},
8: {ID: 8, Name: "Act 1 Crypt Up", SelectX: -10, SelectY: -90, SelectDX: 60, SelectDY: 110, OffsetX: 5, OffsetY: 1, Direction: "b"},
9: {ID: 9, Name: "Act 1 Crypt Down", SelectX: -30, SelectY: -90, SelectDX: 60, SelectDY: 110, OffsetX: 1, OffsetY: 1, Direction: "b"},
10: {ID: 10, Name: "Act 1 Wilderness to Tower", SelectX: -10, SelectY: -50, SelectDX: 150, SelectDY: 80, OffsetX: -4, OffsetY: 0, Direction: "b"},
11: {ID: 11, Name: "Act 1 Tower to Wilderness", SelectX: -50, SelectY: -130, SelectDX: 60, SelectDY: 140, OffsetX: 4, OffsetY: -2, Direction: "b"},
12: {ID: 12, Name: "Act 1 Tower to Crypt", SelectX: -50, SelectY: -90, SelectDX: 80, SelectDY: 110, OffsetX: 2, OffsetY: 3, Direction: "b"},
13: {ID: 13, Name: "Act 1 Jail Up", SelectX: -50, SelectY: -110, SelectDX: 110, SelectDY: 150, OffsetX: 5, OffsetY: 1, Direction: "b"},
14: {ID: 14, Name: "Act 1 Jail Down", SelectX: -40, SelectY: -80, SelectDX: 210, SelectDY: 110, OffsetX: -1, OffsetY: 3, Direction: "b"},
15: {ID: 15, Name: "Act 1 Cathedral To Catacombs", SelectX: -30, SelectY: -110, SelectDX: 85, SelectDY: 130, OffsetX: 3, OffsetY: 1, Direction: "b"},
16: {ID: 16, Name: "Act 1 Catacombs to Cathedral", SelectX: -35, SelectY: -130, SelectDX: 90, SelectDY: 150, OffsetX: 7, OffsetY: 1, Direction: "b"},
17: {ID: 17, Name: "Act 1 Catacombs Up", SelectX: -50, SelectY: -110, SelectDX: 110, SelectDY: 150, OffsetX: 5, OffsetY: 1, Direction: "b"},
18: {ID: 18, Name: "Act 1 Catacombs Down", SelectX: -60, SelectY: -80, SelectDX: 210, SelectDY: 110, OffsetX: -1, OffsetY: 3, Direction: "b"},
19: {ID: 19, Name: "Act 2 Town to Sewer Trap", SelectX: -10, SelectY: -10, SelectDX: 0, SelectDY: 0, OffsetX: 0, OffsetY: 0, Direction: "b"},
20: {ID: 20, Name: "Act 2 Town to Sewer Dock", SelectX: -25, SelectY: -95, SelectDX: 70, SelectDY: 130, OffsetX: -2, OffsetY: 0, Direction: "b"},
21: {ID: 21, Name: "Act 2 Sewer Dock to Town", SelectX: 20, SelectY: -80, SelectDX: 65, SelectDY: 140, OffsetX: 10, OffsetY: -2, Direction: "b"},
22: {ID: 22, Name: "Act 2 Sewer Up", SelectX: -25, SelectY: -160, SelectDX: 100, SelectDY: 180, OffsetX: 5, OffsetY: 3, Direction: "b"},
23: {ID: 23, Name: "Act 2 Sewer Down", SelectX: -65, SelectY: -55, SelectDX: 150, SelectDY: 110, OffsetX: 0, OffsetY: 0, Direction: "b"},
24: {ID: 24, Name: "Act 2 Town to Harem", SelectX: -120, SelectY: -20, SelectDX: 150, SelectDY: 130, OffsetX: 5, OffsetY: 2, Direction: "b"},
25: {ID: 25, Name: "Act 2 Harem to Town", SelectX: -35, SelectY: -70, SelectDX: 95, SelectDY: 130, OffsetX: 0, OffsetY: -2, Direction: "b"},
26: {ID: 26, Name: "Act 2 Harem Up 1", SelectX: -25, SelectY: -150, SelectDX: 80, SelectDY: 180, OffsetX: 4, OffsetY: 0, Direction: "b"},
27: {ID: 27, Name: "Act 2 Harem Up 2", SelectX: -40, SelectY: -160, SelectDX: 80, SelectDY: 180, OffsetX: 0, OffsetY: 5, Direction: "b"},
28: {ID: 28, Name: "Act 2 Harem Down 1", SelectX: -20, SelectY: -40, SelectDX: 170, SelectDY: 100, OffsetX: -3, OffsetY: 1, Direction: "b"},
29: {ID: 29, Name: "Act 2 Harem Down 2", SelectX: -50, SelectY: -20, SelectDX: 160, SelectDY: 85, OffsetX: -1, OffsetY: -3, Direction: "b"},
30: {ID: 30, Name: "Act 2 Basement Up 1", SelectX: -25, SelectY: -100, SelectDX: 60, SelectDY: 125, OffsetX: 2, OffsetY: 0, Direction: "b"},
31: {ID: 31, Name: "Act 2 Basement Up 2", SelectX: -40, SelectY: -100, SelectDX: 60, SelectDY: 125, OffsetX: 0, OffsetY: 2, Direction: "b"},
32: {ID: 32, Name: "Act 2 Basement Down", SelectX: -30, SelectY: -30, SelectDX: 170, SelectDY: 90, OffsetX: -3, OffsetY: 0, Direction: "b"},
33: {ID: 33, Name: "Act 2 Desert to Tomb L 1", SelectX: -70, SelectY: -140, SelectDX: 80, SelectDY: 160, OffsetX: 1, OffsetY: 1, Direction: "b"},
34: {ID: 34, Name: "Act 2 Desert to Tomb L 2", SelectX: -50, SelectY: -120, SelectDX: 90, SelectDY: 150, OffsetX: 1, OffsetY: 1, Direction: "b"},
35: {ID: 35, Name: "Act 2 Desert to Tomb R 1", SelectX: -30, SelectY: -140, SelectDX: 80, SelectDY: 160, OffsetX: 6, OffsetY: 2, Direction: "b"},
36: {ID: 36, Name: "Act 2 Desert to Tomb R 2", SelectX: 0, SelectY: -140, SelectDX: 100, SelectDY: 150, OffsetX: 1, OffsetY: 2, Direction: "b"},
37: {ID: 37, Name: "Act 2 Desert to Tomb Viper", SelectX: -30, SelectY: -140, SelectDX: 80, SelectDY: 160, OffsetX: 4, OffsetY: 1, Direction: "b"},
38: {ID: 38, Name: "Act 2 Desert to Tomb Tal 1", SelectX: -40, SelectY: -190, SelectDX: 90, SelectDY: 210, OffsetX: 0, OffsetY: 0, Direction: "b"},
39: {ID: 39, Name: "Act 2 Desert to Tomb Tal 2", SelectX: -40, SelectY: -210, SelectDX: 50, SelectDY: 230, OffsetX: -1, OffsetY: 1, Direction: "b"},
40: {ID: 40, Name: "Act 2 Desert to Tomb Tal 3", SelectX: -30, SelectY: -100, SelectDX: 60, SelectDY: 140, OffsetX: 0, OffsetY: 1, Direction: "b"},
41: {ID: 41, Name: "Act 2 Desert to Tomb Tal 4", SelectX: -90, SelectY: -140, SelectDX: 70, SelectDY: 160, OffsetX: -1, OffsetY: -5, Direction: "b"},
42: {ID: 42, Name: "Act 2 Desert to Tomb Tal 5", SelectX: -10, SelectY: -110, SelectDX: 60, SelectDY: 150, OffsetX: -2, OffsetY: -3, Direction: "b"},
43: {ID: 43, Name: "Act 2 Desert to Tomb Tal 6", SelectX: 0, SelectY: -130, SelectDX: 90, SelectDY: 150, OffsetX: -1, OffsetY: 0, Direction: "b"},
44: {ID: 44, Name: "Act 2 Desert to Tomb Tal 7", SelectX: -10, SelectY: -210, SelectDX: 70, SelectDY: 240, OffsetX: 0, OffsetY: -3, Direction: "b"},
45: {ID: 45, Name: "Act 2 Tomb Up", SelectX: -30, SelectY: -115, SelectDX: 75, SelectDY: 145, OffsetX: 2, OffsetY: 0, Direction: "b"},
46: {ID: 46, Name: "Act 2 Tomb Down", SelectX: -45, SelectY: -120, SelectDX: 85, SelectDY: 145, OffsetX: 0, OffsetY: 2, Direction: "b"},
47: {ID: 47, Name: "Act 2 Desert to Lair", SelectX: -10, SelectY: -60, SelectDX: 90, SelectDY: 90, OffsetX: -2, OffsetY: 2, Direction: "b"},
48: {ID: 48, Name: "Act 2 Lair Up", SelectX: -20, SelectY: -70, SelectDX: 80, SelectDY: 85, OffsetX: 1, OffsetY: 0, Direction: "b"},
49: {ID: 49, Name: "Act 2 Lair Down", SelectX: -115, SelectY: -10, SelectDX: 160, SelectDY: 70, OffsetX: -3, OffsetY: -5, Direction: "b"},
50: {ID: 50, Name: "Act 2 Desert to Sewer Trap", SelectX: -10, SelectY: -10, SelectDX: 0, SelectDY: 0, OffsetX: 0, OffsetY: 0, Direction: "b"},
51: {ID: 51, Name: "Act 3 Jungle to Spider", SelectX: -60, SelectY: -70, SelectDX: 70, SelectDY: 90, OffsetX: 0, OffsetY: 1, Direction: "b"},
52: {ID: 52, Name: "Act 3 Spider to Jungle", SelectX: 10, SelectY: -100, SelectDX: 80, SelectDY: 110, OffsetX: 4, OffsetY: 1, Direction: "b"},
53: {ID: 53, Name: "Act 3 Jungle to Dungeon Fort", SelectX: -15, SelectY: -70, SelectDX: 70, SelectDY: 110, OffsetX: 0, OffsetY: 0, Direction: "b"},
54: {ID: 54, Name: "Act 3 Jungle to Dungeon Hole", SelectX: -130, SelectY: -10, SelectDX: 170, SelectDY: 100, OffsetX: -4, OffsetY: -6, Direction: "b"},
55: {ID: 55, Name: "Act 3 Dungeon Up", SelectX: -10, SelectY: -100, SelectDX: 90, SelectDY: 130, OffsetX: 3, OffsetY: 1, Direction: "b"},
56: {ID: 56, Name: "Act 3 Dungeon Down", SelectX: -40, SelectY: -20, SelectDX: 170, SelectDY: 100, OffsetX: -4, OffsetY: -1, Direction: "b"},
57: {ID: 57, Name: "Act 3 Kurast to Sewer", SelectX: -60, SelectY: -40, SelectDX: 120, SelectDY: 90, OffsetX: 0, OffsetY: 0, Direction: "b"},
58: {ID: 58, Name: "Act 3 Sewer Up L", SelectX: -75, SelectY: -110, SelectDX: 100, SelectDY: 150, OffsetX: 1, OffsetY: 1, Direction: "b"},
59: {ID: 59, Name: "Act 3 Sewer Up R", SelectX: -25, SelectY: -110, SelectDX: 100, SelectDY: 150, OffsetX: 6, OffsetY: 1, Direction: "b"},
60: {ID: 60, Name: "Act 3 Sewer Down", SelectX: -10, SelectY: -10, SelectDX: 0, SelectDY: 0, OffsetX: 0, OffsetY: 0, Direction: "b"},
61: {ID: 61, Name: "Act 3 Kurast to Temple", SelectX: -10, SelectY: -10, SelectDX: 0, SelectDY: 0, OffsetX: 0, OffsetY: 0, Direction: "b"},
62: {ID: 62, Name: "Act 3 Temple Up L", SelectX: -50, SelectY: -110, SelectDX: 80, SelectDY: 140, OffsetX: 1, OffsetY: 2, Direction: "b"},
63: {ID: 63, Name: "Act 3 Temple Up R", SelectX: -30, SelectY: -110, SelectDX: 80, SelectDY: 140, OffsetX: 2, OffsetY: 1, Direction: "b"},
64: {ID: 64, Name: "Act 3 Travincal to Mephisto", SelectX: -10, SelectY: -10, SelectDX: 0, SelectDY: 0, OffsetX: 0, OffsetY: 0, Direction: "b"},
65: {ID: 65, Name: "Act 3 Mephisto Up L", SelectX: -65, SelectY: -150, SelectDX: 125, SelectDY: 180, OffsetX: 1, OffsetY: 0, Direction: "b"},
66: {ID: 66, Name: "Act 3 Mephisto Up R", SelectX: -60, SelectY: -150, SelectDX: 125, SelectDY: 180, OffsetX: 5, OffsetY: 1, Direction: "b"},
67: {ID: 67, Name: "Act 3 Mephisto Down L", SelectX: -65, SelectY: -150, SelectDX: 125, SelectDY: 180, OffsetX: 1, OffsetY: 0, Direction: "b"},
68: {ID: 68, Name: "Act 3 Mephisto Down R", SelectX: -60, SelectY: -150, SelectDX: 125, SelectDY: 180, OffsetX: 5, OffsetY: 1, Direction: "b"},
69: {ID: 69, Name: "Act 4 Mesa to Lava", SelectX: -60, SelectY: -40, SelectDX: 150, SelectDY: 160, OffsetX: 2, OffsetY: 2, Direction: "b"},
70: {ID: 70, Name: "Act 4 Lava to Mesa", SelectX: -90, SelectY: -50, SelectDX: 160, SelectDY: 120, OffsetX: 0, OffsetY: 0, Direction: "b"},
71: {ID: 71, Name: "Act 5 Barricade Down Wall L", SelectX: -70, SelectY: -80, SelectDX: 80, SelectDY: 100, OffsetX: 2, OffsetY: 6, Direction: "l"},
72: {ID: 72, Name: "Act 5 Barricade Down Wall R", SelectX: -15, SelectY: -90, SelectDX: 70, SelectDY: 100, OffsetX: 6, OffsetY: 2, Direction: "r"},
73: {ID: 73, Name: "Act 5 Barricade Down Floor", SelectX: -20, SelectY: -120, SelectDX: 75, SelectDY: 100, OffsetX: 2, OffsetY: 2, Direction: "b"},
74: {ID: 74, Name: "Act 5 Ice Caves Up L", SelectX: -60, SelectY: -110, SelectDX: 90, SelectDY: 115, OffsetX: 0, OffsetY: 5, Direction: "l"},
75: {ID: 75, Name: "Act 5 Ice Caves Up R", SelectX: -10, SelectY: -120, SelectDX: 100, SelectDY: 120, OffsetX: 5, OffsetY: 1, Direction: "r"},
76: {ID: 76, Name: "Act 5 Ice Caves Down L", SelectX: -60, SelectY: -110, SelectDX: 90, SelectDY: 115, OffsetX: 0, OffsetY: 5, Direction: "l"},
77: {ID: 77, Name: "Act 5 Ice Caves Down R", SelectX: -20, SelectY: -110, SelectDX: 90, SelectDY: 115, OffsetX: 4, OffsetY: 0, Direction: "r"},
78: {ID: 78, Name: "Act 5 Ice Caves Down Floor", SelectX: -5, SelectY: -110, SelectDX: 80, SelectDY: 110, OffsetX: 6, OffsetY: 3, Direction: "b"},
79: {ID: 79, Name: "Act 5 Temple Entrance", SelectX: 0, SelectY: -110, SelectDX: 95, SelectDY: 100, OffsetX: 2, OffsetY: 0, Direction: "b"},
80: {ID: 80, Name: "Act 5 Temple Down", SelectX: 0, SelectY: -70, SelectDX: 140, SelectDY: 80, OffsetX: -2, OffsetY: 3, Direction: "b"},
81: {ID: 81, Name: "Act 5 Temple Up", SelectX: -20, SelectY: -110, SelectDX: 100, SelectDY: 110, OffsetX: 3, OffsetY: 0, Direction: "b"},
82: {ID: 82, Name: "Act 5 Mountain Top To Ice", SelectX: -40, SelectY: -110, SelectDX: 0, SelectDY: 0, OffsetX: 2, OffsetY: 1, Direction: "b"},
83: {ID: 83, Name: "Act 5 Mountain Top To Baal", SelectX: -20, SelectY: -110, SelectDX: 0, SelectDY: 0, OffsetX: 2, OffsetY: 1, Direction: "b"},
84: {ID: 84, Name: "Act 5 Baal Temple Up L", SelectX: -70, SelectY: -110, SelectDX: 95, SelectDY: 115, OffsetX: 1, OffsetY: 4, Direction: "l"},
85: {ID: 85, Name: "Act 5 Baal Temple Up R", SelectX: -20, SelectY: -110, SelectDX: 80, SelectDY: 115, OffsetX: 4, OffsetY: 1, Direction: "r"},
86: {ID: 86, Name: "Act 5 Baal Temple Down L", SelectX: -70, SelectY: -110, SelectDX: 95, SelectDY: 115, OffsetX: 1, OffsetY: 4, Direction: "l"},
87: {ID: 87, Name: "Act 5 Baal Temple Down R", SelectX: -20, SelectY: -110, SelectDX: 80, SelectDY: 115, OffsetX: 4, OffsetY: 1, Direction: "r"},
}

94
pkg/data/entrance/name.go Normal file
View File

@@ -0,0 +1,94 @@
package entrance
type Name int
const (
A1WildernessToCliffL Name = iota
A1WildernessToCliffR
A1WildernessToFloorL
A1WildernessToFloorR
A1CaveUp
A1CaveDown
A1GraveyardToCrypt1
A1GraveyardToCrypt2
A1CryptUp
A1CryptDown
A1WildernessToTower
A1TowertoWilderness
A1TowertoCrypt
A1JailUp
A1JailDown
A1CathedralToCatacombs
A1CatacombstoCathedral
A1CatacombsUp
A1CatacombsDown
A2TowntoSewerTrap
A2TowntoSewerDock
A2SewerDocktoTown
A2SewerUp
A2SewerDown
A2TowntoHarem
A2HaremtoTown
A2HaremUp1
A2HaremUp2
A2HaremDown1
A2HaremDown2
A2BasementUp1
A2BasementUp2
A2BasementDown
A2DeserttoTombL1
A2DeserttoTombL2
A2DeserttoTombR1
A2DeserttoTombR2
A2DeserttoTombViper
A2DeserttoTombTal1
A2DeserttoTombTal2
A2DeserttoTombTal3
A2DeserttoTombTal4
A2DeserttoTombTal5
A2DeserttoTombTal6
A2DeserttoTombTal7
A2TombUp
A2TombDown
A2DeserttoLair
A2LairUp
A2LairDown
A2DeserttoSewerTrap
A3JungletoSpider
A3SpidertoJungle
A3JungletoDungeonFort
A3JungletoDungeonHole
A3DungeonUp
A3DungeonDown
A3KurasttoSewer
A3SewerUpL
A3SewerUpR
A3SewerDown
A3KurasttoTemple
A3TempleUpL
A3TempleUpR
A3TravincaltoMephisto
A3MephistoUpL
A3MephistoUpR
A3MephistoDownL
A3MephistoDownR
A4MesatoLava
A4LavatoMesa
A5BarricadeDownWallL
A5BarricadeDownWallR
A5BarricadeDownFloor
A5IceCavesUpL
A5IceCavesUpR
A5IceCavesDownL
A5IceCavesDownR
A5iceCavesDownFloor
A5TempleEntrance
A5TempleDown
A5TempleUp
A5MountainTopToIce
A5MountainTopToBaal
A5BaalTempleUpL
A5BaalTempleUpR
A5BaalTempleDownL
A5BaalTempleDownR
)

33
pkg/data/entrances.go Normal file
View File

@@ -0,0 +1,33 @@
package data
import (
"github.com/hectorgimenez/d2go/pkg/data/entrance"
)
type Entrance struct {
ID UnitID
entrance.Name
IsHovered bool
Selectable bool
Position Position
}
type Entrances []Entrance
func (e Entrances) FindOne(name entrance.Name) (Entrance, bool) {
for _, ent := range e {
if ent.Name == name {
return ent, true
}
}
return Entrance{}, false
}
func (e Entrances) FindByID(id UnitID) (Entrance, bool) {
for _, ent := range e {
if ent.ID == id {
return ent, true
}
}
return Entrance{}, false
}

View File

@@ -57,6 +57,7 @@ func (gd *GameReader) GetData() data.Data {
PlayerUnit: pu,
Inventory: gd.Inventory(rawPlayerUnits, hover),
Objects: gd.Objects(pu.Position, hover),
Entrances: gd.Entrances(pu.Position, hover),
OpenMenus: gd.openMenus(),
Widgets: gd.UpdateWidgets(),
Roster: roster,

View File

@@ -3,6 +3,7 @@ package memory
import (
"sort"
"github.com/hectorgimenez/d2go/pkg/data/entrance"
"github.com/hectorgimenez/d2go/pkg/data/mode"
"github.com/hectorgimenez/d2go/pkg/data"
@@ -97,3 +98,39 @@ func (gd *GameReader) Objects(playerPosition data.Position, hover data.HoverData
return objects
}
func (gd *GameReader) Entrances(playerPosition data.Position, hover data.HoverData) []data.Entrance {
baseAddr := gd.Process.moduleBaseAddressPtr + gd.offset.UnitTable + (5 * 1024)
unitTableBuffer := gd.Process.ReadBytesFromMemory(baseAddr, 128*8)
var entrances []data.Entrance
for i := 0; i < 128; i++ {
entranceOffset := 8 * i
entranceUnitPtr := uintptr(ReadUIntFromBuffer(unitTableBuffer, uint(entranceOffset), Uint64))
for entranceUnitPtr > 0 {
if entranceType := gd.Process.ReadUInt(entranceUnitPtr+0x00, Uint32); entranceType == 5 {
txtFileNo := gd.Process.ReadUInt(entranceUnitPtr+0x04, Uint32)
unitID := gd.Process.ReadUInt(entranceUnitPtr+0x08, Uint32)
pathPtr := uintptr(gd.Process.ReadUInt(entranceUnitPtr+0x38, Uint64))
posX := gd.Process.ReadUInt(pathPtr+0x10, Uint16)
posY := gd.Process.ReadUInt(pathPtr+0x14, Uint16)
entrances = append(entrances, data.Entrance{
ID: data.UnitID(unitID),
Name: entrance.Name(txtFileNo),
IsHovered: data.UnitID(unitID) == hover.UnitID && hover.UnitType == 5 && hover.IsHovered,
Position: data.Position{
X: int(posX),
Y: int(posY),
},
})
}
entranceUnitPtr = uintptr(gd.Process.ReadUInt(entranceUnitPtr+0x158, Uint64))
}
}
return entrances
}