mirror of
https://github.com/Vikeo/LifeTrinket.git
synced 2025-11-14 15:07:59 +00:00
wake lock on by default
This commit is contained in:
@@ -37,7 +37,7 @@ const CommanderDamageBar = ({
|
|||||||
setLifeTotal,
|
setLifeTotal,
|
||||||
}: CommanderDamageBarProps) => {
|
}: CommanderDamageBarProps) => {
|
||||||
return (
|
return (
|
||||||
<CommanderDamageGrid rotation={player.settings.rotation}>
|
<CommanderDamageGrid rotation={player.settings.rotation} key={player.key}>
|
||||||
{opponents.map((opponent) => {
|
{opponents.map((opponent) => {
|
||||||
if (!opponent.settings.useCommanderDamage) {
|
if (!opponent.settings.useCommanderDamage) {
|
||||||
return null;
|
return null;
|
||||||
@@ -48,6 +48,7 @@ const CommanderDamageBar = ({
|
|||||||
opponent={opponent}
|
opponent={opponent}
|
||||||
setLifeTotal={setLifeTotal}
|
setLifeTotal={setLifeTotal}
|
||||||
onPlayerChange={onPlayerChange}
|
onPlayerChange={onPlayerChange}
|
||||||
|
key={opponent.key}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
|||||||
@@ -10,12 +10,6 @@ import PlayerMenu from '../PlayerMenu/PlayerMenu';
|
|||||||
import Health from './Health';
|
import Health from './Health';
|
||||||
import { WakeLock } from '../../Types/WakeLock';
|
import { WakeLock } from '../../Types/WakeLock';
|
||||||
|
|
||||||
const Lmao = styled.div`
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
`;
|
|
||||||
|
|
||||||
const LifeCounterContentWrapper = styled.div<{
|
const LifeCounterContentWrapper = styled.div<{
|
||||||
backgroundColor: string;
|
backgroundColor: string;
|
||||||
}>`
|
}>`
|
||||||
@@ -230,53 +224,52 @@ const LifeCounter = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<LifeCounterContentWrapper backgroundColor={backgroundColor}>
|
<LifeCounterContentWrapper backgroundColor={backgroundColor}>
|
||||||
<Lmao>
|
<LifeCounterWrapper rotation={player.settings.rotation}>
|
||||||
<LifeCounterWrapper rotation={player.settings.rotation}>
|
{player.isStartingPlayer && !showStartingPlayer && (
|
||||||
{player.isStartingPlayer && !showStartingPlayer && (
|
<PlayerNoticeWrapper
|
||||||
<PlayerNoticeWrapper
|
rotation={player.settings.rotation}
|
||||||
rotation={player.settings.rotation}
|
backgroundColor={theme.palette.primary.main}
|
||||||
backgroundColor={theme.palette.primary.main}
|
>
|
||||||
>
|
<DynamicText rotation={player.settings.rotation}>
|
||||||
<DynamicText rotation={player.settings.rotation}>
|
You start!
|
||||||
You start!
|
</DynamicText>
|
||||||
</DynamicText>
|
</PlayerNoticeWrapper>
|
||||||
</PlayerNoticeWrapper>
|
)}
|
||||||
)}
|
|
||||||
|
|
||||||
{player.hasLost && (
|
{player.hasLost && (
|
||||||
<PlayerNoticeWrapper
|
<PlayerNoticeWrapper
|
||||||
rotation={player.settings.rotation}
|
|
||||||
backgroundColor={'#00000070'}
|
|
||||||
/>
|
|
||||||
)}
|
|
||||||
<CommanderDamageBar
|
|
||||||
opponents={opponents}
|
|
||||||
player={player}
|
|
||||||
onPlayerChange={onPlayerChange}
|
|
||||||
setLifeTotal={handleLifeChange}
|
|
||||||
/>
|
|
||||||
<SettingsButton
|
|
||||||
onClick={() => {
|
|
||||||
setShowPlayerMenu(!showPlayerMenu);
|
|
||||||
}}
|
|
||||||
rotation={player.settings.rotation}
|
rotation={player.settings.rotation}
|
||||||
|
backgroundColor={'#00000070'}
|
||||||
/>
|
/>
|
||||||
{playerCanLose(player) && (
|
)}
|
||||||
<LoseGameButton
|
<CommanderDamageBar
|
||||||
rotation={player.settings.rotation}
|
opponents={opponents}
|
||||||
onClick={toggleGameLost}
|
player={player}
|
||||||
/>
|
onPlayerChange={onPlayerChange}
|
||||||
)}
|
setLifeTotal={handleLifeChange}
|
||||||
<Health
|
/>
|
||||||
player={player}
|
<SettingsButton
|
||||||
onPlayerChange={onPlayerChange}
|
onClick={() => {
|
||||||
differenceKey={differenceKey}
|
setShowPlayerMenu(!showPlayerMenu);
|
||||||
setDifferenceKey={setDifferenceKey}
|
}}
|
||||||
|
rotation={player.settings.rotation}
|
||||||
|
/>
|
||||||
|
{playerCanLose(player) && (
|
||||||
|
<LoseGameButton
|
||||||
rotation={player.settings.rotation}
|
rotation={player.settings.rotation}
|
||||||
|
onClick={toggleGameLost}
|
||||||
/>
|
/>
|
||||||
<ExtraCountersBar player={player} onPlayerChange={onPlayerChange} />
|
)}
|
||||||
</LifeCounterWrapper>
|
<Health
|
||||||
</Lmao>
|
player={player}
|
||||||
|
onPlayerChange={onPlayerChange}
|
||||||
|
differenceKey={differenceKey}
|
||||||
|
setDifferenceKey={setDifferenceKey}
|
||||||
|
rotation={player.settings.rotation}
|
||||||
|
/>
|
||||||
|
<ExtraCountersBar player={player} onPlayerChange={onPlayerChange} />
|
||||||
|
</LifeCounterWrapper>
|
||||||
|
|
||||||
{showPlayerMenu && (
|
{showPlayerMenu && (
|
||||||
<PlayerMenu
|
<PlayerMenu
|
||||||
player={player}
|
player={player}
|
||||||
|
|||||||
6
src/Components/Misc/Spacer.tsx
Normal file
6
src/Components/Misc/Spacer.tsx
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import styled from 'styled-components';
|
||||||
|
|
||||||
|
export const Spacer = styled.div<{ width?: string; height?: string }>`
|
||||||
|
width: ${(props) => props.width};
|
||||||
|
height: ${(props) => props.height};
|
||||||
|
`;
|
||||||
@@ -195,7 +195,7 @@ const Settings = ({
|
|||||||
size="6vmax"
|
size="6vmax"
|
||||||
color="black"
|
color="black"
|
||||||
stroke="white"
|
stroke="white"
|
||||||
stroke-width="30"
|
strokeWidth="30"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
checkedIcon={
|
checkedIcon={
|
||||||
@@ -203,7 +203,7 @@ const Settings = ({
|
|||||||
size="6vmax"
|
size="6vmax"
|
||||||
color={player.color}
|
color={player.color}
|
||||||
stroke="white"
|
stroke="white"
|
||||||
stroke-width="30"
|
strokeWidth="30"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
onChange={handleSettingsChange}
|
onChange={handleSettingsChange}
|
||||||
@@ -220,7 +220,7 @@ const Settings = ({
|
|||||||
size="6vmax"
|
size="6vmax"
|
||||||
color="black"
|
color="black"
|
||||||
stroke="white"
|
stroke="white"
|
||||||
stroke-width="30"
|
strokeWidth="30"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
checkedIcon={
|
checkedIcon={
|
||||||
@@ -228,7 +228,7 @@ const Settings = ({
|
|||||||
size="6vmax"
|
size="6vmax"
|
||||||
color={player.color}
|
color={player.color}
|
||||||
stroke="white"
|
stroke="white"
|
||||||
stroke-width="30"
|
strokeWidth="30"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
onChange={handleSettingsChange}
|
onChange={handleSettingsChange}
|
||||||
@@ -244,7 +244,7 @@ const Settings = ({
|
|||||||
size="6vmax"
|
size="6vmax"
|
||||||
color="black"
|
color="black"
|
||||||
stroke="white"
|
stroke="white"
|
||||||
stroke-width="15"
|
strokeWidth="15"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
checkedIcon={
|
checkedIcon={
|
||||||
@@ -252,7 +252,7 @@ const Settings = ({
|
|||||||
size="6vmax"
|
size="6vmax"
|
||||||
color={player.color}
|
color={player.color}
|
||||||
stroke="white"
|
stroke="white"
|
||||||
stroke-width="15"
|
strokeWidth="15"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
onChange={handleSettingsChange}
|
onChange={handleSettingsChange}
|
||||||
@@ -268,7 +268,7 @@ const Settings = ({
|
|||||||
size="6vmax"
|
size="6vmax"
|
||||||
color="black"
|
color="black"
|
||||||
stroke="white"
|
stroke="white"
|
||||||
stroke-width="15"
|
strokeWidth="15"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
checkedIcon={
|
checkedIcon={
|
||||||
@@ -276,7 +276,7 @@ const Settings = ({
|
|||||||
size="6vmax"
|
size="6vmax"
|
||||||
color={player.color}
|
color={player.color}
|
||||||
stroke="white"
|
stroke="white"
|
||||||
stroke-width="15"
|
strokeWidth="15"
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
onChange={handleSettingsChange}
|
onChange={handleSettingsChange}
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ const LayoutOptions: React.FC<LayoutOptionsProps> = ({
|
|||||||
gridAreas,
|
gridAreas,
|
||||||
onChange,
|
onChange,
|
||||||
}) => {
|
}) => {
|
||||||
const iconHeight = '33vmin';
|
const iconHeight = '30vmin';
|
||||||
const iconWidth = '20vmin';
|
const iconWidth = '20vmin';
|
||||||
|
|
||||||
const renderLayoutOptions = () => {
|
const renderLayoutOptions = () => {
|
||||||
@@ -94,18 +94,18 @@ const LayoutOptions: React.FC<LayoutOptionsProps> = ({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
value={GridTemplateAreas.TwoPlayersOppositeLandscape}
|
value={GridTemplateAreas.TwoPlayersSameSide}
|
||||||
control={
|
control={
|
||||||
<Radio
|
<Radio
|
||||||
icon={
|
icon={
|
||||||
<TwoPlayersOppositeLandscape
|
<TwoPlayersSameSide
|
||||||
height={iconHeight}
|
height={iconHeight}
|
||||||
width={iconWidth}
|
width={iconWidth}
|
||||||
fill={theme.palette.secondary.main}
|
fill={theme.palette.secondary.main}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
checkedIcon={
|
checkedIcon={
|
||||||
<TwoPlayersOppositeLandscape
|
<TwoPlayersSameSide
|
||||||
height={iconHeight}
|
height={iconHeight}
|
||||||
width={iconWidth}
|
width={iconWidth}
|
||||||
fill={theme.palette.primary.main}
|
fill={theme.palette.primary.main}
|
||||||
@@ -140,18 +140,18 @@ const LayoutOptions: React.FC<LayoutOptionsProps> = ({
|
|||||||
label=""
|
label=""
|
||||||
/>
|
/>
|
||||||
<FormControlLabel
|
<FormControlLabel
|
||||||
value={GridTemplateAreas.TwoPlayersSameSide}
|
value={GridTemplateAreas.TwoPlayersOppositeLandscape}
|
||||||
control={
|
control={
|
||||||
<Radio
|
<Radio
|
||||||
icon={
|
icon={
|
||||||
<TwoPlayersSameSide
|
<TwoPlayersOppositeLandscape
|
||||||
height={iconHeight}
|
height={iconHeight}
|
||||||
width={iconWidth}
|
width={iconWidth}
|
||||||
fill={theme.palette.secondary.main}
|
fill={theme.palette.secondary.main}
|
||||||
/>
|
/>
|
||||||
}
|
}
|
||||||
checkedIcon={
|
checkedIcon={
|
||||||
<TwoPlayersSameSide
|
<TwoPlayersOppositeLandscape
|
||||||
height={iconHeight}
|
height={iconHeight}
|
||||||
width={iconWidth}
|
width={iconWidth}
|
||||||
fill={theme.palette.primary.main}
|
fill={theme.palette.primary.main}
|
||||||
|
|||||||
@@ -17,17 +17,16 @@ import { SupportMe } from '../../Misc/SupportMe';
|
|||||||
import { H2, Paragraph } from '../../Misc/TextComponents';
|
import { H2, Paragraph } from '../../Misc/TextComponents';
|
||||||
import LayoutOptions from './LayoutOptions';
|
import LayoutOptions from './LayoutOptions';
|
||||||
import { useFullscreen } from '../../../Hooks/useFullscreen';
|
import { useFullscreen } from '../../../Hooks/useFullscreen';
|
||||||
|
import { Spacer } from '../../Misc/Spacer';
|
||||||
|
|
||||||
const MainWrapper = styled.div`
|
const MainWrapper = styled.div`
|
||||||
width: 100vw;
|
width: 100dvw;
|
||||||
height: 100vh;
|
height: fit-content;
|
||||||
padding-bottom: 58px;
|
padding-bottom: 58px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
height: fit-content;
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const StartButtonFooter = styled.div`
|
const StartButtonFooter = styled.div`
|
||||||
@@ -36,6 +35,18 @@ const StartButtonFooter = styled.div`
|
|||||||
translate: -50%, -50%;
|
translate: -50%, -50%;
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
const ToggleButtonsWrapper = styled.div`
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
`;
|
||||||
|
|
||||||
|
const ToggleContainer = styled.div`
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
`;
|
||||||
|
|
||||||
const playerMarks = [
|
const playerMarks = [
|
||||||
{
|
{
|
||||||
value: 1,
|
value: 1,
|
||||||
@@ -109,15 +120,25 @@ const Start = ({
|
|||||||
gridAreas: GridTemplateAreas.FourPlayers,
|
gridAreas: GridTemplateAreas.FourPlayers,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
const [wakeLockActive, setWakeLockActive] = useState(true);
|
||||||
|
|
||||||
const { enableFullscreen } = useFullscreen();
|
const { enableFullscreen } = useFullscreen();
|
||||||
|
|
||||||
const toggleWakeLock = ({ active }: { active: boolean }) => {
|
const toggleWakeLock = () => {
|
||||||
if (active) {
|
console.log(wakeLock.active, wakeLockActive);
|
||||||
|
if (wakeLock.active && wakeLockActive) {
|
||||||
wakeLock.release();
|
wakeLock.release();
|
||||||
} else {
|
setWakeLockActive(false);
|
||||||
wakeLock.request();
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!wakeLock.active && !wakeLockActive) {
|
||||||
|
wakeLock.request();
|
||||||
|
setWakeLockActive(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
setWakeLockActive(wakeLock.active);
|
||||||
};
|
};
|
||||||
|
|
||||||
const doStartGame = () => {
|
const doStartGame = () => {
|
||||||
@@ -127,6 +148,11 @@ const Start = ({
|
|||||||
|
|
||||||
analytics.trackEvent('game_started', { ...initialGameSettings });
|
analytics.trackEvent('game_started', { ...initialGameSettings });
|
||||||
|
|
||||||
|
if (!wakeLock.active && wakeLockActive) {
|
||||||
|
console.log('yo');
|
||||||
|
wakeLock.request();
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
enableFullscreen();
|
enableFullscreen();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
@@ -150,7 +176,7 @@ const Start = ({
|
|||||||
case 1:
|
case 1:
|
||||||
return GridTemplateAreas.OnePlayerLandscape;
|
return GridTemplateAreas.OnePlayerLandscape;
|
||||||
case 2:
|
case 2:
|
||||||
return GridTemplateAreas.TwoPlayersOppositeLandscape;
|
return GridTemplateAreas.TwoPlayersSameSide;
|
||||||
case 3:
|
case 3:
|
||||||
return GridTemplateAreas.ThreePlayers;
|
return GridTemplateAreas.ThreePlayers;
|
||||||
case 4:
|
case 4:
|
||||||
@@ -203,7 +229,7 @@ const Start = ({
|
|||||||
max={6}
|
max={6}
|
||||||
min={1}
|
min={1}
|
||||||
aria-label="Custom marks"
|
aria-label="Custom marks"
|
||||||
defaultValue={initialGameSettings?.numberOfPlayers ?? 4}
|
value={playerOptions?.numberOfPlayers ?? 4}
|
||||||
getAriaValueText={valuetext}
|
getAriaValueText={valuetext}
|
||||||
step={null}
|
step={null}
|
||||||
marks={playerMarks}
|
marks={playerMarks}
|
||||||
@@ -220,7 +246,7 @@ const Start = ({
|
|||||||
max={60}
|
max={60}
|
||||||
min={20}
|
min={20}
|
||||||
aria-label="Custom marks"
|
aria-label="Custom marks"
|
||||||
defaultValue={initialGameSettings?.startingLifeTotal ?? 40}
|
value={playerOptions?.startingLifeTotal ?? 40}
|
||||||
getAriaValueText={valuetext}
|
getAriaValueText={valuetext}
|
||||||
step={10}
|
step={10}
|
||||||
marks={healthMarks}
|
marks={healthMarks}
|
||||||
@@ -231,26 +257,46 @@ const Start = ({
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
/>
|
/>
|
||||||
<FormLabel>Commander</FormLabel>
|
|
||||||
<Switch
|
<ToggleButtonsWrapper>
|
||||||
checked={playerOptions.useCommanderDamage}
|
<ToggleContainer>
|
||||||
defaultChecked={initialGameSettings?.useCommanderDamage ?? true}
|
<FormLabel>Commander</FormLabel>
|
||||||
onChange={(_e, value) =>
|
<Switch
|
||||||
setPlayerOptions({
|
checked={
|
||||||
...playerOptions,
|
playerOptions.useCommanderDamage ??
|
||||||
useCommanderDamage: value,
|
initialGameSettings?.useCommanderDamage ??
|
||||||
})
|
true
|
||||||
}
|
}
|
||||||
/>
|
onChange={(_e, value) => {
|
||||||
<FormLabel>Keep Awake</FormLabel>
|
if (value) {
|
||||||
<Switch
|
setPlayerOptions({
|
||||||
checked={wakeLock.active}
|
...playerOptions,
|
||||||
defaultChecked={wakeLock.active}
|
useCommanderDamage: value,
|
||||||
onChange={() => toggleWakeLock({ active: wakeLock.active })}
|
numberOfPlayers: 4,
|
||||||
/>
|
startingLifeTotal: 40,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setPlayerOptions({
|
||||||
|
...playerOptions,
|
||||||
|
useCommanderDamage: value,
|
||||||
|
numberOfPlayers: 2,
|
||||||
|
startingLifeTotal: 20,
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</ToggleContainer>
|
||||||
|
<Spacer width="2rem" />
|
||||||
|
<ToggleContainer>
|
||||||
|
<FormLabel>Keep Awake</FormLabel>
|
||||||
|
<Switch
|
||||||
|
checked={wakeLockActive}
|
||||||
|
onChange={() => toggleWakeLock()}
|
||||||
|
/>
|
||||||
|
</ToggleContainer>
|
||||||
|
</ToggleButtonsWrapper>
|
||||||
|
|
||||||
<FormLabel>Layout</FormLabel>
|
<FormLabel>Layout</FormLabel>
|
||||||
|
|
||||||
<LayoutOptions
|
<LayoutOptions
|
||||||
numberOfPlayers={playerOptions.numberOfPlayers}
|
numberOfPlayers={playerOptions.numberOfPlayers}
|
||||||
gridAreas={playerOptions.gridAreas}
|
gridAreas={playerOptions.gridAreas}
|
||||||
|
|||||||
Reference in New Issue
Block a user