Exemple #1
0
        public Stream ToStream()
        {
            MemoryStream mem = null;

            if (null != Packet)
            {
                if (0 <= Packet.Length)
                {
                    mem          = new MemoryStream(Packet);
                    mem.Position = 0;
                    return(mem);
                } /* Packet has data. */
            }     /* Packet is not null. */

            using (var writer = new BinaryWriter(mem))
            {
                writer.Write(SourcePort);
                writer.Write(DestinationPort);
                writer.Write(SequenceNumber);
                writer.Write(AcknowledgmentNumber);
                byte b = DataOffset.AddLowNibble(Reserved);
                writer.Write(b);
                writer.Write(Flags.ToByte());
                writer.Write(Window);
                writer.Write(Checksum);
                writer.Write(UrgentPointer);
                writer.Write(OptionsAndPadding);
                writer.Write(Data);
            }
            return(mem);
        }
Exemple #2
0
 public override int GetHashCode()
 {
     return(RequestLength.GetHashCode()
            ^ DataOffset.GetHashCode()
            ^ PieceIndex.GetHashCode()
            ^ StartOffset.GetHashCode());
 }
Exemple #3
0
 public override string ToString()
 {
     if (ReferenceKey != 0)
     {
         return(EntryNameHash.ToString() + ": " + Type.ToString() + ": " + DataOffset.ToString() + ": " + ((MetaName)ReferenceKey).ToString());
     }
     return(EntryNameHash.ToString() + ": " + Type.ToString() + ": " + DataOffset.ToString());
 }
Exemple #4
0
 public override string ToString()
 {
     return($"{{{nameof(Offset)}={Offset.ToString("X")}, {nameof(CollisionDataOffset)}={CollisionDataOffset.ToString("X")}, {nameof(EntryOffset)}={EntryOffset.ToString("X")}, {nameof(Count)}={Count.ToString("X")}, {nameof(DataOffset)}={DataOffset.ToString("X")}, {nameof(CollisionDataEntry)}={CollisionDataEntry}}}");
 }
Exemple #5
0
 public override string ToString()
 {
     return(DataOffset.ToString() + ": " + DataType.ToString() + ": " + ReferenceKey.ToString() + ": " + EntryNameHash.ToString());
 }
Exemple #6
0
 public override string ToString()
 {
     return($"{{{nameof(Offset)}={Offset.ToString("X")}, {nameof(HaveNBoneIndex0)}={HaveNBoneIndex0.ToString("X")}, {nameof(HaveNBoneIndex1)}={HaveNBoneIndex1.ToString("X")}, {nameof(ThrowNBoneIndex)}={ThrowNBoneIndex.ToString("X")}, {nameof(DataCount)}={DataCount.ToString("X")}, {nameof(DataOffset)}={DataOffset.ToString("X")}, {nameof(Pad)}={Pad.ToString("X")}, {nameof(EntriesCount)}={EntriesCount.ToString()}, {nameof(Entries)}={string.Join(",", Entries.Select(x => x.ToString()).ToList())}}}");
 }
Exemple #7
0
 public override string ToString()
 {
     return(string.Format("{0} : {1} : {2} : {3}", OffsetInFstFile.ToString("X8"), DataOffset.ToString("X8"), Length.ToString("X8"), Name));
 }
Exemple #8
0
 public override string ToString()
 {
     return($"{{{nameof(Offset)}={Offset.ToString()}, {nameof(ActionInterruptsOffset)}={ActionInterruptsOffset.ToString()}, {nameof(DataOffset)}={DataOffset.ToString()}, {nameof(DataCount)}={DataCount.ToString()}, {nameof(ActionInterruptEntries)}={string.Join(",", ActionInterruptEntries.Select(x => x.ToString()).ToList())}}}");
 }
Exemple #9
0
 public override string ToString()
 {
     return($"{{{nameof(Offset)}={Offset.ToString("X")}, {nameof(HandNBoneIndex0)}={HandNBoneIndex0.ToString("X")}, {nameof(HandNBoneIndex1)}={HandNBoneIndex1.ToString("X")}, {nameof(HandNBoneIndex2)}={HandNBoneIndex2.ToString("X")}, {nameof(HandNBoneIndex3)}={HandNBoneIndex3.ToString("X")}, {nameof(DataCount)}={DataCount.ToString("X")}, {nameof(DataOffset)}={DataOffset.ToString("X")}, {nameof(BonesListDataOffset)}={BonesListDataOffset.ToString("X")}, {nameof(Bones)}={string.Join(",", Bones.Select(x => x.ToString("X")).ToList())}}}");
 }
