//  Write this object into message-out
        internal override void Write(BinaryWriter binaryWriter)
        {
            base.Write(binaryWriter);

            // TODO: remove
            MyMwcLog.IfNetVerbose_AddToLog("DustColor: " + Color.White.ToString());
            MyMwcMessageOut.WriteColor(Color.White, binaryWriter);

            List <MyMwcObjectBuilder_Base> objectToWrite = SectorObjects;

            int countSectorObjects = objectToWrite == null ? 0 : objectToWrite.Count;

            MyMwcLog.IfNetVerbose_AddToLog("Sector object count: " + countSectorObjects);
            MyMwcMessageOut.WriteInt32(countSectorObjects, binaryWriter);

            for (int i = 0; i < countSectorObjects; i++)
            {
                objectToWrite[i].Write(binaryWriter);
            }
            MyMwcLog.IfNetVerbose_AddToLog("Sector objects written");

            // Write object groups
            int countObjectGroups = 0;

            if (ObjectGroups != null)
            {
                countObjectGroups = ObjectGroups.Count;
            }
            MyMwcLog.IfNetVerbose_AddToLog("Object groups count: " + countObjectGroups);
            MyMwcMessageOut.WriteInt32(countObjectGroups, binaryWriter);

            for (int i = 0; i < countObjectGroups; i++)
            {
                ObjectGroups[i].Write(binaryWriter);
            }
            MyMwcLog.IfNetVerbose_AddToLog("Object groups written");

            // Write snap point links
            int countSnapPointLinks = 0;

            if (SnapPointLinks != null)
            {
                countSnapPointLinks = SnapPointLinks.Count;
            }
            MyMwcLog.IfNetVerbose_AddToLog("Snap point links count: " + countSnapPointLinks);
            MyMwcMessageOut.WriteInt32(countSnapPointLinks, binaryWriter);

            for (int i = 0; i < countSnapPointLinks; i++)
            {
                SnapPointLinks[i].Write(binaryWriter);
            }
            MyMwcLog.IfNetVerbose_AddToLog("Snap point links written");

            MyMwcMessageOut.WriteBool(FromGenerator, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("From generator: " + FromGenerator);

            // Version
            MyMwcMessageOut.WriteInt32(Version, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Current sector version: " + Version.ToString());

            MyMwcMessageOut.WriteVector3Int(Position, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Position written: " + Position);

            MyMessageHelper.WriteStringDictionary(Dictionary, binaryWriter);
        }
예제 #2
0
        internal override void Write(System.IO.BinaryWriter binaryWriter)
        {
            base.Write(binaryWriter);

            // Sector ob
            bool sectorObjectBuilderExists = SectorObjectBuilder != null;

            MyMwcMessageOut.WriteBool(sectorObjectBuilderExists, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Sector exists " + sectorObjectBuilderExists);

            if (sectorObjectBuilderExists)
            {
                SectorObjectBuilder.Write(binaryWriter);
                MyMwcLog.IfNetVerbose_AddToLog("Sector written");
            }

            // Gametime
            MyMwcMessageOut.WriteDateTime(this.GameTime, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Gametime: " + this.GameTime);

            // Player ob
            bool playerObjectBuilderExists = PlayerObjectBuilder != null;

            MyMwcMessageOut.WriteBool(playerObjectBuilderExists, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Player exists " + playerObjectBuilderExists);

            if (playerObjectBuilderExists)
            {
                PlayerObjectBuilder.Write(binaryWriter);
                MyMwcLog.IfNetVerbose_AddToLog("Player written");
            }

            // Session ob
            bool sessionObjectBuilderExists = SessionObjectBuilder != null;

            MyMwcMessageOut.WriteBool(sessionObjectBuilderExists, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Session exists " + sessionObjectBuilderExists);

            if (sessionObjectBuilderExists)
            {
                SessionObjectBuilder.Write(binaryWriter);
                MyMwcLog.IfNetVerbose_AddToLog("Session written");
            }

            // Active Mission
            MyMwcMessageOut.WriteInt32(ActiveMissionID, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Active Mission ID: " + this.ActiveMissionID);

            //  Events
            int countEvents = EventLogObjectBuilder == null ? 0 : EventLogObjectBuilder.Count;

            MyMwcLog.IfNetVerbose_AddToLog("Count Events: " + countEvents);
            MyMwcMessageOut.WriteInt32(countEvents, binaryWriter);
            for (int i = 0; i < countEvents; i++)
            {
                EventLogObjectBuilder[i].Write(binaryWriter);
            }

            //  Faction relation changes
            int countFactionRelationChanges = FactionRelationChangesBuilder == null ? 0 : FactionRelationChangesBuilder.Count;

            MyMwcLog.IfNetVerbose_AddToLog("Faction Relation Changes : " + countFactionRelationChanges);
            MyMwcMessageOut.WriteInt32(countFactionRelationChanges, binaryWriter);
            for (int i = 0; i < countFactionRelationChanges; i++)
            {
                FactionRelationChangesBuilder[i].Write(binaryWriter);
            }

            // Inventory
            bool inventoryObjectBuilderExists = InventoryObjectBuilder != null;

            MyMwcMessageOut.WriteBool(inventoryObjectBuilderExists, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Inventory exists " + inventoryObjectBuilderExists);

            if (inventoryObjectBuilderExists)
            {
                InventoryObjectBuilder.Write(binaryWriter);
                MyMwcLog.IfNetVerbose_AddToLog("Inventory written");
            }

            // Current sector identifier
            MyMwcMessageOut.WriteSectorIdentifier(this.CurrentSector, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Current sector: " + CurrentSector.ToString());

            // Checkpoint name
            bool hasName = CheckpointName != null;

            MyMwcMessageOut.WriteBool(hasName, binaryWriter);
            MyMwcLog.IfNetVerbose_AddToLog("Has name: " + hasName);
            if (hasName)
            {
                MyMwcMessageOut.WriteString(CheckpointName, binaryWriter);
                MyMwcLog.IfNetVerbose_AddToLog("Name: " + CheckpointName.ToString());
            }

            MyMessageHelper.WriteStringDictionary(Dictionary, binaryWriter);
        }