package d2records

import (
	"github.com/OpenDiablo2/OpenDiablo2/d2common/d2fileformats/d2txt"
)

// LoadLevelPresets loads level presets from text file
func levelPresetLoader(r *RecordManager, d *d2txt.DataDictionary) error {
	records := make(LevelPresets)

	for d.Next() {
		record := LevelPresetRecord{
			Name:         d.String("Name"),
			DefinitionID: d.Number("Def"),
			LevelID:      d.Number("LevelId"),
			Populate:     d.Number("Populate") == 1,
			Logicals:     d.Number("Logicals") == 1,
			Outdoors:     d.Number("Outdoors") == 1,
			Animate:      d.Number("Animate") == 1,
			KillEdge:     d.Number("KillEdge") == 1,
			FillBlanks:   d.Number("FillBlanks") == 1,
			SizeX:        d.Number("SizeX"),
			SizeY:        d.Number("SizeY"),
			AutoMap:      d.Number("AutoMap") == 1,
			Scan:         d.Number("Scan") == 1,
			Pops:         d.Number("Pops"),
			PopPad:       d.Number("PopPad"),
			FileCount:    d.Number("Files"),
			Files: [6]string{
				d.String("File1"),
				d.String("File2"),
				d.String("File3"),
				d.String("File4"),
				d.String("File5"),
				d.String("File6"),
			},
			Dt1Mask:   uint(d.Number("Dt1Mask")),
			Beta:      d.Number("Beta") == 1,
			Expansion: d.Number("Expansion") == 1,
		}

		records[record.DefinitionID] = record
	}

	r.Debugf("Loaded %d LevelPresets records", len(records))

	if d.Err != nil {
		return d.Err
	}

	r.Level.Presets = records

	return nil
}
