Пример #1
0
        private static List<ScenarioFileEntry> FindText( Stream stream, uint textStart, bool isUtf8 )
        {
            var list = new List<ScenarioFileEntry>();

            while ( stream.Position < textStart ) {
                uint identifyingBytes = stream.ReadUInt32();
                if ( identifyingBytes == 0x18000C04 ) {
                    uint pos = (uint)stream.Position;

                    uint pointerToText = stream.ReadUInt32().SwapEndian() + textStart;

                    stream.Position = pointerToText;
                    stream.ReadUInt32().SwapEndian();
                    stream.ReadUInt32().SwapEndian();
                    uint jpNamePtr = stream.ReadUInt32().SwapEndian();
                    uint jpTextPtr = stream.ReadUInt32().SwapEndian();
                    uint enNamePtr = stream.ReadUInt32().SwapEndian();
                    uint enTextPtr = stream.ReadUInt32().SwapEndian();
                    stream.Position = jpNamePtr + textStart; string jpName = isUtf8 ? stream.ReadUTF8Nullterm() : stream.ReadShiftJisNullterm();
                    stream.Position = jpTextPtr + textStart; string jpText = isUtf8 ? stream.ReadUTF8Nullterm() : stream.ReadShiftJisNullterm();
                    stream.Position = enNamePtr + textStart; string enName = isUtf8 ? stream.ReadUTF8Nullterm() : stream.ReadShiftJisNullterm();
                    stream.Position = enTextPtr + textStart; string enText = isUtf8 ? stream.ReadUTF8Nullterm() : stream.ReadShiftJisNullterm();

                    var entry = new ScenarioFileEntry() { Pointer = pos, JpName = jpName, EnName = enName, JpText = jpText, EnText = enText };
                    list.Add( entry );

                    stream.Position = pos + 4;
                }
            }

            return list;
        }
Пример #2
0
        public ebmEntry( Stream stream, bool isUtf8 = false )
        {
            Ident = stream.ReadUInt32();
            Unknown2 = stream.ReadUInt32();
            Unknown3 = stream.ReadUInt32();
            CharacterId = (int)stream.ReadUInt32();
            Unknown5 = stream.ReadUInt32();
            Unknown6 = stream.ReadUInt32();
            Unknown7 = stream.ReadUInt32();
            Unknown8 = stream.ReadUInt32();
            TextLength = stream.ReadUInt32();

            long pos = stream.Position;
            if ( isUtf8 ) {
                Text = stream.ReadUTF8Nullterm();
            } else {
                Text = stream.ReadShiftJisNullterm();
            }
            stream.Position = pos + TextLength;
        }