@@ -3,25 +3,36 @@ import { usePathFinding } from "../hooks/usePathFinding";
33import { MAX_COLS , MAX_ROWS } from "../utils/constants" ;
44import { Tile } from "./Tile" ;
55import { MutableRefObject , useState } from "react" ;
6- import { checkIfStartOrEnd , createNewGrid , resetCurrentStart , setNewStartTile } from "../utils/helpers" ;
6+ import {
7+ checkIfStartOrEnd ,
8+ createNewGrid ,
9+ resetCurrentEnd ,
10+ resetCurrentStart ,
11+ setNewEndTile ,
12+ setNewStartTile ,
13+ } from "../utils/helpers" ;
714import { useTile } from "../hooks/useTile" ;
815
916export function Grid ( {
1017 isVisualizationRunningRef,
1118 isChangeStartSelectedRef,
19+ isChangeEndSelectedRef,
1220} : {
1321 isVisualizationRunningRef : MutableRefObject < boolean > ;
1422 isChangeStartSelectedRef : MutableRefObject < boolean > ;
23+ isChangeEndSelectedRef : MutableRefObject < boolean > ;
1524} ) {
1625 const { grid, setGrid } = usePathFinding ( ) ;
1726 const [ isMouseDown , setIsMouseDown ] = useState < boolean > ( false ) ;
18- const { startTile, setStartTile} = useTile ( ) ;
27+ const { startTile, setStartTile, endTile, setEndTile } = useTile ( ) ;
28+
1929
2030 const handleMouseDown = ( row : number , col : number ) => {
2131 if (
2232 isVisualizationRunningRef . current ||
2333 checkIfStartOrEnd ( row , col ) ||
24- isChangeStartSelectedRef . current
34+ isChangeStartSelectedRef . current ||
35+ isChangeEndSelectedRef . current
2536 ) {
2637 return ;
2738 }
@@ -35,7 +46,8 @@ export function Grid({
3546 if (
3647 isVisualizationRunningRef . current ||
3748 checkIfStartOrEnd ( row , col ) ||
38- isChangeStartSelectedRef . current
49+ isChangeStartSelectedRef . current ||
50+ isChangeEndSelectedRef . current
3951 ) {
4052 return ;
4153 }
@@ -47,7 +59,8 @@ export function Grid({
4759 if (
4860 isVisualizationRunningRef . current ||
4961 checkIfStartOrEnd ( row , col ) ||
50- isChangeStartSelectedRef . current
62+ isChangeStartSelectedRef . current ||
63+ isChangeEndSelectedRef . current
5164 ) {
5265 return ;
5366 }
@@ -59,14 +72,19 @@ export function Grid({
5972 } ;
6073
6174 const handleMouseClick = ( row : number , col : number ) => {
62- if ( ! isChangeStartSelectedRef . current ) {
63- return ;
75+ if ( isChangeStartSelectedRef . current ) {
76+ const newSelectedStartTile = setNewStartTile ( grid , row , col ) ;
77+ setGrid ( newSelectedStartTile ) ;
78+ setGrid ( resetCurrentStart ( grid , startTile , row , col , setStartTile ) ) ;
79+ isChangeStartSelectedRef . current = false ;
80+ //setIsDisabled(false);
81+ }
82+ if ( isChangeEndSelectedRef . current ) {
83+ setGrid ( setNewEndTile ( grid , row , col ) ) ;
84+ setGrid ( resetCurrentEnd ( grid , endTile , row , col , setEndTile ) ) ;
85+ isChangeEndSelectedRef . current = false ;
86+ // setIsDisabled(false);
6487 }
65-
66- const newSelectedStartTile = setNewStartTile ( grid , row , col ) ;
67- setGrid ( newSelectedStartTile ) ;
68- setGrid ( resetCurrentStart ( grid , startTile , row , col , setStartTile ) )
69- isChangeStartSelectedRef . current = false
7088 } ;
7189
7290 return (
@@ -102,7 +120,7 @@ export function Grid({
102120 handleMouseDown = { ( ) => handleMouseDown ( row , col ) }
103121 handleMouseUp = { ( ) => handleMouseUp ( row , col ) }
104122 handleMouseEnter = { ( ) => handleMouseEnter ( row , col ) }
105- handleMouseClick = { ( ) => handleMouseClick ( row , col ) }
123+ handleMouseClick = { ( ) => handleMouseClick ( row , col ) }
106124 />
107125 ) ;
108126 } ) }
0 commit comments