using UnityEngine; using UnityEngine.UI; using UnityEngine.EventSystems; using UnityEngine.InputSystem; using System.Collections.Generic; using UnityEngine.SceneManagement; using TMPro; using Newtonsoft.Json.Linq; using System.Collections; using System.Text.RegularExpressions; public class EditorMenu : MonoBehaviour { public GameObject buildTab; public GameObject sampleObject; public int gameObjects; private readonly Dictionary objectMap = new(); private GameObject selectedObj = null; private int selectedId = -1; private Vector2 pos1 = new(-5, -5); private Vector2 pos2 = new(2495, 495); private readonly HashSet placedPositions = new(); public new Camera camera; public GameObject actionPanel; private const int gridSize = 10; bool isDragging = false; Vector2 pointerDownPos; bool pointerDown = false; bool dragDuringHold = false; bool pointerReleased = false; private float zoomLevel = 35f; private const float cameraSpeed = 0.2f; public GameObject editTab; public Button normalUpButton; public Button normalDownButton; public Button normalLeftButton; public Button normalRightButton; public Button doubleUpButton; public Button doubleDownButton; public Button doubleLeftButton; public Button doubleRightButton; private SpriteRenderer selectedObject; public Button deleteButton; public Button quickDeleteButton; public GameObject pausePanel; public Button pauseButton; public Button pauseResumeButton; public Button saveAndPlayResumeButton; public Button saveAndExitResumeButton; public Button saveResumeButton; public Button exitResumeButton; public GameObject objectContainer; private float prevPinchDistance = -1; public TMP_Text objectsText; public Button zoomInButton; public Button zoomOutButton; private readonly int maxObjects = 4000; private string levelUuid; private JArray backgroundColor = new(40, 125, 255); private JArray groundColor = new(0, 102, 255); private int selectedSong = 1; public Button editObjectButton; public GameObject editObjectPanel; public Button editObjectCloseButton; public ColorChangeManager editColorPanel; private ColorChangeManager editColorPanelClone; private int colorEditMode = -1; public GameObject levelSettingsPanel; public Button levelSettingsButton; public Button levelSettingsPanelBackgroundButton; public Button levelSettingsPanelGroundButton; public Slider levelSettingsPanelSongSlider; public TMP_Text levelSettingsPanelSongSliderText; async void Start() { if (BazookaManager.Instance.tempData["targetEditorUuid"] == null) { await SceneManager.LoadSceneAsync("CreatedLevelsMenu"); return; } GenerateGridLines(); for (int i = 0; i < gameObjects; i++) { GameObject obj = Instantiate(sampleObject, buildTab.transform); obj.name = i.ToString(); obj.transform.GetChild(0).GetComponent().sprite = Resources.Load($"Objects/{i + 1}"); obj.SetActive(true); objectMap[obj] = i; if (!obj.TryGetComponent