Exemplo n.º 1
0
        public void WriteData(RAMBuffer buffer)
        {
            AssertListLength(ResourceCosts, 3);
            ResourceCosts.ForEach(e =>
            {
                buffer.WriteShort(e.Type);
                buffer.WriteShort(e.Amount);
                buffer.WriteShort(e.Mode);
            });

            buffer.WriteShort(TrainTime);
            buffer.WriteShort(TrainLocationID);
            buffer.WriteByte(ButtonID);
            buffer.WriteFloat(Unknown26);
            buffer.WriteFloat(Unknown27);
            buffer.WriteByte(Unknown28);
            buffer.WriteByte(HeroMode);
            buffer.WriteInteger(GarrisonGraphic);
            buffer.WriteFloat(ProjectileCount);
            buffer.WriteByte(ProjectileCountOnFullGarrison);
            buffer.WriteFloat(ProjectileSpawningAreaWidth);
            buffer.WriteFloat(ProjectileSpawningAreaHeight);
            buffer.WriteFloat(ProjectileSpawningAreaRandomness);
            buffer.WriteInteger(AlternativeProjectileUnit);
            buffer.WriteInteger(ChargingGraphic);
            buffer.WriteByte(ChargingMode);
            buffer.WriteShort(DisplayedPierceArmor);
        }
Exemplo n.º 2
0
 public void WriteData(RAMBuffer buffer)
 {
     buffer.WriteInteger(Name.Length);
     buffer.WriteString(Name);
     buffer.WriteInteger(FrameIndex);
     buffer.WriteInteger(LegendLabelDllId);
 }
