Merge branch 'Persistance' of https://codefirst.iut.uca.fr/git/BOB_PARTEAM/BOB_PARTY into Persistance
continuous-integration/drone/push Build is failing Details

Persistance
Mathilde JEAN 2 years ago
commit 8c7f5e364b

@ -5,7 +5,6 @@ import LoaderUserApi from './src/services/userServices/loaderUserApi'
import ManagerUser from './src/services/userServices/managerUser'
import FakeSaverUser from './src/services/userServices/fakeSaverUser'
import React, { useCallback } from 'react';
import { useUserStore } from './src/context/userContext';
import ManagerConversation from './src/services/conversationService/managerConversation'
import { LoaderConversationApi } from './src/services/conversationService/loaderConversationApi'
import { FakeSaverConversation } from './src/services/conversationService/fakeSaverConversation'
@ -14,21 +13,33 @@ import LoaderMatchApi from './src/services/matchServices/loaderMatchApi'
import SaverMatchApi from './src/services/matchServices/saverMatchApi'
import LoaderGameApi from './src/services/gameService/loaderGameApi'
import ManagerGame from './src/services/gameService/managerGame'
import { useFonts } from 'expo-font';
import * as SplashScreen from 'expo-splash-screen';
import { View } from 'react-native'
export const MANAGER_USER = new ManagerUser(new LoaderUserApi, new FakeSaverUser);
export const MANAGER_USER = new ManagerUser(new LoaderUserApi, new FakeSaverUser);
export const MANAGER_CONVERSATION = new ManagerConversation(new LoaderConversationApi, new FakeSaverConversation);
export const MANAGER_MATCH = new ManagerMatch(new LoaderMatchApi, new SaverMatchApi);
export const MANAGER_MATCH = new ManagerMatch(new LoaderMatchApi, new SaverMatchApi);
export const MANAGER_GAME = new ManagerGame(new LoaderGameApi);
export default function App() {
export default function App() {
return (
<Provider store={store}>
<MainTabNavigator/>
</Provider>
);
const [fontsLoaded] = useFonts({
'Helvetica': require('./assets/fonts/Helvetica.ttf'),
});
if (!fontsLoaded) {
return null;
}
return (
<Provider store={store} >
<MainTabNavigator />
</Provider>
);
}

@ -1,64 +1,9 @@
module.exports = function(api) {
module.exports = function (api) {
api.cache(true);
return {
presets: [
[
'@babel/preset-env',
{
targets: {
browsers: [
'last 2 Chrome versions',
'last 2 Edge versions',
'last 2 Firefox versions',
'last 2 Safari versions',
'IE 11',
],
},
loose: true,
modules: false,
useBuiltIns: 'usage',
corejs: {
version: 3,
proposals: true,
},
},
],
'@babel/preset-react',
'@babel/preset-flow',
['babel-preset-expo'],
['@babel/preset-env', { targets: { node: 'current' } }]
],
plugins: [
'@babel/plugin-transform-spread',
'@babel/plugin-syntax-dynamic-import',
[
'@babel/plugin-proposal-class-properties',
{
loose: false,
},
],
],
ignore: ['node_modules'],
overrides: [
{
test: ['./src/**/*.ts', './src/**/*.tsx'],
presets: [
'@babel/preset-typescript',
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
'@babel/preset-react',
],
},
],
env: {
test: {
plugins: ['babel-plugin-rewire-ts'],
presets: ['@babel/preset-typescript', '@babel/preset-env', '@babel/preset-react'],
},
},
};
};

@ -1,7 +1,5 @@
import React from 'react'
import App from './App'
import store from './src/redux/store'
import { Provider } from 'react-redux'
// export for others scripts to use
@ -9,10 +7,5 @@ import { Provider } from 'react-redux'
export default function Index(){
return(
<App/>
/*
<Provider store={store}>
<App />
</Provider>
*/
)
}

File diff suppressed because it is too large Load Diff

@ -10,6 +10,7 @@
"test": "jest"
},
"dependencies": {
"@babel/runtime": "^7.20.6",
"@react-native-community/datetimepicker": "6.2.0",
"@react-native-picker/picker": "2.4.2",
"@react-navigation/bottom-tabs": "^6.4.0",
@ -23,7 +24,7 @@
"babel-preset-env": "^1.7.0",
"babel-preset-typescript": "^7.0.0-alpha.19",
"babel-test": "^0.2.4",
"expo": "^46.0.15",
"expo": "^46.0.17",
"expo-status-bar": "~1.4.0",
"jest": "^29.3.1",
"jquery": "^3.6.1",
@ -43,9 +44,12 @@
"zustand": "^4.1.4"
},
"devDependencies": {
"@babel/core": "^7.20.5",
"@babel/preset-env": "^7.20.2",
"@babel/preset-typescript": "^7.18.6",
"@babel/core": "^7.12.9",
"@babel/plugin-proposal-class-properties": "^7.0.0",
"@babel/plugin-transform-runtime": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/register": "^7.0.0",
"@babel/runtime": "^7.5.5",
"@jest/globals": "^29.3.1",
"@types/jest": "^29.2.3",
"@types/jquery": "^3.5.14",
@ -53,7 +57,7 @@
"@types/node": "^18.8.4",
"@types/react": "~18.0.14",
"@types/react-native": "~0.69.1",
"babel-jest": "^29.3.1",
"babel-preset-react-native": "^4.0.0",
"ts-jest": "^29.0.3",
"typescript": "^4.9.3"
},

@ -21,7 +21,7 @@ let points=0;
function CookieClicker(props: { navigation: any}){
const { navigation } = props
const GAMING_TIME=45;
const GAMING_TIME=120;
const setUser = useUserStore((state) => state.setUser);
@ -86,9 +86,8 @@ function CookieClicker(props: { navigation: any}){
}
function endGame(){
let tmp: User | null;
tmp=MANAGER_USER.getCurrentUser();
if (tmp!=null){
const tmp=MANAGER_USER.getCurrentUser();
if (tmp!==null){
if (MANAGER_MATCH.getCurrentMatch()?.getTabUsers().includes(tmp)){
MANAGER_MATCH.getCurrentMatch()?.updatePostMatch(tmp, points);
setUser(tmp);

@ -1,5 +1,5 @@
import { FC, ReactNode, useCallback } from "react"
import { Pressable, Image, View} from "react-native"
import { Pressable, Image, View } from "react-native"
import React from "react"
/*
@ -30,95 +30,94 @@ 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}) =>
{
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 setTabSkin = useStoreStore((state) => state.setTabSkin);
const setTabConv = useConversationStore((state) => state.setTabConv);
const handleStoreChange = useCallback(async () => {
let tabSkinStore=[...tabSkinApp];
let tmp=MANAGER_USER.getCurrentUser()?.getTabSkin();
if (tmp!=undefined){
tmp.forEach(skin => {
for (let i=0; i<tabSkinStore.length; i++){
if(skin.isEqual(tabSkinStore[i])){
tabSkinStore.splice(i,1);
}
}
});
setTabSkin(tabSkinStore);
}
}, []);
const handleStoreChange = useCallback(async () => {
const handleConversationChange = useCallback(async () => {
let tmp=MANAGER_USER.getCurrentUser();
if (tmp!=undefined){
await MANAGER_CONVERSATION.getLoaderConversation().loadByUser(tmp).then((res) => {
MANAGER_CONVERSATION.setCurrentTabConv(res);
setTabConv(res);
});
}
}, []);
/*
By default, all the images are the white ones
*/
var imgLeft=message, imgMid=gamepad, imgRight=store
/*
For each screen corresponding to a screen of the bottom bar,
we need to change one of the icons to the corresponding blue one
(for example, when the chat screen is displayed,
the icon of the messages must switch to the blue one)
*/
switch (state) {
case 'Home':
imgMid = sgamepad
break;
case 'Chat':
imgLeft = smessage
break;
case 'Store':
imgRight = sstore
break;
default:
break;
}
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])) {
tabSkinStore.splice(i, 1);
}
}
});
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
*/
var imgLeft = message, imgMid = gamepad, imgRight = store
/*
For each screen corresponding to a screen of the bottom bar,
we need to change one of the icons to the corresponding blue one
(for example, when the chat screen is displayed,
the icon of the messages must switch to the blue one)
*/
switch (state) {
case 'Home':
imgMid = sgamepad
break;
case 'Chat':
imgLeft = smessage
break;
case 'Store':
imgRight = sstore
break;
default:
break;
}
/*
Once the icons are correctly attributed,
the function can display the component
*/
return (
<View style={styles.footer}>
<Pressable onPress={() => {handleConversationChange() ;nav.navigate('ChatTab')}}>
<Image
style={styles.icon}
source={imgLeft}
/>
</Pressable>
<Pressable onPress={()=> {nav.navigate('HomeTab', {screen: 'Home'})}}>
<Image
style={styles.icon}
source={imgMid}
/>
</Pressable>
<Pressable onPress={() => {handleStoreChange(); nav.navigate('StoreTab')}}>
<Image
style={styles.icon}
source={imgRight}
/>
</Pressable>
</View>
)
}
return (
<View style={styles.footer}>
<Pressable onPress={() => { handleConversationChange(); nav.navigate('ChatTab') }}>
<Image
style={styles.icon}
source={imgLeft}
/>
</Pressable>
<Pressable onPress={() => { nav.navigate('HomeTab', { screen: 'Home' }) }}>
<Image
style={styles.icon}
source={imgMid}
/>
</Pressable>
<Pressable onPress={() => { handleStoreChange(); nav.navigate('StoreTab') }}>
<Image
style={styles.icon}
source={imgRight}
/>
</Pressable>
</View>
)
}

