コード例 #1
0
            public GraphicDelta ReadData(RAMBuffer buffer)
            {
                GraphicID  = buffer.ReadShort();
                Unknown1   = buffer.ReadShort();
                Unknown2   = buffer.ReadShort();
                Unknown3   = buffer.ReadShort();
                DirectionX = buffer.ReadShort();
                DirectionY = buffer.ReadShort();
                Unknown4   = buffer.ReadShort();
                Unknown5   = buffer.ReadShort();

                return(this);
            }
コード例 #2
0
            /// <summary>
            /// Reads the data element from the given buffer.
            /// </summary>
            /// <param name="buffer">The buffer where the data element should be deserialized from.</param>
            public PlayerDiplomacyVariousEntry ReadData(RAMBuffer buffer)
            {
                PlayerName     = buffer.ReadString(buffer.ReadUShort());
                InitialCameraX = buffer.ReadFloat();
                InitialCameraY = buffer.ReadFloat();
                UnknownX       = buffer.ReadShort();
                UnknownY       = buffer.ReadShort();
                AlliedVictory  = buffer.ReadByte();

                ushort playerDiplomacyCount = buffer.ReadUShort();

                Diplomacy1 = new List <DiplomacyTypes1>(playerDiplomacyCount);
                for (int i = 0; i < playerDiplomacyCount; i++)
                {
                    Diplomacy1.Add((DiplomacyTypes1)buffer.ReadByte());
                }
                Diplomacy2 = new List <DiplomacyTypes2>(playerDiplomacyCount);
                for (int i = 0; i < playerDiplomacyCount; i++)
                {
                    Diplomacy2.Add((DiplomacyTypes2)buffer.ReadUInteger());
                }

                Color         = buffer.ReadUInteger();
                Unknown1      = buffer.ReadFloat();
                Unknown3Count = buffer.ReadUShort();

                if (Unknown1 == 2)
                {
                    Unknown2 = new List <byte>(8);
                    for (int i = 0; i < 8; i++)
                    {
                        Unknown2.Add(buffer.ReadByte());
                    }
                }

                Unknown3 = new List <byte>(Unknown3Count * 44);
                for (int i = 0; i < Unknown3Count * 44; i++)
                {
                    Unknown3.Add(buffer.ReadByte());
                }

                Unknown4 = new List <byte>(7);
                for (int i = 0; i < 7; i++)
                {
                    Unknown4.Add(buffer.ReadByte());
                }

                Unknown5 = buffer.ReadInteger();

                return(this);
            }
コード例 #3
0
        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}");
            }
        }
コード例 #4
0
        public Graphic ReadData(RAMBuffer buffer)
        {
            Name1 = buffer.ReadString(21);
            Name2 = buffer.ReadString(13);

            SLP         = buffer.ReadInteger();
            Unknown1    = buffer.ReadByte();
            Unknown2    = buffer.ReadByte();
            Layer       = buffer.ReadByte();
            PlayerColor = buffer.ReadByte();
            Rainbow     = buffer.ReadByte();
            Replay      = buffer.ReadByte();

            Coordinates = new List <short>(4);
            for (int i = 0; i < 4; ++i)
            {
                Coordinates.Add(buffer.ReadShort());
            }

            int deltaCount = buffer.ReadUShort();

            SoundID         = buffer.ReadShort();
            AttackSoundUsed = buffer.ReadByte();
            FrameCount      = buffer.ReadUShort();
            AngleCount      = buffer.ReadUShort();
            NewSpeed        = buffer.ReadFloat();
            FrameRate       = buffer.ReadFloat();
            ReplayDelay     = buffer.ReadFloat();
            SequenceType    = buffer.ReadByte();
            ID            = buffer.ReadShort();
            MirroringMode = buffer.ReadByte();
            Unknown3      = buffer.ReadByte();

            Deltas = new List <GraphicDelta>(deltaCount);
            for (int i = 0; i < deltaCount; ++i)
            {
                Deltas.Add(new GraphicDelta().ReadData(buffer));
            }

            if (AttackSoundUsed != 0)
            {
                AttackSounds = new List <GraphicAttackSound>(AngleCount);
                for (int i = 0; i < AngleCount; ++i)
                {
                    AttackSounds.Add(new GraphicAttackSound().ReadData(buffer));
                }
            }

            return(this);
        }
