Beispiel #1
0
        internal override void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            var unknownBool = reader.ReadBoolean();

            if (!unknownBool)
            {
                throw new InvalidDataException();
            }

            _stateMachine.Load(reader);

            var unknownInt = reader.ReadUInt32();
        }
Beispiel #2
0
        internal void Load(SaveFileReader reader, Game game)
        {
            reader.ReadVersion(1);

            var numPlayers = reader.ReadUInt32();

            if (numPlayers != _players.Count)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < numPlayers; i++)
            {
                _players[i].Load(reader, game);
            }
        }
Beispiel #3
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            var valuesSpan = Values.AsSpan();

            reader.ReadSpan(valuesSpan);

            for (var i = 0; i < Values.Length; i++)
            {
                if (Values[i].Unknown != 0)
                {
                    throw new InvalidDataException();
                }
            }
        }
Beispiel #4
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            var numScripts = reader.ReadUInt16();

            if (numScripts != Scripts.Length)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < numScripts; i++)
            {
                Scripts[i].Load(reader);
            }
        }
Beispiel #5
0
        public void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            _nameLookup.Clear();

            var count = reader.ReadUInt32();

            for (var i = 0; i < count; i++)
            {
                var name = reader.ReadAsciiString();
                var id   = reader.ReadUInt16();

                _nameLookup.Add(id, name);
            }
        }
Beispiel #6
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            Name = reader.ReadAsciiString();

            var unknown = reader.ReadUInt32(); // Probably default value?

            var numTargets = reader.ReadUInt16();

            for (var i = 0; i < numTargets; i++)
            {
                var target = new AttackPriorityTarget();
                target.Load(reader);
                Targets.Add(target);
            }
        }
Beispiel #7
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            var unknown1 = reader.ReadUInt32();

            var count = reader.ReadUInt16();

            for (var i = 0; i < count; i++)
            {
                var id = reader.ReadUInt32();

                var teamTemplate = _teamTemplatesById[id];

                teamTemplate.Load(reader);
            }
        }
Beispiel #8
0
        internal override void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            base.Load(reader);

            var unknownPos = reader.ReadVector3();

            var unknownInt1 = reader.ReadUInt32();

            var unknownInt2 = reader.ReadUInt32();

            if (unknownInt2 != 0)
            {
                throw new InvalidDataException();
            }
        }
Beispiel #9
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            var numPoints = reader.ReadUInt32();

            if (numPoints != Points.Length)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < numPoints; i++)
            {
                Points[i] = MapVector3i.Parse(reader.Inner);
            }

            var topLeft     = reader.ReadPoint2D();
            var bottomRight = reader.ReadPoint2D();

            Bounds = Rectangle.FromCorners(topLeft, bottomRight);

            // The following value is what you get if you do this calculation:
            // width = (bottomRight.X - topLeft.X) * 0.5
            // height = (bottomRight.Y + topLeft.Y) * 0.5
            // value = sqrt(width * width + height * height)
            //
            // This looks like it's supposed to be a radius for this polygon trigger,
            // presumably used for quick distance tests prior to testing if
            // a point is inside the actual polygon.
            //
            // But there's a mistake... the height should instead be:
            // height = (bottomRight.Y - topLeft.Y) * 0.5
            //
            // As it is, this "radius" is significantly larger than it should be.
            var _ = reader.ReadSingle();

            Radius = MathF.Sqrt(Bounds.Width * Bounds.Width + Bounds.Height * Bounds.Height);

            var unknown = reader.ReadBoolean();

            if (unknown)
            {
                throw new InvalidDataException();
            }
        }
