Exemplo n.º 1
0
        private void ToggleBuildMenu()
        {
            // If build menu already shown, hide it
            if (buildMenu.IsShowing)
            {
                buildMenu.Hide();
                return;
            }

            // If build menu not shown, check distance to base
            if (!(Vector2.Distance(GameManager.Instance.PlayerBase.transform.position, transform.position) <
                  buildMenuToggleRange))
            {
                return;
            }

            buildMenu.Show();
        }
Exemplo n.º 2
0
 void Cancel()
 {
     if (canCancel)
     {
         Destroy(curInstantiated);
         infoCamera.enabled = false;
         curSelected        = null;
         inBuildMode        = false;
         Camera.main.GetComponent <CameraController>().SetHaveControl(true);
         instantHere.SetActive(false);
         BuildMenu.Hide();
     }
 }
Exemplo n.º 3
0
    // Updates the turbine to the mouse cursor until placement is confirmed
    void UpdateSelectedPosition()
    {
        world.ResetTempChunks();

        Vector3    plantPos  = Vector3.zero;                                      // Get zero vector
        GridTile   plantGrid = null;
        Ray        ray       = Camera.main.ScreenPointToRay(Input.mousePosition); // Raycast to find where the mouse is pointing at
        RaycastHit hit;
        bool       canBuild = false;

        Camera.main.GetComponent <CameraController>().SetHaveControl(true);
        if (Physics.Raycast(ray, out hit, Mathf.Infinity, buildMask))
        {
            //plantGrid = GridTile.FindClosestGridTile(hit.point + new Vector3(TerrainController.thisTerrainController.tileSize / 2, 0, TerrainController.thisTerrainController.tileSize / 2)); // Grab the grid where we're hitting
            //plantPos = plantGrid.position; // What is the x,y,z coords?
            plantPos = hit.point;
            if ((!curInstantiated.GetComponent <BuildAttributes>().canRotateAtBuild || (curInstantiated.GetComponent <BuildAttributes>().canRotateAtBuild&& !Input.GetMouseButton(1))))
            {
                curInstantiated.transform.position = plantPos; // We already have a preview turbine, just update it's position to follow the mouse
            }
            if (mouseX * rotateSpeed >= 1 || mouseX * rotateSpeed <= -1)
            {
                curInstantiated.transform.rotation = Quaternion.Euler(curInstantiated.transform.rotation.eulerAngles.x, Mathf.RoundToInt(curInstantiated.transform.rotation.eulerAngles.y + mouseX * rotateSpeed), curInstantiated.transform.rotation.eulerAngles.z);
                mouseX = 0;
            }


            if ((!curInstantiated.GetComponent <BuildAttributes>().canRotateAtBuild || (curInstantiated.GetComponent <BuildAttributes>().canRotateAtBuild&& !Input.GetMouseButton(1))))
            {
                if (world.CanBuild(plantPos, curInstantiated.GetComponent <SizeController>().diameter, curInstantiated, curInstantiated.GetComponent <SizeController>().desiredScale, curInstantiated.transform.rotation, true)) // If we can build here, make the color greenish
                {
                    foreach (Renderer ren in curInstantiated.GetComponentsInChildren <Renderer>())
                    {
                        foreach (Material mat in ren.materials)
                        {
                            mat.shader = blueBuildMaterial.shader;
                            mat.color  = blueBuildMaterial.color;
                        }
                    }
                    plantPos = world.TempEqualTerrain(plantPos, curInstantiated.GetComponent <SizeController>().diameter, curInstantiated.GetComponent <SizeController>().desiredScale);
                    curInstantiated.transform.position = plantPos;

                    canBuild = true;
                }
                else // We can't build here, make the color reddish
                {
                    foreach (Renderer ren in curInstantiated.GetComponentsInChildren <Renderer>())
                    {
                        foreach (Material mat in ren.materials)
                        {
                            mat.shader = redBuildMaterial.shader;
                            mat.color  = redBuildMaterial.color;
                        }
                    }
                    canBuild = false;
                }
            }
        }

        if (curInstantiated.GetComponent <BuildAttributes>().canRotateAtBuild&& Input.GetMouseButton(1))
        {
            mouseX += Input.GetAxis("Mouse X") * Time.deltaTime;
        }
        else if (curInstantiated.GetComponent <BuildAttributes>().canRotateAtBuild&& Input.GetMouseButtonUp(1))
        {
            mouseX = 0;
        }
        if (Input.GetMouseButtonDown(0) && canBuild) // The user clicks and we can build here
        {
            BuildNow(plantGrid, plantPos);           // Run the build function
            infoCamera.enabled = false;
            curSelected        = null;
            inBuildMode        = false;
            instantHere.SetActive(false);
            BuildMenu.Hide();
        }

        if (Input.GetKeyDown(KeyCode.Escape))
        {
            BuildMode2BuildMenu();
        }
    }