@ -30,8 +30,8 @@ FC<{game: Game, nav: any}> =
const createNewMatchSolo = useCallback(async (game : Game, nav: any) => {
const m=new MatchCreator();
let tmp=MANAGER_USER.getCurrentUser();
if (tmp!=null){
const tmp=MANAGER_USER.getCurrentUser();
if (tmp!==null){
let match=await m.createMatch(tmp, game);
MANAGER_MATCH.setCurrentMatch(match);
setMatch(match);

@ -8,12 +8,9 @@ import { Skin } from "../core/skin"
*/
import styles from "./style/Skin.style"
import { useDispatch, useSelector } from "react-redux"
import { loginUser } from "../redux/features/currentUserSlice"
import { RootState } from "../redux/store"
import { MANAGER_USER } from "../../App"
import { useUserStore } from "../context/userContext"
import { ManagerCoinsUser } from "../core/User/userCoinsModifier"
import ManagerUser from "../services/userServices/managerUser"
import UserSkinModifier from "../core/User/userSkinModifier"
import { useStoreStore } from "../context/storeContext"
import tabSkinApp from "../constSkin"
@ -21,129 +18,128 @@ import tabSkinApp from "../constSkin"
export const SkinComponent :
export const SkinComponent:
/* Parameters :
* skin : Skin to be displayed
* state : Indicates from wich screen the component has been called
*/
FC<{nav : any, skin: Skin, state: String}> =
({nav, skin, state}) =>
{
/* Parameters :
* skin : Skin to be displayed
* state : Indicates from wich screen the component has been called
*/
FC<{ nav: any, skin: Skin, state: String }> =
({ nav, skin, state }) => {
const navigation = nav;
const navigation = nav;
const dispatch=useDispatch();
const dispatch = useDispatch();
const setUser = useUserStore((state) => state.setUser);
const setUser = useUserStore((state) => state.setUser);
const setTabSkin = useStoreStore((state) => state.setTabSkin);
const setTabSkin = useStoreStore((state) => state.setTabSkin);
async function changerSkin(skin:Skin) {
const m=new UserSkinModifier();
const tmp = MANAGER_USER.getCurrentUser();
if (tmp!=null){
await m.changeCurrentSkin(tmp, skin);
setUser(tmp);
MANAGER_USER.setCurrentUser(tmp);
async function changerSkin(skin: Skin) {
const m = new UserSkinModifier();
const tmp = MANAGER_USER.getCurrentUser();
if (tmp !== null) {
await m.changeCurrentSkin(tmp, skin);
setUser(tmp);
MANAGER_USER.setCurrentUser(tmp);
}
}
}
const handleStoreChange = useCallback(async () => {
const handleStoreChange = useCallback(async () => {
let tabSkinStore=[...tabSkinApp];
let tmp=MANAGER_USER.getCurrentUser()?.getTabSkin();
if (tmp!=undefined){
tmp.forEach(skin => {
for (let i=0; i<tabSkinStore.length; i++){
if(skin.isEqual(tabSkinStore[i])){
tabSkinStore.splice(i,1);
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])) {
tabSkinStore.splice(i, 1);
}
}
});
setTabSkin(tabSkinStore);
}
}, []);
async function buySkin(skin:Skin) {
const mSkin=new UserSkinModifier();
const mCoins= new ManagerCoinsUser();
const tmp = MANAGER_USER.getCurrentUser();
if (tmp!=null){
await mCoins.removeCoins(tmp,skin.getSkinCost()).then(async (res) => {
if(res==true){
await mSkin.addSkin(tmp, skin);
setUser(tmp);
MANAGER_USER.setCurrentUser(tmp);
Alert.alert("Achat du skin");
handleStoreChange();
}
else{
Alert.alert("Pas assez d'argent pour acheter le skin");
}
});
//}
}, []);
async function buySkin(skin: Skin) {
const mSkin = new UserSkinModifier();
const mCoins = new ManagerCoinsUser();
const tmp = MANAGER_USER.getCurrentUser();
if (tmp !== null) {
await mCoins.removeCoins(tmp, skin.getSkinCost()).then(async (res) => {
if (res == true) {
await mSkin.addSkin(tmp, skin);
setUser(tmp);
MANAGER_USER.setCurrentUser(tmp);
Alert.alert("Achat du skin");
handleStoreChange();
}
else {
Alert.alert("Pas assez d'argent pour acheter le skin");
}
});
}
}
}
/* The display of this component depends of the screen from where it has been called:
* From the TopBar (icon) : Small image in a circle
* From the shop (shop) : Image + Name + Price, Pressable => Buy the skin
* From the profile (profile) : Name + Image, Pressable => Change the skin
*/
switch (state) {
case 'icon':
return (
<View>
<Image source={{uri: skin.getSkinSource()}} style={styles.icon}/>
</View>
)
case 'shop':
return(
<Pressable onPress={() => buySkin(skin)} style={styles.imageWrapper}>
<Text style={styles.nomSkin}>{skin.getSkinName()}</Text>
<Image
style={styles.imageSkin}
source={{uri: skin.getSkinSource()}}
/>
<Text style={styles.nomSkin}>100</Text>
</Pressable>
)
case 'liste':
return(
<Pressable onPress={() => {changerSkin(skin); navigation.goBack()}} style={styles.imageWrapper}>
<Text style={styles.nomSkin}>{skin.getSkinName()}</Text>
/* The display of this component depends of the screen from where it has been called:
* From the TopBar (icon) : Small image in a circle
* From the shop (shop) : Image + Name + Price, Pressable => Buy the skin
* From the profile (profile) : Name + Image, Pressable => Change the skin
*/
switch (state) {
case 'icon':
return (
<View>
<Image source={{ uri: skin.getSkinSource() }} style={styles.icon} />
</View>
)
case 'shop':
return (
<Pressable onPress={() => buySkin(skin)} style={styles.imageWrapper}>
<Text style={styles.nomSkin}>{skin.getSkinName()}</Text>
<Image
style={styles.imageSkin}
source={{ uri: skin.getSkinSource() }}
/>
<Text style={styles.nomSkin}>100</Text>
</Pressable>
)
case 'liste':
return (
<Pressable onPress={() => { changerSkin(skin); navigation.goBack() }} style={styles.imageWrapper}>
<Text style={styles.nomSkin}>{skin.getSkinName()}</Text>
<Image
style={styles.imageSkin}
source={{ uri: skin.getSkinSource() }}
/>
</Pressable>
)
case 'profile':
return (
<Pressable onPress={() => Alert.alert("cool")} style={styles.imageWrapperProfil}>
<Text style={styles.nomSkin}>{skin.getSkinName()}</Text>
<Image
style={styles.imageSkin}
source={{ uri: skin.getSkinSource() }}
/>
</Pressable>
)
default:
return (
<Image
style={styles.imageSkin}
source={{uri: skin.getSkinSource()}}
source={{ uri: skin.getSkinSource() }}
/>
</Pressable>
)
case 'profile':
return(
<Pressable onPress={() => Alert.alert("cool")} style={styles.imageWrapperProfil}>
<Text style={styles.nomSkin}>{skin.getSkinName()}</Text>
<Image
style={styles.imageSkin}
source={{uri: skin.getSkinSource()}}
/>
</Pressable>
)
default:
return(
<Image
style={styles.imageSkin}
source={{uri: skin.getSkinSource()}}
/>
)
}
}
)
}
}

@ -12,6 +12,12 @@ interface GameState {
tabGame: Game[] | undefined;
setTabGame: (tabGame: Game[]) => void;
resetTabGame: () => void;
tabGameSolo: Game[] | undefined;
setTabGameSolo: (tabGame: Game[]) => void;
resetTabGameSolo: () => void;
tabGameMulti: Game[] | undefined;
setTabGameMulti: (tabGame: Game[]) => void;
resetTabGameMulti: () => void;
}
// Define store data and methods
@ -19,5 +25,11 @@ export const useGameStore = create<GameState>()((set, get) => ({
tabGame: undefined,
setTabGame: (tabGame) => set((state) => ({ tabGame: tabGame })),
resetTabGame: () => set((state) => ({ tabGame: undefined })),
tabGameSolo: undefined,
setTabGameSolo: (tabGame) => set((state) => ({ tabGameSolo: tabGame })),
resetTabGameSolo: () => set((state) => ({ tabGameSolo: undefined })),
tabGameMulti: undefined,
setTabGameMulti: (tabGame) => set((state) => ({ tabGameMulti: tabGame })),
resetTabGameMulti: () => set((state) => ({ tabGameMulti: undefined })),
}));

@ -72,4 +72,4 @@ export abstract class Game{
}
abstract coinsCalculator(points: number): number;
}
}

@ -31,7 +31,6 @@ export const currentUserSlice = createSlice({
updatePseudo: (state, action: PayloadAction<string>) =>{
const newUser: User = new User(currentUser.getId(), currentUser.getUsername(), currentUser.getPassword(), currentUser.getNationality(), currentUser.getSexe(), currentUser.getDateOfBirth());
console.log(currentUser);
newUser.setUsername(action.payload);
return {
...state,

@ -20,7 +20,6 @@ let tabConv:Conversation[]=[];
function GameChoice(props: { navigation: any}) {
const { navigation} = props
console.log(MANAGER_GAME.getTabGame());
return (
<View style={stylesScreen.container}>
<TopBar
@ -37,7 +36,7 @@ function GameChoice(props: { navigation: any}) {
</View>
<BotBar
nav={navigation}
state='Store'
state='Home'
/>
</View>
);

@ -1,5 +1,5 @@
import { StatusBar } from 'expo-status-bar'
import { View} from 'react-native'
import { View } from 'react-native'
import React, { useCallback } from 'react';
import stylesScreen from './style/screens.style'
import { TopBar } from '../components/TopBar';
@ -8,53 +8,114 @@ import { Conversation } from '../core/conversation';
import { ButtonGameTypeChoice } from '../components/ButtonGameTypeChoice';
import { MANAGER_GAME } from '../../App';
import { useGameStore } from '../context/gameContext';
import { GameSolo } from '../core/gameSolo';
import { Game } from '../core/game';
import game from '../testGameSolo';
let tabConv:Conversation[]=[];
let tabConv: Conversation[] = [];
function Home(props: { navigation: any; }) {
const { navigation } = props
const { navigation } = props
const setTabGame = useGameStore((state) => state.setTabGame);
const setTabGame = useGameStore((state) => state.setTabGame);
const setTabGameSolo = useGameStore((state) => state.setTabGameSolo);
const setTabGameMulti = useGameStore((state) => state.setTabGameMulti);
const handleGame = useCallback(async () => {
let tmp=MANAGER_GAME.getTabGame();
if (tmp==null){
await MANAGER_GAME.getLoaderGame().loadAllGame().then((res) => {
MANAGER_GAME.setTabGame(res);
setTabGame(res);
navigation.navigate('GameChoiceTab')
});
}
else{
/*
const handleGame = useCallback(async (typeJeu: string) => {
switch(typeJeu){
case 'solo':
let tabSolo:Game[]=[]
let tmp=MANAGER_GAME.getTabGameSolo();
if (tmp==null){
let tabAll=MANAGER_GAME.getTabGame();
if (tabAll==null){
await MANAGER_GAME.getLoaderGame().loadAllGame().then((res) => {
MANAGER_GAME.setTabGame(res);
setTabGame(res);
});
}
tabAll?.forEach(game =>{
if (game.getNbPlayerMax()==1){
tabSolo.push(game);
}
})
MANAGER_GAME.setTabGameSolo(tabSolo);
setTabGameSolo(tabSolo);
navigation.navigate('GameChoiceTab')
}
else{
navigation.navigate('GameChoiceTab')
}
case 'multi':
let tabMulti:Game[]=[]
let tkt=MANAGER_GAME.getTabGameSolo();
if (tkt==null){
let tabAll=MANAGER_GAME.getTabGame();
if (tabAll==null){
await MANAGER_GAME.getLoaderGame().loadAllGame().then((res) => {
MANAGER_GAME.setTabGame(res);
setTabGame(res);
});
}
tabAll?.forEach(game =>{
if (game.getNbPlayerMax()==1){
tabSolo.push(game);
}
})
MANAGER_GAME.setTabGameMulti(tabMulti);
setTabGameMulti(tabMulti);
navigation.navigate('GameChoiceTab')
}
else{
navigation.navigate('GameChoiceTab')
}
}
}, []);
*/
const handleGame = useCallback(async (typeJeu: string) => {
const tmp = MANAGER_GAME.getTabGame();
if (tmp === null) {
await MANAGER_GAME.getLoaderGame().loadAllGame().then((res) => {
MANAGER_GAME.setTabGame(res);
setTabGame(res);
navigation.navigate('GameChoiceTab')
}
});
}
else {
navigation.navigate('GameChoiceTab')
}
}, []);
return (
<View style={stylesScreen.container}>
<TopBar
nav={navigation}
state= 'Home'
/>
<View style={stylesScreen.bodyCenter}>
<ButtonGameTypeChoice
title='Jouer Seul'
onPress={() => {handleGame()}}
/>
<ButtonGameTypeChoice
title='Défier mes amis'
onPress={() => handleGame()}
/>
</View>
<BotBar
nav={navigation}
state='Home'
/>
</View>
);
return (
<View style={stylesScreen.container}>
<TopBar
nav={navigation}
state='Home'
/>
<View style={stylesScreen.bodyCenter}>
<ButtonGameTypeChoice
title='Jouer Seul'
onPress={() => { handleGame("solo") }}
/>
<ButtonGameTypeChoice
title='Défier mes amis'
onPress={() => handleGame("multi")}
/>
</View>
<BotBar
nav={navigation}
state='Home'
/>
</View>
);
}
export default Home

@ -30,8 +30,8 @@ function Settings(props: { navigation: any; }) {
async function changeUsername(username:string){
const m = new UserModificationManager();
let tmp=MANAGER_USER.getCurrentUser();
if (tmp!=null){
const tmp=MANAGER_USER.getCurrentUser();
if (tmp!==null){
await m.changeUsername(tmp, username);
setUser(tmp);
MANAGER_USER.setCurrentUser(tmp);
@ -40,8 +40,8 @@ function Settings(props: { navigation: any; }) {
async function changePassword(password:string){
const m = new UserModificationManager();
let tmp=MANAGER_USER.getCurrentUser();
if (tmp!=null){
const tmp=MANAGER_USER.getCurrentUser();
if (tmp!==null){
await m.changePassword(tmp, password);
setUser(tmp);
MANAGER_USER.setCurrentUser(tmp);

@ -38,9 +38,7 @@ function SignIn(props: { navigation: any; }) {
setUser(MANAGER_USER.getCurrentUser());
navigation.navigate('HomeTab');
}
else{
console.log("wesh c'est null");
}
});
}, []);

@ -26,7 +26,6 @@ function SignUp(props: { navigation: any; }) {
function onDateSelected(event : DateTimePickerEvent, value : Date | undefined) {
console.log(value);
if (value != undefined) {
setDate(value);
}

@ -24,9 +24,7 @@ export default class LoaderGameApi implements ILoaderGame{
map.set(300,150);
map.set(450,1000);
const cookieClicker= new GameSolo(1, "Cookie Clicker", "https://codefirst.iut.uca.fr/git/BOB_PARTEAM/BOB_PARTY/raw/branch/typescript/bob_party/assets/ImagesJeux/Pong.png", "/Games/CookieClicker/cookieClicker.tsx", 1, 1, map);
const test= new GameSolo(1, "Test", "https://codefirst.iut.uca.fr/git/BOB_PARTEAM/BOB_PARTY/raw/branch/typescript/bob_party/assets/ImagesJeux/Pendu.jpg", "/Games/CookieClicker/cookieClicker.tsx", 1, 1, map);
tab=[cookieClicker, test];
console.log(tab);
tab=[cookieClicker];
});
return tab;

@ -5,6 +5,10 @@ export default class ManagerGame{
private tabGame: Game[] | null=null;
private tabGameSolo: Game[] | null=null;
private tabGameMulti: Game[] | null=null;
private loaderGame: ILoaderGame;
constructor(loader:ILoaderGame){
@ -19,6 +23,22 @@ export default class ManagerGame{
this.tabGame=g;
}
getTabGameSolo(){
return this.tabGame;
}
setTabGameSolo(g:Game[] | null){
this.tabGameSolo=g;
}
getTabGameMulti(){
return this.tabGameMulti;
}
setTabGameMulti(g:Game[] | null){
this.tabGameMulti=g;
}
getLoaderGame(){
return this.loaderGame;
}

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save