Beispiel #10
0
        internal void Load(SaveFileReader reader, GameLogic gameLogic, Game game)
        {
            reader.ReadVersion(1);
            reader.ReadVersion(1);

            var unknown1 = reader.ReadUInt32();

            var ghostObjectCount = reader.ReadUInt16();

            for (var i = 0; i < ghostObjectCount; i++)
            {
                var objectId   = reader.ReadObjectID();
                var gameObject = gameLogic.GetObjectById(objectId);

                var ghostObject = new GhostObject(); // TODO
                ghostObject.Load(reader, gameLogic, game);
            }
        }
Beispiel #11
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            reader.ReadVersion(2);

            var unknown = reader.ReadInt32();

            if (unknown != 0)
            {
                throw new InvalidDataException();
            }

            var unknown2 = reader.ReadInt32();

            if (unknown2 != 0)
            {
                throw new InvalidDataException();
            }
        }
Beispiel #12
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            var numSides = reader.ReadUInt32();

            if (numSides != ScriptLists.Length)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < numSides; i++)
            {
                var hasScripts = reader.ReadBoolean();
                if (hasScripts)
                {
                    ScriptLists[i].Load(reader);
                }
            }
        }
Beispiel #13
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            _lastTeamId = reader.ReadUInt32();

            var count = reader.ReadUInt16();

            if (count != _teamTemplatesById.Count)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < count; i++)
            {
                var id           = reader.ReadUInt32();
                var teamTemplate = _teamTemplatesById[id];
                teamTemplate.Load(reader);
            }
        }
Beispiel #14
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            // This is the object definition which defined the WeaponSet
            // (either a normal object or DefaultThingTemplate)
            var objectDefinitionName = reader.ReadAsciiString();

            var conditions = reader.ReadBitArray <WeaponSetConditions>();

            _currentWeaponTemplateSet = _gameObject.Definition.WeaponSets[conditions];

            // In Generals there are 3 possible weapons.
            // Later games have up to 5.
            for (var i = 0; i < 3; i++)
            {
                var slotFilled = reader.ReadBoolean();
                if (slotFilled)
                {
                    _weapons[i] = new Weapon(_gameObject, _currentWeaponTemplateSet.Slots[i].Weapon.Value, (WeaponSlot)i, _gameObject.GameContext);
                    _weapons[i].Load(reader);
                }
                else
                {
                    _weapons[i] = null;
                }
            }

            _currentWeaponSlot = reader.ReadEnum <WeaponSlot>();

            var unknown2 = reader.ReadUInt32();

            _filledWeaponSlots = reader.ReadUInt32();
            _combinedAntiMask  = reader.ReadEnumFlags <WeaponAntiFlags>();

            var unknown5 = reader.ReadUInt32();

            var unknownBool1 = reader.ReadBoolean();
            var unknownBool2 = reader.ReadBoolean();
        }
Beispiel #15
0
        public void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            Unknown1 = reader.ReadUInt32();

            TeamID            = reader.ReadUInt32();
            ScriptName        = reader.ReadAsciiString();
            ScriptActionIndex = reader.ReadUInt32();
            LoopsRemaining    = reader.ReadUInt32();

            Unknown2 = reader.ReadInt32();
            if (Unknown2 != -1)
            {
                throw new InvalidDataException();
            }

            Unknown3 = reader.ReadByte();
            if (Unknown3 != 0)
            {
                throw new InvalidDataException();
            }
        }
Beispiel #16
0
        private async void OpenLocalFileButton_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter = "Jsonファイル(*.json)|*.json";
            openFileDialog.Title  = "開く列車情報を選択";
            openFileDialog.ShowDialog();

            var file          = openFileDialog.FileName;
            var trainDataFile = TryPaeseTrainDataFile(file);

            if (trainDataFile != null)
            {
                this.SelectedSource = trainDataFile;
                this.Close();
            }
            else
            {
                var data = await SaveFileReader.ReadJsonDataAsync(file);

                this.SelectedSource = data;
                this.Close();
            }
        }
