From 1dd3ef1bdc3acaf4919a67cabc163de605a05e67 Mon Sep 17 00:00:00 2001 From: Marti Herms Date: Wed, 28 Aug 2024 11:21:50 +0200 Subject: [PATCH] implement logic input validation #84 --- .../project/dodge/logic/checkOutOfBounds.js | 3 ++- .../project/dodge/logic/createObstacle.js | 3 ++- .../project/dodge/logic/removeObstacle.js | 3 ++- .../project/dodge/logic/setPoints.js | 3 ++- .../project/dodge/src/game/Obstacle.jsx | 8 ++++++-- .../project/dodge/src/game/Obstacles.jsx | 20 +++++++++++++------ 6 files changed, 28 insertions(+), 12 deletions(-) diff --git a/staff/marti-herms/project/dodge/logic/checkOutOfBounds.js b/staff/marti-herms/project/dodge/logic/checkOutOfBounds.js index dea405168..abd8cff01 100644 --- a/staff/marti-herms/project/dodge/logic/checkOutOfBounds.js +++ b/staff/marti-herms/project/dodge/logic/checkOutOfBounds.js @@ -3,7 +3,8 @@ import data from '../data' import { SCREEN_WIDTH, SCREEN_HEIGHT } from '../util/constants' export default (id) => { - //TODO validate id + if (typeof id !== 'number') throw new Error('invalid id') + const obstacle = data.obstacles.items.find(obstacle => obstacle.id === id) return (obstacle.top >= SCREEN_HEIGHT - obstacle.height - 10 || obstacle.top < 0 || obstacle.left >= SCREEN_WIDTH - obstacle.width - 10 || obstacle.left < 0) diff --git a/staff/marti-herms/project/dodge/logic/createObstacle.js b/staff/marti-herms/project/dodge/logic/createObstacle.js index 63c287c14..020fdf295 100644 --- a/staff/marti-herms/project/dodge/logic/createObstacle.js +++ b/staff/marti-herms/project/dodge/logic/createObstacle.js @@ -1,6 +1,7 @@ import data from '../data' export default (id) => { - //TODO validate id + if (typeof id !== 'number') throw new Error('invalid id') + data.obstacles.addObstacle(id) } \ No newline at end of file diff --git a/staff/marti-herms/project/dodge/logic/removeObstacle.js b/staff/marti-herms/project/dodge/logic/removeObstacle.js index 6f30dca71..a08e04004 100644 --- a/staff/marti-herms/project/dodge/logic/removeObstacle.js +++ b/staff/marti-herms/project/dodge/logic/removeObstacle.js @@ -1,6 +1,7 @@ import data from '../data' export default (id) => { - //TODO validate id + if (typeof id !== 'number') throw new Error('invalid id') + data.obstacles.removeObstacle(id) } \ No newline at end of file diff --git a/staff/marti-herms/project/dodge/logic/setPoints.js b/staff/marti-herms/project/dodge/logic/setPoints.js index b87a89eef..58dcdbb14 100644 --- a/staff/marti-herms/project/dodge/logic/setPoints.js +++ b/staff/marti-herms/project/dodge/logic/setPoints.js @@ -1,7 +1,8 @@ import data from '../data' export default (seconds) => { - // TODO validate seconds + if (typeof id !== 'number') throw new Error('invalid id') + if (seconds === 0) data.player.item.points = 0 else if (seconds < 20) diff --git a/staff/marti-herms/project/dodge/src/game/Obstacle.jsx b/staff/marti-herms/project/dodge/src/game/Obstacle.jsx index 9902cabee..1b4236c48 100644 --- a/staff/marti-herms/project/dodge/src/game/Obstacle.jsx +++ b/staff/marti-herms/project/dodge/src/game/Obstacle.jsx @@ -6,8 +6,12 @@ import logic from '../../logic/index.js' export default function Obstacle({ player, obstacle, onOutOfBounds, setEnd }) { useEffect(() => { - if (logic.checkOutOfBounds(obstacle.id)) { - onOutOfBounds(obstacle.id) + try { + if (logic.checkOutOfBounds(obstacle.id)) { + onOutOfBounds(obstacle.id) + } + } catch (error) { + console.error(error) } }, [obstacle.top, obstacle.left]) diff --git a/staff/marti-herms/project/dodge/src/game/Obstacles.jsx b/staff/marti-herms/project/dodge/src/game/Obstacles.jsx index 872547143..e61eeb956 100644 --- a/staff/marti-herms/project/dodge/src/game/Obstacles.jsx +++ b/staff/marti-herms/project/dodge/src/game/Obstacles.jsx @@ -30,11 +30,15 @@ export default function Obstacles({ player, pause, end, setEnd }) { const handleSpawn = () => { setSpawnIntervalId(setInterval(() => { - logic.createObstacle(obstacleCount++) + try { + logic.createObstacle(obstacleCount++) - const items = logic.getObstacles() + const items = logic.getObstacles() - setObstacles(() => ([...items])) + setObstacles(() => ([...items])) + } catch (error) { + console.error(error) + } }, SPAWN_RATE)) } @@ -52,11 +56,15 @@ export default function Obstacles({ player, pause, end, setEnd }) { } const handleOutOfBounds = (id) => { - logic.removeObstacle(id) + try { + logic.removeObstacle(id) - const items = logic.getObstacles() + const items = logic.getObstacles() - setObstacles(() => [...items]) + setObstacles(() => [...items]) + } catch (error) { + console.error(error) + } } const clearField = () => {