| 1 |
using System; |
| 2 |
using System.Xml; |
| 3 |
using Oni.Imaging; |
| 4 |
using Oni.Xml; |
| 5 |
|
| 6 |
namespace Oni.Objects |
| 7 |
{ |
| 8 |
internal class Flag : ObjectBase |
| 9 |
{ |
| 10 |
public Color Color; |
| 11 |
public string Prefix; |
| 12 |
public int ScriptId; |
| 13 |
public string Notes; |
| 14 |
|
| 15 |
public Flag() |
| 16 |
{ |
| 17 |
TypeId = ObjectType.Flag; |
| 18 |
} |
| 19 |
|
| 20 |
protected override void WriteOsd(BinaryWriter writer) |
| 21 |
{ |
| 22 |
writer.Write(Color); |
| 23 |
writer.Write(Prefix, 2); |
| 24 |
writer.WriteInt16(ScriptId); |
| 25 |
writer.Write(Notes, 128); |
| 26 |
} |
| 27 |
|
| 28 |
protected override void ReadOsd(BinaryReader reader) |
| 29 |
{ |
| 30 |
Color = reader.ReadColor(); |
| 31 |
Prefix = reader.ReadString(2); |
| 32 |
ScriptId = reader.ReadInt16(); |
| 33 |
Notes = reader.ReadString(128); |
| 34 |
Prefix = new string(new char[] { Prefix[1], Prefix[0] }); |
| 35 |
} |
| 36 |
|
| 37 |
protected override void WriteOsd(XmlWriter xml) |
| 38 |
{ |
| 39 |
throw new NotImplementedException(); |
| 40 |
} |
| 41 |
|
| 42 |
protected override void ReadOsd(XmlReader xml, ObjectLoadContext context) |
| 43 |
{ |
| 44 |
while (xml.IsStartElement()) |
| 45 |
{ |
| 46 |
switch (xml.LocalName) |
| 47 |
{ |
| 48 |
case "Color": |
| 49 |
byte[] values = xml.ReadElementContentAsArray<byte>(XmlConvert.ToByte); |
| 50 |
|
| 51 |
if (values.Length > 3) |
| 52 |
Color = new Color(values[0], values[1], values[2], values[3]); |
| 53 |
else |
| 54 |
Color = new Color(values[0], values[1], values[2]); |
| 55 |
|
| 56 |
break; |
| 57 |
case "Prefix": |
| 58 |
string prefix = xml.ReadElementContentAsString(); |
| 59 |
|
| 60 |
if (prefix.Length > 2) |
| 61 |
{ |
| 62 |
int prefixId = int.Parse(prefix); |
| 63 |
prefix = new string(new char[2] { (char)((prefixId >> 8) & 0xff), (char)(prefixId & 0xff) }); |
| 64 |
} |
| 65 |
|
| 66 |
Prefix = prefix; |
| 67 |
break; |
| 68 |
case "FlagId": |
| 69 |
ScriptId = xml.ReadElementContentAsInt(); |
| 70 |
break; |
| 71 |
case "Note": |
| 72 |
Notes = xml.ReadElementContentAsString(); |
| 73 |
break; |
| 74 |
default: |
| 75 |
xml.Skip(); |
| 76 |
break; |
| 77 |
} |
| 78 |
} |
| 79 |
} |
| 80 |
} |
| 81 |
} |