diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Extensions/KnowledgeAdventure/Associations/ATRDataFormat.xml b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Extensions/KnowledgeAdventure/Associations/ATRDataFormat.xml new file mode 100644 index 00000000..3a6812b6 --- /dev/null +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/Extensions/KnowledgeAdventure/Associations/ATRDataFormat.xml @@ -0,0 +1,20 @@ + + + + + + + + *.atr + + + + + + + + + + + + \ No newline at end of file diff --git a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj index 100c9cf3..b57c0ead 100644 --- a/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj +++ b/CSharp/Content/UniversalEditor.Content.PlatformIndependent/UniversalEditor.Content.PlatformIndependent.csproj @@ -41,6 +41,7 @@ + diff --git a/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/DataFormats/KnowledgeAdventure/Actor/ATRDataFormat.cs b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/DataFormats/KnowledgeAdventure/Actor/ATRDataFormat.cs new file mode 100644 index 00000000..b0bb3976 --- /dev/null +++ b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/DataFormats/KnowledgeAdventure/Actor/ATRDataFormat.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UniversalEditor.IO; +using UniversalEditor.ObjectModels.KnowledgeAdventure.Actor; + +namespace UniversalEditor.DataFormats.KnowledgeAdventure.Actor +{ + public class ATRDataFormat : DataFormat + { + private static DataFormatReference _dfr = null; + protected override DataFormatReference MakeReferenceInternal() + { + if (_dfr == null) + { + _dfr = base.MakeReferenceInternal(); + _dfr.Capabilities.Add(typeof(ActorObjectModel), DataFormatCapabilities.All); + } + return _dfr; + } + + protected override void LoadInternal(ref ObjectModel objectModel) + { + ActorObjectModel actor = (objectModel as ActorObjectModel); + if (actor == null) throw new ObjectModelNotSupportedException(); + + Reader reader = base.Accessor.Reader; + + string signature = reader.ReadFixedLengthString(5); + if (signature != "ATR11") throw new InvalidDataFormatException("File does not begin with 'ATR11'"); + + actor.Name = reader.ReadFixedLengthString(16).TrimNull(); + actor.ImageFileName = reader.ReadFixedLengthString(32).TrimNull(); + } + + protected override void SaveInternal(ObjectModel objectModel) + { + ActorObjectModel actor = (objectModel as ActorObjectModel); + if (actor == null) throw new ObjectModelNotSupportedException(); + + Writer writer = base.Accessor.Writer; + + writer.WriteFixedLengthString("ATR11"); + + writer.WriteFixedLengthString(actor.Name, 16); + writer.WriteFixedLengthString(actor.ImageFileName, 32); + } + } +} diff --git a/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/ObjectModels/KnowledgeAdventure/Actor/ActorObjectModel.cs b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/ObjectModels/KnowledgeAdventure/Actor/ActorObjectModel.cs new file mode 100644 index 00000000..f838e120 --- /dev/null +++ b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/ObjectModels/KnowledgeAdventure/Actor/ActorObjectModel.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace UniversalEditor.ObjectModels.KnowledgeAdventure.Actor +{ + public class ActorObjectModel : ObjectModel + { + private static ObjectModelReference _omr = null; + protected override ObjectModelReference MakeReferenceInternal() + { + if (_omr == null) + { + _omr = base.MakeReferenceInternal(); + _omr.Title = "Actor"; + _omr.Path = new string[] { "Knowledge Adventure" }; + } + return _omr; + } + + private string mvarName = String.Empty; + /// + /// The name used in scripts to identify this . + /// + public string Name { get { return mvarName; } set { mvarName = value; } } + + private string mvarImageFileName = String.Empty; + /// + /// The file name of the image file. + /// + public string ImageFileName { get { return mvarImageFileName; } set { mvarImageFileName = value; } } + + public override void Clear() + { + mvarName = String.Empty; + mvarImageFileName = String.Empty; + } + + public override void CopyTo(ObjectModel where) + { + ActorObjectModel clone = (where as ActorObjectModel); + if (clone == null) throw new ObjectModelNotSupportedException(); + + clone.Name = (mvarName.Clone() as string); + clone.ImageFileName = (mvarImageFileName.Clone() as string); + } + } +} diff --git a/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/UniversalEditor.Plugins.KnowledgeAdventure.csproj b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/UniversalEditor.Plugins.KnowledgeAdventure.csproj index 90fc5120..0ac9c91a 100644 --- a/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/UniversalEditor.Plugins.KnowledgeAdventure.csproj +++ b/CSharp/Plugins/UniversalEditor.Plugins.KnowledgeAdventure/UniversalEditor.Plugins.KnowledgeAdventure.csproj @@ -39,6 +39,8 @@ + + @@ -51,6 +53,7 @@ UniversalEditor.Essential +