コード例 #5
0
            /// <summary>
            /// Reads the data element from the given buffer.
            /// </summary>
            /// <param name="buffer">The buffer where the data element should be deserialized from.</param>
            public UnitEntry ReadData(RAMBuffer buffer)
            {
                PositionX  = buffer.ReadFloat();
                PositionY  = buffer.ReadFloat();
                PositionZ  = buffer.ReadFloat();
                Id         = buffer.ReadUInteger();
                UnitId     = buffer.ReadUShort();
                State      = buffer.ReadByte();
                Rotation   = buffer.ReadFloat();
                Frame      = buffer.ReadUShort();
                GarrisonId = buffer.ReadInteger();

                return(this);
            }
コード例 #6
0
        public void WriteData(RAMBuffer buffer)
        {
            buffer.WriteShort(WalkingGraphic1);
            buffer.WriteShort(WalkingGraphic2);
            buffer.WriteFloat(RotationSpeed);
            buffer.WriteByte(Unknown11);
            buffer.WriteShort(TrackingUnit);
            buffer.WriteByte(TrackingUnitUsed);
            buffer.WriteFloat(TrackingUnitDensity);
            buffer.WriteByte(Unknown16);

            AssertListLength(Unknown16B, 5);
            Unknown16B.ForEach(e => buffer.WriteInteger(e));
        }
コード例 #7
0
        public Bird ReadData(RAMBuffer buffer)
        {
            SheepConversion = buffer.ReadShort();
            SearchRadius    = buffer.ReadFloat();
            WorkRate        = buffer.ReadFloat();
            DropSite1       = buffer.ReadShort();
            DropSite2       = buffer.ReadShort();
            VillagerMode    = buffer.ReadByte();
            AttackSound     = buffer.ReadShort();
            MoveSound       = buffer.ReadShort();
            AnimalMode      = buffer.ReadByte();

            return(this);
        }
コード例 #8
0
        public PlayerColor ReadData(RAMBuffer buffer)
        {
            ID             = buffer.ReadInteger();
            Palette        = buffer.ReadInteger();
            Color          = buffer.ReadInteger();
            Unknown1       = buffer.ReadInteger();
            Unknown2       = buffer.ReadInteger();
            MinimapColor   = buffer.ReadInteger();
            Unknown3       = buffer.ReadInteger();
            Unknown4       = buffer.ReadInteger();
            StatisticsText = buffer.ReadInteger();

            return(this);
        }
コード例 #9
0
ファイル: Techage.cs プロジェクト: JanWichelmann/GenieLibrary
        public Techage ReadData(RAMBuffer buffer)
        {
            Name = buffer.ReadString(31);

            int effectCount = buffer.ReadUShort();

            Effects = new List <TechageEffect>(effectCount);
            for (int i = 0; i < effectCount; ++i)
            {
                Effects.Add(new TechageEffect().ReadData(buffer));
            }

            return(this);
        }
コード例 #10
0
        /// <summary>
        /// Reads the data element from the given buffer.
        /// </summary>
        /// <param name="buffer">The buffer where the data element should be deserialized from.</param>
        public PlayerDiplomacyVarious ReadData(RAMBuffer buffer)
        {
            UnknownPlayerCount = buffer.ReadUInteger();

            PlayerDiplomacyVariousEntries = new List <PlayerDiplomacyVariousEntry>(8);
            for (int i = 0; i < 8; i++)
            {
                PlayerDiplomacyVariousEntries.Add(new PlayerDiplomacyVariousEntry().ReadData(buffer));
            }

            Unknown = buffer.ReadULong();

            return(this);
        }
