Beispiel #1
0
        //  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());
            }

            // Ship Type
            MyMwcObjectBuilder_SmallDebris_TypesEnum?debrisType = MyMwcMessageIn.ReadObjectBuilderSmallDebrisTypesEnumEx(binaryReader, senderEndPoint);

            if (debrisType == null)
            {
                return(NetworkError());
            }
            DebrisType = debrisType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("DebrisType: " + DebrisType);

            //Immovable
            bool?immovable = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (immovable == null)
            {
                return(NetworkError());
            }
            Immovable = immovable.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Immovable: " + Immovable);

            return(true);
        }
Beispiel #2
0
        internal override bool Read(BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)
        {
            if (!base.Read(binaryReader, senderEndPoint, gameVersion))
            {
                return(NetworkError());
            }

            // Engine
            bool?engine = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (engine == null)
            {
                return(NetworkError());
            }
            Engine = engine.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Engine: " + Engine);

            // RadarType
            byte?radarType = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);

            if (radarType == null)
            {
                return(NetworkError());
            }
            RadarType = radarType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("RadarType: " + RadarType);

            // BackCamera
            bool?backCamera = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (backCamera == null)
            {
                return(NetworkError());
            }
            BackCamera = backCamera.Value;
            MyMwcLog.IfNetVerbose_AddToLog("BackCamera: " + BackCamera);

            // MovementSlowdown
            bool?movementSlowdown = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (movementSlowdown == null)
            {
                return(NetworkError());
            }
            MovementSlowdown = movementSlowdown.Value;
            MyMwcLog.IfNetVerbose_AddToLog("MovementSlowdown: " + MovementSlowdown);

            // ViewMode
            byte?viewMode = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);

            if (viewMode == null)
            {
                return(NetworkError());
            }
            ViewMode = viewMode.Value;
            MyMwcLog.IfNetVerbose_AddToLog("ViewMode: " + ViewMode);

            return(true);
        }
        //  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());
            }

            //  Use Type
            int?useType = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (useType == null)
            {
                return(NetworkError());
            }
            UseType = useType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("UseType: " + UseType);

            //  Hack Type
            int?hackType = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (hackType == null)
            {
                return(NetworkError());
            }
            HackType = hackType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("HackType: " + HackType);

            //  Hacking Level
            int?hackingLevel = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (hackingLevel == null)
            {
                return(NetworkError());
            }
            HackingLevel = hackingLevel.Value;
            MyMwcLog.IfNetVerbose_AddToLog("HackingLevel: " + HackingLevel);

            //  Hacking Time
            int?hackingTime = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (hackingTime == null)
            {
                return(NetworkError());
            }
            HackingTime = hackingTime.Value;
            MyMwcLog.IfNetVerbose_AddToLog("HackingTime: " + HackingTime);

            //  Is Hacked
            bool?isHacked = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isHacked == null)
            {
                return(NetworkError());
            }
            IsHacked = isHacked.Value;
            MyMwcLog.IfNetVerbose_AddToLog("IsHacked: " + IsHacked);

            return(true);
        }
        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)
        {
            if (!base.Read(binaryReader, senderEndPoint, gameVersion))
            {
                return(NetworkError());
            }

            // ObjectList
            int?countLinks = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (countLinks == null)
            {
                return(NetworkError());
            }
            MyMwcLog.IfNetVerbose_AddToLog("countLinks: " + countLinks);
            Links = new List <LinkElement>(countLinks.Value);
            for (int i = 0; i < countLinks; i++)
            {
                int?entityId = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);
                if (entityId == null)
                {
                    return(NetworkError());
                }
                MyMwcLog.IfNetVerbose_AddToLog(string.Format("Links[{0}].EntityId: {1}", i, entityId));

                short?index = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);
                if (index == null)
                {
                    return(NetworkError());
                }
                MyMwcLog.IfNetVerbose_AddToLog(string.Format("Links[{0}].Index: {1}", i, index));

                bool?hasSnapPointName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);
                if (!hasSnapPointName.HasValue)
                {
                    return(NetworkError());
                }
                if (hasSnapPointName.Value)
                {
                    string snapPointName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);
                    if (snapPointName == null)
                    {
                        return(NetworkError());
                    }
                    MyMwcLog.IfNetVerbose_AddToLog(string.Format("Links[{0}].SnapPointName: {1}", i, snapPointName));
                    Links.Add(new LinkElement((uint)entityId.Value, index.Value, snapPointName));
                }
                else
                {
                    MyMwcLog.IfNetVerbose_AddToLog("Links[{0}].SnapPointName: null");
                    Links.Add(new LinkElement((uint)entityId.Value, index.Value, null));
                }
            }

            return(true);
        }