Beispiel #17
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(2);

            _playerId = reader.ReadUInt32();

            _attackPriorityName = reader.ReadAsciiString();

            var unknown2 = reader.ReadBoolean();

            _templateData.Load(reader);

            var teamCount = reader.ReadUInt16();

            for (var i = 0; i < teamCount; i++)
            {
                var id = reader.ReadUInt32();

                var team = new Team {
                    ID = id
                };
                team.Load(reader);
            }
        }
Beispiel #18
0
        internal void Load(SaveFileReader reader, GameLogic gameLogic, Game game)
        {
            reader.ReadVersion(1);
            reader.ReadVersion(1);

            var objectId = reader.ReadObjectID();

            _gameObject = gameLogic.GetObjectById(objectId);

            _geometryType = reader.ReadEnum <ObjectGeometry>();

            // Sometimes there's a 0xC0, when it should be 0x0.
            _geometryIsSmall = reader.ReadByte() == 1;

            _geometryMajorRadius = reader.ReadSingle();
            _geometryMinorRadius = reader.ReadSingle();

            _angle    = reader.ReadSingle();
            _position = reader.ReadVector3();

            var unknown6 = reader.ReadUInt32();

            if (unknown6 != 0)
            {
                throw new InvalidDataException();
            }

            var unknown7 = reader.ReadUInt32();

            if (unknown7 != 0)
            {
                throw new InvalidDataException();
            }

            var unknown8 = reader.ReadUInt32();

            if (unknown8 != 0)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < 16; i++)
            {
                var numModels = reader.ReadByte();

                if (numModels > 0 && i != 2)
                {
                    throw new InvalidDataException();
                }

                var modelInstances = new ModelInstance[numModels];

                for (var j = 0; j < numModels; j++)
                {
                    var modelName = reader.ReadAsciiString();

                    var model         = game.AssetStore.Models.GetByName(modelName);
                    var modelInstance = model.CreateInstance(game.AssetStore.LoadContext);
                    modelInstances[j] = modelInstance;

                    var scale = reader.ReadSingle();
                    if (scale != 1.0f)
                    {
                        throw new InvalidDataException();
                    }

                    var houseColor = reader.ReadColorRgba();
                    // TODO: Use house color.

                    reader.ReadVersion(1);

                    var modelTransform = reader.ReadMatrix4x3Transposed();

                    modelInstance.SetWorldMatrix(modelTransform.ToMatrix4x4());

                    var numMeshes = reader.ReadUInt32();
                    if (numMeshes > 0 && numMeshes != model.SubObjects.Length)
                    {
                        throw new InvalidDataException();
                    }

                    for (var k = 0; k < numMeshes; k++)
                    {
                        var meshName      = reader.ReadAsciiString();
                        var meshBool      = reader.ReadBoolean();
                        var meshTransform = reader.ReadMatrix4x3Transposed();

                        if (meshName != model.SubObjects[k].Name)
                        {
                            throw new InvalidDataException();
                        }

                        // TODO: meshTransform is actually absolute, not relative.
                        modelInstance.RelativeBoneTransforms[k] = meshTransform.ToMatrix4x4();
                    }
                }
            }

            var unknown = reader.ReadBoolean();

            if (unknown)
            {
                reader.ReadByte();
                reader.ReadUInt32();
            }
        }
