diff --git a/src/components/App/index.tsx b/src/components/App/index.tsx
index 5dde5b2..5c504c2 100644
--- a/src/components/App/index.tsx
+++ b/src/components/App/index.tsx
@@ -2,7 +2,7 @@ import { MutableRefObject, useState } from "react";
import { GlobalContext } from "../../contexts";
import World from "../World";
import Player from "../Player";
-import PlayerHealth from "../PlayerHealth";
+import Ui from "../Ui";
import Npc from "../Npc";
import Heart from "../Heart";
import Coin from "../Coin";
@@ -11,9 +11,10 @@ import Lever from "../Lever";
import House from "../House";
import Fire from "../Fire";
import GameOver from "../GameOver";
-import { GAME_STATES, MAX_HEALTH } from "../../constants";
+import { GAME_STATES, MAX_HEALTH, MIN_HEALTH } from "../../constants";
import { Collider } from "../../utils";
import "./style.css";
+import { clampValue } from "../../utils/clampValue";
/*
* TODO:
@@ -26,6 +27,7 @@ export default function App() {
const [isCellarDoorOpen, setIsCellarDoorOpen] = useState(false);
const [isLeverUsed, setIsLeverUsed] = useState(false);
const [playerHealth, setPlayerHealth] = useState(MAX_HEALTH);
+ const [score, setScore] = useState(0);
return (
@@ -34,15 +36,18 @@ export default function App() {
gameState,
setGameState,
playerHealth,
- setPlayerHealth,
+ setPlayerHealth: (health: number) =>
+ setPlayerHealth(clampValue(health, MIN_HEALTH, MAX_HEALTH)),
colliders,
setColliders,
+ score,
+ setScore: (value: number) => setScore((oldScore) => oldScore + value),
}}
>
{gameState === GAME_STATES.GameOver &&
}
-
-
+
+
= ({ left, top }) => {
+ const { setScore } = useContext(GlobalContext);
+ const [isHidden, setIsHidden] = useState(false);
const canvasRef = useRef(null);
+ const onCollision = (c: Collider) => {
+ setScore(POINTS);
+ setIsHidden(true);
+ collider.current.hide();
+
+ setTimeout(() => {
+ collider.current.show();
+ setIsHidden(false);
+ }, TIMEOUT);
+ };
const collider = useRef(
- new Collider(new Rect(left, top, WIDTH, HEIGHT), ColliderType.Bonus)
+ new Collider(
+ new Rect(left, top, WIDTH, HEIGHT),
+ ColliderType.Bonus,
+ onCollision
+ )
);
useColliders(collider);
@@ -34,6 +53,7 @@ const Coin: FC = ({ left, top }) => {
return (