using System.Collections; using System.Collections.Generic; //using System.Drawing.Printing; using UnityEngine; public class CreateCommand : ICommand { GameObject _objectCreated; string[] _objectDatas; int _objectNumber; bool _firstExecution = true; public CreateCommand(int objectNumber) { if (objectNumber >= _G.OBJs.Length - 1) { return; } _objectNumber = objectNumber; _objectCreated =SceneModeManager.GetObjectInScene(_G.OBJs[_objectNumber][0])?.gameObject; DOIT.SaveObjectPositionInData(_objectCreated); _objectDatas = CommandHandler.CopyObjectData(_G.OBJs[_objectNumber]); //UpdateObjectData(); } public void UpdateObjectData() { if (_objectCreated == null) { _objectCreated = GameObject.Find(_G.OBJs[_objectNumber][0]); } if (_objectCreated != null) { DOIT.SaveObjectPositionInData(_objectCreated); _objectDatas = CommandHandler.CopyObjectData(_G.OBJs[_objectNumber]); } } public void Execute() { if (_firstExecution) { _firstExecution = false; } else { bool isObjectNull = _objectCreated == null; Debug.Assert(isObjectNull, "Object to be reconstructed is still present in scene."); //_objectCreated = GameObject.Find(_objectDatas[0]); if (isObjectNull) { //_G.OBJs[_objectNumber][0] = _objectDatas[0]; //_G.OBJs[_objectNumber] = CommandHandler.CopyObjectData(_objectDatas); ConstructObject.Reconstruct(_objectNumber, _objectDatas[0]); } CommandHandler.Instance.UpdateCommands(); PRICE.Calprice(); } } public void Undo() { if (_objectCreated == null) { UpdateCommand(); } string nW = _G.OBJs[_objectNumber][22]; _G.OBJs[_objectNumber][0] = "null"; GameObject.DestroyImmediate(_objectCreated); // //_G.OBJs[nO] = null; GameObject.Find("HIDER").transform.Find("CONTROL").gameObject.SetActive(false); DOIT.CloseALLPNL(); DOIT.ResetRoomSelect(); DOIT.AllSelOff(); SceneModeManager.Instance.SetSceneMode(SceneModes.Navigate); if (nW.Substring(0, 1) == "w") HOLE.wall(nW); PRICE.Calprice(); } public void UpdateCommand() { if (_objectCreated != null) return; if (_objectDatas == null) { UpdateObjectData(); } _objectCreated = GameObject.Find(_objectDatas[0]); if (_objectCreated != null) { //_objectCreated.GetComponent().WaitForPlacement = false; string cO = _G.OBJs[_objectNumber][0].Substring(0, 4); if (cO == "wind" || cO == "door" || cO == "pati" || cO == "open") { HOLE.wall(_G.OBJs[_objectNumber][22]); } } } public int GetObjectNumber() { return _objectNumber; } public string GetAction() { return "Create"; } }