Exemplo n.º 3
0
        public void WriteData(RAMBuffer buffer)
        {
            AssertListLength(RequiredTechs, 6);
            RequiredTechs.ForEach(e => buffer.WriteShort(e));

            AssertListLength(ResourceCosts, 3);
            ResourceCosts.ForEach(e =>
            {
                buffer.WriteShort(e.Type);
                buffer.WriteShort(e.Amount);
                buffer.WriteByte(e.Mode);
            });

            buffer.WriteShort(RequiredTechCount);
            buffer.WriteShort(Civ);
            buffer.WriteShort(FullTechMode);
            buffer.WriteShort(ResearchLocation);
            buffer.WriteUShort(LanguageDLLName1);
            buffer.WriteUShort(LanguageDLLDescription);
            buffer.WriteShort(ResearchTime);
            buffer.WriteShort(TechageID);
            buffer.WriteShort(Type);
            buffer.WriteShort(IconID);
            buffer.WriteByte(ButtonID);
            buffer.WriteInteger(LanguageDLLHelp);
            buffer.WriteInteger(LanguageDLLName2);
            buffer.WriteInteger(Unknown1);

            buffer.WriteUShort((ushort)Name.Length);
            buffer.WriteString(Name);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Writes the data element into the given buffer (at its current position).
        /// </summary>
        /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
        public void WriteData(RAMBuffer buffer)
        {
            ScenarioDataElementTools.AssertListLength(DisabledTechsPerPlayer, 16);
            DisabledTechsPerPlayer.ForEach(p => buffer.WriteInteger(p.Count));
            DisabledTechsPerPlayer.ForEach(p =>
            {
                p.ForEach(e => buffer.WriteUInteger(e));
                buffer.Write(new byte[4 * (30 - p.Count)]);
            });

            ScenarioDataElementTools.AssertListLength(DisabledUnitsPerPlayer, 16);
            DisabledUnitsPerPlayer.ForEach(p => buffer.WriteInteger(p.Count));
            DisabledUnitsPerPlayer.ForEach(p =>
            {
                p.ForEach(e => buffer.WriteUInteger(e));
                buffer.Write(new byte[4 * (30 - p.Count)]);
            });

            ScenarioDataElementTools.AssertListLength(DisabledBuildingsPerPlayer, 16);
            DisabledBuildingsPerPlayer.ForEach(p => buffer.WriteInteger(p.Count));
            DisabledBuildingsPerPlayer.ForEach(p =>
            {
                p.ForEach(e => buffer.WriteUInteger(e));
                buffer.Write(new byte[4 * (20 - p.Count)]);
            });

            buffer.WriteUInteger(Unused1);
            buffer.WriteUInteger(Unused2);
            buffer.WriteUInteger(FullTechMode);

            ScenarioDataElementTools.AssertListLength(StartingAges, 16);
            StartingAges.ForEach(a => buffer.WriteInteger(a));
        }
Exemplo n.º 5
0
 /// <summary>
 /// Writes the data element into the given buffer (at its current position).
 /// </summary>
 /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
 public void WriteData(RAMBuffer buffer)
 {
     buffer.WriteInteger(Title.Length);
     buffer.WriteString(Title);
     buffer.WriteInteger(Content.Length);
     buffer.WriteString(Content);
 }
Exemplo n.º 6
0
            public void WriteData(RAMBuffer buffer)
            {
                buffer.WriteInteger(ID);
                buffer.WriteByte(Unknown2);

                buffer.WriteByte((byte)Buildings.Count);
                Buildings.ForEach(e => buffer.WriteInteger(e));

                buffer.WriteByte((byte)Units.Count);
                Units.ForEach(e => buffer.WriteInteger(e));

                buffer.WriteByte((byte)Researches.Count);
                Researches.ForEach(e => buffer.WriteInteger(e));

                Common.WriteData(buffer);
                buffer.WriteByte(SlotsUsed);

                AssertListLength(Unknown4, 10);
                Unknown4.ForEach(e => buffer.WriteByte(e));

                AssertListLength(Unknown5, 10);
                Unknown5.ForEach(e => buffer.WriteByte(e));

                buffer.WriteByte(Unknown6);
                buffer.WriteInteger(LineMode);
            }
 public void WriteData(RAMBuffer buffer)
 {
     buffer.WriteInteger(Buildable);
     buffer.WriteInteger(GraphicID1);
     buffer.WriteInteger(GraphicID2);
     buffer.WriteInteger(ReplicationAmount);
 }
Exemplo n.º 8
0
 /// <summary>
 /// Schreibt ein Rechteck in der Reihenfolge X, Y, Breite, Höhe.
 /// </summary>
 /// <param name="rect">Das zu schreibende Rechteck.</param>
 /// <param name="buffer">Der Zielpuffer.</param>
 private static void WriteRectangle(Rectangle rect, RAMBuffer buffer)
 {
     // Rechteck schreiben
     buffer.WriteInteger(rect.X);
     buffer.WriteInteger(rect.Y);
     buffer.WriteInteger(rect.Width);
     buffer.WriteInteger(rect.Height);
 }
Exemplo n.º 9
0
        /// <summary>
        /// Writes the data element into the given buffer (at its current position).
        /// </summary>
        /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
        public void WriteData(RAMBuffer buffer)
        {
            buffer.WriteByte(Unknown);

            ScenarioDataElementTools.AssertTrue(TriggerData.Count == TriggerDisplayIndices.Count);
            buffer.WriteInteger(TriggerData.Count);
            TriggerData.ForEach(t => t.WriteData(buffer));
            TriggerDisplayIndices.ForEach(t => buffer.WriteInteger(t));
        }
Exemplo n.º 10
0
        public void WriteData(RAMBuffer buffer)
        {
            buffer.WriteInteger(Maps1.Count);

            buffer.WriteInteger(RandomMapsPtr);

            Maps1.ForEach(m => m.WriteData(buffer));
            Maps2.ForEach(m => m.WriteData(buffer));
        }
Exemplo n.º 11
0
            public void WriteData(RAMBuffer buffer)
            {
                buffer.WriteByte(Enabled);
                buffer.WriteByte(Random);

                buffer.WriteString(Name, 13);
                buffer.WriteString(Name2, 13);

                buffer.WriteInteger(SLP);
                buffer.WriteInteger(ShapePtr);
                buffer.WriteInteger(SoundID);

                buffer.WriteInteger(BlendPriority);
                buffer.WriteInteger(BlendType);

                AssertListLength(Colors, 3);
                Colors.ForEach(col => buffer.WriteByte(col));

                buffer.WriteByte(CliffColors.Item1);
                buffer.WriteByte(CliffColors.Item2);

                buffer.WriteByte(PassableTerrain);
                buffer.WriteByte(ImpassableTerrain);

                buffer.WriteByte(IsAnimated);
                buffer.WriteShort(AnimationFrames);
                buffer.WriteShort(PauseFames);
                buffer.WriteFloat(Interval);
                buffer.WriteFloat(PauseBetweenLoops);
                buffer.WriteShort(Frame);
                buffer.WriteShort(DrawFrame);
                buffer.WriteFloat(AnimateLast);
                buffer.WriteByte(FrameChanged);
                buffer.WriteByte(Drawn);

                AssertListLength(ElevationGraphics, 19);
                ElevationGraphics.ForEach(eg => eg.WriteData(buffer));

                buffer.WriteShort(TerrainToDraw);
                buffer.WriteShort(TerrainDimensions.Item1);
                buffer.WriteShort(TerrainDimensions.Item2);

                Borders.ForEach(b => buffer.WriteShort(b));

                AssertListLength(TerrainUnitID, 30);
                TerrainUnitID.ForEach(tu => buffer.WriteShort(tu));

                AssertListLength(TerrainUnitDensity, 30);
                TerrainUnitDensity.ForEach(tu => buffer.WriteShort(tu));

                AssertListLength(TerrainUnitCentering, 30);
                TerrainUnitCentering.ForEach(tu => buffer.WriteByte(tu));

                buffer.WriteShort(NumberOfTerrainUnitsUsed);

                buffer.WriteShort(Phantom);
            }
Exemplo n.º 12
0
            public void WriteData(RAMBuffer buffer)
            {
                buffer.WriteInteger(SlotsUsed);

                AssertListLength(UnitResearch, 10);
                UnitResearch.ForEach(e => buffer.WriteInteger(e));

                AssertListLength(Mode, 10);
                Mode.ForEach(e => buffer.WriteInteger(e));
            }
Exemplo n.º 13
0
                public void WriteData(RAMBuffer buffer)
                {
                    buffer.WriteInteger(LegendFrameIndex);
                    buffer.WriteInteger(AgeFrameIndex);
                    buffer.WriteInteger(TileFrameIndex);
                    buffer.WriteInteger(LegendDisableSlpDrawPosition.X);
                    buffer.WriteInteger(LegendDisableSlpDrawPosition.Y);
                    WriteRectangle(CivBonusLabelRectangle, buffer);
                    WriteRectangle(CivSelectionComboBoxRectangle, buffer);
                    WriteRectangle(CivSelectionTitleLabelRectangle, buffer);

                    WriteRectangle(LegendNotResearchedLabelRectangle, buffer);
                    WriteRectangle(LegendResearchedLabelRectangle, buffer);
                    IGenieDataElement.AssertTrue(LegendNodeTypeLabelRectangles.Count >= 3);
                    buffer.WriteInteger(LegendNodeTypeLabelRectangles.Count);
                    LegendNodeTypeLabelRectangles.ForEach(r => WriteRectangle(r, buffer));
                    WriteRectangle(LegendDisabledLabelRectangle, buffer);

                    IGenieDataElement.AssertTrue(AgeLabelRectangles.Count >= 3);
                    buffer.WriteInteger(AgeLabelRectangles.Count);
                    AgeLabelRectangles.ForEach(r => WriteRectangle(r, buffer));

                    IGenieDataElement.AssertTrue(VerticalDrawOffsets.Count >= 3);
                    buffer.WriteInteger(VerticalDrawOffsets.Count);
                    VerticalDrawOffsets.ForEach(vdo => buffer.WriteInteger(vdo));
                }
Exemplo n.º 14
0
        /// <summary>
        /// Writes the data element into the given buffer (at its current position).
        /// </summary>
        /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
        public void WriteData(RAMBuffer buffer)
        {
            buffer.WriteUInteger(InstructionsStringDllId);
            buffer.WriteUInteger(HintsStringDllId);
            buffer.WriteUInteger(VictoryStringDllId);
            buffer.WriteUInteger(LossStringDllId);
            buffer.WriteUInteger(HistoryStringDllId);
            buffer.WriteUInteger(ScoutsStringDllId);

            buffer.WriteShort((short)InstructionsString.Length);
            buffer.WriteString(InstructionsString);

            buffer.WriteShort((short)HintsString.Length);
            buffer.WriteString(HintsString);

            buffer.WriteShort((short)VictoryString.Length);
            buffer.WriteString(VictoryString);

            buffer.WriteShort((short)LossString.Length);
            buffer.WriteString(LossString);

            buffer.WriteShort((short)HistoryString.Length);
            buffer.WriteString(HistoryString);

            buffer.WriteShort((short)ScoutsString.Length);
            buffer.WriteString(ScoutsString);

            buffer.WriteShort((short)PregameCinematicFileName.Length);
            buffer.WriteString(PregameCinematicFileName);

            buffer.WriteShort((short)VictoryCinematicFileName.Length);
            buffer.WriteString(VictoryCinematicFileName);

            buffer.WriteShort((short)LossCinematicFileName.Length);
            buffer.WriteString(LossCinematicFileName);

            buffer.WriteShort((short)BackgroundFileName.Length);
            buffer.WriteString(BackgroundFileName);

            if (Bitmap == null)
            {
                buffer.WriteUInteger(0);
                buffer.WriteInteger(0);
                buffer.WriteInteger(0);
                buffer.WriteShort(1);
            }
            else
            {
                buffer.WriteUInteger(1);
                buffer.WriteInteger(Bitmap.Width);
                buffer.WriteInteger(Bitmap.Height);
                buffer.WriteShort(-1);
                Bitmap.SaveToBuffer(buffer, false);
            }
        }
Exemplo n.º 15
0
        public void WriteData(RAMBuffer buffer)
        {
            buffer.WriteInteger(VirtualFunctionPtr);
            buffer.WriteInteger(MapPointer);
            buffer.WriteInteger(MapWidth);
            buffer.WriteInteger(MapHeight);
            buffer.WriteInteger(WorldWidth);
            buffer.WriteInteger(WorldHeight);

            AssertListLength(TileSizes, 19);
            TileSizes.ForEach(ts => ts.WriteData(buffer));

            buffer.WriteShort(PaddingTS);

            Terrains.ForEach(t => t.WriteData(buffer));

            AssertListLength(TerrainBorders, 16);
            TerrainBorders.ForEach(tb => tb.WriteData(buffer));

            buffer.WriteInteger(MapRowOffset);
            buffer.WriteFloat(MapMinX);
            buffer.WriteFloat(MapMinY);
            buffer.WriteFloat(MapMaxX);
            buffer.WriteFloat(MapMaxY);
            buffer.WriteFloat(MapMaxXplus1);
            buffer.WriteFloat(MapMaxYplus1);

            buffer.WriteUShort(TerrainsUsed2);
            buffer.WriteUShort(BordersUsed);
            buffer.WriteShort(MaxTerrain);
            buffer.WriteShort(TileWidth);
            buffer.WriteShort(TileHeight);
            buffer.WriteShort(TileHalfHeight);
            buffer.WriteShort(TileHalfWidth);
            buffer.WriteShort(ElevHeight);
            buffer.WriteShort(CurRow);
            buffer.WriteShort(CurCol);
            buffer.WriteShort(BlockBegRow);
            buffer.WriteShort(BlockEndRow);
            buffer.WriteShort(BlockBegCol);
            buffer.WriteShort(BlockEndCol);

            buffer.WriteInteger(SearchMapPtr);
            buffer.WriteInteger(SearchMapRowsPtr);
            buffer.WriteByte(AnyFrameChange);

            buffer.WriteByte(MapVisibleFlag);
            buffer.WriteByte(FogFlag);

            AssertListLength(SomeBytes, 21);
            SomeBytes.ForEach(b => buffer.WriteByte(b));

            AssertListLength(SomeInt32, 157);
            SomeInt32.ForEach(i => buffer.WriteInteger(i));
        }
Exemplo n.º 16
0
        /// <summary>
        /// Serializes the data elements into the internal buffer.
        /// </summary>
        /// <remarks></remarks>
        private void WriteData()
        {
            // Initialize buffer
            if (_buffer == null)
            {
                _buffer = new RAMBuffer();
            }
            else if (_buffer.Length != 0)
            {
                _buffer.Clear();
            }

            // Write header
            _buffer.WriteString("1.21", 4);
            _buffer.WriteUInteger(4 + 4 + 4 + (uint)ScenarioInstructions.Length + 4 + 4);
            _buffer.WriteInteger(2);
            _buffer.WriteUInteger(LastSaveTimestamp);
            _buffer.WriteInteger(ScenarioInstructions.Length);
            _buffer.WriteString(ScenarioInstructions);
            _buffer.WriteUInteger(0);
            _buffer.WriteUInteger(PlayerCount);

            // Create buffer for compressed data elements
            RAMBuffer comprBuffer = new RAMBuffer();

            Header.WriteData(comprBuffer);
            MessagesCinematics.WriteData(comprBuffer);
            PlayerAiResources.WriteData(comprBuffer);
            GlobalVictory.WriteData(comprBuffer);
            Diplomacy.WriteData(comprBuffer);
            Disables.WriteData(comprBuffer);
            Map.WriteData(comprBuffer);
            Units.WriteData(comprBuffer);
            PlayerDiplomacyVarious.WriteData(comprBuffer);
            Triggers.WriteData(comprBuffer);
            IncludedFiles.WriteData(comprBuffer);

            // Compress data and copy to main buffer
            using (MemoryStream output = new MemoryStream())
                using (MemoryStream input = comprBuffer.ToMemoryStream())
                {
                    // Create compressor stream
                    using (DeflateStream compressor = new DeflateStream(output, CompressionMode.Compress))
                    {
                        // Compress
                        input.CopyTo(compressor);
                        input.Close();
                    }

                    // Save compressed data into main buffer
                    _buffer.Write(output.ToArray());
                }
        }
        private void _saveSimulationButton_Click(object sender, RoutedEventArgs e)
        {
            // Show dialog
            SaveFileDialog dialog = new SaveFileDialog
            {
                Filter = "Simulation files (*.balancingsim)|*.balancingsim",
                Title  = "Save simulation..."
            };

            if (!(dialog.ShowDialog() ?? false))
            {
                return;
            }

            // Create buffer
            RAMBuffer buffer = new RAMBuffer();

            // Write version
            buffer.WriteInteger(Version);

            // Write civ IDs
            buffer.WriteShort((short)(_civ1ComboBox.SelectedValue ?? (short)-1));
            buffer.WriteShort((short)(_civ2ComboBox.SelectedValue ?? (short)-1));

            // Run through techs and write IDs of checked ones
            var res1 = Researches1.Where(r => r.Checked).Select(r => r.Id).ToList();

            buffer.WriteInteger(res1.Count);
            res1.ForEach(buffer.WriteShort);
            var res2 = Researches2.Where(r => r.Checked).Select(r => r.Id).ToList();

            buffer.WriteInteger(res2.Count);
            res2.ForEach(buffer.WriteShort);

            // Write duels
            buffer.WriteInteger(Duels.Count);
            foreach (var duel in Duels)
            {
                buffer.WriteShort(duel.Id1);
                buffer.WriteShort(duel.Id2);
            }

            // Save
            try { buffer.Save(dialog.FileName); }
            catch (IOException ex)
            {
                // Error
                MessageBox.Show($"Unable to save simulation data: {ex.Message}");
            }
        }
Exemplo n.º 18
0
 public void WriteData(RAMBuffer buffer)
 {
     buffer.WriteInteger(ID);
     buffer.WriteInteger(Palette);
     buffer.WriteInteger(Color);
     buffer.WriteInteger(Unknown1);
     buffer.WriteInteger(Unknown2);
     buffer.WriteInteger(MinimapColor);
     buffer.WriteInteger(Unknown3);
     buffer.WriteInteger(Unknown4);
     buffer.WriteInteger(StatisticsText);
 }
Exemplo n.º 19
0
 /// <summary>
 /// Writes the data element into the given buffer (at its current position).
 /// </summary>
 /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
 public void WriteData(RAMBuffer buffer)
 {
     buffer.WriteUInteger(Unknown1);
     buffer.WriteUInteger(Unknown2);
     buffer.WriteInteger(AiPerFileContent.Length);
     buffer.WriteString(AiPerFileContent);
 }
Exemplo n.º 20
0
 public void WriteData(RAMBuffer buffer)
 {
     buffer.WriteInteger(Unit);
     buffer.WriteInteger(HostTerrain);
     buffer.WriteByte(GroupPlacing);
     buffer.WriteByte(ScaleFlag);
     buffer.WriteShort(Padding1);
     buffer.WriteInteger(ObjectsPerGroup);
     buffer.WriteInteger(Fluctuation);
     buffer.WriteInteger(GroupsPerPlayer);
     buffer.WriteInteger(GroupArea);
     buffer.WriteInteger(PlayerID);
     buffer.WriteInteger(SetPlaceForAllPlayers);
     buffer.WriteInteger(MinDistanceToPlayers);
     buffer.WriteInteger(MaxDistanceToPlayers);
 }
Exemplo n.º 21
0
            /// <summary>
            /// Writes the data element into the given buffer (at its current position).
            /// </summary>
            /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
            public void WriteData(RAMBuffer buffer)
            {
                buffer.WriteUShort((ushort)PlayerName.Length);
                buffer.WriteString(PlayerName);
                buffer.WriteFloat(InitialCameraX);
                buffer.WriteFloat(InitialCameraY);
                buffer.WriteShort(UnknownX);
                buffer.WriteShort(UnknownY);
                buffer.WriteByte(AlliedVictory);

                ScenarioDataElementTools.AssertTrue(Diplomacy1.Count == Diplomacy2.Count);
                buffer.WriteUShort((ushort)Diplomacy1.Count);
                Diplomacy1.ForEach(d => buffer.WriteByte((byte)d));
                Diplomacy2.ForEach(d => buffer.WriteUInteger((uint)d));

                buffer.WriteUInteger(Color);
                buffer.WriteFloat(Unknown1);
                buffer.WriteUShort(Unknown3Count);

                if (Unknown1 == 2)
                {
                    ScenarioDataElementTools.AssertListLength(Unknown2, 8);
                    Unknown2.ForEach(b => buffer.WriteByte(b));
                }

                ScenarioDataElementTools.AssertListLength(Unknown3, Unknown3Count * 44);
                Unknown3.ForEach(b => buffer.WriteByte(b));

                ScenarioDataElementTools.AssertListLength(Unknown4, 7);
                Unknown4.ForEach(b => buffer.WriteByte(b));

                buffer.WriteInteger(Unknown5);
            }
Exemplo n.º 22
0
        /// <summary>
        /// Writes the data element into the given buffer (at its current position).
        /// </summary>
        /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
        public void WriteData(RAMBuffer buffer)
        {
            buffer.WriteInteger(Files.Count > 0 ? 1 : 0);

            buffer.WriteUInteger(EsOnlyDataIncluded);
            if (EsOnlyDataIncluded > 0)
            {
                ScenarioDataElementTools.AssertListLength(EsOnlyData, 396);
                EsOnlyData.ForEach(b => buffer.WriteByte(b));
            }

            if (Files.Count > 0)
            {
                buffer.WriteInteger(Files.Count);
                Files.ForEach(f => f.WriteData(buffer));
            }
        }
Exemplo n.º 23
0
 public void WriteData(RAMBuffer buffer)
 {
     buffer.WriteString(FileName, 13);
     buffer.WriteInteger(ResourceID);
     buffer.WriteShort(Probability);
     buffer.WriteShort(Civ);
     buffer.WriteShort(Unknown1);
 }
Exemplo n.º 24
0
        /// <summary>
        /// Writes the data element into the given buffer (at its current position).
        /// </summary>
        /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
        public void WriteData(RAMBuffer buffer)
        {
            buffer.WriteUInteger(0xFFFFFF9D);

            buffer.WriteInteger(Player1CameraY);
            buffer.WriteInteger(Player1CameraX);
            buffer.WriteInteger(AiMapCode);
            buffer.WriteUInteger(MapWidth);
            buffer.WriteUInteger(MapHeight);

            ScenarioDataElementTools.AssertListLength(Tiles, (int)MapWidth);
            Tiles.ForEach(i =>
            {
                ScenarioDataElementTools.AssertListLength(i, (int)MapHeight);
                i.ForEach(j => j.WriteData(buffer));
            });
        }
Exemplo n.º 25
0
            /// <summary>
            /// Writes the data element into the given buffer (at its current position).
            /// </summary>
            /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
            public void WriteData(RAMBuffer buffer)
            {
                buffer.WriteUInteger(Enabled);
                buffer.WriteUInteger(Looping);

                buffer.WriteByte(State);
                buffer.WriteByte(ShowAsObjective);
                buffer.WriteInteger(ObjectiveDescriptionIndex);
                buffer.WriteUInteger(Unknown);

                if (Description.Length == 0 || Description.Last() != '\0')
                {
                    Description += '\0';
                }
                buffer.WriteInteger(Description.Length);
                buffer.WriteString(Description);

                if (Name.Length == 0 || Name.Last() != '\0')
                {
                    Name += '\0';
                }
                buffer.WriteInteger(Name.Length);
                buffer.WriteString(Name);

                ScenarioDataElementTools.AssertTrue(Effects.Count == EffectDisplayIndices.Count);
                buffer.WriteInteger(Effects.Count);
                Effects.ForEach(t => t.WriteData(buffer));
                EffectDisplayIndices.ForEach(t => buffer.WriteInteger(t));

                ScenarioDataElementTools.AssertTrue(Conditions.Count == ConditionDisplayIndices.Count);
                buffer.WriteInteger(Conditions.Count);
                Conditions.ForEach(t => t.WriteData(buffer));
                ConditionDisplayIndices.ForEach(t => buffer.WriteInteger(t));
            }
Exemplo n.º 26
0
        public void WriteData(RAMBuffer buffer)
        {
            buffer.WriteShort(ID);
            buffer.WriteShort(Unknown1);
            buffer.WriteShort((short)Items.Count);
            buffer.WriteInteger(Unknown2);

            Items.ForEach(e => e.WriteData(buffer));
        }
Exemplo n.º 27
0
        /// <summary>
        /// Writes the data element into the given buffer (at its current position).
        /// </summary>
        /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
        public void WriteData(RAMBuffer buffer)
        {
            buffer.WriteInteger(UnitSections.Count);

            ScenarioDataElementTools.AssertListLength(PlayerResourcesPopulationLimits, 8);
            PlayerResourcesPopulationLimits.ForEach(e => e.WriteData(buffer));

            UnitSections.ForEach(s => s.WriteData(buffer));
        }
Exemplo n.º 28
0
        /*void func(Sail.SailType type, Civ civ, byte[] data)
         * {
         *      SLPFile s = new SLPFile(new RAMBuffer(data));
         *      for(int f = 0; f < 90; ++f)
         *      {
         *              s._frameInformationHeaders[f].AnchorX = Sails[type].SailSlps[civ]._frameInformationHeaders[10 * ((f / 10) / 2) + (f % 10)].AnchorX;
         *              s._frameInformationHeaders[f].AnchorY = Sails[type].SailSlps[civ]._frameInformationHeaders[10 * ((f / 10) / 2) + (f % 10)].AnchorY;
         *      }
         *      Sails[type].SailSlps[civ] = s;
         * }*/

        /// <summary>
        /// Speichert die Schiffsdaten in der angegebenen Datei.
        /// </summary>
        /// <param name="filename">Die Zieldatei.</param>
        public void Save(string filename)
        {
            // Puffer erstellen
            RAMBuffer buffer = new RAMBuffer();

            // Name schreiben
            buffer.WriteInteger(Name.Length);
            buffer.WriteString(Name);

            // Rumpf-SLP schreiben
            if (BaseSlp != null)
            {
                // SLP schreiben
                buffer.WriteByte(1);
                BaseSlp.writeData();
                buffer.Write((RAMBuffer)BaseSlp.DataBuffer);
            }
            else
            {
                buffer.WriteByte(0);
            }

            // Schatten-SLP schreiben
            if (ShadowSlp != null)
            {
                // SLP schreiben
                buffer.WriteByte(1);
                ShadowSlp.writeData();
                buffer.Write((RAMBuffer)ShadowSlp.DataBuffer);
            }
            else
            {
                buffer.WriteByte(0);
            }

            // Segel schreiben
            buffer.WriteByte((byte)Sails.Count);
            foreach (var currSail in Sails)
            {
                // Schreiben
                buffer.WriteByte((byte)currSail.Key);
                currSail.Value.WriteData(buffer);
            }

            // Invertierte Segel schreiben
            buffer.WriteByte((byte)InvertedSails.Count);
            foreach (var invSail in InvertedSails)
            {
                buffer.WriteByte((byte)invSail);
            }

            // Speichern
            buffer.Save(filename);
        }
Exemplo n.º 29
0
 /// <summary>
 /// Writes the data element into the given buffer (at its current position).
 /// </summary>
 /// <param name="buffer">The buffer where the data element should be deserialized into.</param>
 public void WriteData(RAMBuffer buffer)
 {
     buffer.WriteFloat(PositionX);
     buffer.WriteFloat(PositionY);
     buffer.WriteFloat(PositionZ);
     buffer.WriteUInteger(Id);
     buffer.WriteUShort(UnitId);
     buffer.WriteByte(State);
     buffer.WriteFloat(Rotation);
     buffer.WriteUShort(Frame);
     buffer.WriteInteger(GarrisonId);
 }
Exemplo n.º 30
0
            public void WriteData(RAMBuffer buffer)
            {
                buffer.WriteInteger(ID);
                buffer.WriteByte(Unknown1);

                buffer.WriteByte((byte)Buildings.Count);
                Buildings.ForEach(e => buffer.WriteInteger(e));

                buffer.WriteByte((byte)Units.Count);
                Units.ForEach(e => buffer.WriteInteger(e));

                buffer.WriteByte((byte)Researches.Count);
                Researches.ForEach(e => buffer.WriteInteger(e));

                Common.WriteData(buffer);
                buffer.WriteByte(LocationInAge);

                AssertListLength(UnitsTechsTotal, 5);
                UnitsTechsTotal.ForEach(e => buffer.WriteByte(e));

                AssertListLength(UnitsTechsFirst, 5);
                UnitsTechsFirst.ForEach(e => buffer.WriteByte(e));

                buffer.WriteInteger(LineMode);
                buffer.WriteInteger(EnablingResearch);
            }