private void Build()
    {
        if (!_actionStarted)
        {
            return;
        }
        (bool, string)response;
        var position = _mapController.GetMousePosition(_mousePosition);

        switch (_state)
        {
        case State.Inactive:
            return;

        case State.BuildTerrain:
            _mapController.BuildTerrain(position, "Concrete");
            break;

        case State.BuildWall:
            response = _mapController.BuildWall(position);
            if (!response.Item1 && !_recentErrors.ContainsKey(position))
            {
                _recentErrors[position] = Time.time + 5f;
                FloatingTextManager.I().DisplayText(response.Item2, position, Color.red);
            }
            else
            {
                _recentErrors[position] = Time.time + 2f;
            }

            break;

        case State.DestroyWall:
            _mapController.DestroyWall(position);
            break;

        case State.BuildFurniture:
            response = _mapController.BuildFurniture(position, CurrentObjectName, rotations[_rotation]);
            if (!response.Item1 && !_recentErrors.ContainsKey(position))
            {
                _recentErrors[position] = Time.time + 5f;
                FloatingTextManager.I().DisplayText(response.Item2, position, Color.red);
            }
            else
            {
                _recentErrors[position] = Time.time + 2f;
            }

            if (response.Item1)
            {
                _uiController.UpdateSelectionName(CurrentObjectName);
            }
            _actionStarted = false;
            break;

        case State.DestroyFurniture:
            var values = _mapController.DestroyFurniture(position);
            _actionStarted = false;
            break;
        }
    }