Пример #1
0
    public PlantPiece getPlantByPosition(int posX_, int posY_)
    {
        PlantPiece plant_ = null;

        foreach (PlantPiece p_ in plants)
        {
            if (p_.posX == posX_ && p_.posY == posY_)
            {
                plant_ = p_;
                break;
            }
        }

        return(plant_);
    }
Пример #2
0
    public void instantiatePlant(int plantId_, int posX_, int posY_)
    {
        if (posX_ < boardWidth && posY_ < boardHeight)
        {
            float halfHeight_ = ((float)boardHeight / 2) - 0.5f;
            float halfWidth_  = ((float)boardWidth / 2) - 0.5f;

            GameObject inst_       = Instantiate(getPlantById(plantId_).prefab, new Vector3(posX_ - halfWidth_, 0, posY_ - halfHeight_), Quaternion.Euler(0, 0, 0), gameboardPivot.transform.parent);
            PlantPiece plantPiece_ = inst_.GetComponent <PlantPiece>();

            plantPiece_.posX = posX_;
            plantPiece_.posY = posY_;

            plants.Add(inst_.GetComponent <PlantPiece>());
        }
        else
        {
            Debug.Log("- plant position is out of board range!");
        }
    }
Пример #3
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            InstantiateGameBoard();
        }

        Ray        ray_ = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit_;

        if (Physics.Raycast(ray_, out hit_, Mathf.Infinity))
        {
            if (lastSelectedPiece != hit_.transform.gameObject)
            {
                hit_.transform.gameObject.GetComponent <GameBoardPiece>().setActive(true);

                if (lastSelectedPiece != null)
                {
                    lastSelectedPiece.GetComponent <GameBoardPiece>().setActive(false);
                }

                lastSelectedPiece = hit_.transform.gameObject;
            }

            if (isPlantingPlant)
            {
                if (getPlantByPosition(lastSelectedPiece.GetComponent <GameBoardPiece>().posX, lastSelectedPiece.GetComponent <GameBoardPiece>().posY) == null)
                {
                    lastSelectedPiece.GetComponent <GameBoardPiece>().setColor(Color.green);

                    if (Input.GetKeyDown(KeyCode.Mouse0))
                    {
                        instantiatePlant(plantToPlantId, lastSelectedPiece.GetComponent <GameBoardPiece>().posX, lastSelectedPiece.GetComponent <GameBoardPiece>().posY);
                        isPlantingPlant = false;
                        plantToPlantId  = 0;
                    }
                }
                else
                {
                    lastSelectedPiece.GetComponent <GameBoardPiece>().setColor(Color.red);
                }
            }
            else if (isMovingPlant)
            {
                if (getPlantByPosition(lastSelectedPiece.GetComponent <GameBoardPiece>().posX, lastSelectedPiece.GetComponent <GameBoardPiece>().posY) == null)
                {
                    lastSelectedPiece.GetComponent <GameBoardPiece>().setColor(Color.green);

                    if (Input.GetKeyDown(KeyCode.Mouse0))
                    {
                        selectedPlant.posX = lastSelectedPiece.GetComponent <GameBoardPiece>().posX;
                        selectedPlant.posY = lastSelectedPiece.GetComponent <GameBoardPiece>().posY;

                        float halfHeight_ = ((float)boardHeight / 2) - 0.5f;
                        float halfWidth_  = ((float)boardWidth / 2) - 0.5f;

                        selectedPlant.transform.position = new Vector3(selectedPlant.posX - halfWidth_, 0, selectedPlant.posY - halfHeight_);

                        isMovingPlant = false;
                        selectedPlant = null;
                    }
                }
                else
                {
                    if (getPlantByPosition(lastSelectedPiece.GetComponent <GameBoardPiece>().posX, lastSelectedPiece.GetComponent <GameBoardPiece>().posY) == selectedPlant)
                    {
                        lastSelectedPiece.GetComponent <GameBoardPiece>().setColor(Color.yellow);

                        if (Input.GetKeyDown(KeyCode.Mouse0))
                        {
                            isMovingPlant = false;
                            selectedPlant = null;
                        }
                    }

                    lastSelectedPiece.GetComponent <GameBoardPiece>().setColor(Color.yellow);
                }
            }
            else
            {
                if (getPlantByPosition(lastSelectedPiece.GetComponent <GameBoardPiece>().posX, lastSelectedPiece.GetComponent <GameBoardPiece>().posY) != null)
                {
                    lastSelectedPiece.GetComponent <GameBoardPiece>().setColor(Color.green);

                    if (Input.GetKeyDown(KeyCode.Mouse0))
                    {
                        isMovingPlant = true;
                        selectedPlant = getPlantByPosition(lastSelectedPiece.GetComponent <GameBoardPiece>().posX, lastSelectedPiece.GetComponent <GameBoardPiece>().posY);
                    }
                }
                else
                {
                    lastSelectedPiece.GetComponent <GameBoardPiece>().alpha = 0;
                }
            }
        }
        else
        {
            if (lastSelectedPiece != null)
            {
                lastSelectedPiece.GetComponent <GameBoardPiece>().setActive(false);

                lastSelectedPiece = null;
            }
        }
    }