Added extra parameter
This commit is contained in:
@@ -4,6 +4,7 @@ using System.CodeDom.Compiler;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices.ComTypes;
|
||||
using System.Text;
|
||||
using Kaitai;
|
||||
using Microsoft.CSharp;
|
||||
@@ -218,12 +219,28 @@ namespace CodeGenerator {
|
||||
};
|
||||
ctd.Members.Add(cmp);
|
||||
|
||||
cmp = new CodeMemberProperty() {
|
||||
Name = "UnderlyingType",
|
||||
Type = new CodeTypeReference(typeof(Type)),
|
||||
Attributes = MemberAttributes.Public,
|
||||
HasGet = true,
|
||||
GetStatements = {
|
||||
new CodeMethodReturnStatement(new CodeSnippetExpression("_originalType.ParseFType()"))
|
||||
},
|
||||
HasSet = true,
|
||||
SetStatements = {
|
||||
new CodeAssignStatement(new CFieldRefExp(new CThisRefExp(), "_originalType"), new CArgRefExp("value"))
|
||||
}
|
||||
};
|
||||
ctd.Members.Add(cmp);
|
||||
|
||||
var cc = new CodeConstructor() { Attributes = MemberAttributes.Public };
|
||||
|
||||
cc.Parameters.AddRange(new CParamDeclExp[] {
|
||||
new(typeof(int), "originalIndex"),
|
||||
new(typeof(string), "originalType"),
|
||||
new(typeof(string), "originalName"),
|
||||
new(typeof(Type), "underlyingType"),
|
||||
new(typeof(int), "size")
|
||||
});
|
||||
|
||||
@@ -231,6 +248,7 @@ namespace CodeGenerator {
|
||||
new(new CFieldRefExp(new CThisRefExp(), "OriginalIndex"), new CArgRefExp("originalIndex")),
|
||||
new(new CFieldRefExp(new CThisRefExp(), "OriginalType"), new CArgRefExp("originalType")),
|
||||
new(new CFieldRefExp(new CThisRefExp(), "OriginalName"), new CArgRefExp("originalName")),
|
||||
new(new CFieldRefExp(new CThisRefExp(), "OriginalType"), new CArgRefExp("underlyingType")),
|
||||
new(new CFieldRefExp(new CThisRefExp(), "Size"), new CArgRefExp("size"))
|
||||
});
|
||||
|
||||
@@ -306,11 +324,20 @@ namespace CodeGenerator {
|
||||
|
||||
private static CodeAttributeDeclaration GenerateDNAFieldAttribute(int index, BlendFile.DnaField field,
|
||||
BlendFile.Dna1Body body) {
|
||||
Type t;
|
||||
if (field.Name.Contains('[')) {
|
||||
CodeMemberField amf = CreateArrayMemberField(field);
|
||||
t = Type.GetType($"Array<{amf.Type.ArrayElementType.BaseType}>");
|
||||
} else {
|
||||
t = Type.GetType(field.Type.ParseFType());
|
||||
}
|
||||
|
||||
CodeAttributeDeclaration cad = new("DNAFieldAttribute");
|
||||
cad.Arguments.AddRange(new CodeAttributeArgumentCollection() {
|
||||
new(new CodePrimitiveExpression(index)),
|
||||
new(new CodePrimitiveExpression(field.Type)),
|
||||
new(new CodePrimitiveExpression(field.Name)),
|
||||
new(new CodePrimitiveExpression(t)),
|
||||
new(new CodePrimitiveExpression((int)body.Lengths[field.IdxType]))
|
||||
});
|
||||
return cad;
|
||||
|
||||
Reference in New Issue
Block a user