export default class CodeFormatter { static generateGCT(codes, version) { let code = '00D0C0DE00D0C0DE'; codes.forEach(c => (code += c.source)); code += 'FF00000000000000'; let rawData = new Uint8Array(code.length / 2); for (let x = 0; x < rawData.length; x++) { rawData[x] = parseInt(code.substr(x * 2, 2), 16); } this.downloadFile(rawData, `${version}.gct`); } static generateDolphinINI(codes, version) { let data = 'Paste the following on top of your games .ini file:\r\n[Gecko]'; codes.forEach(code => { data += `\r\n$${code.title} (${code.author}) [${code.date}]\r\n`; data += code.source .match(/.{8}/g) .join(' ') .replace(/(.{17})./g, '$1\r\n'); }); this.downloadFile(data, `${version}.txt`); } static generateCheatManagerTXT(codes, version) { let data = `${version}\r\nSuper Mario Sunshine`; codes.forEach(code => { data += `\r\n\r\n${code.title} (${code.author}) [${code.date}]\r\n`; data += code.source .match(/.{8}/g) .join(' ') .replace(/(.{17})./g, '$1\r\n'); }); this.downloadFile(data, `${version}.txt`); } static downloadFile(data, filename) { var file = new Blob([data], { type: 'application/octet-stream', }); if (window.navigator.msSaveOrOpenBlob) window.navigator.msSaveOrOpenBlob(file, filename); else { var a = document.createElement('a'), url = window.URL.createObjectURL(file); a.href = url; a.download = filename; a.click(); setTimeout(function() { window.URL.revokeObjectURL(url); }, 500); } } }