private void CompleteMouseAction() { if (_activeModalBox != null) { CheckAndHandleModalAction(); } else if (_controlPanel.Contains(_inputHandler.MousePosition)) { CheckAndHandleCommandChange(); } else if (_selected == null) { switch (_controlPanel.ActiveOption) { case "Player": _player.WorldPosition = SnapToGrid(_inputHandler.MousePosition + _cameraController.WorldPosition - new Vector2(Definitions.CellSizeInPixels / 2.0f)); _player.Visible = true; break; case "Blocks": if (ModalBoxSelectionCanBePlaced("block-selector")) { AddTerrainObject(BlockFactory.CreateBlockFromTextureName(SelectorValue("block-selector")), _inputHandler.MousePosition); } break; case "Candies": if (ModalBoxSelectionCanBePlaced("candy-selector")) { AddTerrainObject(CollectableFactory.CreateCandyFromTextureName(SelectorValue("candy-selector")), _inputHandler.MousePosition); } break; case "Signs": if (ModalBoxSelectionCanBePlaced("sign-selector")) { AddTerrainObject(SignpostFactory.CreateSignpostFromTextureName(SelectorValue("sign-selector")), _inputHandler.MousePosition); } break; case "Flags": if (ModalBoxSelectionCanBePlaced("flag-selector")) { AddTerrainObject(FlagFactory.CreateFlagFromTextureName(SelectorValue("flag-selector")), _inputHandler.MousePosition); } break; case "Enemies": if (EnemySelectionCanBePlaced()) { AddEnemy(EnemyFactory.CreateEnemyFromTextureName(SelectorValue("enemy-selector")), _inputHandler.MousePosition); } break; case "Route": if (ModalBoxSelectionCanBePlaced("route-selector")) { AddTerrainObject(SignpostFactory.CreateRouteMarkerFromTextureName(SelectorValue("route-selector")), _inputHandler.MousePosition); } break; } } else if (_selected is ObjectBase) { if (!SnapDraggedObjectToGrid()) { _selected.ReturningToPreviousLocation = true; _selected.Selected = false; _selected = null; } } }