Beispiel #19
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            var id = reader.ReadUInt32();

            if (id != Id)
            {
                throw new InvalidDataException();
            }

            var numObjects = reader.ReadUInt16();

            for (var i = 0; i < numObjects; i++)
            {
                ObjectIds.Add(reader.ReadObjectID());
            }

            for (var i = 0; i < 1; i++)
            {
                var unknownByte = reader.ReadByte();
                if (unknownByte != 0)
                {
                    throw new InvalidDataException();
                }
            }

            _enteredOrExitedPolygonTrigger = reader.ReadBoolean();

            _isAlive = reader.ReadBoolean();

            for (var i = 0; i < 5; i++)
            {
                var unknown1 = reader.ReadBoolean();
                if (unknown1 != false)
                {
                    throw new InvalidDataException();
                }
            }

            _numDestroyedSomething = reader.ReadUInt32();

            var unknown11 = reader.ReadUInt32();

            if (unknown11 != 0 && unknown11 != ObjectIds.Count)
            {
                throw new InvalidDataException();
            }

            var waypointID = reader.ReadUInt32();

            var unknown13 = reader.ReadUInt16();

            if (unknown13 != 16)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < unknown13; i++)
            {
                var unknown19 = reader.ReadBoolean();
                if (unknown19 != false)
                {
                    //throw new InvalidDataException();
                }
            }

            var unknown14 = reader.ReadBoolean();

            if (unknown14 != false)
            {
                throw new InvalidDataException();
            }

            var unknown15 = reader.ReadBoolean();

            if (unknown15 != false)
            {
                throw new InvalidDataException();
            }

            TargetObjectID = reader.ReadObjectID();

            TeamToTeamRelationships.Load(reader);
            TeamToPlayerRelationships.Load(reader);
        }
Beispiel #20
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            Status = reader.ReadEnum <UpgradeStatus>();
        }
Beispiel #21
0
        private async void MargeTrainDataButton_Click(object sender, RoutedEventArgs e)
        {
            var folderBrowserDialog = new FolderBrowserDialog()
            {
                Description = "結合対象の運行情報データがあるフォルダーを選択",
            };

            folderBrowserDialog.ShowDialog();

            var directories    = Directory.GetDirectories(folderBrowserDialog.SelectedPath);
            var directoryDatas = await Task.WhenAll(directories.Select(async dir => await Task.WhenAll(Directory.GetFiles(dir, "*.json")
                                                                                                       .Select(file => SaveFileReader.ReadJsonDataAsync(file)))));

            var dict   = GetTrainDataDictionary(directoryDatas);
            var result = dict.Select(kvp => TrainDataFile.MargeTrainDataFile(kvp.Value.ToArray()));

            var folderBrowserDialog2 = new FolderBrowserDialog()
            {
                Description = "結合結果の保存先を選択",
            };

            folderBrowserDialog2.ShowDialog();

            foreach (var data in result)
            {
                using (var streamWriter = new StreamWriter
                                              (folderBrowserDialog2.SelectedPath + $"\\{data.Station.Name} {data.GetedDateTime.ToString("yyyy-MM-dd")}.json", false, Encoding.UTF8))
                {
                    streamWriter.Write(JsonConvert.SerializeObject(AnalyzedTrainFile.FromTrainDataFile(data)));
                }
            }
        }
Beispiel #22
0
            internal override void Load(SaveFileReader reader)
            {
                reader.ReadVersion(2);

                var unknownInt = reader.ReadUInt32();
            }
Beispiel #23
0
 internal override void Load(SaveFileReader reader)
 {
     reader.ReadVersion(1);
 }
Beispiel #24
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            ProductionPriority = reader.ReadInt32();
        }
Beispiel #25
0
 internal abstract void Load(SaveFileReader reader);
