Skip to content

Commit 80be8b9

Browse files
committed
More refactoring of generated code.
Added more functionality to generated code, including cloning and copy constructors. Fixed a bug with game settings not writing their value to binary.
1 parent 604a372 commit 80be8b9

70 files changed

Lines changed: 2626 additions & 476 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

ESPSharp/DataTypes/AlternateTexture.cs

Lines changed: 18 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3,71 +3,33 @@
33
using System.Linq;
44
using System.Text;
55
using System.Threading.Tasks;
6-
using ESPSharp.Interfaces;
6+
using System.IO;
77
using System.Xml.Linq;
8+
using ESPSharp.Enums;
9+
using ESPSharp.Enums.Flags;
10+
using ESPSharp.Interfaces;
11+
using ESPSharp.Subrecords;
12+
using ESPSharp.SubrecordCollections;
13+
using ESPSharp.DataTypes;
814

9-
namespace ESPSharp
15+
namespace ESPSharp.DataTypes
1016
{
11-
public class AlternateTexture : IESPSerializable, ICloneable<AlternateTexture>
17+
public partial class AlternateTexture : IESPSerializable, ICloneable<AlternateTexture>, IReferenceContainer
1218
{
13-
public string Name;
14-
public FormID TextureSet;
15-
public int Index;
16-
17-
public AlternateTexture()
18-
{
19-
TextureSet = new FormID();
20-
}
21-
22-
public AlternateTexture(string Name, FormID TextureSet, int Index)
23-
{
24-
this.Name = Name;
25-
this.TextureSet = TextureSet.Clone();
26-
this.Index = Index;
27-
}
28-
29-
public AlternateTexture(AlternateTexture toCopy)
30-
{
31-
Name = toCopy.Name;
32-
TextureSet = toCopy.TextureSet.Clone();
33-
Index = toCopy.Index;
34-
}
35-
36-
public void WriteXML(XElement ele)
19+
partial void ReadData(ESPReader reader)
3720
{
38-
ele.Add(
39-
new XElement("Name", Name),
40-
new XElement("TextureSet", TextureSet),
41-
new XElement("Index", Index)
42-
);
43-
}
44-
45-
public void ReadXML(XElement ele)
46-
{
47-
Name = ele.Element("Name").Value;
48-
TextureSet.ReadXML(ele.Element("TextureSet"));
49-
Index = ele.Element("Index").ToInt32();
21+
int length = reader.ReadInt32();
22+
Name = new String(reader.ReadChars(length));
23+
TextureSet.ReadBinary(reader);
24+
Index = reader.ReadInt32();
5025
}
5126

52-
public void WriteBinary(ESPWriter writer)
27+
partial void WriteData(ESPWriter writer)
5328
{
54-
writer.Write((uint)Name.Length);
29+
writer.Write(Name.Length);
5530
writer.Write(Name.ToCharArray());
56-
writer.Write(TextureSet);
31+
TextureSet.WriteBinary(writer);
5732
writer.Write(Index);
5833
}
59-
60-
public void ReadBinary(ESPReader reader)
61-
{
62-
int size = reader.ReadInt32();
63-
Name = new String(reader.ReadChars(size));
64-
TextureSet = reader.Read<FormID>();
65-
Index = reader.ReadInt32();
66-
}
67-
68-
public AlternateTexture Clone()
69-
{
70-
return new AlternateTexture(this);
71-
}
7234
}
73-
}
35+
}

ESPSharp/DataTypes/Color.cs

Lines changed: 0 additions & 81 deletions
This file was deleted.

ESPSharp/DataTypes/FormID.cs

Lines changed: 14 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -3,69 +3,42 @@
33
using System.Linq;
44
using System.Text;
55
using System.Threading.Tasks;
6-
using ESPSharp.Interfaces;
6+
using System.IO;
77
using System.Xml.Linq;
8-
using ESPSharp;
8+
using ESPSharp.Enums;
9+
using ESPSharp.Enums.Flags;
10+
using ESPSharp.Interfaces;
11+
using ESPSharp.Subrecords;
12+
using ESPSharp.SubrecordCollections;
13+
using ESPSharp.DataTypes;
914

