Example #1
0
 /// <summary>
 /// When overridden in the derived class, saves misc map information specific to the derived class.
 /// </summary>
 /// <param name="w">IValueWriter to write to.</param>
 /// <param name="saveFlags">The flags to modify the map save behavior.</param>
 protected override void SaveMisc(IValueWriter w, MapSaveFlags saveFlags)
 {
     SaveGrhs(w, saveFlags);
     SaveBackgroundImages(w, saveFlags);
     SaveLighting(w, saveFlags);
     SaveParticleEffects(w, saveFlags);
     SaveRefractionEffects(w, saveFlags);
 }
Example #2
0
        /// <summary>
        /// Writes all the BackgroundImages.
        /// </summary>
        /// <param name="w">IValueWriter to write to.</param>
        /// <param name="saveFlags">The flags to modify the map save behavior.</param>
        void SaveBackgroundImages(IValueWriter w, MapSaveFlags saveFlags)
        {
            var bgImages = _backgroundImages.Where(x => x != null);

            if ((saveFlags & MapSaveFlags.DoNotSort) == 0)
            {
                bgImages = bgImages.OrderBy(x => x.Sprite.GrhData.GrhIndex).ThenBy(x => (int)x.MapRenderLayer);
            }
            bgImages = bgImages.ToImmutable();

            w.WriteManyNodes(_bgImagesNodeName, bgImages, ((writer, item) => item.Write(writer)));
        }
Example #3
0
        void SaveRefractionEffects(IValueWriter w, MapSaveFlags saveFlags)
        {
            var validFx = _refractionEffects.Where(x => RefractionEffectFactory.IsValidType(x.GetType()));

            if ((saveFlags & MapSaveFlags.DoNotSort) == 0)
            {
                validFx = validFx.OrderBy(x => x, new BasicSpatialComparer());
            }
            validFx = validFx.ToImmutable();

            w.WriteStartNode(_refractionEffectsNodeName);
            {
                w.WriteManyNodes(_refractionEffectListNodeName, validFx, RefractionEffectFactory.Write);
            }
            w.WriteEndNode(_refractionEffectsNodeName);
        }
Example #4
0
        /// <summary>
        /// Writes all the lighting to an <see cref="IValueWriter"/>.
        /// </summary>
        /// <param name="w">IValueWriter to write to.</param>
        /// <param name="saveFlags">The flags to modify the map save behavior.</param>
        void SaveLighting(IValueWriter w, MapSaveFlags saveFlags)
        {
            IEnumerable <ILight> lights = _lights;

            if ((saveFlags & MapSaveFlags.DoNotSort) == 0)
            {
                lights = lights.OrderBy(x => x, new BasicSpatialComparer());
            }
            lights = lights.ToImmutable();

            w.WriteStartNode(_lightingNodeName);
            {
                w.Write("Ambient", AmbientLight);
                w.WriteManyNodes(_lightsNodeName, lights, (wr, l) => l.WriteState(wr));
            }
            w.WriteEndNode(_lightingNodeName);
        }
Example #5
0
        /// <summary>
        /// Writes all the MapGrhs to an <see cref="IValueWriter"/>.
        /// </summary>
        /// <param name="w">IValueWriter to write to.</param>
        /// <param name="saveFlags">The flags to modify the map save behavior.</param>
        void SaveGrhs(IValueWriter w, MapSaveFlags saveFlags)
        {
            var mapGrhs = Spatial.GetMany <MapGrh>();

            if ((saveFlags & MapSaveFlags.DoNotSort) == 0)
            {
                mapGrhs = mapGrhs.OrderBy(x => x, new BasicMapGrhComparer());
            }
            mapGrhs = mapGrhs.ToImmutable();

            w.WriteStartNode(_mapGrhsNodeName);
            {
                // Used GrhIndexes
                w.WriteMany(_usedIndiciesNodeName, GetMapGrhList(), w.Write);

                // MapGrhs
                w.WriteManyNodes(_mapGrhsNodeName, mapGrhs, ((writer, mapGrh) => mapGrh.WriteState(writer)));
            }
            w.WriteEndNode(_mapGrhsNodeName);
        }
Example #6
0
 void SaveParticleEffects(IValueWriter w, MapSaveFlags saveFlags)
 {
     _particleEffects.Write(w, _particleEffectsNodeName);
 }