Beispiel #5
0
        //  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());
            }

            //  Inventory
            bool?isInventory = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isInventory == null)
            {
                return(NetworkError());
            }
            if (isInventory.Value)
            {
                Inventory = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Inventory;
                if (Inventory == null)
                {
                    return(NetworkError());
                }
                if (Inventory.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                Inventory = null;
            }
            Faction = (MyMwcObjectBuilder_FactionEnum)MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            bool?hasDisplayName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasDisplayName.HasValue)
            {
                return(NetworkError());
            }
            if (hasDisplayName.Value)
            {
                string displayName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);
                if (displayName == null)
                {
                    return(NetworkError());
                }
                MyMwcLog.IfNetVerbose_AddToLog("DisplayName: " + displayName);
                DisplayName = displayName;
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("DisplayName: " + "null");
                DisplayName = null;
            }

            return(true);
        }
        //  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());
            }

            //  Amount
            float?amount = MyMwcMessageIn.ReadFloat(binaryReader);

            if (amount == null)
            {
                return(NetworkError());
            }
            Amount = amount.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Amount: " + Amount);
            if (float.IsNaN(Amount) || float.IsInfinity(Amount))
            {
                System.Diagnostics.Debug.Fail("Amount is: " + Amount);
                Amount = DEFAULT_AMOUNT;
            }

            //  Object builder
            bool?isObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isObjectBuilder == null)
            {
                return(NetworkError());
            }
            if (isObjectBuilder.Value)
            {
                ObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint);
                if (ObjectBuilder == null)
                {
                    return(NetworkError());
                }
                if (ObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                ObjectBuilder = null;
            }

            return(true);
        }
        //  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());
            }

            // Asteroid Type
            MyMwcObjectBuilder_StaticAsteroid_TypesEnum?asteroidType = MyMwcMessageIn.ReadObjectBuilderStaticAsteroidTypesEnumEx(binaryReader, senderEndPoint);

            if (asteroidType == null)
            {
                return(NetworkError());
            }
            AsteroidType = asteroidType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("AsteroidType: " + AsteroidType);

            // Asteroid Material
            bool?hasId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasId.HasValue)
            {
                return(NetworkError());                 // Cannot read bool - whether owner asteroid material is null or not
            }
            MyMwcLog.IfNetVerbose_AddToLog("MyMwcObjectBuilder_StaticAsteroid.AsteroidMaterial.HasValue: " + hasId.Value);

            // Testing whether Asteroid Material is null
            if (hasId.Value)
            {
                // asteroid material has value - read the value
                byte?asteroidMaterial = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);
                if (!asteroidMaterial.HasValue)
                {
                    return(NetworkError());                            // Cannot read asteroid material
                }
                MyMwcLog.IfNetVerbose_AddToLog("MyMwcObjectBuilder_StaticAsteroid.AsteroidMaterial.Value: " + asteroidMaterial.Value);
                this.AsteroidMaterial = (MyMwcVoxelMaterialsEnum)asteroidMaterial.Value;
            }
            else
            {
                this.AsteroidMaterial = null;
            }

            return(true);
        }
        //  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());
            }

            MyMwcPositionAndOrientation?objectPositionAndOrientation = MyMwcMessageIn.ReadPositionAndOrientationEx(binaryReader, senderEndPoint);

            if (objectPositionAndOrientation == null)
            {
                return(NetworkError());
            }
            MyMwcLog.IfNetVerbose_AddToLog("objectPositionAndOrientation: " + objectPositionAndOrientation.ToString());

            PositionAndOrientation = objectPositionAndOrientation.Value;

            MyMwcVoxelHandModeTypeEnum?voxelHandModeType = MyMwcMessageIn.ReadVoxelHandModeTypeEnumEx(binaryReader, senderEndPoint);

            if (voxelHandModeType == null)
            {
                return(NetworkError());
            }
            VoxelHandModeType = voxelHandModeType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("VoxelHandModeType: " + VoxelHandModeType.ToString());

            bool?isVoxelMaterial = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isVoxelMaterial == null)
            {
                return(NetworkError());
            }
            if (isVoxelMaterial.Value)
            {
                VoxelHandMaterial = MyMwcMessageIn.ReadVoxelMaterialsEnumEx(binaryReader, senderEndPoint);
            }
            else
            {
                VoxelHandMaterial = null;
            }

            return(true);
        }
Beispiel #9
0
        //  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());
            }

            //  Amount
            float?amount = MyMwcMessageIn.ReadFloat(binaryReader);

            if (amount == null)
            {
                return(NetworkError());
            }
            Amount = amount.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Amount: " + Amount);

            //  Item's objectbuilder
            bool?isItemObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isItemObjectBuilder == null)
            {
                return(NetworkError());
            }
            if (isItemObjectBuilder.Value)
            {
                ItemObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Base;
                if (ItemObjectBuilder == null)
                {
                    return(NetworkError());
                }
                if (ItemObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                ItemObjectBuilder = null;
            }

            return(true);
        }
Beispiel #10
0
        internal override bool Read(System.IO.BinaryReader binaryReader, System.Net.EndPoint senderEndPoint, int gameVersion)
        {
            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false)
            {
                return(NetworkError());
            }

            // Direction
            Vector3?direction = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);

            if (direction == null)
            {
                return(NetworkError());
            }
            Direction = direction.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Direction: " + Direction);

            // Effect ID
            bool?hasId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasId.HasValue)
            {
                return(NetworkError());                 // Cannot read bool
            }
            MyMwcLog.IfNetVerbose_AddToLog("MyMwcObjectBuilder_Meteor.EffectID.HasValue: " + hasId.Value);

            // Testing whether Effect ID is null
            if (hasId.Value)
            {
                // effect id has value - read the value
                EffectID = MyMwcMessageIn.ReadInt16(binaryReader);

                MyMwcLog.IfNetVerbose_AddToLog("MyMwcObjectBuilder_Meteor.EffectID.Value: " + EffectID.Value);
            }
            else
            {
                this.EffectID = null;
            }

            return(true);
        }
        private bool Read01085002(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)
        {
            var droneType = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);

            if (droneType == null)
            {
                return(false);
            }
            DroneType = (MyMwcObjectBuilder_Drone_TypesEnum)droneType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("DroneType: " + DroneType);

            // Owner Ship
            bool?hasId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasId.HasValue)
            {
                return(NetworkError());                 // Cannot read bool - whether owner entity id is null or not
            }
            MyMwcLog.IfNetVerbose_AddToLog("MyMwcObjectBuilder_Drone.OwnerEntityId.HasValue: " + hasId.Value);

            // Testing whether owner entity id is null
            if (hasId.Value)
            {
                // entity id has value - read the value
                uint?ownerEntityID = MyMwcMessageIn.ReadUInt32Ex(binaryReader, senderEndPoint);
                if (!ownerEntityID.HasValue)
                {
                    return(NetworkError());                         // Cannot read owner entity ID
                }
                MyMwcLog.IfNetVerbose_AddToLog("MyMwcObjectBuilder_Drone.OwnerEntityId.Value: " + ownerEntityID.Value);
                this.OwnerId = ownerEntityID.Value;
            }
            else
            {
                this.OwnerId = null;
            }

            return(true);
        }
