private void Update() { if (Input.GetMouseButtonDown(0)) { var indicated = GetIndicated(); if (indicated.IsPresent) { _clickedTile = indicated.Value; } } else if (Input.GetMouseButtonUp(0)) { var indicated = GetIndicated(); if (indicated.IsPresent) { if (!_clickedTile.Equals(indicated.Value) && gameInputActive.Value && piece.Selected.IsPresentAnd(x => new TilePoint(x).Equals(_clickedTile))) { Message.Publish(new MoveToRequested(piece.Selected.Value, _clickedTile, GetReleasedTilePoint(indicated.Value))); } } } }
private void Update() { if (Input.GetMouseButtonDown(0)) { var rawMousePos = Input.mousePosition; var adjustedMousePos = rawMousePos + new Vector3(0, 0, -_mainCamera.transform.position.z); var mousePos = _mainCamera.ScreenToWorldPoint(adjustedMousePos); _clickedTile = new TilePoint(mousePos); } else if (Input.GetMouseButtonUp(0)) { var rawMousePos = Input.mousePosition; var adjustedMousePos = rawMousePos + new Vector3(0, 0, -_mainCamera.transform.position.z); var mousePos = _mainCamera.ScreenToWorldPoint(adjustedMousePos); var releasedTile = new TilePoint(mousePos); if (!_clickedTile.Equals(releasedTile) && gameInputActive.Value && piece.Selected.IsPresentAnd(x => new TilePoint(x).Equals(_clickedTile))) { Message.Publish(new MoveToRequested(piece.Selected.Value, _clickedTile, GetReleasedTilePoint(releasedTile))); } } }