Exemple #1
0
        void HandleInput()
        {
            if (currentTerraform == TerraFormType.BUILD)  //TODO: Change to something else, not conflicting with WASD
            {
                if (Input.GetKeyDown(KeyCode.A))
                {
                    direction--;
                    if (direction <= -1)
                    {
                        direction = 3;
                    }
                    direction %= 4;
                }
                if (Input.GetKeyDown(KeyCode.D))
                {
                    direction++;
                    if (direction <= -1)
                    {
                        direction = 3;
                    }
                    direction %= 4;
                }
            }
            didRelease = Input.GetMouseButtonUp(0);
            didPress   = Input.GetMouseButtonDown(0);
            isDragging = Input.GetMouseButton(0);

            //Setup raycast
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            //Cast ray to see if we are interacting with terrain
            if (Physics.Raycast(ray, out hit, 2048f, terrainMask))
            {
                currentPointerPos = GetHeightMapCoords(hit.point) + (IsTileOperation(currentTerraform) ? HalfTileSize() : Vector3.zero);
                currentTile       = world.GetTileFromWorldPosition(currentPointerPos);

                if (didPress)
                {
                    startPos      = currentPointerPos;
                    dragStartTile = currentTile;
                }
                if (didRelease)
                {
                    dragStopTile = currentTile;
                }
            }

            if (currentTerraform == TerraFormType.NONE && Input.GetMouseButtonDown(0) && !eventSystem.IsPointerOverGameObject() && Physics.Raycast(ray, out hit, 2048f, buildingMask))
            {
                var buildingScript = hit.collider.GetComponent <SimpleBuildingBehaviour>();
                if (buildingScript != null)
                {
                    buildingScript.HandleBuildingClicked();
                    OnBuildingClicked.Invoke(buildingScript);
                }
            }
        }