#region File Description //----------------------------------------------------------------------------- // ChestWriter.cs // // Microsoft XNA Community Game Platform // Copyright (C) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- #endregion #region Using Statements using System; using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Content.Pipeline; using Microsoft.Xna.Framework.Content.Pipeline.Graphics; using Microsoft.Xna.Framework.Content.Pipeline.Processors; using Microsoft.Xna.Framework.Content.Pipeline.Serialization.Compiler; using RolePlaying.Data; #endregion namespace RolePlaying.Processors { /// /// This class will be instantiated by the XNA Framework Content Pipeline /// to write the specified data type into binary .xnb format. /// /// This should be part of a Content Pipeline Extension Library project. /// [ContentTypeWriter] public class ChestWriter : RolePlayingGameWriter { WorldObjectWriter worldObjectWriter = null; protected override void Initialize(ContentCompiler compiler) { worldObjectWriter = compiler.GetTypeWriter(typeof(WorldObject)) as WorldObjectWriter; base.Initialize(compiler); } protected override void Write(ContentWriter output, Chest value) { // remove any entries that have zero quantity value.Entries.RemoveAll(delegate(ContentEntry contentEntry) { return (contentEntry.Count <= 0); }); // write out the base type output.WriteRawObject(value as WorldObject, worldObjectWriter); // write out the chest data output.Write(value.Gold); output.WriteObject(value.Entries); output.Write(value.TextureName); } } }