Exemple #10
0
 public override string ToString()
 {
     return($"Model Visbility Section:\n\tOffset: {Offset.ToString("X")}\n\tName: {Name}\n\tData Offset: {DataOffset.ToString("X")}\n\tNumber Of BoneSwitches: {BoneSwitches.Count}");
 }
Exemple #11
0
 public override string ToString()
 {
     return($"Bone Switch:\n\tOffset: {Offset.ToString("X")}\n\tData Offset: {DataOffset.ToString("X")}\n\tCount: {Count.ToString("X")}, Number Of Bone Groups: {BoneGroups.Count}");
 }
Exemple #12
0
 public override string ToString()
 {
     return($"Model Visibility:\n\tOffset: {Offset.ToString("X")}\n\tEntry Offset: {EntryOffset.ToString("X")}\n\tBone Switch Count: {BoneSwitchCount.ToString("X")}\n\t" +
            $"Data Offset: {DataOffset.ToString("X")}\n\tData Count: {DataCount.ToString("X")}\n\tNumber Of Sections: {Sections.Count}");
 }
Exemple #13
0
 public override string ToString()
 {
     return($"Bone Group:\n\tOffset: {Offset.ToString("X")}\n\tData Offset: {DataOffset.ToString("X")}\n\tCount: {Count.ToString("X")}");
 }
Exemple #14
0
 public override string ToString()
 {
     return($"{{{nameof(Offset)}={Offset.ToString("X")}, {nameof(DataOffset)}={DataOffset.ToString("X")}, {nameof(DataCount)}={DataCount.ToString("X")}, {nameof(ItemsListOffset)}={ItemsListOffset.ToString("X")}, {nameof(Items)}={string.Join(",", Items.Select(x => x.ToString("X")).ToList())}}}");
 }
        static void CreateSplitIni(string filename)
        {
            if (addresslist.Count == 0)
            {
                return;
            }
            if (File.Exists(filename))
            {
                filename = Path.Combine(Path.GetDirectoryName(filename), Path.GetFileNameWithoutExtension(filename) + "_new.ini");
            }
            Console.WriteLine("Creating split INI file: {0}", filename);
            StreamWriter sw = File.CreateText(filename);

            sw.WriteLine("key=" + ImageBase.ToString("X"));
            if (Path.GetExtension(filename).ToLowerInvariant() == ".prs")
            {
                sw.WriteLine("compressed=true");
            }
            if (BigEndian)
            {
                sw.WriteLine("bigendian=true");
            }
            if (ReverseColors)
            {
                sw.WriteLine("reverse=true");
            }
            if (DataOffset != 0)
            {
                sw.WriteLine("offset=" + DataOffset.ToString("X8"));
            }
            foreach (var entry in addresslist)
            {
                //Console.WriteLine("Adding object {0}", v.ObjectName);
                switch (entry.Value)
                {
                case "NJS_CNK_OBJECT":
                case "cnkobj":
                    sw.WriteLine("[" + entry.Key.ToString("X8") + "]");
                    sw.WriteLine("type=chunkmodel");
                    sw.WriteLine("address=" + entry.Key.ToString("X8"));
                    if (!SingleOutputFolder)
                    {
                        sw.WriteLine("filename=chunkmodels/" + entry.Key.ToString("X8") + ".sa2mdl");
                    }
                    else
                    {
                        sw.WriteLine("filename=" + entry.Key.ToString("X8") + ".sa2mdl");
                    }
                    sw.WriteLine();
                    break;

                case "NJS_GC_OBJECT":
                case "gcobj":
                    sw.WriteLine("[" + entry.Key.ToString("X8") + "]");
                    sw.WriteLine("type=gcmodel");
                    sw.WriteLine("address=" + entry.Key.ToString("X8"));
                    if (!SingleOutputFolder)
                    {
                        sw.WriteLine("filename=gcmodels/" + entry.Key.ToString("X8") + ".sa2bmdl");
                    }
                    else
                    {
                        sw.WriteLine("filename=" + entry.Key.ToString("X8") + ".sa2bmdl");
                    }
                    sw.WriteLine();
                    break;

                case "NJS_OBJECT":
                case "NJS_OBJECT_OLD":
                case "obj":
                    sw.WriteLine("[" + entry.Key.ToString("X8") + "]");
                    sw.WriteLine(entry.Value == "NJS_OBJECT_OLD" ? "type=basicmodel" : "type=basicdxmodel");
                    sw.WriteLine("address=" + entry.Key.ToString("X8"));
                    if (!SingleOutputFolder)
                    {
                        sw.WriteLine("filename=basicmodels/" + entry.Key.ToString("X8") + ".sa1mdl");
                    }
                    else
                    {
                        sw.WriteLine("filename=" + entry.Key.ToString("X8") + ".sa1mdl");
                    }
                    bool first = true;
                    foreach (var item in actionlist)
                    {
                        if (item.Value[0] == entry.Key)
                        {
                            if (first)
                            {
                                sw.Write("animations=");
                                first = false;
                            }
                            else
                            {
                                sw.Write(",");
                            }
                            if (!SingleOutputFolder)
                            {
                                sw.Write("../actions/" + item.Key.ToString("X8") + ".saanim");
                            }
                            else
                            {
                                sw.Write(item.Key.ToString("X8") + ".saanim");
                            }
                        }
                    }
                    if (!first)
                    {
                        sw.WriteLine();
                    }
                    sw.WriteLine();
                    break;

                case "landtable_SADX":
                case "landtable_SA1":
                case "landtable_SA2":
                case "landtable_SA2B":
                case "LandTable":
                case "_OBJ_LANDTABLE":
                    sw.WriteLine("[" + entry.Key.ToString("X8") + "]");
                    sw.WriteLine("type=landtable");
                    sw.WriteLine("address=" + entry.Key.ToString("X8"));
                    if (!SingleOutputFolder)
                    {
                        sw.WriteLine("filename=levels/" + entry.Key.ToString("X8") + ".sa1lvl");
                    }
                    else
                    {
                        sw.WriteLine("filename=" + entry.Key.ToString("X8") + ".sa1lvl");
                    }
                    switch (entry.Value)
                    {
                    case "landtable_SA1":
                        sw.WriteLine("format=SA1");
                        break;

                    case "landtable_SADX":
                        sw.WriteLine("format=SADX");
                        break;

                    case "landtable_SA2":
                        sw.WriteLine("format=SA2");
                        break;

                    case "landtable_SA2B":
                        sw.WriteLine("format=SA2B");
                        break;

                    default:
                        break;
                    }
                    sw.WriteLine();
                    break;

                case "NJS_MOTION":
                    sw.WriteLine("[" + entry.Key.ToString("X8") + "]");
                    sw.WriteLine("type=animation");
                    sw.WriteLine("address=" + entry.Key.ToString("X8"));
                    sw.WriteLine("numparts=" + actionlist[entry.Key][1].ToString());
                    if (!SingleOutputFolder)
                    {
                        sw.WriteLine("filename=actions/" + entry.Key.ToString("X8") + ".saanim");
                    }
                    else
                    {
                        sw.WriteLine("filename=" + entry.Key.ToString("X8") + ".saanim");
                    }
                    sw.WriteLine();
                    break;
                }
            }
            sw.Flush();
            sw.Close();
        }