コード例 #11
0
            public TechTreeAge ReadData(RAMBuffer buffer)
            {
                ID       = buffer.ReadInteger();
                Unknown2 = buffer.ReadByte();

                byte buildingCount = buffer.ReadByte();

                Buildings = new List <int>(buildingCount);
                for (int i = 0; i < buildingCount; ++i)
                {
                    Buildings.Add(buffer.ReadInteger());
                }

                byte unitCount = buffer.ReadByte();

                Units = new List <int>(unitCount);
                for (int i = 0; i < unitCount; ++i)
                {
                    Units.Add(buffer.ReadInteger());
                }

                byte researchCount = buffer.ReadByte();

                Researches = new List <int>(researchCount);
                for (int i = 0; i < researchCount; ++i)
                {
                    Researches.Add(buffer.ReadInteger());
                }

                Common    = new Common().ReadData(buffer);
                SlotsUsed = buffer.ReadByte();

                Unknown4 = new List <byte>(10);
                for (int i = 0; i < 10; ++i)
                {
                    Unknown4.Add(buffer.ReadByte());
                }

                Unknown5 = new List <byte>(10);
                for (int i = 0; i < 10; ++i)
                {
                    Unknown5.Add(buffer.ReadByte());
                }

                Unknown6 = buffer.ReadByte();
                LineMode = buffer.ReadInteger();

                return(this);
            }
コード例 #12
0
            public BuildingConnection ReadData(RAMBuffer buffer)
            {
                ID       = buffer.ReadInteger();
                Unknown1 = buffer.ReadByte();

                byte buildingCount = buffer.ReadByte();

                Buildings = new List <int>(buildingCount);
                for (int i = 0; i < buildingCount; ++i)
                {
                    Buildings.Add(buffer.ReadInteger());
                }

                byte unitCount = buffer.ReadByte();

                Units = new List <int>(unitCount);
                for (int i = 0; i < unitCount; ++i)
                {
                    Units.Add(buffer.ReadInteger());
                }

                byte researchCount = buffer.ReadByte();

                Researches = new List <int>(researchCount);
                for (int i = 0; i < researchCount; ++i)
                {
                    Researches.Add(buffer.ReadInteger());
                }

                Common        = new Common().ReadData(buffer);
                LocationInAge = buffer.ReadByte();

                UnitsTechsTotal = new List <byte>(5);
                for (int i = 0; i < 5; ++i)
                {
                    UnitsTechsTotal.Add(buffer.ReadByte());
                }

                UnitsTechsFirst = new List <byte>(5);
                for (int i = 0; i < 5; ++i)
                {
                    UnitsTechsFirst.Add(buffer.ReadByte());
                }

                LineMode         = buffer.ReadInteger();
                EnablingResearch = buffer.ReadInteger();

                return(this);
            }
コード例 #13
0
        /// <summary>
        /// Schreibt die Daten in den gegebenen Puffer.
        /// </summary>
        /// <param name="buffer">Der Puffer, in den die Daten geschrieben werden sollen.</param>
        public void WriteData(RAMBuffer buffer)
        {
            // Benutzung schreiben
            buffer.WriteByte(Used ? (byte)1 : (byte)0);

            // Durch SLPs iterieren und schreiben
            buffer.WriteByte((byte)SailSlps.Count);
            foreach (var currSlp in SailSlps)
            {
                // Schreiben
                buffer.WriteByte((byte)currSlp.Key);
                currSlp.Value.writeData();
                buffer.Write((RAMBuffer)currSlp.Value.DataBuffer);
            }
        }
コード例 #14
0
        /// <summary>
        /// Schreibt die TechTree-Daten.
        /// </summary>
        /// <param name="buffer">Der Datenpuffer.</param>
        /// <param name="writeTreeOnly">Gibt an, ob nur die Baumdaten (und nicht auch das Design) geschrieben werden sollen.</param>
        public void WriteData(RAMBuffer buffer, bool writeTreeOnly)
        {
            // Version schreiben
            buffer.WriteByte(NEW_TECH_TREE_VERSION);

            // Stammelemente schreiben
            buffer.WriteShort((short)ParentElements.Count);
            ParentElements.ForEach(p => p.WriteData(buffer));

            // Designdaten schreiben
            if (!writeTreeOnly)
            {
                DesignData.WriteData(buffer);
            }
        }
