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 | }
|
---|