OpenDiablo2/d2core/d2records/automap_record.go

51 lines
1.9 KiB
Go

package d2records
// AutoMapRecord represents one row from d2data.mpq/AutoMap.txt.
// Based on the information here https://d2mods.info/forum/kb/viewarticle?a=419
type AutoMapRecord struct {
// LevelName is a string with an act number followed
// by a level type, separated by a space. For example:
// '1 Barracks' is the barracks level in act 1.
LevelName string
// TileName refers to a certain tile orientation.
// See https://d2mods.info/forum/kb/viewarticle?a=468
TileName string
// Style is the top index in a 2D tile array.
Style int // tiles[autoMapRecord.Style][]
// StartSequence and EndSequence are sub indices the
// same 2D array as Style. They describe a range of
// tiles for which covered by this AutoMapRecord.
// In some rows you can find a value of -1. This means
// the game will only look at Style and TileName to
// determine which tiles are addressed.
StartSequence int // tiles[][autoMapRecord.StartSequence]
EndSequence int // tiles[][autoMapRecord.EndSequence]
// Type values are described as:
// "...just comment fields, as far as I know. Put in
// whatever you like..."
// The values seem functional but naming conventions
// vary between LevelNames.
// Type1 string
// Type2 string
// Type3 string
// Type4 string // Note: I commented these out for now because they supposedly aren't useful see the LoadAutoMaps function.
// Frames determine the frame of the MaxiMap(s).dc6 that
// will be applied to the specified tiles. The frames
// are in rows, if each row holds 20 images (when you
// re-extract the chart with Dc6Table, you can specify
// how many graphics a line can hold), line 1 includes
// icons 0-19, line 2 from 20 to 39 etc.
// Multiple values exist for Cel (and Type) to enable
// variation. Presumably game chooses randomly between
// any of the 4 values which are not set to -1.
Frames []int
}
// AutoMaps contains all data in AutoMap.txt.
type AutoMaps []*AutoMapRecord