Beispiel #12
0
        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)
        {
            if (!base.Read(binaryReader, senderEndPoint, gameVersion))
            {
                return(NetworkError());
            }

            //  ID
            int?id = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (id == null)
            {
                return(NetworkError());
            }
            ID = id.Value;
            MyMwcLog.IfNetVerbose_AddToLog("ID: " + ID);

            //  Name
            bool?hasName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasName.HasValue)
            {
                return(NetworkError());
            }
            if (hasName.Value)
            {
                string name = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);
                if (name == null)
                {
                    return(NetworkError());
                }
                MyMwcLog.IfNetVerbose_AddToLog("Name: " + Name);
                Name = name;
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("Name: " + "null");
                Name = null;
            }

            //  Builder
            bool?hasBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (hasBuilder == null)
            {
                return(NetworkError());
            }
            if (hasBuilder.Value)
            {
                Builder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SmallShip;
                if (Builder == null)
                {
                    return(NetworkError());
                }
                if (Builder.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                Builder = null;
            }

            return(true);
        }
Beispiel #13
0
        //  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());
            }

            //  Is building
            bool?isBuilding = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isBuilding == null)
            {
                return(NetworkError());
            }
            IsBuilding = isBuilding.Value;
            MyMwcLog.IfNetVerbose_AddToLog("IsBuilding: " + IsBuilding);

            //  Building time from start
            int?buildingTimeFromStart = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (buildingTimeFromStart == null)
            {
                return(NetworkError());
            }
            BuildingTimeFromStart = buildingTimeFromStart.Value;
            MyMwcLog.IfNetVerbose_AddToLog("BuildingTimeFromStart: " + BuildingTimeFromStart);

            //  Prefab container
            bool?isPrefabContainer = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isPrefabContainer == null)
            {
                return(NetworkError());
            }
            if (isPrefabContainer.Value)
            {
                PrefabContainer = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_PrefabContainer;
                if (PrefabContainer == null)
                {
                    return(NetworkError());
                }
                if (PrefabContainer.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                PrefabContainer = null;
            }

            //  Building queue
            int?countBuildingQueueObjects = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (countBuildingQueueObjects == null)
            {
                return(NetworkError());
            }
            MyMwcLog.IfNetVerbose_AddToLog("CountBuildingQueueObjects: " + countBuildingQueueObjects);
            BuildingQueue = new List <MyMwcObjectBuilder_ObjectToBuild>(countBuildingQueueObjects.Value);
            for (int i = 0; i < countBuildingQueueObjects; i++)
            {
                MyMwcObjectBuilder_ObjectToBuild objectToBuild = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ObjectToBuild;
                if (objectToBuild == null)
                {
                    return(NetworkError());
                }
                if (objectToBuild.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
                BuildingQueue.Add(objectToBuild);
            }

            //  Building object
            bool?isBuildingObject = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isBuildingObject == null)
            {
                return(NetworkError());
            }
            if (isBuildingObject.Value)
            {
                BuildingObject = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ObjectToBuild;
                if (BuildingObject == null)
                {
                    return(NetworkError());
                }
                if (BuildingObject.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                BuildingObject = null;
            }

            return(true);
        }
        //  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());
            }

            // Health
            float?health = MyMwcMessageIn.ReadFloat(binaryReader);

            if (health == null)
            {
                return(NetworkError());
            }
            Health = health.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Health: " + Health);

            // Money
            float?money = MyMwcMessageIn.ReadFloat(binaryReader);

            if (money == null)
            {
                return(NetworkError());
            }
            Money = money.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Money: " + Money);

            // Without oxygen
            float?withoutOxygen = MyMwcMessageIn.ReadFloat(binaryReader);

            if (withoutOxygen == null)
            {
                return(NetworkError());
            }
            WithoutOxygen = withoutOxygen.Value;
            MyMwcLog.IfNetVerbose_AddToLog("WithoutOxygen: " + WithoutOxygen);

            //  Player statistic's objectbuilder
            bool?isPlayerStatisticsObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isPlayerStatisticsObjectBuilder == null)
            {
                return(NetworkError());
            }
            if (isPlayerStatisticsObjectBuilder.Value)
            {
                PlayerStatisticsObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_PlayerStatistics;
                if (PlayerStatisticsObjectBuilder == null)
                {
                    return(NetworkError());
                }
                if (PlayerStatisticsObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                PlayerStatisticsObjectBuilder = null;
            }

            //  Ship's objectbuilder
            bool?isShipObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isShipObjectBuilder == null)
            {
                return(NetworkError());
            }
            if (isShipObjectBuilder.Value)
            {
                ShipObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SmallShip;
                if (ShipObjectBuilder == null)
                {
                    return(NetworkError());
                }
                if (ShipObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                ShipObjectBuilder = null;
            }

            //  ShipConfig's objectbuilder
            bool?isShipConfigObjectBuilder = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isShipConfigObjectBuilder == null)
            {
                return(NetworkError());
            }
            if (isShipConfigObjectBuilder.Value)
            {
                ShipConfigObjectBuilder = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_ShipConfig;
                if (ShipConfigObjectBuilder == null)
                {
                    return(NetworkError());
                }
                if (ShipConfigObjectBuilder.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                ShipConfigObjectBuilder = null;
            }

            return(true);
        }
