using UnityEngine; using UnityEngine.UI; using System.Collections.Generic; public class LevelEditor : MonoBehaviour { [Header("Placement")] public Transform mapParent; private GameObject currentBlock; private bool isPlacingBlock = false; private Vector3 currentScale = new Vector3(1f, 1f, 1); private float scaleStep = 0.1f; [Header("UI")] public Transform blockGroupContainer; public Transform portalGroupContainer; public GameObject buttonPrefabTemplate; private bool showingBlocks = true; private int currentPage = 0; private const int buttonsPerPage = 8; private List blockPrefabs = new(); private List portalPrefabs = new(); private List currentButtons = new(); private GameObject resizingTarget = null; private bool isResizing = false; private Vector3 originalMousePos; private Vector3 originalScale; private enum ResizeAxis { None, Horizontal, Vertical } private ResizeAxis currentResizeAxis = ResizeAxis.None; void Start() { LoadPrefabs(); GenerateButtons(); } void LoadPrefabs() { blockPrefabs.AddRange(Resources.LoadAll("Prefabs/Block")); blockPrefabs.AddRange(Resources.LoadAll("Prefabs/Spike")); portalPrefabs.AddRange(Resources.LoadAll("Prefabs/Portals")); portalPrefabs.AddRange(Resources.LoadAll("Prefabs/Bonus")); } void GenerateButtons() { ClearCurrentButtons(); List source = showingBlocks ? blockPrefabs : portalPrefabs; Transform container = showingBlocks ? blockGroupContainer : portalGroupContainer; if (container == null || buttonPrefabTemplate == null) { Debug.LogError("UI Container ou prefab de bouton manquant."); return; } int start = currentPage * buttonsPerPage; int end = Mathf.Min(start + buttonsPerPage, source.Count); for (int i = start; i < end; i++) { GameObject button = Instantiate(buttonPrefabTemplate, container); button.SetActive(true); Transform canvas = button.transform.Find("Canvas"); Transform bg = canvas?.Find("BlankSquare"); Transform icon = canvas?.Find("PrefabIcon"); if (bg == null || icon == null) { Destroy(button); continue; } float xOffset = -375f + (i - start) * 125f; bg.GetComponent().anchoredPosition = new Vector2(xOffset, bg.GetComponent().anchoredPosition.y); icon.GetComponent().anchoredPosition = new Vector2(xOffset, icon.GetComponent().anchoredPosition.y); Image bgImage = bg.GetComponent(); Image iconImage = icon.GetComponent(); bgImage.sprite = Resources.Load("InGame/ButtonSkin/BlankSquare"); iconImage.sprite = source[i].GetComponent()?.sprite; string prefabName = source[i].name.ToLower(); if (prefabName.Contains("smallspike") || prefabName.Contains("smallobstacle")) icon.GetComponent().sizeDelta = new Vector2(50, 25); else icon.GetComponent().sizeDelta = new Vector2(50, 50); GameObject prefab = source[i]; button.GetComponent