mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2025-02-03 15:17:04 -05:00
271673851a
* Added RecordManager implementation to remove d2datadict singletons * fix object lookup test
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
package d2records
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
|
|
"github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2txt"
|
|
)
|
|
|
|
const (
|
|
numRareSuffixInclude = 7
|
|
fmtRareSuffixInclude = "itype%d"
|
|
|
|
numRareSuffixExclude = 4
|
|
fmtRareSuffixExclude = "etype%d"
|
|
)
|
|
|
|
func rareItemSuffixLoader(r *RecordManager, d *d2txt.DataDictionary) error {
|
|
records := make([]*RareItemSuffixRecord, 0)
|
|
|
|
for d.Next() {
|
|
record := &RareItemSuffixRecord{
|
|
Name: d.String("name"),
|
|
IncludedTypes: make([]string, 0),
|
|
ExcludedTypes: make([]string, 0),
|
|
}
|
|
|
|
for idx := 1; idx <= numRareSuffixInclude; idx++ {
|
|
column := fmt.Sprintf(fmtRareSuffixInclude, idx)
|
|
if typeCode := d.String(column); typeCode != "" {
|
|
record.IncludedTypes = append(record.IncludedTypes, typeCode)
|
|
}
|
|
}
|
|
|
|
for idx := 1; idx <= numRareSuffixExclude; idx++ {
|
|
column := fmt.Sprintf(fmtRareSuffixExclude, idx)
|
|
if typeCode := d.String(column); typeCode != "" {
|
|
record.ExcludedTypes = append(record.ExcludedTypes, typeCode)
|
|
}
|
|
}
|
|
|
|
records = append(records, record)
|
|
}
|
|
|
|
if d.Err != nil {
|
|
return d.Err
|
|
}
|
|
|
|
log.Printf("Loaded %d RareSuffix records", len(records))
|
|
|
|
r.Item.Rare.Suffix = records
|
|
|
|
return nil
|
|
}
|