Beispiel #16
0
        //  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());
            }

            //  Inventory items
            int?countInventoryItems = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (countInventoryItems == null)
            {
                return(NetworkError());
            }
            MyMwcLog.IfNetVerbose_AddToLog("countInventoryItems: " + countInventoryItems);
            InventoryItems = new List <MyMwcObjectBuilder_InventoryItem>(countInventoryItems.Value);
            for (int i = 0; i < countInventoryItems; i++)
            {
                MyMwcObjectBuilder_InventoryItem inventoryItem = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_InventoryItem;
                if (inventoryItem == null)
                {
                    return(NetworkError());
                }
                if (inventoryItem.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }

                if (!MyMwcObjectBuilder_InventoryItem.IsDisabled(inventoryItem))
                {
                    InventoryItems.Add(inventoryItem);
                }
            }

            // Max items
            int?maxItems = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (maxItems == null)
            {
                return(NetworkError());
            }
            MaxItems = maxItems.Value;
            MyMwcLog.IfNetVerbose_AddToLog("MaxItems: " + MaxItems);

            // Price coeficient
            bool?hasPriceCoeficient = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasPriceCoeficient.HasValue)
            {
                return(NetworkError());
            }
            if (hasPriceCoeficient.Value)
            {
                float?priceCoeficient = MyMwcMessageIn.ReadFloat(binaryReader);
                if (priceCoeficient == null)
                {
                    return(NetworkError());
                }
                PriceCoeficient = priceCoeficient.Value;
                MyMwcLog.IfNetVerbose_AddToLog("PriceCoeficient: " + PriceCoeficient.Value);
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("PriceCoeficient is: null");
                PriceCoeficient = null;
            }

            // Inventory template type
            bool?hasInventoryTemplateType = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasInventoryTemplateType.HasValue)
            {
                return(NetworkError());
            }
            if (hasInventoryTemplateType.Value)
            {
                MyMwcInventoryTemplateTypeEnum?inventoryTemplateType = MyMwcMessageIn.ReadObjectBuilderInventoryTemplateTypesEnumEx(binaryReader, senderEndPoint);
                if (inventoryTemplateType == null)
                {
                    return(NetworkError());
                }
                TemplateType = inventoryTemplateType.Value;
                MyMwcLog.IfNetVerbose_AddToLog("TemplateType: " + TemplateType.Value);
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("TemplateType is: null");
                TemplateType = null;
            }

            // Unlimited capacity
            bool?unlimitedCapacity = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (unlimitedCapacity == null)
            {
                return(NetworkError());
            }
            UnlimitedCapacity = unlimitedCapacity.Value;
            MyMwcLog.IfNetVerbose_AddToLog("UnlimitedCapacity: " + UnlimitedCapacity);

            return(true);
        }
        private bool Read_01085000(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)
        {
// PrefabType
            int?prefabObjectBuilderId = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (prefabObjectBuilderId == null)
            {
                return(NetworkError());
            }
            PrefabObjectBuilderId = prefabObjectBuilderId.Value;
            MyMwcLog.IfNetVerbose_AddToLog("PrefabObjectBuilderId: " + PrefabObjectBuilderId);

            // PositionInContainer
            MyMwcVector3Short?positionInContainer = MyMwcMessageIn.ReadVector3ShortEx(binaryReader, senderEndPoint);

            if (positionInContainer == null)
            {
                return(NetworkError());
            }
            PositionInContainer = positionInContainer.Value;
            MyMwcLog.IfNetVerbose_AddToLog("PositionInContainer: " + PositionInContainer);

            // AnglesInContainer
            Vector3?anglesInContainer = MyMwcMessageIn.ReadVector3FloatEx(binaryReader, senderEndPoint);

            if (anglesInContainer == null)
            {
                return(NetworkError());
            }
            AnglesInContainer = anglesInContainer.Value;
            MyMwcLog.IfNetVerbose_AddToLog("AnglesInContainer: " + AnglesInContainer.ToString());

            bool?hasMaxHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasMaxHealth.HasValue)
            {
                return(NetworkError());
            }
            if (hasMaxHealth.Value)
            {
                // PrefabMaxHealth
                float?prefabMaxHealth = MyMwcMessageIn.ReadFloat(binaryReader);
                if (prefabMaxHealth == null)
                {
                    return(NetworkError());
                }
                PrefabMaxHealth = prefabMaxHealth.Value;
                MyMwcLog.IfNetVerbose_AddToLog("PrefabMaxHealth: " + PrefabMaxHealth.Value.ToString());
                if (float.IsNaN(PrefabMaxHealth.Value) || float.IsInfinity(PrefabMaxHealth.Value))
                {
                    System.Diagnostics.Debug.Fail("PrefabMaxHealth is: " + PrefabMaxHealth.Value);
                    PrefabMaxHealth = null; // MyGameplayConstants.MAX_HEALTH_MAX;
                }
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("PrefabMaxHealth is: null");
                PrefabMaxHealth = null;
            }

            // PrefabHealthRatio
            float?prefabHealthRatio = MyMwcMessageIn.ReadFloat(binaryReader);

            if (prefabHealthRatio == null)
            {
                return(NetworkError());
            }
            PrefabHealthRatio = prefabHealthRatio.Value;
            MyMwcLog.IfNetVerbose_AddToLog("PrefabHealth: " + PrefabHealthRatio.ToString());

            bool?hasDisplayName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasDisplayName.HasValue)
            {
                return(NetworkError());
            }
            if (hasDisplayName.Value)
            {
                string displayName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);
                if (displayName == null)
                {
                    return(NetworkError());
                }
                MyMwcLog.IfNetVerbose_AddToLog("DisplayName: " + displayName);
                DisplayName = displayName;
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("DisplayName: " + "null");
                DisplayName = null;
            }

            // faction appearance (texture set)
            short?factionAppearance = MyMwcMessageIn.ReadInt16Ex(binaryReader, senderEndPoint);

            if (!factionAppearance.HasValue)
            {
                return(NetworkError());
            }
            FactionAppearance = (MyMwcObjectBuilder_Prefab_AppearanceEnum)factionAppearance.Value;
            MyMwcLog.IfNetVerbose_AddToLog("FactionAppearance: " + FactionAppearance);

            //  Use Properties
            bool?hasUseProperties = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (hasUseProperties == null)
            {
                return(NetworkError());
            }
            if (hasUseProperties.Value)
            {
                UseProperties =
                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as
                    MyMwcObjectBuilder_EntityUseProperties;
                if (UseProperties == null)
                {
                    return(NetworkError());
                }
                if (UseProperties.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                UseProperties = null;
            }

            // Causes Alarm
            bool?hasCausesAlarm = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasCausesAlarm.HasValue)
            {
                return(NetworkError());
            }
            if (hasCausesAlarm.Value)
            {
                bool?causesAlarm = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);
                if (!causesAlarm.HasValue)
                {
                    return(NetworkError());
                }
                MyMwcLog.IfNetVerbose_AddToLog("CausesAlarm: " + CausesAlarm);
                CausesAlarm = causesAlarm.Value;
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("CausesAlarm: " + "null");
                CausesAlarm = null;
            }

            // Requires Energy
            bool?hasRequiresEnergy = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasRequiresEnergy.HasValue)
            {
                return(NetworkError());
            }
            if (hasRequiresEnergy.Value)
            {
                bool?requiresEnergy = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);
                if (!requiresEnergy.HasValue)
                {
                    return(NetworkError());
                }
                MyMwcLog.IfNetVerbose_AddToLog("RequiresEnergy: " + RequiresEnergy);
                RequiresEnergy = requiresEnergy.Value;
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("RequiresEnergy: " + "null");
                RequiresEnergy = null;
            }

            // Display HUD
            bool?hasDisplayHud = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasDisplayHud.HasValue)
            {
                return(NetworkError());
            }
            if (hasDisplayHud.Value)
            {
                bool?displayHud = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);
                if (!displayHud.HasValue)
                {
                    return(NetworkError());
                }
                if (displayHud.Value)
                {
                    PersistentFlags |= MyPersistentEntityFlags.DisplayOnHud;
                }
                else
                {
                    PersistentFlags &= ~MyPersistentEntityFlags.DisplayOnHud;
                }
                MyMwcLog.IfNetVerbose_AddToLog("DisplayHud: " + displayHud.Value);
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("DisplayHud: " + "null");
            }

            // AI Priority
            int?aiPriority = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (aiPriority == null)
            {
                return(NetworkError());
            }
            AIPriority = aiPriority.Value;
            MyMwcLog.IfNetVerbose_AddToLog("AIPriority: " + AIPriority);

            return(true);
        }
        //  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());
            }

            // Prefab parts healths and max healths
            for (int i = 0; i < MAX_KINEMATIC_PARTS; i++)
            {
                bool?hasPrefabHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);
                if (!hasPrefabHealth.HasValue)
                {
                    return(NetworkError());
                }
                if (hasPrefabHealth.Value)
                {
                    float prefabHealth = MyMwcMessageIn.ReadFloat(binaryReader);
                    if (prefabHealth == null)
                    {
                        return(NetworkError());
                    }
                    MyMwcLog.IfNetVerbose_AddToLog("PrefabHealth" + (i + 1) + ": " + prefabHealth);
                    KinematicPartsHealth[i] = prefabHealth;
                }
                else
                {
                    MyMwcLog.IfNetVerbose_AddToLog("PrefabHealth" + (i + 1) + ": " + "null");
                    KinematicPartsHealth[i] = null;
                }

                bool?hasPrefabMaxHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);
                if (!hasPrefabMaxHealth.HasValue)
                {
                    return(NetworkError());
                }
                if (hasPrefabMaxHealth.Value)
                {
                    float prefabMaxHealth = MyMwcMessageIn.ReadFloat(binaryReader);
                    if (prefabMaxHealth == null)
                    {
                        return(NetworkError());
                    }
                    MyMwcLog.IfNetVerbose_AddToLog("PrefabMaxHealth" + (i + 1) + ": " + prefabMaxHealth);
                    KinematicPartsMaxHealth[i] = prefabMaxHealth;
                }
                else
                {
                    MyMwcLog.IfNetVerbose_AddToLog("PrefabMaxHealth" + (i + 1) + ": " + "null");
                    KinematicPartsMaxHealth[i] = null;
                }

                bool?hasEntityId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);
                if (!hasEntityId.HasValue)
                {
                    return(NetworkError());
                }
                if (hasEntityId.Value)
                {
                    uint?entityId = MyMwcMessageIn.ReadUInt32Ex(binaryReader, senderEndPoint);
                    if (entityId == null)
                    {
                        return(NetworkError());
                    }
                    MyMwcLog.IfNetVerbose_AddToLog("EntityId" + (i + 1) + ": " + entityId);
                    KinematicPartsEntityId[i] = entityId;
                }
                else
                {
                    MyMwcLog.IfNetVerbose_AddToLog("EntityId" + (i + 1) + ": " + "null");
                    KinematicPartsEntityId[i] = null;
                }
            }

            return(true);
        }