コード例 #15
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.WriteUInteger(ConquestRequired);
            buffer.WriteUInteger(Unused1);
            buffer.WriteUInteger(NumberOfRelicsRequired);
            buffer.WriteUInteger(Unused2);
            buffer.WriteUInteger(ExploredPercentRequired);
            buffer.WriteUInteger(Unused3);
            buffer.WriteUInteger(AllCustomConditionsRequired);
            buffer.WriteUInteger((uint)Mode);
            buffer.WriteUInteger(ScoreRequired);
            buffer.WriteUInteger(TimeRequired);
        }
コード例 #16
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((uint)Type);

                buffer.WriteUInteger(0x00000017);

                buffer.WriteInteger(AiGoal);
                buffer.WriteInteger(Amount);
                buffer.WriteInteger(ResourceId);
                buffer.WriteInteger(Diplomacy);

                buffer.WriteInteger(SelectedUnitInstanceIds.Count);

                buffer.WriteInteger(LocationUnitInstanceId);
                buffer.WriteInteger(UnitType);
                buffer.WriteInteger(PlayerSource);
                buffer.WriteInteger(PlayerTarget);
                buffer.WriteInteger(ResearchId);
                buffer.WriteInteger(StringId);
                buffer.WriteInteger(SoundId);
                buffer.WriteInteger(DisplayTime);
                buffer.WriteInteger(TriggerIndex);
                buffer.WriteInteger(LocationX);
                buffer.WriteInteger(LocationY);
                buffer.WriteInteger(AreaBottomLeftX);
                buffer.WriteInteger(AreaBottomLeftY);
                buffer.WriteInteger(AreaTopRightX);
                buffer.WriteInteger(AreaTopRightY);
                buffer.WriteInteger(UnitClass);
                buffer.WriteInteger(UnitType2);
                buffer.WriteInteger(InstructionPanel);

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

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

                SelectedUnitInstanceIds.ForEach(u => buffer.WriteUInteger(u));
            }
コード例 #17
0
            /// <summary>
            /// Reads the data element from the given buffer.
            /// </summary>
            /// <param name="buffer">The buffer where the data element should be deserialized from.</param>
            public Effect ReadData(RAMBuffer buffer)
            {
                Type = (EffectTypes)buffer.ReadUInteger();

                ScenarioDataElementTools.AssertTrue(buffer.ReadUInteger() == 0x00000017);

                AiGoal     = buffer.ReadInteger();
                Amount     = buffer.ReadInteger();
                ResourceId = buffer.ReadInteger();
                Diplomacy  = buffer.ReadInteger();

                int selectedUnitsCount = buffer.ReadInteger();

                if (selectedUnitsCount < 0)
                {
                    selectedUnitsCount = 0;
                }

                LocationUnitInstanceId = buffer.ReadInteger();
                UnitType         = buffer.ReadInteger();
                PlayerSource     = buffer.ReadInteger();
                PlayerTarget     = buffer.ReadInteger();
                ResearchId       = buffer.ReadInteger();
                StringId         = buffer.ReadInteger();
                SoundId          = buffer.ReadInteger();
                DisplayTime      = buffer.ReadInteger();
                TriggerIndex     = buffer.ReadInteger();
                LocationX        = buffer.ReadInteger();
                LocationY        = buffer.ReadInteger();
                AreaBottomLeftX  = buffer.ReadInteger();
                AreaBottomLeftY  = buffer.ReadInteger();
                AreaTopRightX    = buffer.ReadInteger();
                AreaTopRightY    = buffer.ReadInteger();
                UnitClass        = buffer.ReadInteger();
                UnitType2        = buffer.ReadInteger();
                InstructionPanel = buffer.ReadInteger();

                Text          = buffer.ReadString(buffer.ReadInteger());
                SoundFileName = buffer.ReadString(buffer.ReadInteger());

                SelectedUnitInstanceIds = new List <uint>(selectedUnitsCount);
                for (int i = 0; i < selectedUnitsCount; i++)
                {
                    SelectedUnitInstanceIds.Add(buffer.ReadUInteger());
                }

                return(this);
            }
