Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 4 additions & 8 deletions src/components/DebugSupport.react.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,6 @@ const styles = {
flex: {
display: 'flex',
},

debugButtons: {
marginRight: '8px',
},
};

// const getCalcMoveFunction = () => {
Expand All @@ -42,7 +38,7 @@ export default function DebugSupport(props) {
};
}, [calcMoveFunction]);

const playSigleMove = () => {
const playSingleMove = () => {
const move = getCalcMoveFunctionAsFn()(props.position, forEachSquare);
props.playMove(move);
};
Expand All @@ -59,7 +55,7 @@ export default function DebugSupport(props) {
<div>
<GameBoard position={props.position} />
<div style={styles.container}>
<div style={styles.debugButtons}>
<div>
<DebuggerButton
onClick={finishGame}
tooltip={'Play moves'}
Expand All @@ -72,12 +68,12 @@ export default function DebugSupport(props) {
/>

<DebuggerButton
onClick={playSigleMove}
onClick={playSingleMove}
tooltip={'Play single move, (Input AI plays both sides)'}
getIcon={icons.step}
/>
<DebuggerButton
onClick={props.stopAutoplay}
onClick={props.stopAutoPlay}
tooltip={'Stop playing'}
getIcon={icons.stop}
/>
Expand Down
61 changes: 27 additions & 34 deletions src/components/DebuggerButton.react.js
Original file line number Diff line number Diff line change
@@ -1,21 +1,19 @@
import { useMemo, useState } from 'react';
import {
BsInfoCircle,
BsFillPlayFill,
BsFillArrowRightSquareFill,
BsFillArrowDownRightCircleFill,
BsStopCircle,
} from 'react-icons/bs';
import { BiReset } from 'react-icons/bi';
import { BsInfoCircle, BsStopCircle } from 'react-icons/bs';
import { GrPowerReset, GrPlay, GrChapterNext } from 'react-icons/gr';
import { RxTrackNext } from 'react-icons/rx';
const styles = {
tooltipVisible: {
tooltip: {
position: 'absolute',
},
tooltipHidden: {},
button: {
paddingRight: '2px',
display: 'inline-block',
height: 30,
width: 30,
display: 'inline',
},
hovered: {
border: '2px solid black',
},
};

Expand All @@ -24,44 +22,39 @@ export const icons = {
return <BsInfoCircle style={styles.button} />;
},
play: () => {
return <BsFillPlayFill style={styles.button} />;
return <GrPlay style={styles.button} />;
},
response: () => {
return <BsFillArrowRightSquareFill style={styles.button} />;
return <GrChapterNext style={styles.button} />;
},
step: () => {
return <BsFillArrowDownRightCircleFill style={styles.button} />;
return <RxTrackNext style={styles.button} />;
},
stop: () => {
return <BsStopCircle style={styles.button} />;
},
reset: () => {
return <BiReset style={styles.button} />;
return <GrPowerReset style={styles.button} />;
},
};

export default function DebuggerButton(props) {
const { getIcon, tooltip, onClick } = props;

const [isTooltipVisible, setTooltipVisible] = useState(false);

const [isHovered, setHovered] = useState(false);
return (
<div
style={styles.button}
onMouseEnter={() => setTooltipVisible(true)}
onMouseLeave={() => setTooltipVisible(false)}
onClick={onClick}
>
{getIcon()}
{isTooltipVisible && (
<div
style={
isTooltipVisible ? styles.tooltipVisible : styles.tooltipHidden
}
>
{tooltip}
</div>
)}
</div>
<>
<div
style={
isHovered ? { ...styles.button, ...styles.hovered } : styles.button
}
onMouseEnter={() => setHovered(true)}
onMouseLeave={() => setHovered(false)}
onClick={onClick}
>
{getIcon()}
</div>
{isHovered && <div style={styles.tooltip}>{tooltip}</div>}
</>
);
}