Ejemplo n.º 1
0
    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;
            }
        }
    }
Ejemplo n.º 2
0
    // 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);
         */
    }