Esempio n. 1
0
File: MSBT.cs Progetto: yumf/NHSE
        private void ReadLBL1(BinaryReaderX br)
        {
            LBL1.Identifier  = br.ReadString(4);
            LBL1.SectionSize = br.ReadUInt32();
            LBL1.Padding1    = br.ReadBytes(8);
            long startOfLabels = br.BaseStream.Position;

            LBL1.NumberOfGroups = br.ReadUInt32();

            for (int i = 0; i < LBL1.NumberOfGroups; i++)
            {
                var grp = new MSBTGroup
                {
                    NumberOfLabels = br.ReadUInt32(),
                    Offset         = br.ReadUInt32()
                };
                LBL1.Groups.Add(grp);
            }

            foreach (var grp in LBL1.Groups)
            {
                br.BaseStream.Seek(startOfLabels + grp.Offset, SeekOrigin.Begin);

                for (int i = 0; i < grp.NumberOfLabels; i++)
                {
                    var length = Convert.ToUInt32(br.ReadByte());
                    var name   = br.ReadString((int)length);
                    var index  = br.ReadUInt32();
                    var lbl    = new MSBTLabel(name)
                    {
                        Index = index, Length = length
                    };
                    LBL1.Labels.Add(lbl);
                }
            }

            if (LBL1.Labels.Count > 0)
            {
                HasLabels = true;
            }

            PaddingSeek(br);
        }
Esempio n. 2
0
        private static (string Label, string Text) GetCleanLabelText(MSBTLabel lbl, IList <MSBTTextString> txt)
        {
            var label = lbl.Name;

            var index = (int)lbl.Index;
            var text  = txt[index].ToString(Encoding.Unicode);

            if (text.StartsWith("\u000e")) // string formatting present; discard formatting!
            {
                text = text.Substring(6);
            }

            const char germanJunk = '\u000e';
            int        junk       = text.IndexOf(germanJunk);

            if (junk != -1) // string formatting present; discard formatting! (german)
            {
                text = text.Substring(0, junk);
            }

            text = StringUtil.TrimFromZero(text);

            return(label, text);
        }