Я создаю простую игру с несколькими уровнями. Каждый уровень представлен объектом пар ключ-значение. Внутри каждого уровня также есть массив с новыми экземплярами класса, которые будут загружены внутри уровня. До сих пор это работало нормально, но когда я реализовал кнопку перезапуска, программа не может снова загрузить экземпляры, потому что я уже изменил их. Поэтому мне нужно скопировать экземпляры thoose на уровень, и когда вы нажмете кнопку перезапуска, вы сможете просто скопировать их снова.
Это пример моего объекта уровня.
const level4 ={
width:window.innerWidth,
height:window.innerHeight,
gates:[new Gate(canvas.width-20, 100,0,-2), new Gate(200, 15,4,-1)],
blocks:[new Block(50,100,0, 0, 50, 1, 2), new Block(200,200,0, 0, 50, 1, 1)],
difficulty:'easy',
id:4
};
Я уже попробуйте скопировать объект с помощью этой функции разбора, но она не работает.
const parseLevel = (currentLevel) =>{
return {
width: currentLevel.width,
height: currentLevel.height,
gates: parseObjects(currentLevel.gates),
blocks: parseObjects(currentLevel.blocks),
difficulty: currentLevel.difficulty,
id: currentLevel.id
};
};
const parseObjects = (array) =>{
let newArray = [];
for(let i of array){
let newObj = Object.assign( Object.create( Object.getPrototypeOf(i)),i);
newArray.push(newObj);
}
return newArray;
};
И в моей функции, где я загружаю уровень, я вызываю:
level = parseLevel(level4);