"use-strict";
const { fromConstToPascal } = require("./util.js")

/**
 * @public
 * @readonly
 */
const BMiscInfo = {
    "EXPLICIT": 0b1,
    "SPLASH_SONG": 0b10,
    "NIGGERS_SONG": 0b100,
    "AMOGUS_SONG": 0b1000,
    "METADATA_PREFER_ID": 0b10000,
    "ALT_MEDIA": 0b100000
}

/**
 * @public
 * @constructor
 * @params {string|undefined} title
 * @params {string|undefined} artist
 * @params {URL|string|undefined} [href] href
 * @params {string} [extra] extra Playback effects. i.e: Pitch, speed
 * @returns {RadioMetadata}
 */
const RadioMiscInfo = function (value) {
    this.miscInfo = value || 0
    return this
}

/**
 * @public
 * @params {number|undefined} value
 * @returns {RadioPlaybackInfo}
 */
RadioMiscInfo.new = value => new RadioMiscInfo(value)

/**
 * @public
 * @returns {number|undefined}
 */
RadioMiscInfo.prototype.serialize = function () { return this.miscInfo || undefined; }

for (const key in BMiscInfo) {
    RadioMiscInfo.prototype[`b${fromConstToPascal(key)}`] = function () {
        //this.miscInfo = (this.miscInfo || 0) | BMiscInfo[key]
        this.miscInfo |= BMiscInfo[key]
        return this
    }
}

module.exports = { RadioMiscInfo, BMiscInfo }