Ejemplo n.º 1
0
        internal override void Write(BinaryWriterEx bw)
        {
            var connectorPoints     = new ConnectorPointSection();
            var connectorConditions = new ConnectorConditionSection();

            foreach (Connector connector in Connectors)
            {
                connector.GivePointsAndConds(connectorPoints, connectorConditions);
            }

            bw.BigEndian = false;
            bw.WriteASCII("NVMA");
            bw.WriteUInt32((uint)Version);
            bw.ReserveUInt32("FileSize");
            bw.WriteInt32(Version == NVAVersion.OldBloodborne ? 8 : 9);

            Navmeshes.Write(bw, 0);
            Entries1.Write(bw, 1);
            Entries2.Write(bw, 2);
            new Section3().Write(bw, 3);
            Connectors.Write(bw, 4);
            connectorPoints.Write(bw, 5);
            connectorConditions.Write(bw, 6);
            Entries7.Write(bw, 7);
            if (Version != NVAVersion.OldBloodborne)
            {
                Entries8.Write(bw, 8);
            }

            bw.FillUInt32("FileSize", (uint)bw.Position);
        }
Ejemplo n.º 2
0
        internal override void Read(BinaryReaderEx br)
        {
            br.BigEndian = false;
            br.AssertASCII("NVMA");
            Version = br.ReadEnum32 <NVAVersion>();
            br.ReadUInt32();                                             // File size
            br.AssertInt32(Version == NVAVersion.OldBloodborne ? 8 : 9); // Section count

            Navmeshes = new NavmeshSection(br);
            Entries1  = new Section1(br);
            Entries2  = new Section2(br);
            new Section3(br);
            Connectors = new ConnectorSection(br);
            var connectorPoints     = new ConnectorPointSection(br);
            var connectorConditions = new ConnectorConditionSection(br);

            Entries7 = new Section7(br);
            if (Version == NVAVersion.OldBloodborne)
            {
                Entries8 = new Section8(1);
            }
            else
            {
                Entries8 = new Section8(br);
            }

            foreach (Connector connector in Connectors)
            {
                connector.TakePointsAndConds(connectorPoints, connectorConditions);
            }
        }
Ejemplo n.º 3
0
            internal void GivePointsAndConds(ConnectorPointSection points, ConnectorConditionSection conds)
            {
                PointsIndex = points.Count;
                points.AddRange(Points);

                ConditionsIndex = conds.Count;
                conds.AddRange(Conditions);
            }
Ejemplo n.º 4
0
            internal void TakePointsAndConds(ConnectorPointSection points, ConnectorConditionSection conds)
            {
                Points = new List <ConnectorPoint>(PointCount);
                for (int i = 0; i < PointCount; i++)
                {
                    Points.Add(points[PointsIndex + i]);
                }
                PointCount = -1;

                Conditions = new List <ConnectorCondition>(ConditionCount);
                for (int i = 0; i < ConditionCount; i++)
                {
                    Conditions.Add(conds[ConditionsIndex + i]);
                }
                ConditionCount = -1;
            }