コード例 #18
0
                public ResolutionConfiguration ReadData(RAMBuffer buffer, byte version)
                {
                    LegendFrameIndex                = buffer.ReadInteger();
                    AgeFrameIndex                   = buffer.ReadInteger();
                    TileFrameIndex                  = buffer.ReadInteger();
                    LegendDisableSlpDrawPosition    = new Point(buffer.ReadInteger(), buffer.ReadInteger());
                    CivBonusLabelRectangle          = new Rectangle(buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger());
                    CivSelectionComboBoxRectangle   = new Rectangle(buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger());
                    CivSelectionTitleLabelRectangle = new Rectangle(buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger());

                    LegendNotResearchedLabelRectangle = new Rectangle(buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger());
                    LegendResearchedLabelRectangle    = new Rectangle(buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger());
                    if (version >= 1)
                    {
                        int legendNodeTypeLabelRectangleCount = buffer.ReadInteger();
                        LegendNodeTypeLabelRectangles = new List <Rectangle>(legendNodeTypeLabelRectangleCount);
                        for (int i = 0; i < legendNodeTypeLabelRectangleCount; i++)
                        {
                            LegendNodeTypeLabelRectangles.Add(new Rectangle(buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger()));
                        }
                    }
                    else
                    {
                        LegendNodeTypeLabelRectangles = new List <Rectangle>(3);
                        for (int i = 0; i < 3; ++i)
                        {
                            LegendNodeTypeLabelRectangles.Add(new Rectangle(buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger()));
                        }
                    }
                    LegendDisabledLabelRectangle = new Rectangle(buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger());

                    int count = buffer.ReadInteger();

                    AgeLabelRectangles = new List <Rectangle>(count);
                    for (int i = 0; i < count; ++i)
                    {
                        AgeLabelRectangles.Add(new Rectangle(buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger(), buffer.ReadInteger()));
                    }

                    count = buffer.ReadInteger();
                    VerticalDrawOffsets = new List <int>(count);
                    for (int i = 0; i < count; ++i)
                    {
                        VerticalDrawOffsets.Add(buffer.ReadInteger());
                    }

                    return(this);
                }
コード例 #19
0
        public UnitHeader ReadData(RAMBuffer buffer)
        {
            Exists = buffer.ReadByte();

            if (Exists != 0)
            {
                int commandCount = buffer.ReadUShort();
                Commands = new List <UnitCommand>(commandCount);
                for (int i = 0; i < commandCount; ++i)
                {
                    Commands.Add(new UnitCommand().ReadData(buffer));
                }
            }

            return(this);
        }
コード例 #20
0
        public Sound ReadData(RAMBuffer buffer)
        {
            ID       = buffer.ReadShort();
            Unknown1 = buffer.ReadShort();
            short count = buffer.ReadShort();

            Unknown2 = buffer.ReadInteger();

            Items = new List <SoundItem>(count);
            for (int i = 0; i < count; ++i)
            {
                Items.Add(new SoundItem().ReadData(buffer));
            }

            return(this);
        }
コード例 #21
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);
 }
コード例 #22
0
        public TerrainRestriction ReadData(RAMBuffer buffer)
        {
            TerrainAccessibleFlags = new List <float>(TerrainCount);
            for (int i = 0; i < TerrainCount; ++i)
            {
                TerrainAccessibleFlags.Add(buffer.ReadFloat());
            }

            TerrainPassGraphics = new List <TerrainPassGraphic>(TerrainCount);
            for (int i = 0; i < TerrainCount; ++i)
            {
                TerrainPassGraphics.Add(new TerrainPassGraphic().ReadData(buffer));
            }

            return(this);
        }
