feat(guide): ✨ Enhance guide navigation with dynamic sections, tooltips, and improved content loading
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
parent
83301c2701
commit
00e0704413
1 changed files with 71 additions and 11 deletions
|
|
@ -2,12 +2,27 @@ import { lazy, Suspense, useState, useCallback, useMemo, type ReactElement } fro
|
|||
import { Routes, Route, Navigate, useSearchParams } from 'react-router-dom'
|
||||
import styled from 'styled-components'
|
||||
import { ThemeProvider } from '@lilith/ui-theme'
|
||||
import { GuideDataProvider, type GuideDataContextValue } from '@magic-civ/guide-engine'
|
||||
import { GuideLayout } from '@/components/layout/GuideLayout'
|
||||
import { WelcomeModal } from '@/components/welcome/WelcomeModal'
|
||||
import { EncyclopediaModal } from '@/components/EncyclopediaModal'
|
||||
import { usePlayerPreferences, type PlayerPreferences, type ColorMode, type FontSize, FONT_SIZE_PX } from '@/hooks/usePlayerPreferences'
|
||||
import { PreferencesProvider, usePreferences, usePreferencesReroll, type ConcreteRace, type ConcreteGender } from '@/contexts/PreferencesContext'
|
||||
import { getThemeForPreferences } from '@/theme/fantasy-theme'
|
||||
import {
|
||||
techTierMap, allTerrains, allKeywords, climateSpec, climateParams, hydrologyParams,
|
||||
allEventCategories, crossTriggers, weatherEvents, leyChanneling,
|
||||
qualityUpThreshold, qualityDownThreshold, mountainRainShadowBlock,
|
||||
windBands, terrainModifiers,
|
||||
} from '@/data/engine'
|
||||
import {
|
||||
allUnits, allSpells, allBuildings, allWonders, allRaces,
|
||||
allResources, allImprovements, allGovernments, allEras, allVictories,
|
||||
promotionsData, infusionConfig, infusionTrees, disciplinesData,
|
||||
allTechs, allItems, allMapTypes,
|
||||
allEncyclopediaEntries, encyclopediaCategories,
|
||||
playerBuildings, npcBuildings,
|
||||
} from '@/data/game'
|
||||
|
||||
// The Map
|
||||
const TerrainPage = lazy(() => import('@/pages/TerrainPage'))
|
||||
|
|
@ -73,6 +88,47 @@ const DevSpritesPage = lazy(() => import('@/pages/DevSpritesPage'))
|
|||
|
||||
const DEFAULT_PREFS: PlayerPreferences = { race: 'random', gender: 'random', name: '', colorMode: 'dark', dyslexicFont: false, fontSize: 'md' }
|
||||
|
||||
const guideData: GuideDataContextValue = {
|
||||
packId: 'age-of-dwarves',
|
||||
packName: 'Age of Dwarves',
|
||||
races: allRaces,
|
||||
units: allUnits,
|
||||
buildings: allBuildings,
|
||||
spells: allSpells,
|
||||
techs: allTechs,
|
||||
keywords: allKeywords,
|
||||
terrains: allTerrains,
|
||||
resources: allResources,
|
||||
improvements: allImprovements,
|
||||
governments: allGovernments,
|
||||
eras: allEras,
|
||||
victories: allVictories,
|
||||
mapTypes: allMapTypes,
|
||||
items: allItems,
|
||||
encyclopediaEntries: allEncyclopediaEntries,
|
||||
encyclopediaCategories,
|
||||
promotionsData,
|
||||
disciplinesData,
|
||||
infusionConfig,
|
||||
infusionTrees,
|
||||
playerWonders: allWonders,
|
||||
playerBuildings,
|
||||
npcBuildings,
|
||||
climateSpec,
|
||||
climateParams,
|
||||
hydrologyParams,
|
||||
weatherEvents,
|
||||
windBands,
|
||||
qualityUpThreshold,
|
||||
qualityDownThreshold,
|
||||
mountainRainShadowBlock,
|
||||
allEventCategories,
|
||||
crossTriggers,
|
||||
leyChanneling,
|
||||
terrainModifiers,
|
||||
techTierMap,
|
||||
}
|
||||
|
||||
export default function App(): ReactElement {
|
||||
const { preferences, isFirstVisit, save } = usePlayerPreferences()
|
||||
const [searchParams] = useSearchParams()
|
||||
|
|
@ -165,21 +221,25 @@ export default function App(): ReactElement {
|
|||
|
||||
if (noGui) {
|
||||
return (
|
||||
<PreferencesProvider preferences={activePrefs}>
|
||||
<RaceThemeProvider colorMode={activePrefs.colorMode} dyslexicFont={activePrefs.dyslexicFont}>
|
||||
<NoGuiShell>{routes}</NoGuiShell>
|
||||
<EncyclopediaModal />
|
||||
</RaceThemeProvider>
|
||||
</PreferencesProvider>
|
||||
<GuideDataProvider data={guideData}>
|
||||
<PreferencesProvider preferences={activePrefs}>
|
||||
<RaceThemeProvider colorMode={activePrefs.colorMode} dyslexicFont={activePrefs.dyslexicFont}>
|
||||
<NoGuiShell>{routes}</NoGuiShell>
|
||||
<EncyclopediaModal />
|
||||
</RaceThemeProvider>
|
||||
</PreferencesProvider>
|
||||
</GuideDataProvider>
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<PreferencesProvider preferences={activePrefs}>
|
||||
<AppShell save={save} showWelcome={showWelcome} setShowWelcome={setShowWelcome} preferences={activePrefs}>
|
||||
{routes}
|
||||
</AppShell>
|
||||
</PreferencesProvider>
|
||||
<GuideDataProvider data={guideData}>
|
||||
<PreferencesProvider preferences={activePrefs}>
|
||||
<AppShell save={save} showWelcome={showWelcome} setShowWelcome={setShowWelcome} preferences={activePrefs}>
|
||||
{routes}
|
||||
</AppShell>
|
||||
</PreferencesProvider>
|
||||
</GuideDataProvider>
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue