@ -0,0 +1,6 @@
|
|||||||
|
import React from 'react'
|
||||||
|
import MainStackNavigator from './src/navigation/AppNavigator'
|
||||||
|
|
||||||
|
export default function App() {
|
||||||
|
return <MainStackNavigator/>
|
||||||
|
}
|
@ -1,31 +0,0 @@
|
|||||||
import React, { Component } from "react";
|
|
||||||
import { StyleSheet, View, Text, Alert, Pressable, Image} from 'react-native'
|
|
||||||
|
|
||||||
|
|
||||||
class Skin extends Component{
|
|
||||||
constructor (props) {
|
|
||||||
super(props);
|
|
||||||
}
|
|
||||||
|
|
||||||
render(){
|
|
||||||
return(
|
|
||||||
<View>
|
|
||||||
<Image source={this.props.Photo} style={this.props.Type}/>
|
|
||||||
<Text>{this.props.Name}</Text>
|
|
||||||
</View>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const styles = StyleSheet.create({
|
|
||||||
avatar: {
|
|
||||||
marginTop: 25,
|
|
||||||
marginLeft: 10,
|
|
||||||
width: 50,
|
|
||||||
height: 50,
|
|
||||||
borderRadius: '50%',
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
export default Skin;
|
|
||||||
|
|
Before Width: | Height: | Size: 743 B After Width: | Height: | Size: 743 B |
Before Width: | Height: | Size: 782 B After Width: | Height: | Size: 782 B |
Before Width: | Height: | Size: 758 B After Width: | Height: | Size: 758 B |
Before Width: | Height: | Size: 787 B After Width: | Height: | Size: 787 B |
Before Width: | Height: | Size: 781 B After Width: | Height: | Size: 781 B |
Before Width: | Height: | Size: 769 B After Width: | Height: | Size: 769 B |
Before Width: | Height: | Size: 835 B After Width: | Height: | Size: 835 B |
After Width: | Height: | Size: 739 B |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1013 B |
After Width: | Height: | Size: 2.0 KiB |
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 257 KiB After Width: | Height: | Size: 257 KiB |
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 66 KiB |
@ -0,0 +1,13 @@
|
|||||||
|
import { FC, ReactNode } from "react"
|
||||||
|
import { Button, Image, Text, View } from "react-native"
|
||||||
|
import { Skin } from "../core/Skin"
|
||||||
|
|
||||||
|
/*
|
||||||
|
export const SkinComponent : FC<{skin: Skin, children: ReactNode}> = ({skin, children}) => {
|
||||||
|
|
||||||
|
return <View>
|
||||||
|
<Image source={{uri: skin.source}}/>
|
||||||
|
<Text>{t}</Text>
|
||||||
|
</View>
|
||||||
|
}
|
||||||
|
*/
|
@ -0,0 +1,25 @@
|
|||||||
|
export class Skin{
|
||||||
|
private Name: string;
|
||||||
|
private Source: string;
|
||||||
|
|
||||||
|
constructor(name: string, source:string){
|
||||||
|
this.Name=name;
|
||||||
|
this.Source=source;
|
||||||
|
}
|
||||||
|
|
||||||
|
setSkinName(name: string){
|
||||||
|
this.Name=name;
|
||||||
|
}
|
||||||
|
|
||||||
|
setSkinSource(source: string){
|
||||||
|
this.Source=source;
|
||||||
|
}
|
||||||
|
|
||||||
|
getSkinSource(){
|
||||||
|
return this.Source;
|
||||||
|
}
|
||||||
|
|
||||||
|
getSkinName(){
|
||||||
|
return this.Name;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,98 @@
|
|||||||
|
import { Skin } from './Skin'
|
||||||
|
|
||||||
|
export class User{
|
||||||
|
private Id: string;
|
||||||
|
private Username: string;
|
||||||
|
private Nationality: string;
|
||||||
|
private Sexe: string;
|
||||||
|
private DateOfBirth: string;
|
||||||
|
private CurrentCoins: number;
|
||||||
|
private TotalCoins: number;
|
||||||
|
private CurrentSkin: Skin;
|
||||||
|
private TabSkin: Skin[];
|
||||||
|
|
||||||
|
constructor(id: string, username: string, nationality: string, sexe: string, dateOfBirth: string, currentCoins: number, totalCoins: number,
|
||||||
|
currentSkin: Skin, tabSkin: Skin[] ){
|
||||||
|
this.Id=id;
|
||||||
|
this.Username=username;
|
||||||
|
this.Nationality=nationality;
|
||||||
|
this.Sexe=sexe;
|
||||||
|
this.DateOfBirth=dateOfBirth;
|
||||||
|
this.CurrentCoins=currentCoins;
|
||||||
|
this.TotalCoins=totalCoins;
|
||||||
|
this.CurrentSkin=currentSkin;
|
||||||
|
this.TabSkin=tabSkin;
|
||||||
|
}
|
||||||
|
|
||||||
|
getUsername(){
|
||||||
|
return this.Username;
|
||||||
|
}
|
||||||
|
|
||||||
|
setUsername(username: string){
|
||||||
|
this.Username=username;
|
||||||
|
}
|
||||||
|
|
||||||
|
getId(){
|
||||||
|
return this.Id;
|
||||||
|
}
|
||||||
|
|
||||||
|
setId(id: string){
|
||||||
|
this.Id=id;
|
||||||
|
}
|
||||||
|
|
||||||
|
getCurrentCoins(){
|
||||||
|
return this.CurrentCoins;
|
||||||
|
}
|
||||||
|
|
||||||
|
setCurrentCoins(currentCoins: number){
|
||||||
|
this.CurrentCoins=currentCoins;
|
||||||
|
}
|
||||||
|
|
||||||
|
getSexe(){
|
||||||
|
return this.Sexe;
|
||||||
|
}
|
||||||
|
|
||||||
|
setSexe(sexe: string){
|
||||||
|
this.Sexe=sexe;
|
||||||
|
}
|
||||||
|
|
||||||
|
getDateOfBirth(){
|
||||||
|
return this.DateOfBirth;
|
||||||
|
}
|
||||||
|
|
||||||
|
setDateOfBirth(dateOfBirth: string){
|
||||||
|
this.DateOfBirth=dateOfBirth;
|
||||||
|
}
|
||||||
|
|
||||||
|
getNationality(){
|
||||||
|
return this.Nationality;
|
||||||
|
}
|
||||||
|
|
||||||
|
setNationality(nationality: string){
|
||||||
|
this.Nationality=nationality;
|
||||||
|
}
|
||||||
|
|
||||||
|
getTotalCoins(){
|
||||||
|
return this.TotalCoins;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTotalCoins(totalCoins: number){
|
||||||
|
this.TotalCoins=totalCoins;
|
||||||
|
}
|
||||||
|
|
||||||
|
getCurrentSkin(){
|
||||||
|
return this.CurrentSkin;
|
||||||
|
}
|
||||||
|
|
||||||
|
setCurrentSkin(newSkin: Skin){
|
||||||
|
this.CurrentSkin=newSkin;
|
||||||
|
}
|
||||||
|
|
||||||
|
getTabSkin(){
|
||||||
|
return this.TabSkin;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTabSkin(tabSkin: Skin[]){
|
||||||
|
this.TabSkin=tabSkin;
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 533 B |
Before Width: | Height: | Size: 865 B |
Before Width: | Height: | Size: 693 B |
Before Width: | Height: | Size: 409 B |
@ -0,0 +1,68 @@
|
|||||||
|
import * as React from 'react'
|
||||||
|
import { NavigationContainer } from '@react-navigation/native'
|
||||||
|
import { createBottomTabNavigator } from '@react-navigation/bottom-tabs'
|
||||||
|
import { createStackNavigator } from '@react-navigation/stack'
|
||||||
|
|
||||||
|
import Home from '../screens/Home'
|
||||||
|
import Store from '../screens/Store'
|
||||||
|
import Chat from '../screens/Chat'
|
||||||
|
import Settings from '../screens/Settings'
|
||||||
|
|
||||||
|
|
||||||
|
import Test from '../screens/Test'
|
||||||
|
|
||||||
|
|
||||||
|
const HomeStack = createStackNavigator();
|
||||||
|
|
||||||
|
function HomeStackScreen() {
|
||||||
|
return (
|
||||||
|
<HomeStack.Navigator screenOptions={{headerShown: false}}>
|
||||||
|
<HomeStack.Screen name="Home" component={Home} />
|
||||||
|
<HomeStack.Screen name="Settings" component={Settings} />
|
||||||
|
</HomeStack.Navigator>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const StoreStack = createStackNavigator();
|
||||||
|
|
||||||
|
function StoreStackScreen() {
|
||||||
|
return (
|
||||||
|
<StoreStack.Navigator screenOptions={{headerShown: false}}>
|
||||||
|
<StoreStack.Screen name="Store" component={Store} />
|
||||||
|
<StoreStack.Screen name="Settings" component={Settings} />
|
||||||
|
</StoreStack.Navigator>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ChatStack = createStackNavigator();
|
||||||
|
|
||||||
|
function ChatStackScreen() {
|
||||||
|
return (
|
||||||
|
<ChatStack.Navigator screenOptions={{headerShown: false}}>
|
||||||
|
<ChatStack.Screen name="Chat" component={Chat} />
|
||||||
|
<ChatStack.Screen name="Settings" component={Settings} />
|
||||||
|
</ChatStack.Navigator>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const Tab = createBottomTabNavigator()
|
||||||
|
|
||||||
|
function MainTabNavigator() {
|
||||||
|
return (
|
||||||
|
<NavigationContainer>
|
||||||
|
<Tab.Navigator
|
||||||
|
initialRouteName='Home'
|
||||||
|
backBehavior='none'
|
||||||
|
screenOptions={{headerShown: false, tabBarStyle: { display: 'none' },}}
|
||||||
|
>
|
||||||
|
<Tab.Screen name='Home' component={HomeStackScreen} />
|
||||||
|
<Tab.Screen name='Store' component={StoreStackScreen} />
|
||||||
|
<Tab.Screen name='Chat' component={ChatStackScreen} />
|
||||||
|
<Tab.Screen name='Test' component={Test} />
|
||||||
|
</Tab.Navigator>
|
||||||
|
</NavigationContainer>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default MainTabNavigator
|
@ -0,0 +1,156 @@
|
|||||||
|
import { StatusBar } from 'expo-status-bar'
|
||||||
|
import { StyleSheet, View, Text, Alert, Pressable, Image} from 'react-native'
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
const avatar = require('../../assets/Icons/BobClassic.png');
|
||||||
|
const engrenage = require('../../assets/Icons/UnSelected/Cogs.png');
|
||||||
|
const gamepad = require('../../assets/Icons/UnSelected/Gamepad.png');
|
||||||
|
const message = require('../../assets/Icons/Selected/SChat.png');
|
||||||
|
const store = require('../../assets/Icons/UnSelected/Store.png');
|
||||||
|
|
||||||
|
function Store(props: { navigation: any; }) {
|
||||||
|
const { navigation } = props
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
<View style={styles.header}>
|
||||||
|
<Pressable onPress={() => Alert.alert('Profil Joueur')}>
|
||||||
|
<Image
|
||||||
|
style={styles.avatar}
|
||||||
|
source={avatar}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
<Text style={styles.titre}>BOB PARTY</Text>
|
||||||
|
<Pressable onPress={() => navigation.navigate('Settings')}>
|
||||||
|
<Image
|
||||||
|
style={styles.engrenage}
|
||||||
|
source={engrenage}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
</View>
|
||||||
|
<View style={styles.body}>
|
||||||
|
<Text style={styles.text}>couille</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.footer}>
|
||||||
|
<Pressable>
|
||||||
|
<Image
|
||||||
|
style={styles.iconFooter}
|
||||||
|
source={message}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
<Pressable onPress={() => navigation.navigate('Home')}>
|
||||||
|
<Image
|
||||||
|
style={styles.iconFooter}
|
||||||
|
source={gamepad}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
<Pressable onPress={() => navigation.navigate('Store')}>
|
||||||
|
<Image
|
||||||
|
style={styles.iconStore}
|
||||||
|
source={store}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function Button(props: { onPress: any; title?: "Save" | undefined; }) {
|
||||||
|
const { onPress, title = 'Save' } = props;
|
||||||
|
return (
|
||||||
|
<Pressable style={styles.button} onPress={onPress}>
|
||||||
|
<Text style={styles.text}>{title}</Text>
|
||||||
|
</Pressable>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
body: {
|
||||||
|
flex: 1,
|
||||||
|
flexDirection: 'column',
|
||||||
|
alignItems: 'flex-start',
|
||||||
|
width: '70%',
|
||||||
|
},
|
||||||
|
|
||||||
|
container: {
|
||||||
|
flex: 1,
|
||||||
|
backgroundColor: "#45444E",
|
||||||
|
flexDirection: "column",
|
||||||
|
justifyContent: "flex-start",
|
||||||
|
alignItems: "center",
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
height: '30%',
|
||||||
|
width: '100%',
|
||||||
|
marginTop: '10%',
|
||||||
|
paddingVertical: 12,
|
||||||
|
paddingHorizontal: 32,
|
||||||
|
borderRadius: 10,
|
||||||
|
elevation: 3,
|
||||||
|
backgroundColor: '#0085FF',
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
fontSize: 16,
|
||||||
|
lineHeight: 21,
|
||||||
|
fontWeight: 'bold',
|
||||||
|
letterSpacing: 0.25,
|
||||||
|
color: 'white',
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
flex : 0.15,
|
||||||
|
width: '100%',
|
||||||
|
flexDirection: 'row',
|
||||||
|
backgroundColor: '#2D2C33',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'space-around',
|
||||||
|
},
|
||||||
|
titre: {
|
||||||
|
flex: 0.7,
|
||||||
|
flexDirection: 'column',
|
||||||
|
textAlign: 'center',
|
||||||
|
fontSize: 30,
|
||||||
|
fontFamily: 'Helvetica',
|
||||||
|
fontWeight: 'bold',
|
||||||
|
letterSpacing: 0.25,
|
||||||
|
color: 'white',
|
||||||
|
},
|
||||||
|
engrenage: {
|
||||||
|
borderRadius: 50,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
avatar: {
|
||||||
|
borderRadius: 50,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
|
||||||
|
footer: {
|
||||||
|
flex: 0.15,
|
||||||
|
flexDirection: 'row',
|
||||||
|
backgroundColor: '#2D2C33',
|
||||||
|
flexWrap: 'wrap',
|
||||||
|
width: '100%',
|
||||||
|
justifyContent: 'space-evenly',
|
||||||
|
},
|
||||||
|
iconFooter: {
|
||||||
|
marginBot: 25,
|
||||||
|
marginTop: 10,
|
||||||
|
width: 65,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
iconStore: {
|
||||||
|
marginBot: 25,
|
||||||
|
marginTop: 10,
|
||||||
|
marginLeft: 7,
|
||||||
|
marginRight: 8,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
export default Store
|
@ -0,0 +1,131 @@
|
|||||||
|
import { StatusBar } from 'expo-status-bar'
|
||||||
|
import { StyleSheet, View, Text, Alert, Pressable, Image} from 'react-native'
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
const msc = require('../../assets/Icons/FondGris.png');
|
||||||
|
const engrenage = require('../../assets/Icons/UnSelected/Cross.png');
|
||||||
|
|
||||||
|
function Store(props: { navigation: any; }) {
|
||||||
|
const { navigation } = props
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
<View style={styles.header}>
|
||||||
|
<Image
|
||||||
|
style={styles.engrenage}
|
||||||
|
source={msc}
|
||||||
|
/>
|
||||||
|
<Text style={styles.titre}>Paramètres</Text>
|
||||||
|
<Pressable onPress={() => props.navigation.goBack()}>
|
||||||
|
<Image
|
||||||
|
style={styles.engrenage}
|
||||||
|
source={engrenage}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
</View>
|
||||||
|
<View style={styles.body}>
|
||||||
|
<Text style={styles.text}>couille</Text>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function Button(props: { onPress: any; title?: any | undefined; }) {
|
||||||
|
const { onPress, title = 'Save' } = props;
|
||||||
|
return (
|
||||||
|
<Pressable style={styles.button} onPress={onPress}>
|
||||||
|
<Text style={styles.text}>{title}</Text>
|
||||||
|
</Pressable>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
body: {
|
||||||
|
flex: 1,
|
||||||
|
flexDirection: 'column',
|
||||||
|
alignItems: 'flex-start',
|
||||||
|
width: '70%',
|
||||||
|
},
|
||||||
|
|
||||||
|
container: {
|
||||||
|
flex: 1,
|
||||||
|
backgroundColor: "#45444E",
|
||||||
|
flexDirection: "column",
|
||||||
|
justifyContent: "flex-start",
|
||||||
|
alignItems: "center",
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
height: '30%',
|
||||||
|
width: '100%',
|
||||||
|
marginTop: '10%',
|
||||||
|
paddingVertical: 12,
|
||||||
|
paddingHorizontal: 32,
|
||||||
|
borderRadius: 10,
|
||||||
|
elevation: 3,
|
||||||
|
backgroundColor: '#0085FF',
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
fontSize: 16,
|
||||||
|
lineHeight: 21,
|
||||||
|
fontWeight: 'bold',
|
||||||
|
letterSpacing: 0.25,
|
||||||
|
color: 'white',
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
flex : 0.15,
|
||||||
|
width: '100%',
|
||||||
|
flexDirection: 'row',
|
||||||
|
backgroundColor: '#2D2C33',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'space-around',
|
||||||
|
},
|
||||||
|
titre: {
|
||||||
|
flex: 0.7,
|
||||||
|
flexDirection: 'column',
|
||||||
|
textAlign: 'center',
|
||||||
|
fontSize: 30,
|
||||||
|
fontFamily: 'Helvetica',
|
||||||
|
fontWeight: 'bold',
|
||||||
|
letterSpacing: 0.25,
|
||||||
|
color: 'white',
|
||||||
|
},
|
||||||
|
engrenage: {
|
||||||
|
borderRadius: 10,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
avatar: {
|
||||||
|
borderRadius: 10,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
|
||||||
|
footer: {
|
||||||
|
flex: 0.15,
|
||||||
|
flexDirection: 'row',
|
||||||
|
backgroundColor: '#2D2C33',
|
||||||
|
flexWrap: 'wrap',
|
||||||
|
width: '100%',
|
||||||
|
justifyContent: 'space-evenly',
|
||||||
|
},
|
||||||
|
iconFooter: {
|
||||||
|
marginBottom: 25,
|
||||||
|
marginTop: 10,
|
||||||
|
width: 65,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
iconStore: {
|
||||||
|
marginBottom: 25,
|
||||||
|
marginTop: 10,
|
||||||
|
marginLeft: 7,
|
||||||
|
marginRight: 8,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
export default Store
|
@ -0,0 +1,156 @@
|
|||||||
|
import { StatusBar } from 'expo-status-bar'
|
||||||
|
import { StyleSheet, View, Text, Alert, Pressable, Image} from 'react-native'
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
|
const avatar = require('../../assets/Icons/BobClassic.png');
|
||||||
|
const engrenage = require('../../assets/Icons/UnSelected/Cogs.png');
|
||||||
|
const gamepad = require('../../assets/Icons/UnSelected/Gamepad.png');
|
||||||
|
const message = require('../../assets/Icons/UnSelected/Chat.png');
|
||||||
|
const store = require('../../assets/Icons/Selected/SStore.png');
|
||||||
|
|
||||||
|
function Store(props: { navigation: any; }) {
|
||||||
|
const { navigation } = props
|
||||||
|
return (
|
||||||
|
<View style={styles.container}>
|
||||||
|
<View style={styles.header}>
|
||||||
|
<Pressable onPress={() => Alert.alert('Profil Joueur')}>
|
||||||
|
<Image
|
||||||
|
style={styles.avatar}
|
||||||
|
source={avatar}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
<Text style={styles.titre}>BOB PARTY</Text>
|
||||||
|
<Pressable onPress={() => navigation.navigate('Settings')}>
|
||||||
|
<Image
|
||||||
|
style={styles.engrenage}
|
||||||
|
source={engrenage}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
</View>
|
||||||
|
<View style={styles.body}>
|
||||||
|
<Text style={styles.text}>couille</Text>
|
||||||
|
</View>
|
||||||
|
<View style={styles.footer}>
|
||||||
|
<Pressable onPress={() => navigation.navigate('Chat')}>
|
||||||
|
<Image
|
||||||
|
style={styles.iconFooter}
|
||||||
|
source={message}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
<Pressable onPress={() => navigation.navigate('Home')}>
|
||||||
|
<Image
|
||||||
|
style={styles.iconFooter}
|
||||||
|
source={gamepad}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
<Pressable >
|
||||||
|
<Image
|
||||||
|
style={styles.iconStore}
|
||||||
|
source={store}
|
||||||
|
/>
|
||||||
|
</Pressable>
|
||||||
|
</View>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function Button(props: { onPress: any; title?: any | undefined; }) {
|
||||||
|
const { onPress, title = 'Save' } = props;
|
||||||
|
return (
|
||||||
|
<Pressable style={styles.button} onPress={onPress}>
|
||||||
|
<Text style={styles.text}>{title}</Text>
|
||||||
|
</Pressable>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
body: {
|
||||||
|
flex: 1,
|
||||||
|
flexDirection: 'column',
|
||||||
|
alignItems: 'flex-start',
|
||||||
|
width: '70%',
|
||||||
|
},
|
||||||
|
|
||||||
|
container: {
|
||||||
|
flex: 1,
|
||||||
|
backgroundColor: "#45444E",
|
||||||
|
flexDirection: "column",
|
||||||
|
justifyContent: "flex-start",
|
||||||
|
alignItems: "center",
|
||||||
|
},
|
||||||
|
button: {
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
height: '30%',
|
||||||
|
width: '100%',
|
||||||
|
marginTop: '10%',
|
||||||
|
paddingVertical: 12,
|
||||||
|
paddingHorizontal: 32,
|
||||||
|
borderRadius: 10,
|
||||||
|
elevation: 3,
|
||||||
|
backgroundColor: '#0085FF',
|
||||||
|
},
|
||||||
|
text: {
|
||||||
|
fontSize: 16,
|
||||||
|
lineHeight: 21,
|
||||||
|
fontWeight: 'bold',
|
||||||
|
letterSpacing: 0.25,
|
||||||
|
color: 'white',
|
||||||
|
},
|
||||||
|
header: {
|
||||||
|
flex : 0.15,
|
||||||
|
width: '100%',
|
||||||
|
flexDirection: 'row',
|
||||||
|
backgroundColor: '#2D2C33',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'space-around',
|
||||||
|
},
|
||||||
|
titre: {
|
||||||
|
flex: 0.7,
|
||||||
|
flexDirection: 'column',
|
||||||
|
textAlign: 'center',
|
||||||
|
fontSize: 30,
|
||||||
|
fontFamily: 'Helvetica',
|
||||||
|
fontWeight: 'bold',
|
||||||
|
letterSpacing: 0.25,
|
||||||
|
color: 'white',
|
||||||
|
},
|
||||||
|
engrenage: {
|
||||||
|
borderRadius: 50,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
avatar: {
|
||||||
|
borderRadius: 50,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
|
||||||
|
footer: {
|
||||||
|
flex: 0.15,
|
||||||
|
flexDirection: 'row',
|
||||||
|
backgroundColor: '#2D2C33',
|
||||||
|
flexWrap: 'wrap',
|
||||||
|
width: '100%',
|
||||||
|
justifyContent: 'space-evenly',
|
||||||
|
},
|
||||||
|
iconFooter: {
|
||||||
|
marginBottom: 25,
|
||||||
|
marginTop: 10,
|
||||||
|
width: 65,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
iconStore: {
|
||||||
|
marginBottom: 25,
|
||||||
|
marginTop: 10,
|
||||||
|
marginLeft: 7,
|
||||||
|
marginRight: 8,
|
||||||
|
width: 50,
|
||||||
|
height: 50,
|
||||||
|
},
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
export default Store
|
@ -0,0 +1,92 @@
|
|||||||
|
import { StatusBar } from 'expo-status-bar'
|
||||||
|
import { useState } from 'react';
|
||||||
|
import { StyleSheet, View, Text, Alert, Pressable, Image, ImageBackground} from 'react-native'
|
||||||
|
import React from 'react';
|
||||||
|
import { FlatList } from 'react-native-gesture-handler';
|
||||||
|
|
||||||
|
const BobClassic = require('../../assets/BobsSkins/BobClassic.png');
|
||||||
|
const BobBW = require('../../assets/BobsSkins/BobBW.png');
|
||||||
|
const BobBlue = require('../../assets/BobsSkins/BobBlue.png');
|
||||||
|
const BobGreen = require('../../assets/BobsSkins/BobGreen.png');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function Test(props: { navigation: any; }) {
|
||||||
|
const { navigation } = props
|
||||||
|
|
||||||
|
const [skin, setSkin] = useState([
|
||||||
|
{ name : 'BobClassic', image: BobClassic, price: 0, id: 's0001'},
|
||||||
|
{ name : 'BobBW', image: BobBW, price: 150, id: 's0002'},
|
||||||
|
{ name : 'BobBlue', image: BobBlue, price: 200, id: 's0003'},
|
||||||
|
{ name : 'BobGreen', image: BobGreen, price: 200, id: 's0004'},
|
||||||
|
]);
|
||||||
|
|
||||||
|
const ItemSeprator = () => <View style={{
|
||||||
|
height: 2,
|
||||||
|
width: "100%",
|
||||||
|
backgroundColor: "red",
|
||||||
|
}}/>
|
||||||
|
|
||||||
|
return (
|
||||||
|
<View style={styles.imageWrapper}>
|
||||||
|
<FlatList
|
||||||
|
numColumns={2}
|
||||||
|
keyExtractor={( item ) => item.id }
|
||||||
|
data={skin}
|
||||||
|
ItemSeparatorComponent={ItemSeprator}
|
||||||
|
renderItem={({ item }) => (
|
||||||
|
<ImageBackground
|
||||||
|
style={styles.theImage}
|
||||||
|
source={item.image}
|
||||||
|
>
|
||||||
|
<Text>{item.price}</Text>
|
||||||
|
<Text>{item.name}</Text>
|
||||||
|
</ImageBackground>
|
||||||
|
)}
|
||||||
|
/>
|
||||||
|
</View>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const styles = StyleSheet.create({
|
||||||
|
imageWrapper: {
|
||||||
|
height: 200,
|
||||||
|
width: 200,
|
||||||
|
overflow : "hidden"
|
||||||
|
},
|
||||||
|
theImage: {
|
||||||
|
flex: 1,
|
||||||
|
alignItems: "flex-end",
|
||||||
|
margin: 10,
|
||||||
|
width: "100%",
|
||||||
|
height: "100%",
|
||||||
|
},
|
||||||
|
container: {
|
||||||
|
backgroundColor: '#45444E',
|
||||||
|
flex: 1,
|
||||||
|
paddingTop: "50%",
|
||||||
|
paddingBottom: "50%",
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
height: '100%',
|
||||||
|
},
|
||||||
|
Text: {
|
||||||
|
margin: 15,
|
||||||
|
paddingVertical: 12,
|
||||||
|
width: '40%',
|
||||||
|
borderRadius: 10,
|
||||||
|
backgroundColor: '#0085FF',
|
||||||
|
},
|
||||||
|
item: {
|
||||||
|
marginTop: 24,
|
||||||
|
backgroundColor: 'pink',
|
||||||
|
fontSize: 24,
|
||||||
|
},
|
||||||
|
debug:{
|
||||||
|
flex: 0.2,
|
||||||
|
backgroundColor: "red",
|
||||||
|
padding: 50,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default Test
|
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"extends": "expo/tsconfig.base",
|
||||||
|
"compilerOptions": {
|
||||||
|
"jsx": "react",
|
||||||
|
"strict": true
|
||||||
|
}
|
||||||
|
}
|