// Read this object from message-in internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion) { if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) { return(NetworkError()); } // TODO: remove Color?dustColor = MyMwcMessageIn.ReadColorEx(binaryReader, senderEndPoint); if (dustColor == null) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("dustColor: " + dustColor.ToString()); int?countSectorObjects = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (countSectorObjects == null) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Sector object count: " + countSectorObjects); SectorObjects = new List <MyMwcObjectBuilder_Base>(countSectorObjects.Value); for (int i = 0; i < countSectorObjects; i++) { MyMwcObjectBuilder_Base sectorObject = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint); if (sectorObject == null) { return(NetworkError()); } if (sectorObject.Read(binaryReader, senderEndPoint, gameVersion) == false) { return(NetworkError()); } SectorObjects.Add(sectorObject); } MyMwcLog.IfNetVerbose_AddToLog("Sector objects read"); // Read object groups int?countObjectGroups = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (countObjectGroups == null) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Object groups count: " + countObjectGroups); ObjectGroups = new List <MyMwcObjectBuilder_ObjectGroup>(); for (int i = 0; i < countObjectGroups; i++) { MyMwcObjectBuilder_ObjectGroup objectGroup = MyMwcObjectBuilder_ObjectGroup.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ObjectGroup; if (objectGroup == null) { return(NetworkError()); } if (objectGroup.Read(binaryReader, senderEndPoint, gameVersion) == false) { return(NetworkError()); } ObjectGroups.Add(objectGroup); } MyMwcLog.IfNetVerbose_AddToLog("Object groups read"); // Read snap point links int?countSnapPointLinks = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (countSnapPointLinks == null) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Snap point links count: " + countSnapPointLinks); SnapPointLinks = new List <MyMwcObjectBuilder_SnapPointLink>(); for (int i = 0; i < countSnapPointLinks; i++) { MyMwcObjectBuilder_SnapPointLink snapPointLink = MyMwcObjectBuilder_SnapPointLink.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SnapPointLink; if (snapPointLink == null) { return(NetworkError()); } if (snapPointLink.Read(binaryReader, senderEndPoint, gameVersion) == false) { return(NetworkError()); } SnapPointLinks.Add(snapPointLink); } MyMwcLog.IfNetVerbose_AddToLog("Snap point links read"); bool?fromGenerator = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (!fromGenerator.HasValue) { return(NetworkError()); } FromGenerator = fromGenerator.Value; MyMwcLog.IfNetVerbose_AddToLog("From generator read: " + FromGenerator); // Version int?version = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!version.HasValue) { return(NetworkError()); } this.Version = version.Value; var position = MyMwcMessageIn.ReadVector3IntEx(binaryReader, senderEndPoint); if (!position.HasValue) { return(NetworkError()); } Position = position.Value; MyMwcLog.IfNetVerbose_AddToLog("Position: " + Position); Dictionary = MyMessageHelper.ReadStringDictionary(binaryReader, senderEndPoint); if (Dictionary == null) { return(NetworkError()); } return(true); }
internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion) { if (!base.Read(binaryReader, senderEndPoint, gameVersion)) { return(NetworkError()); } // Sector ob bool?sectorBuilderExists = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (!sectorBuilderExists.HasValue) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Sector exists " + (SectorObjectBuilder != null)); if (sectorBuilderExists.Value) { SectorObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Sector; if (SectorObjectBuilder == null || !SectorObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion)) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Sector read"); } // Gametime DateTime?dateTime = MyMwcMessageIn.ReadDateTimeEx(binaryReader, senderEndPoint); if (!dateTime.HasValue) { return(NetworkError()); } this.GameTime = dateTime.Value; MyMwcLog.IfNetVerbose_AddToLog("Gametime: " + this.GameTime); // Player ob bool?playerBuilderExists = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (!playerBuilderExists.HasValue) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Player exists " + (PlayerObjectBuilder != null)); if (playerBuilderExists.Value) { PlayerObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Player; if (PlayerObjectBuilder == null || !PlayerObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion)) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Player read"); } // Session ob bool?sessionBuilderExists = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (!sessionBuilderExists.HasValue) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Session exists " + (SessionObjectBuilder != null)); if (sessionBuilderExists.Value) { SessionObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Session; if (SessionObjectBuilder == null || !SessionObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion)) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Session read"); } // Active mission int?activeMissionID = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!activeMissionID.HasValue) { return(NetworkError()); } this.ActiveMissionID = activeMissionID.Value; MyMwcLog.IfNetVerbose_AddToLog("Active Mission ID: " + this.ActiveMissionID); // Events int?countEvents = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (countEvents == null) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Count Events: " + countEvents); EventLogObjectBuilder = new List <MyMwcObjectBuilder_Event>(countEvents.Value); for (int i = 0; i < countEvents; i++) { var eventItem = ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Event; if (eventItem == null) { return(NetworkError()); } if (eventItem.Read(binaryReader, senderEndPoint, gameVersion) == false) { return(NetworkError()); } EventLogObjectBuilder.Add(eventItem); } // Faction relation changes int?countFactionRelationChanges = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (countFactionRelationChanges == null) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Factoin Relation Changes: " + countFactionRelationChanges); FactionRelationChangesBuilder = new List <MyMwcObjectBuilder_FactionRelationChange>(countFactionRelationChanges.Value); for (int i = 0; i < countFactionRelationChanges; i++) { var factionRelationChangeItem = ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_FactionRelationChange; if (factionRelationChangeItem == null) { return(NetworkError()); } if (factionRelationChangeItem.Read(binaryReader, senderEndPoint, gameVersion) == false) { return(NetworkError()); } FactionRelationChangesBuilder.Add(factionRelationChangeItem); } // Inventory bool?inventoryBuilderExists = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (!inventoryBuilderExists.HasValue) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Inventory exists " + (InventoryObjectBuilder != null)); if (inventoryBuilderExists.Value) { InventoryObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Inventory; if (InventoryObjectBuilder == null || !InventoryObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion)) { return(NetworkError()); } MyMwcLog.IfNetVerbose_AddToLog("Inventory read"); } // Current sector identifier MyMwcSectorIdentifier?currentSector = MyMwcMessageIn.ReadSectorIdentifierEx(binaryReader, senderEndPoint); if (!currentSector.HasValue) { return(NetworkError()); } this.CurrentSector = currentSector.Value; // Checkpoint name bool?hasName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (!hasName.HasValue) { return(NetworkError()); } if (hasName.Value) { CheckpointName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint); if (CheckpointName == null) { return(NetworkError()); // Has name set and name null? That's can't happen } } else { CheckpointName = null; } Dictionary = MyMessageHelper.ReadStringDictionary(binaryReader, senderEndPoint); if (Dictionary == null) { return(NetworkError()); } return(true); }
// 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); }
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); }