Beispiel #26
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(5);

            var numSequentialScripts = reader.ReadUInt16();

            for (var i = 0; i < numSequentialScripts; i++)
            {
                var sequentialScript = new SequentialScript();
                sequentialScript.Load(reader);
            }

            var numTimersAndCounters = reader.ReadUInt32();

            var unknown2 = reader.ReadUInt32();

            if (unknown2 != 0)
            {
                throw new InvalidDataException();
            }

            for (var i = 1; i < numTimersAndCounters; i++)
            {
                var value  = reader.ReadInt32();
                var name   = reader.ReadAsciiString();
                var active = reader.ReadBoolean();
            }

            var numTimersAndCounters2 = reader.ReadUInt32();

            if (numTimersAndCounters2 != numTimersAndCounters)
            {
                throw new InvalidDataException();
            }

            var numFlags = reader.ReadUInt32();

            for (var i = 1; i < numFlags; i++)
            {
                var value = reader.ReadBoolean();
                var name  = reader.ReadAsciiString();
            }

            var numFlags2 = reader.ReadUInt32();

            if (numFlags2 != numFlags)
            {
                throw new InvalidDataException();
            }

            var numAttackPrioritySets = reader.ReadUInt16();

            reader.__Skip(8); // TODO

            for (var i = 1; i < numAttackPrioritySets; i++)
            {
                var attackPriority = new AttackPriority();
                attackPriority.Load(reader);
            }

            var numAttackPrioritySets2 = reader.ReadUInt32();

            if (numAttackPrioritySets2 != numAttackPrioritySets)
            {
                throw new InvalidDataException();
            }

            var unknown7 = reader.ReadInt32();

            if (unknown7 != -1)
            {
                throw new InvalidDataException();
            }

            var unknown8 = reader.ReadInt32();

            if (unknown8 != -1)
            {
                throw new InvalidDataException();
            }

            var unknownCount = reader.ReadUInt16();

            for (var i = 0; i < unknownCount; i++)
            {
                var objectName = reader.ReadAsciiString();
                var someId     = reader.ReadUInt32();
            }

            var unknown9 = reader.ReadByte();

            if (unknown9 != 0)
            {
                throw new InvalidDataException();
            }

            CameraFadeOverlay.Load(reader);

            reader.__Skip(12);

            var numSpecialPowerSets = reader.ReadUInt16(); // Maybe not sides, maybe player count?

            for (var i = 0; i < numSpecialPowerSets; i++)
            {
                var version = reader.ReadByte();

                var numSpecialPowers = reader.ReadUInt16();
                for (var j = 0; j < numSpecialPowers; j++)
                {
                    var name      = reader.ReadAsciiString();
                    var timestamp = reader.ReadUInt32();
                }
            }

            var numUnknown1Sets = reader.ReadUInt16();

            for (var i = 0; i < numUnknown1Sets; i++)
            {
                var version = reader.ReadByte();

                var count = reader.ReadUInt16();
                if (count != 0)
                {
                    throw new InvalidDataException();
                }
            }

            var numUnknown2Sets = reader.ReadUInt16();

            for (var i = 0; i < numUnknown2Sets; i++)
            {
                var version = reader.ReadByte();

                var count = reader.ReadUInt16();
                if (count != 0)
                {
                    throw new InvalidDataException();
                }
            }

            var numUpgradeSets = reader.ReadUInt16();

            for (var i = 0; i < numUpgradeSets; i++)
            {
                var version = reader.ReadByte();

                var numUpgrades = reader.ReadUInt16();
                for (var j = 0; j < numUpgrades; j++)
                {
                    var name      = reader.ReadAsciiString();
                    var timestamp = reader.ReadUInt32();
                }
            }

            var numScienceSets = reader.ReadUInt16();

            for (var i = 0; i < numScienceSets; i++)
            {
                var version = reader.ReadByte();

                var numSciences = reader.ReadUInt16();
                for (var j = 0; j < numSciences; j++)
                {
                    var name = reader.ReadAsciiString();
                }
            }

            var unknown14_1 = reader.ReadByte();

            if (unknown14_1 != 1)
            {
                throw new InvalidDataException();
            }

            var unknown14_2 = reader.ReadUInt16();

            if (unknown14_2 != 0)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < 6; i++)
            {
                var unknown15 = reader.ReadSingle();
            }

            var unknown16 = reader.ReadUInt32();

            if (unknown16 != 150)
            {
                throw new InvalidDataException();
            }

            var unknown17 = reader.ReadUInt32();

            if (unknown17 != 0 && unknown17 != 1 && unknown17 != 2)
            {
                throw new InvalidDataException();
            }

            var unknown18 = reader.ReadByte();

            if (unknown18 != 0)
            {
                throw new InvalidDataException();
            }

            var numMapReveals = reader.ReadUInt16();

            for (var i = 0; i < numMapReveals; i++)
            {
                var revealName = reader.ReadAsciiString();
                var waypoint   = reader.ReadAsciiString();
                var radius     = reader.ReadSingle();
                var player     = reader.ReadAsciiString();
            }

            var numObjectTypeLists = reader.ReadUInt16();

            for (var i = 0; i < numObjectTypeLists; i++)
            {
                var objectTypeList = new ObjectTypeList();
                objectTypeList.Load(reader);
            }

            var unknown20 = reader.ReadByte();

            if (unknown20 != 1)
            {
                throw new InvalidDataException();
            }

            var musicTrack = reader.ReadAsciiString();

            var unknown21 = reader.ReadByte();

            if (unknown21 != 0)
            {
                throw new InvalidDataException();
            }
        }
