mirror of
https://github.com/Vikeo/LifeTrinket.git
synced 2025-11-11 21:56:25 +00:00
Compare commits
1 Commits
0.6.8
...
two-headed
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
23ab7c4e46 |
@@ -11,6 +11,8 @@ import {
|
|||||||
Poison,
|
Poison,
|
||||||
} from '../../Icons/generated';
|
} from '../../Icons/generated';
|
||||||
import { usePlayers } from '../../Hooks/usePlayers';
|
import { usePlayers } from '../../Hooks/usePlayers';
|
||||||
|
import { useGlobalSettings } from '../../Hooks/useGlobalSettings';
|
||||||
|
import { GameFormat } from '../../Types/Settings';
|
||||||
|
|
||||||
const Container = styled.div<{ $rotation: Rotation }>`
|
const Container = styled.div<{ $rotation: Rotation }>`
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@@ -61,6 +63,7 @@ type ExtraCountersBarProps = {
|
|||||||
|
|
||||||
const ExtraCountersBar = ({ player }: ExtraCountersBarProps) => {
|
const ExtraCountersBar = ({ player }: ExtraCountersBarProps) => {
|
||||||
const { updatePlayer } = usePlayers();
|
const { updatePlayer } = usePlayers();
|
||||||
|
const { initialGameSettings } = useGlobalSettings();
|
||||||
|
|
||||||
const handleCounterChange = (
|
const handleCounterChange = (
|
||||||
updatedCounterTotal: number,
|
updatedCounterTotal: number,
|
||||||
@@ -117,6 +120,9 @@ const ExtraCountersBar = ({ player }: ExtraCountersBarProps) => {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const isTwoHeadedGiant =
|
||||||
|
initialGameSettings?.gameFormat === GameFormat.TwoHeadedGiant;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Container $rotation={player.settings.rotation}>
|
<Container $rotation={player.settings.rotation}>
|
||||||
<ExtraCountersGrid $rotation={player.settings.rotation}>
|
<ExtraCountersGrid $rotation={player.settings.rotation}>
|
||||||
|
|||||||
@@ -1,4 +1,11 @@
|
|||||||
import { Button, FormControl, FormLabel, Switch } from '@mui/material';
|
import {
|
||||||
|
Button,
|
||||||
|
FormControl,
|
||||||
|
FormLabel,
|
||||||
|
MenuItem,
|
||||||
|
Select,
|
||||||
|
Switch,
|
||||||
|
} from '@mui/material';
|
||||||
import Slider from '@mui/material/Slider';
|
import Slider from '@mui/material/Slider';
|
||||||
import { useEffect, useState } from 'react';
|
import { useEffect, useState } from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
@@ -14,7 +21,7 @@ import LayoutOptions from './LayoutOptions';
|
|||||||
import { Spacer } from '../../Misc/Spacer';
|
import { Spacer } from '../../Misc/Spacer';
|
||||||
import { usePlayers } from '../../../Hooks/usePlayers';
|
import { usePlayers } from '../../../Hooks/usePlayers';
|
||||||
import { useGlobalSettings } from '../../../Hooks/useGlobalSettings';
|
import { useGlobalSettings } from '../../../Hooks/useGlobalSettings';
|
||||||
import { InitialGameSettings } from '../../../Types/Settings';
|
import { GameFormat, InitialGameSettings } from '../../../Types/Settings';
|
||||||
import { SettingsModal } from '../../Misc/SettingsModal';
|
import { SettingsModal } from '../../Misc/SettingsModal';
|
||||||
|
|
||||||
const MainWrapper = styled.div`
|
const MainWrapper = styled.div`
|
||||||
@@ -118,6 +125,7 @@ const Start = () => {
|
|||||||
numberOfPlayers: 4,
|
numberOfPlayers: 4,
|
||||||
startingLifeTotal: 40,
|
startingLifeTotal: 40,
|
||||||
useCommanderDamage: true,
|
useCommanderDamage: true,
|
||||||
|
gameFormat: GameFormat.Commander,
|
||||||
gridAreas: GridTemplateAreas.FourPlayers,
|
gridAreas: GridTemplateAreas.FourPlayers,
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -214,7 +222,11 @@ const Start = () => {
|
|||||||
|
|
||||||
<H1>Life Trinket</H1>
|
<H1>Life Trinket</H1>
|
||||||
<FormControl focused={false} style={{ width: '80vw' }}>
|
<FormControl focused={false} style={{ width: '80vw' }}>
|
||||||
<FormLabel>Number of Players</FormLabel>
|
<FormLabel>
|
||||||
|
{playerOptions.gameFormat === GameFormat.TwoHeadedGiant
|
||||||
|
? 'Number of Teams'
|
||||||
|
: 'Number of Players'}
|
||||||
|
</FormLabel>
|
||||||
<Slider
|
<Slider
|
||||||
title="Number of Players"
|
title="Number of Players"
|
||||||
max={6}
|
max={6}
|
||||||
@@ -253,29 +265,37 @@ const Start = () => {
|
|||||||
|
|
||||||
<ToggleButtonsWrapper>
|
<ToggleButtonsWrapper>
|
||||||
<ToggleContainer>
|
<ToggleContainer>
|
||||||
<FormLabel>Commander</FormLabel>
|
<FormLabel>Use Commander Damage</FormLabel>
|
||||||
<Switch
|
<Switch
|
||||||
checked={
|
disabled={playerOptions.gameFormat === GameFormat.Commander}
|
||||||
playerOptions.useCommanderDamage ??
|
checked={playerOptions.useCommanderDamage}
|
||||||
initialGameSettings?.useCommanderDamage ??
|
|
||||||
true
|
|
||||||
}
|
|
||||||
onChange={(_e, value) => {
|
onChange={(_e, value) => {
|
||||||
if (value) {
|
switch (playerOptions.gameFormat) {
|
||||||
setPlayerOptions({
|
case GameFormat.TwoHeadedGiant:
|
||||||
...playerOptions,
|
if (value) {
|
||||||
useCommanderDamage: value,
|
setPlayerOptions({
|
||||||
numberOfPlayers: 4,
|
...playerOptions,
|
||||||
startingLifeTotal: 40,
|
useCommanderDamage: value,
|
||||||
});
|
startingLifeTotal: 60,
|
||||||
return;
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
setPlayerOptions({
|
||||||
|
...playerOptions,
|
||||||
|
useCommanderDamage: value,
|
||||||
|
startingLifeTotal: 30,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
|
||||||
|
case GameFormat.Standard:
|
||||||
|
case GameFormat.Commander:
|
||||||
|
default:
|
||||||
|
setPlayerOptions({
|
||||||
|
...playerOptions,
|
||||||
|
useCommanderDamage: value,
|
||||||
|
});
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
setPlayerOptions({
|
|
||||||
...playerOptions,
|
|
||||||
useCommanderDamage: value,
|
|
||||||
numberOfPlayers: 2,
|
|
||||||
startingLifeTotal: 20,
|
|
||||||
});
|
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</ToggleContainer>
|
</ToggleContainer>
|
||||||
@@ -290,6 +310,51 @@ const Start = () => {
|
|||||||
</Button>
|
</Button>
|
||||||
</ToggleButtonsWrapper>
|
</ToggleButtonsWrapper>
|
||||||
|
|
||||||
|
<FormLabel>Format</FormLabel>
|
||||||
|
<Select
|
||||||
|
value={playerOptions.gameFormat}
|
||||||
|
onChange={(e) => {
|
||||||
|
switch (e.target.value) {
|
||||||
|
case GameFormat.Standard:
|
||||||
|
setPlayerOptions({
|
||||||
|
...playerOptions,
|
||||||
|
useCommanderDamage: false,
|
||||||
|
numberOfPlayers: 2,
|
||||||
|
startingLifeTotal: 20,
|
||||||
|
gameFormat: GameFormat.Standard,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
|
||||||
|
case GameFormat.TwoHeadedGiant:
|
||||||
|
setPlayerOptions({
|
||||||
|
...playerOptions,
|
||||||
|
useCommanderDamage: false,
|
||||||
|
numberOfPlayers: 2,
|
||||||
|
startingLifeTotal: 30,
|
||||||
|
gameFormat: GameFormat.TwoHeadedGiant,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
|
||||||
|
case GameFormat.Commander:
|
||||||
|
default:
|
||||||
|
setPlayerOptions({
|
||||||
|
...playerOptions,
|
||||||
|
useCommanderDamage: true,
|
||||||
|
numberOfPlayers: 4,
|
||||||
|
startingLifeTotal: 40,
|
||||||
|
gameFormat: GameFormat.Commander,
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
<MenuItem value={GameFormat.Commander}>Commander</MenuItem>
|
||||||
|
<MenuItem value={GameFormat.Standard}>Standard</MenuItem>
|
||||||
|
<MenuItem value={GameFormat.TwoHeadedGiant}>
|
||||||
|
Two Headed Giant
|
||||||
|
</MenuItem>
|
||||||
|
</Select>
|
||||||
|
|
||||||
<FormLabel>Layout</FormLabel>
|
<FormLabel>Layout</FormLabel>
|
||||||
<LayoutOptions
|
<LayoutOptions
|
||||||
numberOfPlayers={playerOptions.numberOfPlayers}
|
numberOfPlayers={playerOptions.numberOfPlayers}
|
||||||
|
|||||||
@@ -104,5 +104,26 @@ export const theme = createTheme({
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
MuiPaper: {
|
||||||
|
styleOverrides: {
|
||||||
|
root: {
|
||||||
|
backgroundColor: '#495E35',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
MuiMenuItem: {
|
||||||
|
styleOverrides: {
|
||||||
|
root: {
|
||||||
|
backgroundColor: '#495E35',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
MuiList: {
|
||||||
|
styleOverrides: {
|
||||||
|
root: {
|
||||||
|
backgroundColor: '#495E35',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -14,4 +14,8 @@ export type InitialGameSettings = {
|
|||||||
gridAreas: GridTemplateAreas;
|
gridAreas: GridTemplateAreas;
|
||||||
};
|
};
|
||||||
|
|
||||||
type GameFormat = 'commander' | 'standard' | 'two-headed-giant';
|
export enum GameFormat {
|
||||||
|
Commander = 'commander',
|
||||||
|
Standard = 'standard',
|
||||||
|
TwoHeadedGiant = 'two-headed-giant',
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user