|
|
@ -16,34 +16,44 @@ interface LobbyContainerProps {
|
|
|
|
HeadPlayer : Player
|
|
|
|
HeadPlayer : Player
|
|
|
|
nbPlayer : number
|
|
|
|
nbPlayer : number
|
|
|
|
setFirst: (first: boolean) => void
|
|
|
|
setFirst: (first: boolean) => void
|
|
|
|
|
|
|
|
started : boolean
|
|
|
|
//? mettre un "nbplayermax" si le nombre de joueur max peut etre fixé ?
|
|
|
|
//? mettre un "nbplayermax" si le nombre de joueur max peut etre fixé ?
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbPlayer, setFirst}) => {
|
|
|
|
const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbPlayer, setFirst, started}) => {
|
|
|
|
const theme=useTheme();
|
|
|
|
const theme=useTheme();
|
|
|
|
|
|
|
|
|
|
|
|
const navigate = useNavigate();
|
|
|
|
const navigate = useNavigate();
|
|
|
|
const dest = '/lobby?room=' + roomNum;
|
|
|
|
const dest = '/lobby?room=' + roomNum;
|
|
|
|
|
|
|
|
|
|
|
|
//* Modal
|
|
|
|
//* Modal
|
|
|
|
const [show, setShow] = useState(false);
|
|
|
|
const [showFull, setShowFull] = useState(false);
|
|
|
|
|
|
|
|
const [showStart, setShowStart] = useState(false);
|
|
|
|
|
|
|
|
|
|
|
|
const handleClose = () => setShow(false);
|
|
|
|
const handleClose = () => {
|
|
|
|
const handleShow = () => setShow(true);
|
|
|
|
setShowFull(false)
|
|
|
|
|
|
|
|
setShowStart(false)
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const handleShowFull = () => setShowFull(true);
|
|
|
|
|
|
|
|
const handleShowStart = () => setShowStart(true);
|
|
|
|
|
|
|
|
|
|
|
|
const handleContainerClick = () => {
|
|
|
|
const handleContainerClick = () => {
|
|
|
|
|
|
|
|
|
|
|
|
if (show){
|
|
|
|
if (showFull || showStart){
|
|
|
|
handleClose()
|
|
|
|
handleClose()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else{
|
|
|
|
else{
|
|
|
|
if (nbPlayer < 6) {
|
|
|
|
if (nbPlayer < 6 && !started) {
|
|
|
|
socket.off("request lobbies")
|
|
|
|
socket.off("request lobbies")
|
|
|
|
setFirst(true)
|
|
|
|
setFirst(true)
|
|
|
|
navigate(dest);
|
|
|
|
navigate(dest);
|
|
|
|
} else {
|
|
|
|
}
|
|
|
|
handleShow()
|
|
|
|
else if(started){
|
|
|
|
//alert('La salle est pleine. Impossible de rejoindre.');
|
|
|
|
handleShowStart()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
|
|
|
|
handleShowFull()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -65,25 +75,34 @@ const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbP
|
|
|
|
</Tooltip>
|
|
|
|
</Tooltip>
|
|
|
|
);
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//* autre
|
|
|
|
|
|
|
|
//@ts-ignore
|
|
|
|
|
|
|
|
const renderTooltip = (props) => (
|
|
|
|
|
|
|
|
<Tooltip id="button-tooltip" {...props}>
|
|
|
|
|
|
|
|
Rejoindre le lobby !
|
|
|
|
|
|
|
|
</Tooltip>
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
//let IsInGame = true;
|
|
|
|
//let IsInGame = true;
|
|
|
|
|
|
|
|
|
|
|
|
let stylefull;
|
|
|
|
let stylefull;
|
|
|
|
let colorfull;
|
|
|
|
let colorfull;
|
|
|
|
let actualRender;
|
|
|
|
let actualRender = renderTooltip;
|
|
|
|
|
|
|
|
let bgcol = 'white';
|
|
|
|
|
|
|
|
|
|
|
|
if (nbPlayer >= 6) {
|
|
|
|
if (nbPlayer >= 6) {
|
|
|
|
stylefull = "darkred"
|
|
|
|
stylefull = "darkred"
|
|
|
|
colorfull = "darkred"
|
|
|
|
colorfull = "darkred"
|
|
|
|
actualRender = renderTooltipFull
|
|
|
|
actualRender = renderTooltipFull
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// else if (IsInGame){
|
|
|
|
|
|
|
|
// stylefull = "darkgreen"
|
|
|
|
|
|
|
|
// colorfull = "darkgreen"
|
|
|
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
else {
|
|
|
|
else {
|
|
|
|
stylefull = "whitesmoke"
|
|
|
|
stylefull = "whitesmoke"
|
|
|
|
colorfull = "black"
|
|
|
|
colorfull = "black"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(started){
|
|
|
|
|
|
|
|
bgcol = 'lightgrey' //! le hover ne marche plus
|
|
|
|
actualRender = renderTooltipInGame
|
|
|
|
actualRender = renderTooltipInGame
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -95,7 +114,7 @@ const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbP
|
|
|
|
delay={{ show: 250, hide: 400 }}
|
|
|
|
delay={{ show: 250, hide: 400 }}
|
|
|
|
overlay={actualRender}>
|
|
|
|
overlay={actualRender}>
|
|
|
|
|
|
|
|
|
|
|
|
<div className='lobbyMainContainer' onClick={handleContainerClick} style={{borderColor:stylefull}}>
|
|
|
|
<div className='lobbyMainContainer' onClick={handleContainerClick} style={{borderColor:stylefull, backgroundColor:bgcol}}>
|
|
|
|
<header style={{height:'20%', display:'flex', justifyContent:'end'}}>
|
|
|
|
<header style={{height:'20%', display:'flex', justifyContent:'end'}}>
|
|
|
|
<h6><i>Room : {roomNum}</i></h6>
|
|
|
|
<h6><i>Room : {roomNum}</i></h6>
|
|
|
|
</header>
|
|
|
|
</header>
|
|
|
@ -104,17 +123,32 @@ const LobbyContainer: React.FC<LobbyContainerProps> = ({roomNum, HeadPlayer, nbP
|
|
|
|
<div style={{display:'flex', justifyContent:'end', alignItems:'end'}}>
|
|
|
|
<div style={{display:'flex', justifyContent:'end', alignItems:'end'}}>
|
|
|
|
<h2 style={{color:colorfull}}>{nbPlayer}/6</h2>
|
|
|
|
<h2 style={{color:colorfull}}>{nbPlayer}/6</h2>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<Modal show={show} onHide={handleClose}>
|
|
|
|
|
|
|
|
|
|
|
|
{/* Modals */}
|
|
|
|
|
|
|
|
<Modal show={showFull} onHide={handleClose}>
|
|
|
|
<Modal.Header closeButton>
|
|
|
|
<Modal.Header closeButton>
|
|
|
|
<Modal.Title>Salle pleine</Modal.Title>
|
|
|
|
<Modal.Title>Salle pleine</Modal.Title>
|
|
|
|
</Modal.Header>
|
|
|
|
</Modal.Header>
|
|
|
|
<Modal.Body>La salle est pleine, il est impossible d'y aller pour le moment !</Modal.Body>
|
|
|
|
<Modal.Body>La salle est pleine, il est impossible d'y aller pour le moment !</Modal.Body>
|
|
|
|
<Modal.Footer>
|
|
|
|
<Modal.Footer>
|
|
|
|
<Button variant="secondary" onClick={handleClose}>
|
|
|
|
<Button variant="secondary" onClick={handleClose}>
|
|
|
|
Ok
|
|
|
|
Ok
|
|
|
|
</Button>
|
|
|
|
</Button>
|
|
|
|
</Modal.Footer>
|
|
|
|
</Modal.Footer>
|
|
|
|
</Modal>
|
|
|
|
</Modal>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<Modal show={showStart} onHide={handleClose}>
|
|
|
|
|
|
|
|
<Modal.Header closeButton>
|
|
|
|
|
|
|
|
<Modal.Title>La partie a déjà commencée</Modal.Title>
|
|
|
|
|
|
|
|
</Modal.Header>
|
|
|
|
|
|
|
|
<Modal.Body>La partie a déjà commencée, il est impossible d'y aller pour le moment !</Modal.Body>
|
|
|
|
|
|
|
|
<Modal.Footer>
|
|
|
|
|
|
|
|
<Button variant="secondary" onClick={handleClose}>
|
|
|
|
|
|
|
|
Ok
|
|
|
|
|
|
|
|
</Button>
|
|
|
|
|
|
|
|
</Modal.Footer>
|
|
|
|
|
|
|
|
</Modal>
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</OverlayTrigger>
|
|
|
|
</OverlayTrigger>
|
|
|
|
);
|
|
|
|
);
|
|
|
|