Beispiel #27
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(2);

            var partitionCellSize = reader.ReadSingle();

            if (partitionCellSize != _partitionCellSize)
            {
                throw new InvalidDataException();
            }

            var partitionCellCount = reader.ReadUInt32();

            if (partitionCellCount != _cells.Length)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < partitionCellCount; i++)
            {
                _cells[i].Load(reader);
            }

#if DEBUG
            var builder = new System.Text.StringBuilder();
            for (var y = 0; y < _numCellsY; y++)
            {
                for (var x = 0; x < _numCellsX; x++)
                {
                    var cell  = _cells[((_numCellsY - 1 - y) * _numCellsX) + x];
                    var value = cell.Values[2];

                    char c;
                    if (value.State < 0)
                    {
                        c = (char)((-value.State) + '0');
                    }
                    else if (value.State == 0)
                    {
                        c = '-';
                    }
                    else if (value.State == 1)
                    {
                        c = '*';
                    }
                    else
                    {
                        throw new InvalidOperationException();
                    }

                    builder.Append(c);
                }
                builder.AppendLine();
            }
            File.WriteAllText($"Partition{Path.GetFileNameWithoutExtension(((FileStream) reader.Inner.BaseStream).Name)}.txt", builder.ToString());
#endif

            var someOtherCount = reader.ReadUInt32();
            for (var i = 0; i < someOtherCount; i++)
            {
                reader.ReadVersion(1);
                var position    = reader.ReadVector3();
                var visionRange = reader.ReadSingle();
                reader.ReadUInt16();
                var frameSomething = reader.ReadUInt32();
            }
        }
