void populateMenu(List <GameObject> listOfButtons, byte list, int index) { //list 0 for floor, 1 for walls, 2 for misc; for (int i = 0; i < listOfButtons.Count; i++) { SetActiveTile script = listOfButtons[i].GetComponent <SetActiveTile>(); script.index = index + i; script.list = list; // 0 = floor, 1 = walls, 2 = misc switch (list) { case 0: if (index + i < levelManager.Sprite_FloorTileList.Count) { script.changeSelf(levelManager.Sprite_FloorTileList[index + i], levelManager.Color_FloorTileList[index + i]); } else { script.resetSelf(emptycolor); } break; case 1: if (index + i < levelManager.Sprite_WallTileList.Count) { script.changeSelf(levelManager.Sprite_WallTileList[index + i], levelManager.Color_WallTileList[index + i]); } else { script.resetSelf(emptycolor); } break; case 2: if (index + i < levelManager.Sprite_MiscList.Count) { script.changeSelf(levelManager.Sprite_MiscList[index + i], levelManager.Color_Misc[index + i]); } else { script.resetSelf(emptycolor); } break; } } }
// Update is called once per frame void Update() { ray.x = Camera.main.ScreenToWorldPoint(Input.mousePosition).x; ray.y = Camera.main.ScreenToWorldPoint(Input.mousePosition).y; ray.x = Mathf.Round(ray.x); ray.y = Mathf.Round(ray.y); editorTexture.transform.position = new Vector2(ray.x, ray.y); coordinatesText.text = "Coordinates: X = " + ray.x + " Y = " + ray.y; if (!EventSystem.current.IsPointerOverGameObject()) { if (Input.GetMouseButtonDown(0)) { if (activeObject != null && activeObjectColor != emptycolor) { switch (layer) { case 0: { objtodestroy = maintiles.Where(item => item.x == ray.x && item.y == ray.y).Select(item => item.tileobj).FirstOrDefault(); index = maintiles.FindIndex(item => item.x == ray.x && item.y == ray.y); Debug.Log(activeObjectColor); PlaceNewTile(objtodestroy, activeObject, activeObjectColor, maintiles, index, layer, Mathf.RoundToInt(ray.x), Mathf.RoundToInt(ray.y)); break; } case 1: { objtodestroy = misctiles.Where(item => item.x == ray.x && item.y == ray.y).Select(item => item.tileobj).FirstOrDefault(); index = misctiles.FindIndex(item => item.x == ray.x && item.y == ray.y); Debug.Log(activeObjectColor); PlaceNewTile(objtodestroy, activeObject, activeObjectColor, misctiles, index, layer, Mathf.RoundToInt(ray.x), Mathf.RoundToInt(ray.y)); break; } } } else { switch (layer) { case 0: { pipetObject = maintiles.Where(item => item.x == ray.x && item.y == ray.y).Select(item => item).FirstOrDefault(); try { pipetButton = floorButtonList.Where(item => item.GetComponent <SetActiveTile>().tilecolor == pipetObject.color).Select(item => item).FirstOrDefault(); if (pipetButton == null) { pipetButton = wallButtonList.Where(item => item.GetComponent <SetActiveTile>().tilecolor == pipetObject.color).Select(item => item).FirstOrDefault(); } if (pipetButton == null) { Debug.Log("Tile not found, could not pipet."); } else { tileOfPipetButton = pipetButton.GetComponent <SetActiveTile>(); ChangeActiveTile(tileOfPipetButton.index, pipetObject.tileobj, tileOfPipetButton.tilecolor, tileOfPipetButton.list); pipetButton = null; tileOfPipetButton = null; } } catch (System.Exception ex) { Debug.Log("Tile could not be pipeted. Error: " + ex); } break; } case 1: { pipetObject = misctiles.Where(item => item.x == ray.x && item.y == ray.y).Select(item => item).FirstOrDefault(); try { pipetButton = miscButtonList.Where(item => item.GetComponent <SetActiveTile>().tilecolor == pipetObject.color).Select(item => item).FirstOrDefault(); if (pipetButton == null) { Debug.Log("Tile not found, could not pipet."); } else { tileOfPipetButton = pipetButton.GetComponent <SetActiveTile>(); ChangeActiveTile(tileOfPipetButton.index, pipetObject.tileobj, tileOfPipetButton.tilecolor, tileOfPipetButton.list); pipetButton = null; tileOfPipetButton = null; } } catch (System.Exception ex) { Debug.Log("Tile could not be pipeted. Error: " + ex); } break; } } } } if (Input.GetMouseButtonDown(1)) { if (activeObject == null || activeObjectColor == emptycolor) { Debug.Log(ray.x + " " + ray.y); switch (layer) { case 0: { objtodestroy = maintiles.Where(item => item.x == ray.x && item.y == ray.y).Select(item => item.tileobj).FirstOrDefault(); index = maintiles.FindIndex(item => item.x == ray.x && item.y == ray.y); DestroyTile(objtodestroy, maintiles, index, layer); break; } case 1: { objtodestroy = misctiles.Where(item => item.x == ray.x && item.y == ray.y).Select(item => item.tileobj).FirstOrDefault(); index = misctiles.FindIndex(item => item.x == ray.x && item.y == ray.y); DestroyTile(objtodestroy, misctiles, index, layer); break; } } } else { ResetActiveTile(); } } } /* * Vector3 v3 = Camera.main.ScreenToWorldPoint(Input.mousePosition); * editorTexture.transform.position = new Vector3(v3.x,v3.y,0); */ }