diff --git a/traque-front/components/admin/teamEdit.jsx b/traque-front/components/admin/teamEdit.jsx
index 9be5dc4..45cecae 100644
--- a/traque-front/components/admin/teamEdit.jsx
+++ b/traque-front/components/admin/teamEdit.jsx
@@ -23,7 +23,7 @@ export default function TeamEdit({ selectedTeamId, setSelectedTeamId }) {
function handleRename(e) {
e.preventDefault();
- updateTeam(team.id, {name:newTeamName});
+ updateTeam(team.id, { name: newTeamName });
}
function handleRemove() {
@@ -31,6 +31,13 @@ export default function TeamEdit({ selectedTeamId, setSelectedTeamId }) {
setSelectedTeamId(null);
}
+ function handleAddPenalty(increment) {
+ let newPenalties = team.penalties + increment;
+ newPenalties = Math.max(0, newPenalties);
+ newPenalties = Math.min(3, newPenalties);
+ updateTeam(team.id, { penalties: newPenalties });
+ }
+
return (team &&
@@ -45,7 +52,7 @@ export default function TeamEdit({ selectedTeamId, setSelectedTeamId }) {
Rename
- updateTeam(team.id, {captured: !team.captured})}>{team.captured ? "Revive" : "Capture"}
+ updateTeam(team.id, { captured: !team.captured })}>{team.captured ? "Revive" : "Capture"}
Remove
@@ -57,12 +64,19 @@ export default function TeamEdit({ selectedTeamId, setSelectedTeamId }) {
Chased by : {getTeamName(team.chased)}
Capture code : {String(team.captureCode).padStart(4, '0')}
Captured : {team.captured ? "Yes" : "No"}
+
Has to send location before {new Date(team.locationSendDeadline).toTimeString()}
+
+
Penalties :
+
+
{team.penalties}
+
+
Starting area
- updateTeam(team.id, {startingArea})} />
+ updateTeam(team.id, { startingArea })} />
)
diff --git a/traque-front/components/team/actionDrawer.jsx b/traque-front/components/team/actionDrawer.jsx
index fe9dfce..bade8b8 100644
--- a/traque-front/components/team/actionDrawer.jsx
+++ b/traque-front/components/team/actionDrawer.jsx
@@ -1,5 +1,5 @@
import useGame from "@/hook/useGame";
-import { useState } from "react"
+import { useEffect, useState } from "react"
import BlueButton, { GreenButton, RedButton } from "../util/button";
import TextInput from "../util/textInput";
import { useTeamConnexion } from "@/context/teamConnexionContext";
@@ -7,8 +7,17 @@ import { useTeamConnexion } from "@/context/teamConnexionContext";
export default function ActionDrawer() {
const [visible, setVisible] = useState(false);
const [enemyCaptureCode, setEnemyCaptureCode] = useState("");
- const { sendCurrentPosition, name, captureCode, capture } = useGame();
+ const { sendCurrentPosition, name, captureCode, capture, locationSendDeadline, penalties } = useGame();
const {logout} = useTeamConnexion();
+ const [timeLeftBeforePenalty, setTimeLeftBeforePenalty] = useState(0);
+ useEffect(() => {
+ const interval = setInterval(() => {
+ console.log(locationSendDeadline)
+ const timeLeft = locationSendDeadline - Date.now();
+ setTimeLeftBeforePenalty(Math.floor(timeLeft / 1000 / 60));
+ }, 1000);
+ return () => clearInterval(interval);
+ }, [locationSendDeadline]);
function handleCapture() {
capture(enemyCaptureCode);
@@ -28,16 +37,15 @@ export default function ActionDrawer() {
Capture code
- {captureCode}
+ {String(captureCode).padStart(4,"0")}
- 30min
+ {timeLeftBeforePenalty}min
before penalty
-
-
-
+ {Array.from({ length: penalties }).map((_, i) =>
)}
+ {Array.from({ length: 3-penalties }).map((_, i) =>
)}
diff --git a/traque-front/hook/useGame.jsx b/traque-front/hook/useGame.jsx
index 6fd468c..41c093d 100644
--- a/traque-front/hook/useGame.jsx
+++ b/traque-front/hook/useGame.jsx
@@ -28,6 +28,8 @@ export default function useGame() {
name: teamInfos?.name || null,
ready: teamInfos?.ready || false,
captured: teamInfos?.captured || false,
+ locationSendDeadline: teamInfos?.locationSendDeadline || null,
+ penalties: teamInfos?.penalties || 0,
teamId,
gameState,
};