diff --git a/bob_party/App.tsx b/bob_party/App.tsx index 654dfe5..bdd8a2f 100644 --- a/bob_party/App.tsx +++ b/bob_party/App.tsx @@ -6,9 +6,9 @@ import { useFonts } from 'expo-font'; - export default function App() { + const [fontsLoaded] = useFonts({ 'Helvetica': require('./assets/fonts/Helvetica.ttf'), }); diff --git a/bob_party/assets/ImagesJeux/CookieClicker/ChristmasCookie.png b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasCookie.png new file mode 100644 index 0000000..05956be Binary files /dev/null and b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasCookie.png differ diff --git a/bob_party/assets/ImagesJeux/CookieClicker/ChristmasFactory.png b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasFactory.png new file mode 100644 index 0000000..d018586 Binary files /dev/null and b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasFactory.png differ diff --git a/bob_party/assets/ImagesJeux/CookieClicker/ChristmasFarm.png b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasFarm.png new file mode 100644 index 0000000..c7243da Binary files /dev/null and b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasFarm.png differ diff --git a/bob_party/assets/ImagesJeux/CookieClicker/ChristmasGrandma.png b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasGrandma.png new file mode 100644 index 0000000..2d73fbe Binary files /dev/null and b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasGrandma.png differ diff --git a/bob_party/assets/ImagesJeux/CookieClicker/ChristmasPortal.png b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasPortal.png new file mode 100644 index 0000000..4bfb874 Binary files /dev/null and b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasPortal.png differ diff --git a/bob_party/assets/ImagesJeux/CookieClicker/ChristmasTower.png b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasTower.png new file mode 100644 index 0000000..670b9d0 Binary files /dev/null and b/bob_party/assets/ImagesJeux/CookieClicker/ChristmasTower.png differ diff --git a/bob_party/index.js b/bob_party/index.js deleted file mode 100644 index 925b4d7..0000000 --- a/bob_party/index.js +++ /dev/null @@ -1,11 +0,0 @@ -import React from 'react' -import App from './App' -// export for others scripts to use - - - -export default function Index(){ - return( - - ) -} \ No newline at end of file diff --git a/bob_party/package.json b/bob_party/package.json index 3074f8a..0b1dc8d 100644 --- a/bob_party/package.json +++ b/bob_party/package.json @@ -24,11 +24,14 @@ "babel-preset-env": "^1.7.0", "babel-preset-typescript": "^7.0.0-alpha.19", "babel-test": "^0.2.4", + "cors": "^2.8.5", "expo": "^46.0.17", "expo-status-bar": "~1.4.0", + "express": "^4.18.2", "jest": "^29.3.1", "jquery": "^3.6.1", "node": "^18.10.0", + "nodemon": "^2.0.20", "react": "18.0.0", "react-dom": "18.0.0", "react-native": "^0.69.6", @@ -40,6 +43,8 @@ "react-native-safe-area-context": "4.3.1", "react-native-web": "~0.18.7", "react-redux": "^8.0.4", + "socket.io": "^4.5.4", + "socket.io-client": "^4.5.4", "ts-node": "^10.9.1", "zustand": "^4.1.4" }, diff --git a/bob_party/server.js b/bob_party/server.js new file mode 100644 index 0000000..1b7de9e --- /dev/null +++ b/bob_party/server.js @@ -0,0 +1,28 @@ + +const express = require('express'); +const app = express(); +const http = require('http'); +const server = http.createServer(app); +const { Server } = require("socket.io"); +const io = new Server(server); + +const connectUsers = []; + +io.on('connection', (socket) => { + console.log(socket.id) + + + socket.on('inConv', (conv) => { + socket.join("C" + conv.id); + }); + + socket.on("messageSent", (conv) =>{ + socket.to("C"+conv.id).emit("messageReceived"); + console.log("Message envoyé"); + }); + +}); + +server.listen(3000, () => { + console.log('listening on *:3000'); +}); \ No newline at end of file diff --git a/bob_party/socketConfig.js b/bob_party/socketConfig.js new file mode 100644 index 0000000..f059af2 --- /dev/null +++ b/bob_party/socketConfig.js @@ -0,0 +1,4 @@ +const { io } = require("socket.io-client"); + + +export const socket = io("http://localhost:3000"); \ No newline at end of file diff --git a/bob_party/src/Games/CookieClicker/cookieClicker.tsx b/bob_party/src/Games/CookieClicker/cookieClicker.tsx index 7b4b3ec..3c1f534 100644 --- a/bob_party/src/Games/CookieClicker/cookieClicker.tsx +++ b/bob_party/src/Games/CookieClicker/cookieClicker.tsx @@ -8,6 +8,7 @@ import { Image, TouchableHighlight, Alert, + ImageBackground, } from 'react-native' import { MANAGER_MATCH, MANAGER_USER } from '../../../appManagers'; import { useMatchStore } from '../../context/matchContext'; @@ -16,12 +17,12 @@ import { Match } from '../../core/Match/match'; import { User } from '../../core/User/user'; -let points=0; +let points = 0; -function CookieClicker(props: { navigation: any}){ +function CookieClicker(props: { navigation: any }) { const { navigation } = props - const GAMING_TIME=120; + const GAMING_TIME = 120; const setUser = useUserStore((state) => state.setUser); @@ -39,149 +40,157 @@ function CookieClicker(props: { navigation: any}){ const [timer, setTimer] = useState(GAMING_TIME); - function onPressCookie(){ - setMoney(money+clickSpeed); - setCount(count+clickSpeed); - points=count+clickSpeed; + function onPressCookie() { + setMoney(money + clickSpeed); + setCount(count + clickSpeed); + points = count + clickSpeed; } - function onPressGrandma(){ - if (money>=grandmaCost){ - setMoney(money-grandmaCost); - setClickSpeed(clickSpeed+1); - setGrandmaCost(grandmaCost+10); + function onPressGrandma() { + if (money >= grandmaCost) { + setMoney(money - grandmaCost); + setClickSpeed(clickSpeed + 1); + setGrandmaCost(grandmaCost + 10); } } - function onPressFarm(){ - if (money>=farmCost){ - setMoney(money-farmCost); - setClickSpeed(clickSpeed+25); - setFarmCost(farmCost+250); + function onPressFarm() { + if (money >= farmCost) { + setMoney(money - farmCost); + setClickSpeed(clickSpeed + 25); + setFarmCost(farmCost + 250); } } - function onPressFactory(){ - if (money>=factoryCost){ - setMoney(money-factoryCost); - setClickSpeed(clickSpeed+200); - setFactoryCost(factoryCost+2000); + function onPressFactory() { + if (money >= factoryCost) { + setMoney(money - factoryCost); + setClickSpeed(clickSpeed + 200); + setFactoryCost(factoryCost + 2000); } } - function onPressWizard(){ - if (money>=wizardCost){ - setMoney(money-wizardCost); - setClickSpeed(clickSpeed+2500); - setWizardCost(wizardCost+25000); + function onPressWizard() { + if (money >= wizardCost) { + setMoney(money - wizardCost); + setClickSpeed(clickSpeed + 2500); + setWizardCost(wizardCost + 25000); } } - function onPressPortal(){ - if (money>=portalCost){ - setMoney(money-portalCost); - setClickSpeed(clickSpeed+20000); - setPortalCost(portalCost+200000); + function onPressPortal() { + if (money >= portalCost) { + setMoney(money - portalCost); + setClickSpeed(clickSpeed + 20000); + setPortalCost(portalCost + 200000); } } - function endGame(){ - const tmp=MANAGER_USER.getCurrentUser(); - if (tmp!==null){ - if (MANAGER_MATCH.getCurrentMatch()?.getTabUsers().includes(tmp)){ + function endGame() { + const tmp = MANAGER_USER.getCurrentUser(); + if (tmp !== null) { + if (MANAGER_MATCH.getCurrentMatch()?.getTabUsers().includes(tmp)) { MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, points); - setUser(tmp); + setUser(tmp); } } - resetMatch(); + resetMatch(); } useEffect(() => { - let counter=GAMING_TIME; + let counter = GAMING_TIME; var oneSecInterval = setInterval(() => { setTimer(timer => timer - 1); - counter --; + counter--; if (counter == 0) { - clearInterval(oneSecInterval); - endGame(); - Alert.alert("fin du jeu"); - navigation.navigate('Home'); + clearInterval(oneSecInterval); + endGame(); + Alert.alert("fin du jeu"); + navigation.navigate('Home'); } }, 1000); - },[]); - + }, []); + + + return ( + + + + + Timer: {timer} + + + + + + Argent {money} + + + Points {count} + + + + + + + + + Cost {grandmaCost} + + - return ( - - - - Timer: {timer} + + + + + + Cost {farmCost} - - - - - Argent {money} + + + + + + + + Cost {factoryCost} - - Points {count} + + + + + + + + Cost {wizardCost} - - - - - - - Cost {grandmaCost} - - - - - - - - - Cost {farmCost} - - - - - - - - - Cost {factoryCost} - - - - - - - - - Cost {wizardCost} - - - - - - - - - Cost {portalCost} - - + + + + + + Cost {portalCost} + + + - ) - } + + + ) +} const styles = StyleSheet.create({ container: { - top: 75, + height: window.innerHeight, + width: window.innerWidth, + flex: 1, + }, + containerTop:{ + top: "5%", margin: 10, flex: 1, justifyContent: 'center', @@ -190,7 +199,6 @@ const styles = StyleSheet.create({ containerRight: { flex: 1, flexWrap: "wrap", - top: 100, marginBottom: 20, left: 100, }, @@ -208,12 +216,18 @@ const styles = StyleSheet.create({ marginBottom: 10 }, photo: { - width: 50, - height: 50 + width: 75, + height: 75 }, cout: { - marginBottom: 20 - } + marginBottom: 20, + color: "white", + fontSize: 15 + }, + image: { + flex: 1, + justifyContent: "center" + }, }) diff --git a/bob_party/src/Games/Tic-Tac-Toe/tic-tac-toe.tsx b/bob_party/src/Games/Tic-Tac-Toe/tic-tac-toe.tsx new file mode 100644 index 0000000..61e8f54 --- /dev/null +++ b/bob_party/src/Games/Tic-Tac-Toe/tic-tac-toe.tsx @@ -0,0 +1,212 @@ +import {Alert, ImageBackground, Pressable, StyleSheet, Text, View } from "react-native"; +import React, {useState} from "react"; +import { useMatchStore } from "../../context/matchContext"; + + +export default function tic_tac_toe(props: { navigation: any}){ + const [map,setMap]=useState([ + ['','',''], + ['','',''], + ['','',''], + ]); + + const {navigation}=props; + + const [currentTurn,setCurrentTurn] = useState("x"); + + //const resetMatch = useMatchStore((state) => state.resetMatch); + + const onPressCell = (rowIndex:number,columnIndex:number) => { + if(map[rowIndex][columnIndex]==""){ + setMap((existingMap) =>{ + const updateMap = [...existingMap] + updateMap[rowIndex][columnIndex]=currentTurn; + return updateMap; + }); + }else{ + Alert.alert("Case déjà prise"); + } + setCurrentTurn(currentTurn === "x"? "o" : "x"); + checkWinning(); + checkComplete(); + }; + + const checkWinning = () =>{ + // Checks rows + for (let i=0; i<3; i++){ + const isRowXWinning = map[i].every((cell)=> cell==="x"); + const isRowOWinning = map[i] .every((cell)=>cell==="o"); + if(isRowXWinning==true){ + Alert.alert("X won !"); + navigation.goBack(); + } + else if(isRowOWinning==true){ + Alert.alert("X won !"); + navigation.goBack(); + } + } + // Checks columns + for (let col=0;col<3;col++){ + let isColumnXWinning=true; + let isColumnOWinning=true; + + for(let row=0;row<3;row++){ + if(map[row][col] !== "x"){ + isColumnXWinning=false; + } + if(map[row][col] !== "o"){ + isColumnOWinning=false; + } + } + if (isColumnXWinning == true){ + Alert.alert("X won !"); + navigation.goBack(); + } + if(isColumnOWinning==true){ + Alert.alert("O won !"); + navigation.goBack(); + } + + } + // Checks diag + let isDiag1XWinning=true; + let isDiag1OWinning=true; + let isDiag2XWinning=true; + let isDiag2OWinning=true; + for (let i=0;i<3;i++){ + if(map[i][i]!=="x"){ + isDiag1XWinning=false; + } + if(map[i][i]!=="o"){ + isDiag1OWinning=false; + } + if(map[i][2-i]!=="x"){ + isDiag2XWinning=false; + } + if(map[i][2-i]!=="o"){ + isDiag2OWinning=false; + } + } + if(isDiag1OWinning==true || isDiag2OWinning==true){ + Alert.alert("O won !"); + navigation.goBack(); + } + if(isDiag1XWinning==true || isDiag2XWinning==true){ + Alert.alert("X won !"); + navigation.goBack(); + } + }; + + const checkComplete = () =>{ + /*let isFull; + for (let row=0; row<3; row++){ + for(let col=0;col<3;col++){ + if(map[row][col]==="o" || map[row][col]==="x"){ + isFull=false; + } + } + } + if (isFull!=false){ + Alert.alert("Draw !"); + navigation.goBack(); + }*/ + const isRow0Full = map[0].every((cell)=> cell!==""); + const isRow1Full = map[1] .every((cell)=>cell!==""); + const isRow2Full = map[2] .every((cell)=>cell!==""); + if(isRow0Full==true && isRow1Full==true && isRow2Full==true){ + Alert.alert("Draw !"); + navigation.goBack(); + } + }; + + return( + + TIC TAC TOE + + + {map.map((row, rowIndex)=>( + + {row.map((cell, columnIndex)=> ( + onPressCell(rowIndex,columnIndex)} + style={styles.cell} + key={`row-${rowIndex}-col-${columnIndex}`} + > + {cell === "o" && } + {cell === "x" &&( + + + + + )} + + ))} + + ))} + + + + ); +} + +const styles= StyleSheet.create({ + container:{ + height:"100%", + width:"100%", + flex:1, + backgroundColor:"#45444E", + alignItems:"center", + justifyContent:"center", + }, + grid:{ + width:375, + height:375, + alignItems:"center", + justifyContent:"center", + }, + row:{ + flex:1, + flexDirection:"row", + }, + cell:{ + width:100, + flex:1, + }, + circle:{ + left:15, + top:15, + width:90, + height:90, + backgroundColor:"#0085FF", + borderRadius:50 + }, + cross:{ + width:"100%", + height:"100%", + }, + crossLine:{ + left:52, + top:15, + position:"absolute", + width:15, + height:100, + borderRadius:50, + backgroundColor:"#EE9433", + transform:[{rotate:"45deg"},], + }, + crossLineReversed:{ + transform:[{rotate:"-45deg"},], + }, + map:{ + aspectRatio:1, + padding:5 + }, + text:{ + fontSize: 26, + lineHeight: 21, + fontWeight: 'bold', + letterSpacing: 0.25, + color: 'white', + marginBottom:25 + } +}) \ No newline at end of file diff --git a/bob_party/src/components/BotBar.tsx b/bob_party/src/components/BotBar.tsx index fdd5444..fd9bc49 100644 --- a/bob_party/src/components/BotBar.tsx +++ b/bob_party/src/components/BotBar.tsx @@ -10,6 +10,7 @@ import { useStoreStore } from "../context/storeContext"; import tabSkinApp from "../constSkin"; import { useConversationStore } from "../context/conversationContext"; import { MANAGER_CONVERSATION, MANAGER_USER } from "../../appManagers"; +import { socket } from "../../socketConfig"; /* Images that are required to create a bottom bar @@ -30,23 +31,26 @@ const smessage = require('../../assets/Icons/Selected/SChat.png'); const sstore = require('../../assets/Icons/Selected/SStore.png'); + + + export const BotBar: /* Parameters : * nav : tool needed to allow the navigation between the screens * state : optional parameter that indicates from which screen the component has been called (the string must be the name of the screen) */ + + FC<{ nav: any, state?: String }> = ({ nav, state }) => { + const setTabSkin = useStoreStore((state) => state.setTabSkin); - const setTabConv = useConversationStore((state) => state.setTabConv); const handleStoreChange = useCallback(async () => { let tabSkinStore = [...tabSkinApp]; - // const tmp=MANAGER_USER.getCurrentUser()?.getTabSkin(); - // if (tmp!==undefined){ MANAGER_USER.getCurrentUser()?.getTabSkin()?.forEach(skin => { for (let i = 0; i < tabSkinStore.length; i++) { if (skin.isEqual(tabSkinStore[i])) { @@ -55,19 +59,11 @@ export const BotBar: } }); setTabSkin(tabSkinStore); - // } }, []); - const handleConversationChange = useCallback(async () => { - const tmp = MANAGER_USER.getCurrentUser(); - if (tmp !== null) { - await MANAGER_CONVERSATION.getLoaderConversation().loadByUser(tmp).then((res) => { - MANAGER_CONVERSATION.setCurrentTabConv(res); - setTabConv(res); - }); - } - }, []); + + /* By default, all the images are the white ones @@ -100,7 +96,7 @@ export const BotBar: */ return ( - { handleConversationChange(); nav.navigate('ChatTab') }}> + { nav.navigate('ChatTab') }}> = +({user}) => +{ + return ( + + + {user.getUsername()} + + ) + + +} \ No newline at end of file diff --git a/bob_party/src/components/TopBar.tsx b/bob_party/src/components/TopBar.tsx index 31492bd..6bb8b10 100644 --- a/bob_party/src/components/TopBar.tsx +++ b/bob_party/src/components/TopBar.tsx @@ -11,6 +11,7 @@ import { User } from "../core/User/user" import styles from './style/TopBar.style'; import { useMatchStore } from "../context/matchContext" import { MANAGER_USER } from "../../appManagers" +import { useUserStore } from "../context/userContext" /* Images required @@ -68,7 +69,7 @@ FC<{nav: any, state?: string}> = return ( nav.navigate('ProfileTab', {screen: 'Profile'})}> - + BOB PARTY nav.navigate('Settings')}> diff --git a/bob_party/src/context/conversationContext.tsx b/bob_party/src/context/conversationContext.tsx index 0391530..03a507b 100644 --- a/bob_party/src/context/conversationContext.tsx +++ b/bob_party/src/context/conversationContext.tsx @@ -5,15 +5,15 @@ import { Conversation } from "../core/conversation"; // Define store types interface ConversationState { - tabConv: Conversation[] | undefined; + tabConv: Conversation[] | null; setTabConv: (tabConv: Conversation[]) => void; resetTabConv: () => void; } // Define store data and methods export const useConversationStore = create()((set, get) => ({ - tabConv: undefined, + tabConv: null, setTabConv: (tabConv) => set((state) => ({ tabConv: tabConv })), - resetTabConv: () => set((state) => ({tabConv: undefined})), + resetTabConv: () => set((state) => ({tabConv: null})), })); diff --git a/bob_party/src/core/tests/matchSolo.test.ts b/bob_party/src/core/tests/matchSolo.test.ts index c2cc7b8..027b58b 100644 --- a/bob_party/src/core/tests/matchSolo.test.ts +++ b/bob_party/src/core/tests/matchSolo.test.ts @@ -1,5 +1,4 @@ import MatchSolo from '../Match/matchSolo'; -import { Conversation } from '../Conversation'; import { Skin } from '../Skin'; import { User } from '../User/user'; import { GameSolo } from '../GameSolo'; @@ -21,10 +20,12 @@ let myMap = new Map([ [100, 5], [150, 6] ]); -let game=new GameSolo(1, "bo jeu", img, "super jeu", 1, 1, myMap); -let match = new MatchSolo(1, false, tabU, game); let tabU2:User[] = []; +let game=new GameSolo(1, "bo jeu", img, "super jeu", 1, 1, myMap); let game2 = new GameSolo(2, "jeu magnifique", img, "wow jeu", 1, 1, myMap) +let match = new MatchSolo(1, false, tabU, game); +let match2 = new MatchSolo(1, false, tabU2, game2); +let match3 = new MatchSolo(1, false, tabU, game); // Get tests @@ -36,50 +37,47 @@ describe('Match get tests', () => { expect(match.getInGame()).toBe(false); }) it('should return tabU [usr] (users)', () => { - expect(match.getTabUsers()).toBe(tabU); + expect(match.getTabUsers()).toEqual(match3.getTabUsers()); }) it('should return game', () => { - expect(match.getGame).toBe(game); + expect(match.getGame()).toEqual(match3.getGame()); }) }) -// Setting new values -match.setGame(game2); -match.setInGame(true); -match.setTabUser(tabU2); - - // Set tests describe('Match set tests', () => { it('should return tabU2 [] (users)', () => { - expect(match.getTabUsers()).toBe(tabU2); + match.setTabUser(tabU2); + expect(match.getTabUsers()).toEqual(match2.getTabUsers()); }) it('should return true', () => { + match.setInGame(true); expect(match.getInGame()).toBe(true); }) it('should return game2', () => { - expect(match.getGame).toBe(game2); + match.setGame(game2); + expect(match.getGame()).toEqual(match2.getGame()); }) }) // Update Post-Match tests describe('Update post-match tests', () => { - it('should return 3', () => { - match.updatePostMatch(tabU[0],50); - expect(tabU[0].getCurrentCoins()).toBe(3); + it('should return 50', () => { + match.updatePostMatch(tabU[0],3); + expect(tabU[0].getCurrentCoins()).toBe(50); }) - it('should return 8', () => { - match.updatePostMatch(tabU[0],100); - expect(tabU[0].getCurrentCoins()).toBe(8); + it('should return 75', () => { + match.updatePostMatch(usr2,4); + expect(usr2.getCurrentCoins()).toBe(75); }) - it('should return 4', () => { - match.updatePostMatch(usr2,75); - expect(usr2.getCurrentCoins()).toBe(4); + it('should return 150', () => { + match.updatePostMatch(tabU[0],5); + expect(tabU[0].getCurrentCoins()).toBe(150); }) - it('should return 10', () => { - match.updatePostMatch(usr2,150); - expect(usr2.getCurrentCoins()).toBe(10); + it('should return 225', () => { + match.updatePostMatch(usr2,6); + expect(usr2.getCurrentCoins()).toBe(225); }) }) \ No newline at end of file diff --git a/bob_party/src/navigation/AppNavigator.tsx b/bob_party/src/navigation/AppNavigator.tsx index 5342ee7..f6b1697 100644 --- a/bob_party/src/navigation/AppNavigator.tsx +++ b/bob_party/src/navigation/AppNavigator.tsx @@ -17,6 +17,8 @@ import CookieClicker from '../Games/CookieClicker/cookieClicker' import Conversation from '../screens/Conversation' import Test from '../screens/Test' +import MatchMaking from '../screens/MatchMaking' +import TicTacToe from '../Games/Tic-Tac-Toe/tic-tac-toe' const HomeStack = createStackNavigator(); @@ -97,8 +99,9 @@ const GameSoloStack = createStackNavigator(); function GameSoloStackScreen() { return ( - + + ); } diff --git a/bob_party/src/redux/features/currentUserSlice.ts b/bob_party/src/redux/features/currentUserSlice.ts index 042b047..60c1c4a 100644 --- a/bob_party/src/redux/features/currentUserSlice.ts +++ b/bob_party/src/redux/features/currentUserSlice.ts @@ -1,10 +1,11 @@ +/* import { createSlice, PayloadAction } from "@reduxjs/toolkit" import { Skin } from "../../core/Skin"; import { User } from "../../core/User/user"; const dateNull = new Date(); -const userNull:User= new User("","","","","",dateNull); +const userNull:User | null= null; var currentUser:User = userNull; @@ -71,4 +72,5 @@ export const { updatePassword } = currentUserSlice.actions export const { updateNationality } = currentUserSlice.actions export const { updateSex } = currentUserSlice.actions -export default currentUserSlice.reducer; \ No newline at end of file +export default currentUserSlice.reducer; +*/ \ No newline at end of file diff --git a/bob_party/src/screens/MatchMaking.tsx b/bob_party/src/screens/MatchMaking.tsx new file mode 100644 index 0000000..c425628 --- /dev/null +++ b/bob_party/src/screens/MatchMaking.tsx @@ -0,0 +1,47 @@ +import { StatusBar } from 'expo-status-bar' +import { View, Image, Text, Button} from 'react-native' +import React from 'react'; +import stylesScreen from './style/screens.style'; +import styles from './style/Settings.style'; +import { TopBar } from '../components/TopBar'; +import { BotBar } from '../components/BotBar'; +import { Conversation } from '../core/conversation'; +import { ButtonGameTypeChoice } from '../components/ButtonGameTypeChoice'; +import { useMatchStore } from '../context/matchContext'; +import { FlatList, TextInput } from 'react-native-gesture-handler'; +import { PlayerBox } from '../components/PlayerBox'; + + +function MatchMaking(props: { navigation: any; }) { + + const { navigation } = props + + const match = useMatchStore().match; + + return ( + + + usr.getUsername()} + renderItem={({item}) => } + /> + +