Beispiel #19
0
        private bool Read_01085002(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)
        {
            //  Ship Type
            byte?objectBuilderID = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);

            if (objectBuilderID == null)
            {
                return(NetworkError());
            }
            SetObjectBuilderId(objectBuilderID.Value);
            MyMwcLog.IfNetVerbose_AddToLog("ShipType: " + objectBuilderID.Value);

            //  Weapons And Devices
            int?countWeapons = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (countWeapons == null)
            {
                return(NetworkError());
            }
            MyMwcLog.IfNetVerbose_AddToLog("countWeaponsAndDevices: " + countWeapons);
            Weapons = new List <MyMwcObjectBuilder_SmallShip_Weapon>(countWeapons.Value);
            for (int i = 0; i < countWeapons; i++)
            {
                MyMwcObjectBuilder_SmallShip_Weapon newWAD =
                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as
                    MyMwcObjectBuilder_SmallShip_Weapon;
                if (newWAD == null)
                {
                    return(NetworkError());
                }
                if (newWAD.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
                Weapons.Add(newWAD);
            }

            //  Assignment of ammo
            int?countAssignAmmo = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (countAssignAmmo == null)
            {
                return(NetworkError());
            }
            MyMwcLog.IfNetVerbose_AddToLog("countAssignAmmo: " + countAssignAmmo);
            AssignmentOfAmmo = new List <MyMwcObjectBuilder_AssignmentOfAmmo>(countAssignAmmo.Value);
            for (int i = 0; i < countAssignAmmo; i++)
            {
                MyMwcObjectBuilder_AssignmentOfAmmo newAssignAmmo =
                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as
                    MyMwcObjectBuilder_AssignmentOfAmmo;
                if (newAssignAmmo == null)
                {
                    return(NetworkError());
                }
                if (newAssignAmmo.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
                AssignmentOfAmmo.Add(newAssignAmmo);
            }


            //  Engine
            bool?isEngine = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isEngine == null)
            {
                return(NetworkError());
            }
            if (isEngine.Value)
            {
                Engine =
                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as
                    MyMwcObjectBuilder_SmallShip_Engine;
                if (Engine == null)
                {
                    return(NetworkError());
                }
                if (Engine.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                Engine = null;
            }

            //  Armor
            bool?isArmor = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isArmor == null)
            {
                return(NetworkError());
            }
            if (isArmor.Value)
            {
                Armor =
                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as
                    MyMwcObjectBuilder_SmallShip_Armor;
                if (Armor == null)
                {
                    return(NetworkError());
                }
                if (Armor.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                Armor = null;
            }

            //  Radar
            bool?isRadar = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isRadar == null)
            {
                return(NetworkError());
            }
            if (isRadar.Value)
            {
                Radar =
                    MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as
                    MyMwcObjectBuilder_SmallShip_Radar;
                if (Radar == null)
                {
                    return(NetworkError());
                }
                if (Radar.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                Radar = null;
            }

            bool?hasMaxHealth = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasMaxHealth.HasValue)
            {
                return(NetworkError());
            }
            if (hasMaxHealth.Value)
            {
                //  Ship max health
                float?shipMaxHealth = MyMwcMessageIn.ReadFloat(binaryReader);
                if (shipMaxHealth == null)
                {
                    return(NetworkError());
                }
                ShipMaxHealth = shipMaxHealth.Value;
                MyMwcLog.IfNetVerbose_AddToLog("ShipMaxHealth: " + ShipMaxHealth.Value);

                if (float.IsNaN(ShipMaxHealth.Value) || float.IsInfinity(ShipMaxHealth.Value))
                {
                    System.Diagnostics.Debug.Fail("ShipMaxHealth is: " + ShipMaxHealth.Value);
                    ShipMaxHealth = null; // MyGameplayConstants.MAX_HEALTH_MAX;
                }
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("ShipMaxHealth is: null");
                ShipMaxHealth = null;
            }

            //  Ship health ratio
            float?shipHealthRatio = MyMwcMessageIn.ReadFloat(binaryReader);

            if (shipHealthRatio == null)
            {
                return(NetworkError());
            }
            ShipHealthRatio = shipHealthRatio.Value;
            MyMwcLog.IfNetVerbose_AddToLog("ShipHealthRatio: " + ShipHealthRatio);

            //  Armor health
            float?armorHealth = MyMwcMessageIn.ReadFloat(binaryReader);

            if (armorHealth == null)
            {
                return(NetworkError());
            }
            ArmorHealth = armorHealth.Value;
            MyMwcLog.IfNetVerbose_AddToLog("ArmorHealth: " + ArmorHealth);

            //  Oxygen
            float?oxygen = MyMwcMessageIn.ReadFloat(binaryReader);

            if (oxygen == null)
            {
                return(NetworkError());
            }
            Oxygen = oxygen.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Oxygen: " + Oxygen);

            //  Fuel
            float?fuel = MyMwcMessageIn.ReadFloat(binaryReader);

            if (fuel == null)
            {
                return(NetworkError());
            }
            Fuel = fuel.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Fuel: " + Fuel);

            // Reflector light
            bool?reflectorLight = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (reflectorLight == null)
            {
                return(NetworkError());
            }
            ReflectorLight = reflectorLight.Value;
            MyMwcLog.IfNetVerbose_AddToLog("ReflectorLight: " + ReflectorLight);

            // Reflector long range
            bool?reflectorLongRange = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (reflectorLongRange == null)
            {
                return(NetworkError());
            }
            ReflectorLongRange = reflectorLongRange.Value;
            MyMwcLog.IfNetVerbose_AddToLog("ReflectorLongRange: " + ReflectorLongRange);

            //  ReflectorShadowDistance
            float?reflectorShadowDistance = MyMwcMessageIn.ReadFloat(binaryReader);

            if (reflectorShadowDistance == null)
            {
                return(NetworkError());
            }
            ReflectorShadowDistance = reflectorShadowDistance.Value;
            MyMwcLog.IfNetVerbose_AddToLog("ReflectorShadowDistance: " + ReflectorShadowDistance);

            // AI Priority
            int?aiPriority = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (aiPriority == null)
            {
                return(NetworkError());
            }
            AIPriority = aiPriority.Value;
            MyMwcLog.IfNetVerbose_AddToLog("AIPriority: " + AIPriority);

            return(true);
        }
