using UnityEngine; public class DeleteCommand : ICommand { GameObject _objectToDelete; string[] _objectDatas; int _objectNumber; public DeleteCommand(GameObject objectToDelete) { _objectNumber = Get.GetObjectIndex(objectToDelete.name); _objectDatas = CommandHandler.CopyObjectData(_G.OBJs[_objectNumber]); } public void Execute() { _objectToDelete = GameObject.Find(_G.OBJs[_objectNumber][0]); // version called in control.cs the used right now when clicking on a button //UNDOREDO.savedelete(_G.SELECTED); string nW = _G.OBJs[_objectNumber][22]; string cO = _G.OBJs[_objectNumber][0][..4]; _G.OBJs[_objectNumber][0] = "null"; //DestroyImmediate(GameObject.Find(_G.SELECTED).gameObject);<------- GameObject.DestroyImmediate(_objectToDelete); // //_G.OBJs[nO] = null; GameObject.Find("HIDER").transform.Find("CONTROL").gameObject.SetActive(false); DOIT.CloseALLPNL(); DOIT.ResetRoomSelect(); DOIT.AllSelOff(); SceneModeManager.Instance.SetSceneMode(SceneModes.Navigate); Debug.Log("nW ====" + nW); if (nW[..1] == "w") { if (cO == "wind" || cO == "door" || cO == "pati" || cO == "open") { HOLE.DeleteFromWall(_G.OBJs[_objectNumber][22]); HOLE.RefreshAllWalls(); // } } PRICE.Calprice(); // version called in old undoredo system //int nO = DOIT.getint(On); //string nW = _G.OBJs[nO][22]; //_G.OBJs[nO][0] = "null"; //DestroyImmediate(GameObject.Find(On).gameObject); //DOIT.ResetRoomSelect(); //DOIT.AllSelOff(); //if (nW.Substring(0, 1) == "w") HOLE.wall(nW); //PRICE.Calprice(); } public void Undo() { // need to Reinstatiate the GameObject Debug.Log("Re Instantiate"); // need to call the right type of object creation, depending on the object //right now, destroyed game object get the same index in _G.OBJs, but should get a new object number if an index is empty and get taken //by another object information ConstructObject.Reconstruct(_objectNumber, _objectDatas[0]); CommandHandler.Instance.UpdateCommands(); PRICE.Calprice(); } public void UpdateCommand() { if (_objectToDelete != null) { //_objectToDelete.GetComponent().WaitForPlacement = false; string cO = _G.OBJs[_objectNumber][0][..4]; if (cO == "wind" || cO == "door" || cO == "pati" || cO == "open") { HOLE.DeleteFromWall(_G.OBJs[_objectNumber][22]); } return; } _objectToDelete = GameObject.Find(_objectDatas[0]); } public string GetAction() { return "Delete"; } }