Beispiel #28
0
        public void Load(SaveFileReader reader)
        {
            reader.ReadVersion(9);

            _currentFrame = reader.ReadUInt32();

            _objectDefinitionLookupTable.Load(reader);

            var gameObjectsCount = reader.ReadUInt32();

            _objects.Clear();
            _objects.Capacity = (int)gameObjectsCount;

            for (var i = 0; i < gameObjectsCount; i++)
            {
                var objectDefinitionId = reader.ReadUInt16();
                var objectDefinition   = _objectDefinitionLookupTable.GetById(objectDefinitionId);

                var gameObject = _scene3D.GameObjects.Add(objectDefinition, _scene3D.LocalPlayer);

                reader.BeginSegment();

                gameObject.Load(reader);

                while (_objects.Count <= gameObject.ID)
                {
                    _objects.Add(null);
                }
                _objects[(int)gameObject.ID] = gameObject;

                reader.EndSegment();
            }

            reader.ReadByte(); // 3

            var sideName    = reader.ReadAsciiString();
            var missionName = reader.ReadAsciiString();

            reader.__Skip(12);

            var numPolygonTriggers = reader.ReadUInt32();

            if (numPolygonTriggers != _scene3D.MapFile.PolygonTriggers.Triggers.Length)
            {
                throw new InvalidDataException();
            }
            for (var i = 0; i < numPolygonTriggers; i++)
            {
                var id             = reader.ReadUInt32();
                var polygonTrigger = _scene3D.MapFile.PolygonTriggers.GetPolygonTriggerById(id);
                polygonTrigger.Load(reader);
            }

            _rankLevelLimit = reader.ReadUInt32();

            var unknown2 = reader.ReadUInt32();

            if (unknown2 != 0)
            {
                throw new InvalidDataException();
            }

            while (true)
            {
                var objectDefinitionName = reader.ReadAsciiString();
                if (objectDefinitionName == "")
                {
                    break;
                }

                var buildableStatus = reader.ReadEnum <ObjectBuildableType>();

                _techTreeOverrides.Add(
                    objectDefinitionName,
                    buildableStatus);
            }

            if (!reader.ReadBoolean())
            {
                throw new InvalidDataException();
            }

            if (!reader.ReadBoolean())
            {
                throw new InvalidDataException();
            }

            if (!reader.ReadBoolean())
            {
                throw new InvalidDataException();
            }

            var unknown3 = reader.ReadUInt32();

            if (unknown3 != uint.MaxValue)
            {
                throw new InvalidDataException();
            }

            // Command button overrides
            while (true)
            {
                var commandSetNamePrefixedWithCommandButtonIndex = reader.ReadAsciiString();
                if (commandSetNamePrefixedWithCommandButtonIndex == "")
                {
                    break;
                }

                var unknownBool1 = reader.ReadBoolean();
                if (unknownBool1)
                {
                    throw new InvalidDataException();
                }
            }

            var unknown4 = reader.ReadUInt32();

            if (unknown4 != 0)
            {
                throw new InvalidDataException();
            }
        }
Beispiel #29
0
 internal void Load(SaveFileReader reader)
 {
     reader.ReadVersion(1);
     IsActive = reader.ReadBoolean();
 }
Beispiel #30
0
        internal void Load(SaveFileReader reader)
        {
            reader.ReadVersion(1);

            var id = reader.ReadUInt32();

            if (id != ID)
            {
                throw new InvalidDataException();
            }

            var numObjects = reader.ReadUInt16();

            for (var i = 0; i < numObjects; i++)
            {
                ObjectIds.Add(reader.ReadObjectID());
            }

            for (var i = 0; i < 2; i++)
            {
                var unknown1 = reader.ReadBoolean();
                if (unknown1 != false)
                {
                    throw new InvalidDataException();
                }
            }

            var unknown2 = reader.ReadBoolean();

            if (unknown2 != true)
            {
                //throw new InvalidDataException();
            }

            for (var i = 0; i < 5; i++)
            {
                var unknown1 = reader.ReadBoolean();
                if (unknown1 != false)
                {
                    throw new InvalidDataException();
                }
            }

            var unknown10 = reader.ReadUInt32();

            if (unknown10 != 0)
            {
                throw new InvalidDataException();
            }

            var unknown11 = reader.ReadUInt32();

            if (unknown11 != 0 && unknown11 != ObjectIds.Count)
            {
                throw new InvalidDataException();
            }

            var waypointID = reader.ReadUInt32();

            var unknown13 = reader.ReadUInt16();

            if (unknown13 != 16)
            {
                throw new InvalidDataException();
            }

            for (var i = 0; i < unknown13; i++)
            {
                var unknown19 = reader.ReadBoolean();
                if (unknown19 != false)
                {
                    //throw new InvalidDataException();
                }
            }

            var unknown14 = reader.ReadBoolean();

            if (unknown14 != false)
            {
                throw new InvalidDataException();
            }

            var unknown15 = reader.ReadBoolean();

            if (unknown15 != false)
            {
                throw new InvalidDataException();
            }

            TargetObjectID = reader.ReadObjectID();

            TeamToTeamRelationships.Load(reader.Inner);
            TeamToPlayerRelationships.Load(reader.Inner);
        }