1 |
using System; |
2 |
using System.Xml; |
3 |
using Oni.Metadata; |
4 |
using Oni.Xml; |
5 |
|
6 |
namespace Oni.Objects |
7 |
{ |
8 |
internal class Turret : GunkObject |
9 |
{ |
10 |
public int ScriptId; |
11 |
public TurretFlags Flags; |
12 |
public TurretTargetTeams TargetTeams; |
13 |
|
14 |
public Turret() |
15 |
{ |
16 |
TypeId = ObjectType.Turret; |
17 |
} |
18 |
|
19 |
protected override void WriteOsd(BinaryWriter writer) |
20 |
{ |
21 |
writer.Write(ClassName, 63); |
22 |
writer.WriteUInt16(ScriptId); |
23 |
writer.WriteUInt16((ushort)Flags); |
24 |
writer.Skip(36); |
25 |
writer.Write((uint)TargetTeams); |
26 |
} |
27 |
|
28 |
protected override void ReadOsd(BinaryReader reader) |
29 |
{ |
30 |
ClassName = reader.ReadString(63); |
31 |
ScriptId = reader.ReadUInt16(); |
32 |
Flags = (TurretFlags)reader.ReadUInt16(); |
33 |
reader.Skip(36); |
34 |
TargetTeams = (TurretTargetTeams)reader.ReadInt32(); |
35 |
} |
36 |
|
37 |
protected override void WriteOsd(XmlWriter xml) |
38 |
{ |
39 |
xml.WriteElementString("Class", ClassName); |
40 |
xml.WriteElementString("TurretId", XmlConvert.ToString(ScriptId)); |
41 |
xml.WriteElementString("Flags", MetaEnum.ToString<TurretFlags>(Flags)); |
42 |
xml.WriteElementString("TargetedTeams", MetaEnum.ToString<TurretTargetTeams>(TargetTeams)); |
43 |
} |
44 |
|
45 |
protected override void ReadOsd(XmlReader xml, ObjectLoadContext context) |
46 |
{ |
47 |
string className = xml.ReadElementContentAsString("Class", ""); |
48 |
|
49 |
ScriptId = xml.ReadElementContentAsInt("TurretId", ""); |
50 |
Flags = xml.ReadElementContentAsEnum<TurretFlags>("Flags"); |
51 |
TargetTeams = xml.ReadElementContentAsEnum<TurretTargetTeams>("TargetedTeams"); |
52 |
|
53 |
GunkClass = context.GetClass(TemplateTag.TURR, className, TurretClass.Read); |
54 |
} |
55 |
} |
56 |
} |