package d2records

import (
	"log"

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

func soundEnvironmentLoader(r *RecordManager, d *d2txt.DataDictionary) error {
	records := make(SoundEnvironments)

	for d.Next() {
		record := &SoundEnvironRecord{
			Handle:          d.String("Handle"),
			Index:           d.Number("Index"),
			Song:            d.Number("Song"),
			DayAmbience:     d.Number("Day Ambience"),
			NightAmbience:   d.Number("Night Ambience"),
			DayEvent:        d.Number("Day Event"),
			NightEvent:      d.Number("Night Event"),
			EventDelay:      d.Number("Event Delay"),
			Indoors:         d.Number("Indoors"),
			Material1:       d.Number("Material 1"),
			Material2:       d.Number("Material 2"),
			EAXEnviron:      d.Number("EAX Environ"),
			EAXEnvSize:      d.Number("EAX Env Size"),
			EAXEnvDiff:      d.Number("EAX Env Diff"),
			EAXRoomVol:      d.Number("EAX Room Vol"),
			EAXRoomHF:       d.Number("EAX Room HF"),
			EAXDecayTime:    d.Number("EAX Decay Time"),
			EAXDecayHF:      d.Number("EAX Decay HF"),
			EAXReflect:      d.Number("EAX Reflect"),
			EAXReflectDelay: d.Number("EAX Reflect Delay"),
			EAXReverb:       d.Number("EAX Reverb"),
			EAXRevDelay:     d.Number("EAX Rev Delay"),
			EAXRoomRoll:     d.Number("EAX Room Roll"),
			EAXAirAbsorb:    d.Number("EAX Air Absorb"),
		}

		records[record.Index] = record
	}

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

	r.Sound.Environment = records

	log.Printf("Loaded %d SoundEnviron records", len(records))

	return nil
}
