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); }
public void WriteData(RAMBuffer buffer) { buffer.WriteInteger(Name.Length); buffer.WriteString(Name); buffer.WriteInteger(FrameIndex); buffer.WriteInteger(LegendLabelDllId); }
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); }
/// <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)); }
/// <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); }
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); }
/// <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); }
/// <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)); }
public void WriteData(RAMBuffer buffer) { buffer.WriteInteger(Maps1.Count); buffer.WriteInteger(RandomMapsPtr); Maps1.ForEach(m => m.WriteData(buffer)); Maps2.ForEach(m => m.WriteData(buffer)); }
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); }
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)); }
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)); }
/// <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); } }
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)); }
/// <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}"); } }
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); }
/// <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); }
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); }
/// <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); }
/// <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)); } }
public void WriteData(RAMBuffer buffer) { buffer.WriteString(FileName, 13); buffer.WriteInteger(ResourceID); buffer.WriteShort(Probability); buffer.WriteShort(Civ); buffer.WriteShort(Unknown1); }
/// <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)); }); }
/// <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)); }
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)); }
/// <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)); }
/*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); }
/// <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); }
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); }