diff --git a/traque-back/game.js b/traque-back/game.js
index ff7c370..7a69e03 100644
--- a/traque-back/game.js
+++ b/traque-back/game.js
@@ -15,11 +15,15 @@ export default class Game {
getNewTeamId() {
let id = null;
while(id === null || this.teams.find(t => t.id === id)) {
- id = Math.floor(Math.random() * 1000000);
+ id = Math.floor(Math.random() * 1_000_000);
}
return id;
}
+ createCaptureCode() {
+ return Math.floor(Math.random() * 10000)
+ }
+
addTeam(teamName) {
let id = this.getNewTeamId();
this.teams.push({
@@ -27,9 +31,10 @@ export default class Game {
name: teamName,
chasing: null,
chased: null,
- currentLocation: [0, 0],
- lastSentLocation: [0, 0],
- enemyLocation: [0, 0],
+ currentLocation: null,
+ lastSentLocation: null,
+ enemyLocation: null,
+ captureCode: this.createCaptureCode(),
sockets: []
});
this.updateTeamChasing();
diff --git a/traque-front/app/team/track/page.js b/traque-front/app/team/track/page.js
index df90b3a..96478ac 100644
--- a/traque-front/app/team/track/page.js
+++ b/traque-front/app/team/track/page.js
@@ -1,4 +1,5 @@
"use client";
+import ActionDrawer from '@/components/team/actionDrawer';
import Button from '@/components/util/button';
import useGame from '@/hook/useGame';
import dynamic from 'next/dynamic';
@@ -11,7 +12,7 @@ const LiveMap = dynamic(() => import('@/components/team/map'), {
});
export default function Track() {
- const { currentPosition, enemyPosition, loggedIn, sendCurrentPosition } = useGame();
+ const { currentPosition, enemyPosition, loggedIn } = useGame();
useEffect(() => {
if (!loggedIn) {
redirect("/team");
@@ -20,22 +21,9 @@ export default function Track() {
return (
-
-
-
-
-
-
-
-
-
30min
-
before penalty
-
-
+
)
}
diff --git a/traque-front/components/admin/teamEdit.jsx b/traque-front/components/admin/teamEdit.jsx
index e0c5b97..fdc6d2c 100644
--- a/traque-front/components/admin/teamEdit.jsx
+++ b/traque-front/components/admin/teamEdit.jsx
@@ -51,10 +51,11 @@ export default function TeamEdit({selectedTeamId, setSelectedTeamId}) {
Team details
-
Secret : {team.id}
+
Secret : {String(team.id).padStart(6,'0')}
Name : {team.name}
Chasing : {getTeamName(team.chasing)}
Chased by : {getTeamName(team.chased)}
+
Capture code : {String(team.captureCode).padStart(4,'0')}
diff --git a/traque-front/components/team/actionDrawer.jsx b/traque-front/components/team/actionDrawer.jsx
new file mode 100644
index 0000000..321cecf
--- /dev/null
+++ b/traque-front/components/team/actionDrawer.jsx
@@ -0,0 +1,41 @@
+import useGame from "@/hook/useGame";
+import { useState } from "react"
+import Button from "../util/button";
+import TextInput from "../util/textInput";
+
+export default function ActionDrawer() {
+ const [visible, setVisible] = useState(false);
+ const { sendCurrentPosition } = useGame();
+
+ return (
+
+

setVisible(!visible)} />
+ {visible &&
+
+
+
+
+
+ { console.log(i) }} />
+
+
+
+
+
+
+
30min
+
before penalty
+
+
+
+
+
+
+ }
+
+ )
+}
\ No newline at end of file
diff --git a/traque-front/components/team/map.jsx b/traque-front/components/team/map.jsx
index 9b98f75..15b5132 100644
--- a/traque-front/components/team/map.jsx
+++ b/traque-front/components/team/map.jsx
@@ -26,7 +26,7 @@ function MapPan(props) {
export default function LiveMap({enemyPosition, currentPosition, ...props}) {
return (
-
+
+ return ()
}
\ No newline at end of file
diff --git a/traque-front/components/util/textInput.jsx b/traque-front/components/util/textInput.jsx
index 403163c..2a8580e 100644
--- a/traque-front/components/util/textInput.jsx
+++ b/traque-front/components/util/textInput.jsx
@@ -2,6 +2,6 @@ import React from 'react'
export default function TextInput({...props}) {
return (
-
+
)
}
diff --git a/traque-front/context/teamConnexionContext.jsx b/traque-front/context/teamConnexionContext.jsx
index d806372..68c2e27 100644
--- a/traque-front/context/teamConnexionContext.jsx
+++ b/traque-front/context/teamConnexionContext.jsx
@@ -1,16 +1,22 @@
"use client";
-import { createContext, useContext, useMemo, useState } from "react";
+import { createContext, useContext, useEffect, useMemo, useState } from "react";
import { useSocket } from "./socketContext";
import { useSocketListener } from "@/hook/useSocketListener";
+import { useLocalStorage } from "@/hook/useLocalStorage";
const teamConnexionContext = createContext();
const TeamConnexionProvider = ({ children }) => {
const [loggedIn, setLoggedIn] = useState(false);
- const [teamId, setTeamId] = useState(null);
+ const [teamId, setTeamId] = useLocalStorage("team_id", null);
const { teamSocket } = useSocket();
-
+
+ useEffect(() => {
+ if (teamId && !loggedIn) {
+ teamSocket.emit("login", teamId);
+ }
+ }, [teamId]);
+
function login(id) {
- teamSocket.emit("login", id);
setTeamId(id);
}
diff --git a/traque-front/public/icons/arrow_up.png b/traque-front/public/icons/arrow_up.png
new file mode 100644
index 0000000..ee49752
Binary files /dev/null and b/traque-front/public/icons/arrow_up.png differ