diff --git a/src/Components/Counters/ExtraCountersBar.tsx b/src/Components/Counters/ExtraCountersBar.tsx index d0db242..e5b3ca1 100644 --- a/src/Components/Counters/ExtraCountersBar.tsx +++ b/src/Components/Counters/ExtraCountersBar.tsx @@ -5,7 +5,7 @@ import { Energy, Experience, PartnerTax, - Poison, + Poison } from '../../Icons/generated'; import { CounterType, Player, Rotation } from '../../Types/Player'; import { RotationDivProps } from '../Buttons/CommanderDamage'; diff --git a/src/Components/LifeCounter/LifeCounter.tsx b/src/Components/LifeCounter/LifeCounter.tsx index 5568228..1e7aac6 100644 --- a/src/Components/LifeCounter/LifeCounter.tsx +++ b/src/Components/LifeCounter/LifeCounter.tsx @@ -16,6 +16,7 @@ import ExtraCountersBar from '../Counters/ExtraCountersBar'; import PlayerMenu from '../Players/PlayerMenu'; import { StartingPlayerCard } from '../PreStartGame/StartingPlayerCard'; import Health from './Health'; +import { MonarchCrown } from '../Misc/MonarchCrown'; const SettingsButtonTwc = twc.button((props) => [ 'absolute flex-grow border-none outline-none cursor-pointer bg-transparent z-[1] select-none webkit-user-select-none opacity-50', @@ -238,6 +239,8 @@ const LifeCounter = ({ player, opponents }: LifeCounterProps) => { recentDifference={recentDifference} handleLifeChange={handleLifeChange} /> + + { return ( -
+
+
+ + } + checkedIcon={ + + } + onChange={(e) => { + analytics.trackEvent('toggle_monarch', { + checked: e.target.checked, + }); + setSettings({ ...settings, useMonarch: e.target.checked }); + }} + aria-checked={settings.useMonarch} + aria-label="Monarch" + />
diff --git a/src/Data/getInitialPlayers.ts b/src/Data/getInitialPlayers.ts index 49adfd0..ee551b2 100644 --- a/src/Data/getInitialPlayers.ts +++ b/src/Data/getInitialPlayers.ts @@ -231,6 +231,7 @@ export const createInitialPlayers = ({ isStartingPlayer: false, isSide: rotation === Rotation.Side || rotation === Rotation.SideFlipped, name: '', + isMonarch: false, }; players.push(player); diff --git a/src/Icons/generated/Monarch.tsx b/src/Icons/generated/Monarch.tsx new file mode 100644 index 0000000..2cd23fc --- /dev/null +++ b/src/Icons/generated/Monarch.tsx @@ -0,0 +1,34 @@ +import PropTypes from 'prop-types'; +import { SVGProps } from 'react'; +interface SVGRProps { + title?: string; + titleId?: string; + size?: string; +} +const Monarch = ({ + title, + titleId, + ...props +}: SVGProps & SVGRProps) => { + return ( + + {title ? {title} : null} + + + ); +}; +Monarch.propTypes = { + title: PropTypes.string, +}; +export default Monarch; diff --git a/src/Icons/generated/index.ts b/src/Icons/generated/index.ts index 1715eaf..8010b6d 100644 --- a/src/Icons/generated/index.ts +++ b/src/Icons/generated/index.ts @@ -10,6 +10,7 @@ export { default as FullscreenOn } from './FullscreenOn'; export { default as Info } from './Info'; export { default as LittleGuy } from './LittleGuy'; export { default as Logo } from './Logo'; +export { default as Monarch } from './Monarch'; export { default as NameTag } from './NameTag'; export { default as PartnerTax } from './PartnerTax'; export { default as Poison } from './Poison'; diff --git a/src/Icons/svgs/Monarch.svg b/src/Icons/svgs/Monarch.svg new file mode 100644 index 0000000..fe5b98a --- /dev/null +++ b/src/Icons/svgs/Monarch.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/Types/Player.ts b/src/Types/Player.ts index be65e96..e1943a4 100644 --- a/src/Types/Player.ts +++ b/src/Types/Player.ts @@ -7,6 +7,7 @@ export type Player = { commanderDamage: CommanderDamage[]; extraCounters: ExtraCounter[]; isStartingPlayer: boolean; + isMonarch: boolean; hasLost: boolean; isSide: boolean; name: string; diff --git a/src/Types/Settings.ts b/src/Types/Settings.ts index e1167ba..63ffb93 100644 --- a/src/Types/Settings.ts +++ b/src/Types/Settings.ts @@ -26,6 +26,7 @@ export type Settings = { goFullscreenOnStart: boolean; preStartMode: PreStartMode; showAnimations: boolean; + useMonarch: boolean; }; export type InitialGameSettings = { @@ -59,6 +60,7 @@ export const settingsSchema = z.object({ goFullscreenOnStart: z.boolean(), preStartMode: z.nativeEnum(PreStartMode), showAnimations: z.boolean(), + useMonarch: z.boolean().default(false), }); export const defaultSettings: Settings = { @@ -68,4 +70,5 @@ export const defaultSettings: Settings = { showPlayerMenuCog: true, preStartMode: PreStartMode.None, showAnimations: true, + useMonarch: false, };