Exemple #16
0
        internal override void WriteToStream(Stream pOut, XmlElement ParentXml)
        {
            // 记下当前位置
            long tPos = pOut.Position;

            // 是否是外部流
            if (m_Stream == null)
            {
                // 外部流
                Stream tBaseStream = m_Package.BaseStream;

                // 寻址
                tBaseStream.Seek(FCYResPackage.HeaderSize + m_MainDataOffset, SeekOrigin.Begin);

                // 直接复制
                FCYResPackageHelper.FillStream(tBaseStream, pOut, (int)(IsCompressed ? DataCompressedSize : DataRealSize));
            }
            else
            {
                // 内部流
                if (IsCompressed)
                {
                    long tPosStart = pOut.Position;

                    // 压缩流
                    m_Stream.Seek(0, SeekOrigin.Begin);
                    FCYResPackageHelper.DeflateEncodeTo(m_Stream, pOut, (int)DataRealSize);

                    long tPosEnd = pOut.Position;

                    // 关闭内部流
                    m_Stream.Close();
                    m_Stream = null;

                    // 更新数据
                    m_DataCompressedSize = (uint)(tPosEnd - tPosStart);
                }
                else
                {
                    // 直接复制
                    m_Stream.Seek(0, SeekOrigin.Begin);
                    FCYResPackageHelper.FillStream(m_Stream, pOut, (int)DataRealSize);
                }
            }

            // 更新位置
            m_MainDataOffset = (uint)tPos - FCYResPackage.HeaderSize;

            // 准备Xml数据
            XmlElement tElement = ParentXml.OwnerDocument.CreateElement("Node");

            tElement.SetAttribute("Name", Name);
            tElement.SetAttribute("OrgSize", DataRealSize.ToString());
            tElement.SetAttribute("IsCompressed", IsCompressed ? "yes" : "no");
            tElement.SetAttribute("CompressedSize", DataCompressedSize.ToString());
            tElement.SetAttribute("Offset", DataOffset.ToString());
            tElement.InnerText = AdditionData;

            // 写出Xml数据
            ParentXml.AppendChild(tElement);
        }