protected override void Execute(TileIndicated msg) { var selectable = map.GetSelectable(msg.Tile); if (selectable.IsPresent && IsNotAlreadySelected(msg.Tile)) { Debug.Log($"Selected Piece at {msg.Tile}"); Message.Publish(new PieceSelected(selectable.Value)); return; } Debug.Log($"Move To {msg.Tile} Requested"); piece.Selected.IfPresent(p => Message.Publish(new MoveToRequested(p, new TilePoint(p.gameObject), msg.Tile))); }