public SourceInfo() { Source = "PapyrusDotNet-Generated.psc"; ModifyTime = UnixTimeConverterUtility.Convert(DateTime.Now); CompileTime = ModifyTime; User = Environment.UserName; Computer = Environment.MachineName; }
private void SetHeaderInfo(ClrAssemblyInput input, PapyrusAssemblyDefinition pex, TypeDefinition type) { pex.Header.HeaderIdentifier = input.TargetPapyrusVersion == PapyrusVersionTargets.Fallout4 ? PapyrusHeader.Fallout4PapyrusHeaderIdentifier : PapyrusHeader.SkyrimPapyrusHeaderIdentifier; pex.Header.SourceHeader.Version = input.TargetPapyrusVersion == PapyrusVersionTargets.Fallout4 ? PapyrusHeader.Fallout4PapyrusVersion : PapyrusHeader.SkyrimPapyrusVersion; pex.Header.SourceHeader.Source = "PapyrusDotNet" + type.Name + ".psc"; pex.Header.SourceHeader.User = Environment.UserName; pex.Header.SourceHeader.Computer = Environment.MachineName; pex.Header.SourceHeader.GameId = (short)input.TargetPapyrusVersion; pex.Header.SourceHeader.CompileTime = UnixTimeConverterUtility.Convert(DateTime.Now); pex.Header.SourceHeader.ModifyTime = UnixTimeConverterUtility.Convert(DateTime.Now); }
private void CreateDebugInfo(PapyrusAssemblyDefinition pex, PapyrusTypeDefinition papyrusType, TypeDefinition type) { var debug = pex.DebugInfo; debug.DebugTime = UnixTimeConverterUtility.Convert(DateTime.Now); if (pex.VersionTarget == PapyrusVersionTargets.Fallout4) { foreach (var t in papyrusType.NestedTypes) { var structInfo = new PapyrusStructDescription(); structInfo.Name = papyrusType.Name; structInfo.DeclaringTypeName = type.Name.Ref(pex); foreach (var f in t.Fields) { structInfo.FieldNames.Add(f.Name); } debug.StructDescriptions.Add(structInfo); } } foreach (var s in papyrusType.States) { foreach (var method in s.Methods) { var m = new PapyrusMethodDecription(); m.Name = method.Name; m.DeclaringTypeName = type.Name.Ref(pex); m.StateName = "".Ref(pex); if (method.Name.Value.ToLower().StartsWith("get_")) { m.MethodType = PapyrusMethodTypes.Getter; } else if (method.Name.Value.ToLower().StartsWith("set_")) { m.MethodType = PapyrusMethodTypes.Setter; } else { m.MethodType = PapyrusMethodTypes.Method; } var lastStart = 0; method.Body.Instructions.ForEach(i => { if (i.SequencePoint != null) { lastStart = i.SequencePoint.StartLine; m.BodyLineNumbers.Add((short)i.SequencePoint.StartLine); } else { m.BodyLineNumbers.Add((short)lastStart); } }); debug.MethodDescriptions.Add(m); } } var stateProperties = new PapyrusStatePropertyDescriptions(); stateProperties.GroupDocumentation = "".Ref(pex); stateProperties.GroupName = "".Ref(pex); stateProperties.ObjectName = type.Name.Ref(pex); foreach (var prop in type.Properties) { // TODO: This stateProperties.PropertyNames.Add(prop.Name.Ref(pex)); } debug.PropertyDescriptions.Add(stateProperties); }