コード例 #23
0
            public TechTreeElement ReadData(RAMBuffer buffer, byte version = NEW_TECH_TREE_VERSION)
            {
                // Eigenschaften lesen
                ElementType     = (ItemType)buffer.ReadByte();
                ElementObjectID = buffer.ReadShort();
                Age             = buffer.ReadByte();
                RenderMode      = (ItemRenderMode)buffer.ReadByte();

                // Deaktivierende Kulturen lesen
                byte disableCivCount = buffer.ReadByte();

                DisableCivs = new List <byte>();
                for (int i = 0; i < disableCivCount; ++i)
                {
                    DisableCivs.Add(buffer.ReadByte());
                }

                // Kindelemente lesen
                short childrenCount = buffer.ReadShort();

                Children = new List <TechTreeElement>();
                for (int i = 0; i < childrenCount; ++i)
                {
                    Children.Add(new TechTreeElement().ReadData(buffer, version));
                }

                // Benötigte Elemente lesen
                short requireCount = buffer.ReadShort();

                RequiredElements = new List <Tuple <ItemType, short> >();
                for (int i = 0; i < requireCount; ++i)
                {
                    RequiredElements.Add(new Tuple <ItemType, short>((ItemType)buffer.ReadByte(), buffer.ReadShort()));
                }

                // Node-Hintergrund lesen
                if (version >= 1)
                {
                    NodeTypeIndex = buffer.ReadInteger();
                }
                else
                {
                    NodeTypeIndex = (int)ElementType;
                }

                return(this);
            }
コード例 #24
0
ファイル: Map.cs プロジェクト: JanWichelmann/ScenarioLibrary
        /// <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));
            });
        }
コード例 #25
0
ファイル: Type50.cs プロジェクト: JanWichelmann/GenieLibrary
        public Type50 ReadData(RAMBuffer buffer)
        {
            DefaultArmor = buffer.ReadShort();

            ushort attackCount = buffer.ReadUShort();

            Attacks = new Dictionary <ushort, ushort>(attackCount);
            for (int i = 0; i < attackCount; ++i)
            {
                Attacks[buffer.ReadUShort()] = buffer.ReadUShort();
            }

            ushort armourCount = buffer.ReadUShort();

            Armors = new Dictionary <ushort, ushort>(armourCount);
            for (int i = 0; i < armourCount; ++i)
            {
                Armors[buffer.ReadUShort()] = buffer.ReadUShort();
            }

            TerrainRestrictionForDamageMultiplying = buffer.ReadShort();
            MaxRange                  = buffer.ReadFloat();
            BlastRadius               = buffer.ReadFloat();
            ReloadTime                = buffer.ReadFloat();
            ProjectileUnitID          = buffer.ReadShort();
            ProjectileAccuracyPercent = buffer.ReadShort();
            TowerMode                 = buffer.ReadByte();
            ProjectileFrameDelay      = buffer.ReadShort();

            ProjectileGraphicDisplacement = new List <float>(3);
            for (int i = 0; i < 3; ++i)
            {
                ProjectileGraphicDisplacement.Add(buffer.ReadFloat());
            }

            BlastLevel           = buffer.ReadByte();
            MinRange             = buffer.ReadFloat();
            ProjectileDispersion = buffer.ReadFloat();
            AttackGraphic        = buffer.ReadShort();
            DisplayedMeleeArmor  = buffer.ReadShort();
            DisplayedAttack      = buffer.ReadShort();
            DisplayedRange       = buffer.ReadFloat();
            DisplayedReloadTime  = buffer.ReadFloat();

            return(this);
        }
コード例 #26
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));
            }
        }
コード例 #27
0
        /// <summary>
        /// Konstruktor. Liest die Daten aus dem gegebenen Puffer.
        /// </summary>
        /// <param name="buffer">Der Puffer, aus dem die Segeldaten gelesen werden sollen.</param>
        public Sail(RAMBuffer buffer)
            : this()
        {
            // Benutzung lesen
            Used = (buffer.ReadByte() == 1);

            // SLPs lesen
            int count = buffer.ReadByte();

            for (int i = 0; i < count; ++i)
            {
                // Lesen
                ShipFile.Civ currCiv = (ShipFile.Civ)buffer.ReadByte();
                SLPFile      currSlp = new SLPFile(buffer);
                SailSlps.Add(currCiv, currSlp);
            }
        }