10-
namespace ESPSharp
15+
namespace ESPSharp.DataTypes
1116
{
12-
public class FormID : IESPSerializable, ICloneable<FormID>
17+
public partial class FormID
1318
{
14-
uint rawVal;
15-
16-
public FormID()
17-
{
18-
rawVal = 0;
19-
}
20-
21-
public FormID(uint inID)
22-
{
23-
rawVal = inID;
24-
}
25-
26-
public FormID(FormID toCopy)
27-
{
28-
rawVal = (uint)toCopy;
29-
}
30-
31-
public FormID Clone()
32-
{
33-
return new FormID(this);
34-
}
35-
3619
public static explicit operator FormID(uint val)
3720
{
3821
return new FormID(val);
3922
}
4023

4124
public static explicit operator uint(FormID val)
4225
{
43-
return val.rawVal;
26+
return val.RawValue;
4427
}
4528

4629
public override string ToString()
4730
{
48-
return rawVal.ToString("X8");
31+
return RawValue.ToString("X8");
4932
}
5033

51-
public void WriteXML(XElement ele)
34+
partial void WriteDataXML(XElement ele)
5235
{
5336
ele.Value = ToString();
5437
}
5538

56-
public void ReadXML(XElement ele)
57-
{
58-
rawVal = uint.Parse(ele.Value, System.Globalization.NumberStyles.HexNumber);
59-
}
60-
61-
public void WriteBinary(ESPWriter writer)
62-
{
63-
writer.Write(rawVal);
64-
}
65-
66-
public void ReadBinary(ESPReader reader)
39+
partial void ReadDataXML(XElement ele)
6740
{
68-
rawVal = reader.ReadUInt32();
41+
RawValue = uint.Parse(ele.Value, System.Globalization.NumberStyles.HexNumber);
6942
}
7043
}
7144
}
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using System.IO;
7+
using System.Xml.Linq;
8+
using ESPSharp.Enums;
9+
using ESPSharp.Enums.Flags;
10+
using ESPSharp.Interfaces;
11+
using ESPSharp.Subrecords;
12+
using ESPSharp.SubrecordCollections;
13+
using ESPSharp.DataTypes;
14+
15+
namespace ESPSharp.DataTypes
16+
{
17+
public partial class AlternateTexture : IESPSerializable, ICloneable<AlternateTexture>, IReferenceContainer
18+
{
19+
public String Name { get; set; }
20+
public FormID TextureSet { get; set; }
21+
public Int32 Index { get; set; }
22+
23+
public AlternateTexture()
24+
{
25+
Name = "";
26+
TextureSet = new FormID();
27+
Index = new Int32();
28+
}
29+
30+
public AlternateTexture(String Name, FormID TextureSet, Int32 Index)
31+
{
32+
this.Name = Name;
33+
this.TextureSet = TextureSet;
34+
this.Index = Index;
35+
}
36+
37+
public AlternateTexture(AlternateTexture copyObject)
38+
{
39+
Name = (String)copyObject.Name.Clone();
40+
TextureSet = copyObject.TextureSet.Clone();
41+
Index = copyObject.Index;
42+
}
43+
44+
public void ReadBinary(ESPReader reader)
45+
{
46+
try
47+
{
48+
ReadData(reader);
49+
}
50+
catch
51+
{
52+
return;
53+
}
54+
}
55+
56+
public void WriteBinary(ESPWriter writer)
57+
{
58+
WriteData(writer);
59+
}
60+
61+
public void WriteXML(XElement ele)
62+
{
63+
XElement subEle;
64+
65+
ele.TryPathTo("Name", true, out subEle);
66+
subEle.Value = Name.ToString();
67+
68+
ele.TryPathTo("TextureSet", true, out subEle);
69+
TextureSet.WriteXML(subEle);
70+
71+
ele.TryPathTo("Index", true, out subEle);
72+
subEle.Value = Index.ToString();
73+
}
74+
75+
public void ReadXML(XElement ele)
76+
{
77+
XElement subEle;
78+
79+
if (ele.TryPathTo("Name", false, out subEle))
80+
{
81+
Name = subEle.Value;
82+
}
83+
84+
if (ele.TryPathTo("TextureSet", false, out subEle))
85+
{
86+
TextureSet.ReadXML(subEle);
87+
}
88+
89+
if (ele.TryPathTo("Index", false, out subEle))
90+
{
91+
Index = subEle.ToInt32();
92+
}
93+
}
94+
95+
partial void ReadData(ESPReader reader);
96+
97+
partial void WriteData(ESPWriter writer);
98+
99+
public AlternateTexture Clone()
100+
{
101+
return new AlternateTexture(this);
102+
}
103+
}
104+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
<#@ template debug="false" hostspecific="false" language="C#" #>
2+
<#@ output extension=".cs" #>
3+
<#
4+
DataTypeTemplate template = new DataTypeTemplate();
5+
template.ClassName = "AlternateTexture";
6+
template.implementReadData = false;
7+
template.implementWriteData = false;
8+
9+
DataTypeField tempField;
10+
11+
tempField =
12+
new DataTypeField(
13+
typeof(string),
14+
"Name",
15+
"Name"
16+
);
17+
template.Fields.Add(tempField);
18+
19+
tempField =
20+
new DataTypeField(
21+
typeof(FormID),
22+
"TextureSet",
23+
"TextureSet"
24+
);
25+
template.Fields.Add(tempField);
26+
27+
tempField =
28+
new DataTypeField(
29+
typeof(int),
30+
"Index",
31+
"Index"
32+
);
33+
template.Fields.Add(tempField);
34+
#>
35+
<#@ include file="DataTypeTemplate.t4" once="true" #>

0 commit comments

Comments
 (0)