Beispiel #20
0
        private bool Read_01085002(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)
        {
            MyCommonDebugUtils.AssertDebug(Faction != 0);

            // AITemplate
            int?aiTemplate = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);

            if (aiTemplate == null)
            {
                return(NetworkError());
            }
            AITemplate = (MyAITemplateEnum)aiTemplate.Value;
            MyMwcLog.IfNetVerbose_AddToLog("AITemplate: " + AITemplate);

            //  Aggressivity
            float?aggressivity = MyMwcMessageIn.ReadFloat(binaryReader);

            if (aggressivity == null)
            {
                return(NetworkError());
            }
            Aggressivity = aggressivity.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Aggressivity: " + Aggressivity);

            // SeeDistance
            float?seeDistance = MyMwcMessageIn.ReadFloat(binaryReader);

            if (seeDistance == null)
            {
                return(NetworkError());
            }
            SeeDistance = seeDistance.Value;
            MyMwcLog.IfNetVerbose_AddToLog("SeeDistance: " + SeeDistance);

            // SleepDistance
            float?sleepDistance = MyMwcMessageIn.ReadFloat(binaryReader);

            if (sleepDistance == null)
            {
                return(NetworkError());
            }
            SleepDistance = sleepDistance.Value;
            MyMwcLog.IfNetVerbose_AddToLog("SleepDistance: " + SleepDistance);

            // Patrol mode
            int?patrolMode = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);

            if (patrolMode == null)
            {
                return(NetworkError());
            }
            PatrolMode = (MyPatrolMode)patrolMode.Value;
            MyMwcLog.IfNetVerbose_AddToLog("PatrolMode: " + PatrolMode);

            // Ship template ID
            bool?hasShipTemplateID = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasShipTemplateID.HasValue)
            {
                return(NetworkError());
            }

            if (hasShipTemplateID.Value)
            {
                int?shipTemplateID = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);
                if (shipTemplateID == null)
                {
                    return(NetworkError());
                }
                ShipTemplateID = shipTemplateID.Value;
                MyMwcLog.IfNetVerbose_AddToLog("ShipTemplateID: " + ShipTemplateID);
            }
            else
            {
                ShipTemplateID = null;
                MyMwcLog.IfNetVerbose_AddToLog("ShipTemplateID: null");
            }

            // Leader
            bool?hasLeader = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasLeader.HasValue)
            {
                return(NetworkError());
            }

            if (hasLeader.Value)
            {
                int?leader = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);
                if (!leader.HasValue)
                {
                    return(NetworkError());
                }

                Leader = (uint)leader.Value;
                MyMwcLog.IfNetVerbose_AddToLog("Leader: " + Leader);
            }
            else
            {
                Leader = null;
                MyMwcLog.IfNetVerbose_AddToLog("Leader: null");
            }

            // Idle Behavior
            byte?idleBehavior = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);

            if (!idleBehavior.HasValue)
            {
                NetworkError();
            }

            IdleBehavior = (BotBehaviorType)idleBehavior.Value;
            MyMwcLog.IfNetVerbose_AddToLog("IdleBehavior: " + IdleBehavior);

            // Leader Lost Enabled
            bool?leaderLostEnabled = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!leaderLostEnabled.HasValue)
            {
                return(NetworkError());
            }
            LeaderLostEnabled = leaderLostEnabled.Value;
            MyMwcLog.IfNetVerbose_AddToLog("LeaderLostEnabled: " + LeaderLostEnabled);

            // Active AI
            bool?activeAI = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!activeAI.HasValue)
            {
                return(NetworkError());
            }
            ActiveAI = activeAI.Value;
            MyMwcLog.IfNetVerbose_AddToLog("ActiveAI: " + ActiveAI);

            SlowDown = 1;

            return(true);
        }
        //  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());
            }

            // NumberOfTemplates (why?)
            int?tempcount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (tempcount == null)
            {
                return(NetworkError());
            }
            m_numberOfTemplates = tempcount.Value;
            MyMwcLog.IfNetVerbose_AddToLog("NumberOfTemplates: " + m_numberOfTemplates);

            // Bot Templates
            for (int c = 0; c < m_numberOfTemplates; c++)
            {
                MyMwcObjectBuilder_SmallShip_Bot nb = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SmallShip_Bot;
                if (nb == null || nb.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
                ShipTemplates.Add(nb);
            }

            // WayPointPath
            string pWPP = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);

            if (pWPP == null)
            {
                return(NetworkError());
            }
            WayPointPath = pWPP;
            MyMwcLog.IfNetVerbose_AddToLog("WayPointPath: " + WayPointPath);

            // Faction
            int?pFaction = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (pFaction == null)
            {
                return(NetworkError());
            }
            Faction = (MyMwcObjectBuilder_FactionEnum)pFaction.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Faction: " + Faction);

            // SpawnInGroups
            bool?spawnInGroups = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (spawnInGroups == null)
            {
                return(NetworkError());
            }
            SpawnInGroups = spawnInGroups.Value;
            MyMwcLog.IfNetVerbose_AddToLog("SpawnInGroups: " + SpawnInGroups);

            // SpawnCount
            int?spawnCount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (spawnCount == null)
            {
                return(NetworkError());
            }
            SpawnCount = spawnCount.Value;
            MyMwcLog.IfNetVerbose_AddToLog("SpawnCount: " + SpawnCount);

            // FirstSpawnTimer
            float?firstSpawnTimer = MyMwcMessageIn.ReadFloat(binaryReader);

            if (firstSpawnTimer == null)
            {
                return(NetworkError());
            }
            FirstSpawnTimer = firstSpawnTimer.Value;
            MyMwcLog.IfNetVerbose_AddToLog("FirstSpawnTimer: " + FirstSpawnTimer);

            // RespawnTimer
            float?respawnTimer = MyMwcMessageIn.ReadFloat(binaryReader);

            if (respawnTimer == null)
            {
                return(NetworkError());
            }
            RespawnTimer = respawnTimer.Value;
            MyMwcLog.IfNetVerbose_AddToLog("RespawnTimer: " + RespawnTimer);

            // BoundingRadius
            float?pBR = MyMwcMessageIn.ReadFloat(binaryReader);

            if (pBR == null)
            {
                return(NetworkError());
            }
            BoundingRadius = pBR.Value;
            MyMwcLog.IfNetVerbose_AddToLog("BoundingRadius: " + BoundingRadius);

            // Activated
            bool?activated = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (activated == null)
            {
                return(NetworkError());
            }
            Activated = activated.Value;
            MyMwcLog.IfNetVerbose_AddToLog("Activated: " + Activated);

            // Patrol mode
            int?patrolMode = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint);

            if (patrolMode == null)
            {
                return(NetworkError());
            }
            PatrolMode = (MyPatrolMode)patrolMode.Value;
            MyMwcLog.IfNetVerbose_AddToLog("PatrolMode: " + PatrolMode);

            return(true);
        }
