feat(editor): zone audio configuration panel

- Zone manifest gains audio fields: musicTrack, ambienceDay,
  ambienceNight, musicVolume, ambienceVolume
- Serialized to/from zone.json under "audio" key
- Info panel: collapsable "Zone Audio" section with text inputs for
  music/ambience paths and volume sliders
- Preset selector: Elwynn Forest, Durotar, Darkshore, Dungeon, None
- ZoneManifest stored persistently on EditorApp so audio settings
  survive between exports (was recreated each save)
- Custom zones can now specify their own background music and ambient
  soundscapes via zone.json
This commit is contained in:
Kelsi 2026-05-05 15:48:49 -07:00
parent 36dc9ddef7
commit 2136727c68
5 changed files with 76 additions and 1 deletions

View file

@ -150,6 +150,7 @@ private:
float autoSaveInterval_ = 300.0f;
bool autoSaveEnabled_ = true;
bool showQuitConfirm_ = false;
ZoneManifest zoneManifest_;
// Recent zones
struct RecentZone { std::string mapName; int tileX; int tileY; };
@ -162,6 +163,7 @@ public:
void showToast(const std::string& msg, float duration = 3.0f);
const std::vector<Toast>& getToasts() const { return toasts_; }
const std::vector<RecentZone>& getRecentZones() const { return recentZones_; }
ZoneManifest& getZoneManifest() { return zoneManifest_; }
bool isAutoSaveEnabled() const { return autoSaveEnabled_; }
void setAutoSaveEnabled(bool v) { autoSaveEnabled_ = v; }
float getAutoSaveInterval() const { return autoSaveInterval_; }