Skip to content

Commit 82525a9

Browse files
committed
chore: update docs
1 parent 84da90e commit 82525a9

File tree

10 files changed

+168
-131
lines changed

10 files changed

+168
-131
lines changed

.vscode/settings.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,5 +95,8 @@
9595
// Git settings
9696
"git.enableSmartCommit": false,
9797
"git.confirmSync": false,
98-
"git.autofetch": true
98+
"git.autofetch": true,
99+
"[html]": {
100+
"editor.defaultFormatter": "vscode.html-language-features"
101+
}
99102
}

README.md

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,44 @@ The application will run on `http://localhost:3000`
1313

1414
## Build Commands
1515

16-
```bash
16+
```bash
1717
npm test # Run test suite
1818
npm run build # Create production build
1919
npm run release # Deploy to GitHub Pages
2020
```
21+
22+
## Relay Symbiotic
23+
24+
```mermaid
25+
graph TB
26+
subgraph "🎮 Client Layer"
27+
Player[👤 Player]
28+
GameUI[🎯 Game Interface<br/>Craft • Battle • Trade]
29+
end
30+
31+
subgraph "⚡ Off-Chain Layer (Gasless)"
32+
API[📡 Game API<br/>HTTP/WebSocket]
33+
Validators[🔗 Validator Network<br/>Symbiotic Consensus]
34+
end
35+
36+
subgraph "⛓️ On-Chain Layer (Settlement)"
37+
Contracts[📜 Smart Contracts<br/>GameManager + MANA Token]
38+
end
39+
40+
Player -->|"Play Game"| GameUI
41+
GameUI -.->|"🆓 NO GAS FEES"| API
42+
API -->|"Validate & Batch"| Validators
43+
Validators -->|"Consensus + Proof"| Contracts
44+
45+
Contracts -.->|"State Updates"| Validators
46+
Validators -.->|"Real-time"| API
47+
API -.->|"Live Updates"| GameUI
48+
49+
style Player fill:#ff9999
50+
style GameUI fill:#ffcc99
51+
style API fill:#99ccff
52+
style Validators fill:#99ff99
53+
style Contracts fill:#cc99ff
54+
```
55+
56+
See more [elemgame relay symbiotic](https://github.com/elemgame/elemgame-relay-symbiotic)

business-plan-presentation.html

Lines changed: 101 additions & 102 deletions
Large diffs are not rendered by default.

interactive_test.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,7 +199,7 @@
199199
<div class="container">
200200
<div class="header">
201201
<h1>🧪 Elemental Arena - Interactive UX/UI Test</h1>
202-
<p>Комплексное тестирование пользовательского интерфейса</p>
202+
<p>Comprehensive User Interface Testing</p>
203203
</div>
204204

205205
<div class="test-controls">

public/start.html

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,7 +1172,7 @@
11721172
data-aos="fade-right"
11731173
data-aos-delay="300"
11741174
>
1175-
Войти через соцсети
1175+
Login via Social Media
11761176
</button>
11771177

11781178
<!-- Social Media Icons -->
@@ -1557,4 +1557,3 @@
15571557
</script>
15581558
</body>
15591559
</html>
1560-
АЗДЕЛИВ ИХПЛА

src/App.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,8 @@ const App: React.FC = () => {
9494
name: string;
9595
emoji: string;
9696
} | null>(null);
97-
const [musicEnabled, setMusicEnabled] = useState(false); // Начинаем с выключенной
98-
const [userInteracted, setUserInteracted] = useState(false); // Флаг пользовательского взаимодействия
97+
const [musicEnabled, setMusicEnabled] = useState(false); // Start with music disabled
98+
const [userInteracted, setUserInteracted] = useState(false); // User interaction flag
9999

100100
const [rulesPageOpen, setRulesPageOpen] = useState(false);
101101
const [musicVolume, setMusicVolume] = useState(0.2);

src/components/AudioPlayer.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const AudioPlayer: React.FC<AudioPlayerProps> = ({
1313
const [currentTrack, setCurrentTrack] = useState(0);
1414
const [isLoaded, setIsLoaded] = useState(false);
1515

16-
// Список фэнтези треков (мемоизированный для оптимизации)
16+
// List of fantasy tracks (memoized for optimization)
1717
const tracks = useMemo(
1818
() => [`${process.env.PUBLIC_URL}/audio/forest.ogg`],
1919
[]
@@ -29,15 +29,15 @@ const AudioPlayer: React.FC<AudioPlayerProps> = ({
2929
});
3030

3131
audioRef.current.addEventListener('ended', () => {
32-
// Переключаемся на следующий трек
32+
// Switch to next track
3333
setCurrentTrack(prev => {
3434
const nextTrack = (prev + 1) % tracks.length;
3535
return nextTrack >= 0 && nextTrack < tracks.length ? nextTrack : 0;
3636
});
3737
});
3838

3939
audioRef.current.addEventListener('error', _e => {
40-
// Пробуем следующий трек при ошибке
40+
// Try next track on error
4141
setCurrentTrack(prev => {
4242
const nextTrack = (prev + 1) % tracks.length;
4343
return nextTrack >= 0 && nextTrack < tracks.length ? nextTrack : 0;
@@ -68,27 +68,27 @@ const AudioPlayer: React.FC<AudioPlayerProps> = ({
6868
}
6969
}, [currentTrack, tracks]);
7070

71-
// Обновляем громкость при изменении volume
71+
// Update volume when volume prop changes
7272
useEffect(() => {
7373
if (audioRef.current) {
74-
audioRef.current.volume = Math.max(0, Math.min(1, volume)); // Ограничиваем значения от 0 до 1
74+
audioRef.current.volume = Math.max(0, Math.min(1, volume)); // Limit values from 0 to 1
7575
}
7676
}, [volume]);
7777

78-
// Управляем воспроизведением
78+
// Control playback
7979
useEffect(() => {
8080
if (audioRef.current && isLoaded) {
8181
if (isPlaying) {
8282
audioRef.current.play().catch(_error => {
83-
// Ошибка воспроизведения - игнорируем
83+
// Playback error - ignore
8484
});
8585
} else {
8686
audioRef.current.pause();
8787
}
8888
}
8989
}, [isPlaying, isLoaded]);
9090

91-
return null; // Этот компонент не рендерит ничего видимого
91+
return null; // This component doesn't render anything visible
9292
};
9393

9494
export default AudioPlayer;

src/components/BattleComponent.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -656,8 +656,8 @@ const BattleComponent: React.FC<BattleComponentProps> = ({
656656
aria-label="Fight without elemental protection"
657657
>
658658
<div className='no-elemental-icon'>⚔️</div>
659-
<div className='no-elemental-text'>Без элементаля</div>
660-
<div className='no-elemental-subtext'>Нет защиты</div>
659+
<div className='no-elemental-text'>Without Elemental</div>
660+
<div className='no-elemental-subtext'>No Protection</div>
661661
</button>
662662

663663
{ownedElementals.map((elemental, index) => {
@@ -830,16 +830,16 @@ const BattleComponent: React.FC<BattleComponentProps> = ({
830830
aria-label="Fight without elemental protection"
831831
>
832832
<div className='no-elemental-icon'>⚔️</div>
833-
<div className='no-elemental-text'>Без элементаля</div>
834-
<div className='no-elemental-subtext'>Нет защиты</div>
833+
<div className='no-elemental-text'>Without Elemental</div>
834+
<div className='no-elemental-subtext'>No Protection</div>
835835
</button>
836836
</div>
837837
)}
838838

839839
{ownedElementals.length === 0 && (
840840
<div className='no-elementals-info' role='alert' aria-live='polite'>
841841
<p style={{ textAlign: 'center', color: 'var(--text-muted)', fontSize: 'var(--font-size-sm)', marginTop: '1rem' }}>
842-
💡 У вас нет {ELEMENTS[selectedElement].name} элементалей. Сражайтесь без защиты или попробуйте другой элемент!
842+
💡 You don't have any {ELEMENTS[selectedElement].name} elementals. Fight without protection or try another element!
843843
</p>
844844
<button
845845
className='secondary-btn'

src/components/LoadingTransition.tsx

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ const LoadingTransition: React.FC<LoadingTransitionProps> = ({
1111
const [currentTip, setCurrentTip] = useState(0);
1212

1313
const tips = [
14-
'🔥 Выбирайте элементы стратегически!',
15-
'💎 Собирайте редких элементалей!',
16-
'⚡ Изучайте слабости противников!',
17-
'🎯 Развивайте своих элементалей!',
18-
'💰 Управляйте маной мудро!',
14+
'🔥 Choose elements strategically!',
15+
'💎 Collect rare elementals!',
16+
'⚡ Study opponent weaknesses!',
17+
'🎯 Develop your elementals!',
18+
'💰 Manage mana wisely!',
1919
];
2020

2121
useEffect(() => {
@@ -72,8 +72,8 @@ const LoadingTransition: React.FC<LoadingTransitionProps> = ({
7272

7373
{/* Loading text */}
7474
<div className='loading-text'>
75-
<h2>Загрузка игры...</h2>
76-
<div className='loading-subtitle'>Готовьтесь к эпическим битвам!</div>
75+
<h2>Loading game...</h2>
76+
<div className='loading-subtitle'>Prepare for epic battles!</div>
7777
</div>
7878

7979
{/* Progress bar */}

src/components/StartPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ const StartPage: React.FC<StartPageProps> = ({ onStartGame }) => {
270270
delay: 0.3,
271271
});
272272

273-
(button as HTMLElement).textContent = 'Запуск...';
273+
(button as HTMLElement).textContent = 'Starting...';
274274
button.classList.add('start-loading-pulse');
275275

276276
// Create particle burst effect
@@ -378,7 +378,7 @@ const StartPage: React.FC<StartPageProps> = ({ onStartGame }) => {
378378
data-aos='fade-right'
379379
data-aos-delay='300'
380380
>
381-
Войти через соцсети
381+
Login via Social Media
382382
</button>
383383

384384
{/* Social Media Icons */}

0 commit comments

Comments
 (0)