Skip to content

Commit 580c3a5

Browse files
committed
feat(game-status-bars): render disabled when not connected
1 parent 95fd45c commit 580c3a5

File tree

1 file changed

+18
-7
lines changed

1 file changed

+18
-7
lines changed

electron/renderer/components/game/game-status-bars.tsx

+18-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
import { useEuiTheme } from '@elastic/eui';
22
import type { ReactElement, ReactNode } from 'react';
3-
import { useMemo, useState } from 'react';
3+
import { useContext, useMemo, useState } from 'react';
44
import type { GameEvent } from '../../../common/game/types.js';
55
import { GameEventType } from '../../../common/game/types.js';
6+
import { GameContext } from '../../context/game.jsx';
67
import { useSubscribe } from '../../hooks/pubsub.jsx';
78

89
export const GameStatusBars: React.FC = (): ReactNode => {
910
const { euiTheme } = useEuiTheme();
1011

12+
const { isConnected } = useContext(GameContext);
13+
1114
const [health, setHealth] = useState<number>(100);
1215
const [mana, setMana] = useState<number>(100);
1316
const [concentration, setConcentration] = useState<number>(100);
@@ -43,9 +46,10 @@ export const GameStatusBars: React.FC = (): ReactNode => {
4346
value={health}
4447
fillColor="#750E21"
4548
textColor={euiTheme.colors.text}
49+
isConnected={isConnected}
4650
/>
4751
);
48-
}, [health, euiTheme]);
52+
}, [health, euiTheme, isConnected]);
4953

5054
const manaStatusBar = useMemo((): ReactElement => {
5155
return (
@@ -54,9 +58,10 @@ export const GameStatusBars: React.FC = (): ReactNode => {
5458
value={mana}
5559
fillColor="#4477CE"
5660
textColor={euiTheme.colors.text}
61+
isConnected={isConnected}
5762
/>
5863
);
59-
}, [mana, euiTheme]);
64+
}, [mana, euiTheme, isConnected]);
6065

6166
const concentrationStatusBar = useMemo((): ReactElement => {
6267
return (
@@ -65,9 +70,10 @@ export const GameStatusBars: React.FC = (): ReactNode => {
6570
value={concentration}
6671
fillColor="#19376D"
6772
textColor={euiTheme.colors.text}
73+
isConnected={isConnected}
6874
/>
6975
);
70-
}, [concentration, euiTheme]);
76+
}, [concentration, euiTheme, isConnected]);
7177

7278
const staminaStatusBar = useMemo((): ReactElement => {
7379
return (
@@ -76,9 +82,10 @@ export const GameStatusBars: React.FC = (): ReactNode => {
7682
value={stamina}
7783
fillColor="#006A67"
7884
textColor={euiTheme.colors.text}
85+
isConnected={isConnected}
7986
/>
8087
);
81-
}, [stamina, euiTheme]);
88+
}, [stamina, euiTheme, isConnected]);
8289

8390
const spiritStatusBar = useMemo((): ReactElement => {
8491
return (
@@ -87,9 +94,10 @@ export const GameStatusBars: React.FC = (): ReactNode => {
8794
value={spirit}
8895
fillColor="#6A1E55"
8996
textColor={euiTheme.colors.text}
97+
isConnected={isConnected}
9098
/>
9199
);
92-
}, [spirit, euiTheme]);
100+
}, [spirit, euiTheme, isConnected]);
93101

94102
const statusBars = useMemo((): ReactElement => {
95103
return (
@@ -127,15 +135,18 @@ interface GameStatusBarProps {
127135
value: number;
128136
fillColor: string;
129137
textColor: string;
138+
isConnected: boolean;
130139
}
131140

132141
const GameStatusBar: React.FC<GameStatusBarProps> = (
133142
props: GameStatusBarProps
134143
): ReactNode => {
135-
const { title, value, fillColor, textColor } = props;
144+
const { title, value, textColor, isConnected } = props;
136145

137146
const { euiTheme } = useEuiTheme();
138147

148+
const fillColor = isConnected ? props.fillColor : euiTheme.colors.disabled;
149+
139150
return (
140151
<div
141152
css={{

0 commit comments

Comments
 (0)