Beispiel #1
0
 public SourceInfo()
 {
     Source      = "PapyrusDotNet-Generated.psc";
     ModifyTime  = UnixTimeConverterUtility.Convert(DateTime.Now);
     CompileTime = ModifyTime;
     User        = Environment.UserName;
     Computer    = Environment.MachineName;
 }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }