-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmenu.js
115 lines (109 loc) · 3.34 KB
/
menu.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
import React, { useState, useContext } from 'react';
import {
StyleSheet,
View,
Text,
TouchableOpacity,
} from 'react-native';
import * as WebBrowser from 'expo-web-browser';
import { SettingsContext } from './settings/SettingsContext';
import Constants from 'expo-constants'
import CustomText from './CustomText';
import ThemeChooser from './themeChooser';
import config from './config';
import themes from './settings/colorThemes';
import { DefaultMenu } from './defaultMenu';
import { SettingsMenu } from './settingsMenu';
import { GameModeMenu } from './gameModeMenu';
import { LeaderboardMenu } from './leaderboardMenu';
import { ButtonText } from './buttonText';
import * as Haptics from 'expo-haptics';
export const Menu = (props) => {
const settingsContext = useContext(SettingsContext);
const [menu, setMenu] = useState();
const handleOpenPrivacyPolicy = async () => {
WebBrowser.openBrowserAsync('https://trescool.io/privacy');
}
const MenuSwitch = () => {
switch (menu) {
default:
return(
<DefaultMenu
restart={props.restart}
showFullMenu={props.showFullMenu}
first={props.first}
score={props.score}
setMenu={setMenu}
/>
);
case 'gameMode':
return(
<GameModeMenu setMenu={setMenu} />
);
case 'leaderboard':
return(
<LeaderboardMenu setMenu={setMenu} />
);
case 'settings':
return(
<SettingsMenu setMenu={setMenu} />
);
};
}
const returnMenu = () => {
setMenu();
}
return(
<View style={[styles.container, {
backgroundColor: settingsContext.theme.opacity,
}]}>
<View style={styles.buttonBackMenu}>
<TouchableOpacity onPress={() => {
returnMenu()
Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium)
}}>
<CustomText hide={!menu} style={styles.backTxt}>
Return
</CustomText>
</TouchableOpacity>
</View>
<View style={styles.menuContainer} >
<MenuSwitch/>
</View>
<TouchableOpacity onPress={() => handleOpenPrivacyPolicy()} style={styles.privacy}>
<CustomText style={styles.privacyTxt}>Privacy Policy</CustomText>
</TouchableOpacity>
</View>
);
};
const styles = StyleSheet.create({
container: {
position: 'absolute',
width: '100%',
height: '100%',
justifyContent: 'center',
alignItems: 'center',
paddingTop: Constants.statusBarHeight + 10,
paddingBottom: Constants.statusBarHeight,
},
menuContainer: {
flex: 3,
width: '100%',
},
privacy: {
textAlign: 'center',
},
privacyTxt: {
fontSize: 20,
fontFamily: 'Billy-Light',
padding: 5,
},
buttonBackMenu: {
flex: 1,
justifyContent: 'center',
},
backTxt: {
fontSize:30,
fontFamily: 'Billy-Light',
},
});