コード例 #1
0
ファイル: PsoString3.cs プロジェクト: xchgrbprsp/gta-toolkit
        public void Read(PsoDataReader reader)
        {
            var blockIndexAndOffset = reader.ReadUInt32();
            var BlockIndex          = (int)(blockIndexAndOffset & 0x00000FFF);
            var Offset  = (int)((blockIndexAndOffset & 0xFFFFF000) >> 12);
            var zero_4h = reader.ReadUInt32();

            if (zero_4h != 0)
            {
                throw new Exception("zero_4h should be 0");
            }
            var size1 = reader.ReadUInt16() & 0x0FFF;
            var size2 = reader.ReadUInt16() & 0x0FFF;
            //if (size1 != size2 - 1)
            //{
            //    throw new Exception("size1 should be size2");
            //}
            var NumberOfEntries = size2;
            var zero_Ch         = reader.ReadUInt32();

            if (zero_Ch != 0)
            {
                throw new Exception("zero_Ch should be 0");
            }


            // read reference data...
            if (BlockIndex > 0)
            {
                var backupOfSection  = reader.CurrentSectionIndex;
                var backupOfPosition = reader.Position;

                reader.SetSectionIndex(BlockIndex - 1);
                reader.Position = Offset;

                string s = "";
                for (int k = 0; k < NumberOfEntries; k++)
                {
                    s += (char)reader.ReadByte();
                }
                Value = s;

                reader.SetSectionIndex(backupOfSection);
                reader.Position = backupOfPosition;
            }
            else
            {
                Value = null;
            }
        }
コード例 #2
0
        public void Read(PsoDataReader reader)
        {
            Value = "";
            bool isok = true;

            for (int i = 0; i < length; i++)
            {
                char c = (char)reader.ReadByte();
                if (c == 0)
                {
                    isok = false;
                }
                else
                {
                    if (!isok)
                    {
                        throw new Exception("Unexpected char.");
                    }
                    Value += c;
                }
            }
        }
コード例 #3
0
ファイル: PsoXXByte.cs プロジェクト: xchgrbprsp/gta-toolkit
 public void Read(PsoDataReader reader)
 {
     Value = reader.ReadByte();
 }