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));
                }
            public void WriteData(RAMBuffer buffer)
            {
                // Version schreiben
                buffer.WriteByte(NEW_TECH_TREE_DESIGN_VERSION);

                // SLP-Daten
                buffer.WriteInteger(NodeSlpFileName.Length);
                buffer.WriteString(NodeSlpFileName);
                buffer.WriteInteger(NodeSlpId);
                buffer.WriteInteger(ScrollSlpFileName.Length);
                buffer.WriteString(ScrollSlpFileName);
                buffer.WriteInteger(ScrollSlpId);
                buffer.WriteInteger(TileSlpFileName.Length);
                buffer.WriteString(TileSlpFileName);
                buffer.WriteInteger(TileSlpId);
                buffer.WriteInteger(LegendAgesSlpFileName.Length);
                buffer.WriteString(LegendAgesSlpFileName);
                buffer.WriteInteger(LegendAgesSlpId);
                buffer.WriteInteger(LegendDisableSlpFileName.Length);
                buffer.WriteString(LegendDisableSlpFileName);
                buffer.WriteInteger(LegendDisableSlpId);

                // Scroll-Daten
                buffer.WriteInteger(MouseScrollArea);
                buffer.WriteInteger(MouseScrollDelay);
                buffer.WriteInteger(MouseScrollOffset);
                buffer.WriteInteger(KeyScrollOffset);

                // Button-Rechtecke
                WriteRectangle(CloseButtonRelativeRectangle, buffer);
                WriteRectangle(ScrollLeftButtonRelativeRectangle, buffer);
                WriteRectangle(ScrollRightButtonRelativeRectangle, buffer);

                // Auflösungsdaten
                buffer.WriteInteger(ResolutionData.Count);
                foreach (var rd in ResolutionData)
                {
                    // Daten schreiben
                    buffer.WriteInteger(rd.Key);
                    rd.Value.WriteData(buffer);
                }
                ;

                // Popup-Label-Daten
                buffer.WriteInteger(PopupLabelDelay);
                buffer.WriteInteger(PopupLabelWidth);
                buffer.WriteInteger(PopupInnerPadding);
                IGenieDataElement.AssertListLength(PopupBoxBevelColorIndices, 6);
                for (int i = 0; i < 6; ++i)
                {
                    buffer.WriteByte(PopupBoxBevelColorIndices[i]);
                }

                // Node-Daten
                buffer.WriteByte(NodeFontIndex);
                IGenieDataElement.AssertTrue(NodeTypes.Count >= 3);
                buffer.WriteInteger(NodeTypes.Count);
                NodeTypes.ForEach(n => n.WriteData(buffer));

                // Age-Labels
                buffer.WriteInteger(FirstLineBaseDllId);
                buffer.WriteInteger(SecondLineDllId);
                buffer.WriteByte(IncrementSecondLineDllId ? (byte)1 : (byte)0);
            }