private void ProcessMeta(BinaryPacker.Element meta) { AreaData area = AreaData.Get(Area); AreaMode mode = Area.Mode; if (mode == AreaMode.Normal) { new MapMeta(meta).ApplyTo(area); Area = area.ToKey(); // Backup A-Side's Metadata. Only back up useful data. area.SetASideAreaDataBackup(new AreaData { IntroType = area.IntroType, ColorGrade = area.ColorGrade, DarknessAlpha = area.DarknessAlpha, BloomBase = area.BloomBase, BloomStrength = area.BloomStrength, CoreMode = area.CoreMode, Dreaming = area.Dreaming }); } BinaryPacker.Element modeMeta = meta.Children?.FirstOrDefault(el => el.Name == "mode"); if (modeMeta == null) { return; } new MapMetaModeProperties(modeMeta).ApplyTo(area, mode); // Metadata for B-Side and C-Side are parsed and stored. if (mode != AreaMode.Normal) { MapMeta mapMeta = new MapMeta(meta) { Modes = area.GetMeta().Modes }; area.Mode[(int)mode].SetMapMeta(mapMeta); } }