Beispiel #22
0
        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);
        }
Beispiel #23
0
        //  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());
            }

            //  TemplateId
            bool?isTemplateId = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isTemplateId == null)
            {
                return(NetworkError());
            }
            if (isTemplateId.Value)
            {
                TemplateId = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);
            }
            else
            {
                TemplateId = null;
            }

            //  Container Type
            MyMwcObjectBuilder_PrefabContainer_TypesEnum?containerType = MyMwcMessageIn.ReadObjectBuilderPrefabContainerTypesEnumEx(binaryReader, senderEndPoint);

            if (containerType == null)
            {
                return(NetworkError());
            }
            ContainerType = containerType.Value;
            MyMwcLog.IfNetVerbose_AddToLog("ContainerType: " + ContainerType);

            // Faction
            Faction = (MyMwcObjectBuilder_FactionEnum)MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);
            // Faction must be defined
            System.Diagnostics.Debug.Assert(Enum.IsDefined(typeof(MyMwcObjectBuilder_FactionEnum), Faction));

            //  Prefabs
            int?countPrefabs = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);

            if (countPrefabs == null)
            {
                return(NetworkError());
            }
            MyMwcLog.IfNetVerbose_AddToLog("countPrefabs: " + countPrefabs);
            Prefabs = new List <MyMwcObjectBuilder_PrefabBase>(countPrefabs.Value);
            for (int i = 0; i < countPrefabs; i++)
            {
                MyMwcObjectBuilder_PrefabBase prefab = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_PrefabBase;
                if (prefab == null)
                {
                    return(NetworkError());
                }
                if (prefab.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
                Prefabs.Add(prefab);
            }

            //  Inventory
            bool?isInventory = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (isInventory == null)
            {
                return(NetworkError());
            }
            if (isInventory.Value)
            {
                Inventory = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_Inventory;
                if (Inventory == null)
                {
                    return(NetworkError());
                }
                if (Inventory.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                Inventory = null;
            }


            bool?hasDisplayName = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (!hasDisplayName.HasValue)
            {
                return(NetworkError());
            }
            if (hasDisplayName.Value)
            {
                string displayName = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint);
                if (displayName == null)
                {
                    return(NetworkError());
                }
                MyMwcLog.IfNetVerbose_AddToLog("DisplayName: " + displayName);
                DisplayName = displayName;
            }
            else
            {
                MyMwcLog.IfNetVerbose_AddToLog("DisplayName: " + "null");
                DisplayName = null;
            }

            //  Use Properties
            bool?hasUseProperties = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (hasUseProperties == null)
            {
                return(NetworkError());
            }
            if (hasUseProperties.Value)
            {
                UseProperties = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_EntityUseProperties;
                if (UseProperties == null)
                {
                    return(NetworkError());
                }
                if (UseProperties.Read(binaryReader, senderEndPoint, gameVersion) == false)
                {
                    return(NetworkError());
                }
            }
            else
            {
                UseProperties = null;
            }

            //  Alarm On
            bool?alarmOn = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (alarmOn == null)
            {
                return(NetworkError());
            }
            AlarmOn = alarmOn.Value;
            MyMwcLog.IfNetVerbose_AddToLog("AlarmOn: " + AlarmOn);

            //  Refill time
            bool?refillTime = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint);

            if (refillTime == null)
            {
                return(NetworkError());
            }
            if (refillTime.Value)
            {
                RefillTime = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint);
            }
            else
            {
                RefillTime = null;
            }

            return(true);
        }
