From 0e9909c951b238073d312b4f50d66df41a0a803c Mon Sep 17 00:00:00 2001 From: Jason Reed Date: Mon, 5 Feb 2024 18:16:34 -0500 Subject: [PATCH] Get rid of shuffle button --- src/core/low-actions.ts | 8 +++++--- src/ui/instructions.tsx | 2 ++ src/ui/render.ts | 11 +---------- src/ui/widget-helpers.ts | 17 ----------------- 4 files changed, 8 insertions(+), 30 deletions(-) diff --git a/src/core/low-actions.ts b/src/core/low-actions.ts index 73462ec..c21a143 100644 --- a/src/core/low-actions.ts +++ b/src/core/low-actions.ts @@ -66,6 +66,9 @@ function reduceMouseDownInHand(state: GameState, wp: WidgetPoint & { t: 'hand' } if (tool == 'dynamite') return { t: 'mouseDownIntent', intent: dynamiteIntent, wp }; else if (tool == 'bomb') return { t: 'mouseDownIntent', intent: bombIntent, wp }; else { + if (button == 2) + return { t: 'shuffle' }; + const hoverTile = wp.indexValid && index >= 0 && index < tiles.length; if (hoverTile) { return { t: 'startDragHandTile', index, wp }; @@ -94,7 +97,7 @@ function reducePauseButton(state: CoreState): CoreState { return produce(state, s => { s.slowState.paused = { pauseTime_in_clock: Date.now() }; }); } -function reduceShuffleButton(state: CoreState): CoreState { +function reduceShuffle(state: CoreState): CoreState { const hs = get_hand_tiles(state); let randomOrder = getRandomOrder(hs.length); let retries = 0; @@ -120,7 +123,6 @@ function reduceMouseDown(state: GameState, wp: WidgetPoint, button: number, mods case 'hand': return reduceMouseDownInHand(state, wp, button, mods); case 'toolbar': return reduceMouseDownInToolbar(state, wp, button, mods); case 'pauseButton': return { t: 'vacuousDownAnd', wp, action: { t: 'pause' } }; - case 'shuffleButton': return { t: 'vacuousDownAnd', wp, action: { t: 'shuffle' } }; case 'nowhere': return { t: 'vacuousDown', wp }; } } @@ -411,7 +413,7 @@ function resolveGameLowAction(state: GameState, action: GameLowAction): GameStat } } case 'vacuousDown': return vacuous_down(state, action.wp); - case 'shuffle': return withCoreState(state, reduceShuffleButton); + case 'shuffle': return withCoreState(state, reduceShuffle); case 'pause': return withCoreState(state, reducePauseButton); case 'multiple': return resolveGameLowActions(state, action.actions); case 'deselect': return withCoreState(state, deselect); diff --git a/src/ui/instructions.tsx b/src/ui/instructions.tsx index a51728c..6fcd23a 100644 --- a/src/ui/instructions.tsx +++ b/src/ui/instructions.tsx @@ -156,6 +156,8 @@ export function Instructions(props: { dispatch: Dispatch, page: number }): JSX.E ` or /Flip orientation of dragged tile group spaceDraw Tile mouse wheelZoom in/out + right mouse buttonPan + right mouse button in handShuffle (starting from tile) Alt dragSwap tiles Shift dragAdd to selection Ctrl dragSubtract from selection diff --git a/src/ui/render.ts b/src/ui/render.ts index b98ee5a..e0cf96e 100644 --- a/src/ui/render.ts +++ b/src/ui/render.ts @@ -20,7 +20,7 @@ import { drawAnimation } from './drawAnimation'; import { drawBonus } from './drawBonus'; import { CanvasInfo } from './use-canvas'; import { cell_in_canvas, drawBubble, pan_canvas_from_world_of_state } from './view-helpers'; -import { GLOBAL_BORDER, PANIC_THICK, canvas_bds_in_canvas, canvas_from_hand, canvas_from_toolbar, effective_toolbar_bds_in_canvas, getWidgetPoint, hand_bds_in_canvas, inner_hand_bds_in_canvas, panic_bds_in_canvas, pause_button_bds_in_canvas, score_bds_in_canvas, shuffle_button_bds_in_canvas, spacer1_bds_in_canvas, spacer2_bds_in_canvas, toolbar_bds_in_canvas, world_bds_in_canvas } from './widget-helpers'; +import { GLOBAL_BORDER, PANIC_THICK, canvas_bds_in_canvas, canvas_from_hand, canvas_from_toolbar, effective_toolbar_bds_in_canvas, getWidgetPoint, hand_bds_in_canvas, inner_hand_bds_in_canvas, panic_bds_in_canvas, pause_button_bds_in_canvas, score_bds_in_canvas, spacer1_bds_in_canvas, spacer2_bds_in_canvas, toolbar_bds_in_canvas, world_bds_in_canvas } from './widget-helpers'; const INTERFACE_RADIUS = 2 * GLOBAL_BORDER; const PANIC_RADIUS = Math.min(INTERFACE_RADIUS, PANIC_THICK / 2); @@ -339,14 +339,6 @@ export function rawPaint(ci: CanvasInfo, state: GameState, glEnabled: boolean) { } } - function drawShuffleButton() { - d.textAlign = 'center'; - d.textBaseline = 'middle'; - if (cs.slowState.winState.t != 'lost') { - fillText(d, '🔀', midpointOfRect(shuffle_button_bds_in_canvas), 'white', '36px sans-serif'); - } - } - function drawHand(illegalDrag: boolean) { // const handBackgroundColor = illegalDrag ? backgroundRed : backgroundGray; // fillRect(d, hand_bds_in_canvas, handBackgroundColor); @@ -498,7 +490,6 @@ export function rawPaint(ci: CanvasInfo, state: GameState, glEnabled: boolean) { fillText(d, 'YOU LOST', mp, 'rgba(128,0,0,1)', '96px serif'); } else { - drawShuffleButton(); drawAnimations(now_in_game(cs.game_from_clock), glEnabled); } if (cs.slowState.winState.t == 'won') { diff --git a/src/ui/widget-helpers.ts b/src/ui/widget-helpers.ts index efe652e..ec387c7 100644 --- a/src/ui/widget-helpers.ts +++ b/src/ui/widget-helpers.ts @@ -17,8 +17,6 @@ const SPACER_WIDTH = 5; export const canvas_bds_in_canvas: Rect = { p: { x: 0, y: 0 }, sz: { x: 1024, y: 768 } }; export const DEFAULT_TILE_SCALE = 48; -const SHUFFLE_WIDTH = DEFAULT_TILE_SCALE + 2 * HAND_VERT_PADDING + 2 * HAND_VERT_MARGIN + PANIC_THICK + GLOBAL_BORDER; - const pauseButton = packVert( nameRect('pause', fixedRect(vdiag(DEFAULT_TILE_SCALE + 2 * HAND_VERT_PADDING - HAND_VERT_MARGIN))), fixedRect({ x: 0, y: HAND_VERT_MARGIN }), @@ -104,14 +102,6 @@ export function effective_toolbar_bds_in_canvas(state: CoreState): Rect { export const pause_button_bds_in_canvas: Rect = rects['pause']; -export const shuffle_button_bds_in_canvas: Rect = { - p: { - x: canvas_bds_in_canvas.sz.x - SHUFFLE_WIDTH, - y: canvas_bds_in_canvas.sz.y - 1.9 * BAR_WIDTH - 10, - }, - sz: { x: SHUFFLE_WIDTH, y: BAR_WIDTH } -}; - export function canvas_from_hand(): SE2 { return { scale: { x: DEFAULT_TILE_SCALE, y: DEFAULT_TILE_SCALE }, @@ -150,7 +140,6 @@ export type WidgetPoint = | DragWidgetPoint | { t: 'toolbar', p_in_local: Point, p_in_canvas: Point, local_from_canvas: SE2, tool: Tool } | { t: 'pauseButton', p_in_canvas: Point } - | { t: 'shuffleButton', p_in_canvas: Point } | { t: 'nowhere', p_in_canvas: Point } // outside canvas bounds ; @@ -161,12 +150,6 @@ export function getWidgetPoint(state: CoreState, p_in_canvas: Point): WidgetPoin p_in_canvas, }; } - if (pointInRect(p_in_canvas, shuffle_button_bds_in_canvas) && state.slowState.winState.t != 'lost') { - return { - t: 'shuffleButton', - p_in_canvas, - }; - } else if (pointInRect(p_in_canvas, effective_toolbar_bds_in_canvas(state))) { const toolbar_from_canvas = inverse(canvas_from_toolbar()); const p_in_local = apply(toolbar_from_canvas, p_in_canvas);