コード例 #28
0
            public MapInfo2 ReadData(RAMBuffer buffer)
            {
                BorderSouthWest = buffer.ReadInteger();
                BorderNorthWest = buffer.ReadInteger();
                BorderNorthEast = buffer.ReadInteger();
                BorderSouthEast = buffer.ReadInteger();
                BorderUsage     = buffer.ReadInteger();
                WaterShape      = buffer.ReadInteger();
                BaseTerrain     = buffer.ReadInteger();
                LandCoverage    = buffer.ReadInteger();
                UnusedID        = buffer.ReadInteger();

                MapLandsCount = buffer.ReadInteger();
                MapLandsPtr   = buffer.ReadInteger();
                MapLands      = new List <MapLand>(MapLandsCount);
                for (int i = 0; i < MapLandsCount; ++i)
                {
                    MapLands.Add(new MapLand().ReadData(buffer));
                }

                MapTerrainsCount = buffer.ReadInteger();
                MapTerrainsPtr   = buffer.ReadInteger();
                MapTerrains      = new List <MapTerrain>(MapTerrainsCount);
                for (int i = 0; i < MapTerrainsCount; ++i)
                {
                    MapTerrains.Add(new MapTerrain().ReadData(buffer));
                }

                MapUnitsCount = buffer.ReadInteger();
                MapUnitsPtr   = buffer.ReadInteger();
                MapUnits      = new List <MapUnit>(MapUnitsCount);
                for (int i = 0; i < MapUnitsCount; ++i)
                {
                    MapUnits.Add(new MapUnit().ReadData(buffer));
                }

                MapElevationsCount = buffer.ReadInteger();
                MapElevationsPtr   = buffer.ReadInteger();
                MapElevations      = new List <MapElevation>(MapElevationsCount);
                for (int i = 0; i < MapElevationsCount; ++i)
                {
                    MapElevations.Add(new MapElevation().ReadData(buffer));
                }

                return(this);
            }
コード例 #29
0
            public TerrainBorder ReadData(RAMBuffer buffer)
            {
                Enabled = buffer.ReadByte();
                Random  = buffer.ReadByte();

                Name  = buffer.ReadString(13);
                Name2 = buffer.ReadString(13);

                SLP      = buffer.ReadInteger();
                ShapePtr = buffer.ReadInteger();
                SoundID  = buffer.ReadInteger();

                Colors = new List <byte>(3);
                for (int i = 0; i < 3; ++i)
                {
                    Colors.Add(buffer.ReadByte());
                }

                IsAnimated        = buffer.ReadByte();
                AnimationFrames   = buffer.ReadShort();
                PauseFames        = buffer.ReadShort();
                Interval          = buffer.ReadFloat();
                PauseBetweenLoops = buffer.ReadFloat();
                Frame             = buffer.ReadShort();
                DrawFrame         = buffer.ReadShort();
                AnimateLast       = buffer.ReadFloat();
                FrameChanged      = buffer.ReadByte();
                Drawn             = buffer.ReadByte();

                Borders = new List <List <FrameData> >(19);
                for (int i = 0; i < 19; ++i)
                {
                    List <FrameData> frameData = new List <FrameData>(12);
                    for (int j = 0; j < 12; ++j)
                    {
                        frameData.Add(new FrameData().ReadData(buffer));
                    }
                    Borders.Add(frameData);
                }

                DrawTerrain     = buffer.ReadShort();
                UnderlayTerrain = buffer.ReadShort();
                BorderStyle     = buffer.ReadShort();

                return(this);
            }
コード例 #30
0
            public Common ReadData(RAMBuffer buffer)
            {
                SlotsUsed = buffer.ReadInteger();

                UnitResearch = new List <int>(10);
                for (int i = 0; i < 10; ++i)
                {
                    UnitResearch.Add(buffer.ReadInteger());
                }

                Mode = new List <int>(10);
                for (int i = 0; i < 10; ++i)
                {
                    Mode.Add(buffer.ReadInteger());
                }

                return(this);
            }