Beispiel #24
0
        internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion)
        {
            if (base.Read(binaryReader, senderEndPoint, gameVersion) == false)
            {
                return(NetworkError());
            }

            bool?hasParent = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (!hasParent.HasValue)

            {
                return(NetworkError());
            }

            ParentEntityId = null;
            if (hasParent.Value)
            {
                int?id = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!id.HasValue)
                {
                    return(NetworkError());
                }
                ParentEntityId = id.Value;
                MyMwcLog.IfNetVerbose_AddToLog("Waypoint parent id: " + ParentEntityId.Value.ToString());
            }

            int?nCount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!nCount.HasValue)

            {
                return(NetworkError());
            }

            MyMwcLog.IfNetVerbose_AddToLog("Neighbor count: " + nCount.Value.ToString());
            NeighborEntityIds = new List <int>();
            for (int i = 0; i < nCount.Value; i++)
            {
                int?index = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!index.HasValue)
                {
                    return(NetworkError());
                }
                NeighborEntityIds.Add(index.Value);
            }

            int?gCount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!nCount.HasValue)

            {
                return(NetworkError());
            }

            MyMwcLog.IfNetVerbose_AddToLog("Group count: " + gCount.Value.ToString());
            GroupNames    = new List <string>();
            GroupPlacings = new List <int>();
            for (int i = 0; i < gCount.Value; i++)
            {
                string name = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint); if (name == null)
                {
                    return(NetworkError());
                }
                GroupNames.Add(name);
                int?placing = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (!placing.HasValue)
                {
                    return(NetworkError());
                }
                GroupPlacings.Add(placing.Value);
            }

            return(true);
        }