示例#1
0
        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);
            }
        }