using System.Collections; using System.Collections.Generic; using Ichni.RhythmGame; using Ichni.RhythmGame.Beatmap; using UnityEngine; namespace Ichni.Editor { public class OperationManager { public GameElement currentSelectedElement { get; private set; } public CopyPasteModule copyPasteModule; public OperationManager() { copyPasteModule = new CopyPasteModule(); } public void SelectElement(GameElement gameElement) { currentSelectedElement = gameElement; } } public class CopyPasteModule { public GameElement copiedElement; public void CopyElement(GameElement gameElement) { LogWindow.Log("Copied element: " + gameElement.elementName); copiedElement = gameElement; } public void PasteElement(GameElement parentElement) { if (copiedElement == null) { LogWindow.Log("No element copied."); return; } LogWindow.Log("Pasted element: " + copiedElement.elementName + " to " + parentElement.elementName); AffiliatedPaste(copiedElement, parentElement); } private GameElement AffiliatedPaste(GameElement gameElement, GameElement parent) { gameElement.SaveBM(); GameElement pastedElement = (gameElement.matchedBM as GameElement_BM).DuplicateBM(parent); gameElement.submoduleList.ForEach(submodule => { submodule.SaveBM(); (submodule.matchedBM as Submodule_BM).DuplicateBM(pastedElement); }); if (gameElement.childElementList != null) { for (int i = 0; i < gameElement.childElementList.Count; i++) { AffiliatedPaste(gameElement.childElementList[i], pastedElement); } } return pastedElement; } } }