Home Reference Source

src/Civ5SaveModsStringArray.js

import Civ5SaveIntProperty from './Civ5SaveIntProperty';
import Civ5SaveStringProperty from './Civ5SaveStringProperty';

/**
 * @ignore
 */
export default class Civ5SaveModsStringArray {
  /**
   * @ignore
   */
  constructor(byteOffset, saveData) {
    /**
     * @ignore
     */
    this.byteOffset = byteOffset;
    /**
     * @ignore
     */
    this.length = 4;
    /**
     * @private
     */
    this._array = new Array();
    /**
     * @private
     */
    this._size = new Civ5SaveIntProperty(this.byteOffset, 4, saveData);

    if (this._getSize(saveData) > 0) {
      let currentByteOffset = this.byteOffset + 4;
      for (let i = 0; i < this._getSize(saveData); i++) {
        let modId = new Civ5SaveStringProperty(currentByteOffset, null, saveData);
        currentByteOffset += modId.length;

        // Not sure what these extra bytes represent
        currentByteOffset += 4;

        let modName = new Civ5SaveStringProperty(currentByteOffset, null, saveData);
        currentByteOffset += modName.length;

        this._array.push(modName.getValue(saveData));
      }

      this.length = currentByteOffset - this.byteOffset;
    }

    Object.freeze(this._array);
  }

  /**
   * @private
   */
  _getSize(saveData) {
    return this._size.getValue(saveData);
  }

  /**
   * @ignore
   */
  getArray() {
    return this._array;
  }
}