deepsite / Pr4.md
Mara6's picture
Upload 5 files
db0177d verified
|
raw
history blame
19.7 kB
### **NS\_Prompt\_04.txt**
' STAR DUST VOYAGER: GALAXY WANDERER \- SETTINGS, CREDITS, EXIT DIALOG, AND LOAD GAME MODULE
' CREATED BY GROK 3 (XAI) \- 02:45 PM CEST, MONDAY, JULY 21, 2025
' SPECIFIES DESIGN, VISUALS, LAYOUT, FUNCTIONALITY, ANIMATIONS, AND ASSETS FOR SETTINGS, CREDITS, EXIT DIALOG, AND LOAD GAME SCREENS
' TARGETED FOR TRAE AI AGENT (LOVABLE.DEV)
' PURPOSE: IMPLEMENT SYSTEM SCREENS WITH PIXELART STYLE, CZECH LOCALIZATION, AND INTEGRATION WITH SCENEMANAGER AND STATE MANAGER
' GOALS
' \- Design and implement SettingsScreen as a modal UI for graphics, sound, and controls, with save/apply logic.
' \- Create CreditsScreen with scrolling text and animated starfield background.
' \- Develop ExitGameDialog for game termination with unsaved changes handling.
' \- Build LoadGameScreen for loading and deleting saved games with version compatibility checks.
' \- Generate all required pixelart assets and sound effects, optimized for PixiJS.
' \- Ensure responsive UI and integration with SceneManager and StateManager.
' PROJECT CONTEXT
' \- BUILDS ON: NS\_Prompt\_01 (project structure), NS\_Prompt\_02 (MainMenu), NS\_Prompt\_03 (TransitionLoadingScreen), and references Prompt 35 (visual style).
' \- ASSUMPTIONS: PixiApplication, AssetManager, SceneManager, and StateManager are functional.
' \- DEPENDENCIES: client/src/game/core/SceneManager.ts, client/src/game/core/StateManager.ts, client/public/locales/cs.json.
' 0\. ASSUMPTIONS AND GLOBAL STYLES
' \- PIXEL ART STYLE: Strict adherence to "Complex Detailed Pixel Art Style with Retro Touch" (Prompt 1, 35), 16x16px base tile, with depth effects.
' \- ASSET DIRECTORY: Follows NS\_Prompt\_01 (e.g., client/public/assets/).
' \- UI COMPONENTS: Uses global styles (ButtonStyle\_Standard\_PixelArt\_Retro, FontStyle\_PixelArt\_DefaultText) or generated by AI.
' \- LOCALIZATION: All text uses i18next keys with Czech defaults.
' \- SCENE/STATE MANAGEMENT: SceneManager and StateManager handle transitions and data persistence.
' 1\. SETTINGSSCREEN
' \- PURPOSE: Configurable modal screen for graphics, sound, and controls, accessible from MainMenu or In-Game Menu.
' \- SPECIFICATION (SettingsScreenConfig):
\`\`\`json
{
"id": "SettingsScreen",
"screenName\_cz": "Nastavení Hry",
"isModal": true,
"panelStyle": {
"backgroundImageAsset\_Subtle\_Path": "client/public/assets/images/ui/backgrounds/settings\_panel\_bg\_tech\_circuitry\_anim\_sheet.png",
"backgroundColor": "\#0A0F18F5",
"borderColor": "\#2070A0", "borderWidthPx": 2,
"widthPercentOfScreen\_IfModal": 80, "heightPercentOfScreen\_IfModal": 85, "paddingPx": 25,
"titleBar\_HeightPx": 40, "titleBar\_TextStyleKey": "FontStyle\_PixelArt\_Header\_Large\_PanelTitle\_Teal"
},
"tabDefinitions": \[
{
"id": "graphicsSettingsTab", "tabLabelKey\_cz": "settings.tab.graphics\_cz", "defaultTabLabel\_cz": "GRAFIKA",
"iconAsset": "client/public/assets/images/icons/tabs/icon\_tab\_graphics\_pixelart.png",
"layoutColumns": 2,
"items": \[
{ "itemType": "Label", "id": "gfx\_display\_header", "labelKey\_cz": "settings.graphics.display\_header\_cz", "defaultLabel\_cz": "NASTAVENÍ ZOBRAZENÍ", "labelStyleKey": "FontStyle\_PixelArt\_SectionHeader\_Orange" },
{ "itemType": "Dropdown", "id": "gfx\_resolution", "labelKey\_cz": "settings.graphics.resolution\_cz", "defaultLabel\_cz": "Rozlišení Obrazovky:", "options": \[{"value": "native", "label\_cz": "Nativní"}, {"value": "800x600", "label\_cz": "800x600"}, {"value": "1280x720", "label\_cz": "1280x720"}\], "defaultValue": "native", "currentValue\_StoreKey": "settings.graphics.resolution", "styleKey": "Dropdown\_RetroTech\_PixelArt", "requiresRestart": true, "tooltipTextKey\_cz": "settings.graphics.resolution.tooltip\_cz", "defaultTooltipText\_cz": "Nastaví rozlišení hry. Změna může vyžadovat restart." },
{ "itemType": "Checkbox", "id": "gfx\_colorblind\_protanopia", "labelKey\_cz": "settings.graphics.colorblind\_protanopia\_cz", "defaultLabel\_cz": "Režim Protanopie", "defaultValue": false, "currentValue\_StoreKey": "settings.accessibility.colorblindMode\_Protanopia", "styleKey": "Checkbox\_RetroTech\_PixelArt\_Toggle" }
\]
},
{
"id": "soundSettingsTab", "tabLabelKey\_cz": "settings.tab.sound\_cz", "defaultTabLabel\_cz": "ZVUK",
"iconAsset": "client/public/assets/images/icons/tabs/icon\_tab\_sound\_pixelart.png",
"layoutColumns": 2,
"items": \[
{ "itemType": "Label", "id": "snd\_volume\_header", "labelKey\_cz": "settings.sound.volume\_header\_cz", "defaultLabel\_cz": "HLOUBKA ZVUKU", "labelStyleKey": "FontStyle\_PixelArt\_SectionHeader\_Orange" },
{ "itemType": "Slider", "id": "snd\_master\_volume", "labelKey\_cz": "settings.sound.master\_volume\_cz", "defaultLabel\_cz": "Hlavní Hlasitost:", "min": 0, "max": 100, "defaultValue": 75, "currentValue\_StoreKey": "settings.sound.masterVolume", "styleKey": "Slider\_RetroTech\_PixelArt" }
\]
},
{
"id": "controlSettingsTab", "tabLabelKey\_cz": "settings.tab.controls\_cz", "defaultTabLabel\_cz": "OVLÁDÁNÍ",
"iconAsset": "client/public/assets/images/icons/tabs/icon\_tab\_controls\_pixelart.png",
"layoutColumns": 2,
"items": \[
{ "itemType": "Label", "id": "ctrl\_input\_header", "labelKey\_cz": "settings.controls.input\_header\_cz", "defaultLabel\_cz": "NASTAVENÍ OVLÁDÁNÍ", "labelStyleKey": "FontStyle\_PixelArt\_SectionHeader\_Orange" },
{ "itemType": "KeybindList", "id": "ctrl\_move\_up", "labelKey\_cz": "settings.controls.move\_up\_cz", "defaultLabel\_cz": "Posun Vzhůru:", "defaultValue": "W", "currentValue\_StoreKey": "settings.controls.moveUp", "styleKey": "KeybindListItem\_PixelArt" }
\]
}
\],
"actionButtons": {
"applyButton": { "id": "settings\_apply", "textLabelKey\_cz": "settings.button.apply\_cz", "defaultText\_cz": "POUŽÍT ZMĚNY", "action": { "type": "APPLY\_SETTINGS" }, "styleKey": "ButtonStyle\_Primary\_PixelArt\_Large" },
"defaultsButton": { "id": "settings\_defaults", "textLabelKey\_cz": "settings.button.defaults\_cz", "defaultText\_cz": "VÝCHOZÍ", "action": { "type": "RESET\_TO\_DEFAULTS", "scope": "CurrentTab" }, "styleKey": "ButtonStyle\_Secondary\_PixelArt\_Medium" },
"backOrCloseButton": { "id": "settings\_back", "textLabelKey\_cz": "settings.button.back\_cz", "defaultText\_cz": "ZPĚT", "action": { "type": "SAVE\_AND\_NAVIGATE\_BACK", "target": "PreviousScreen" }, "styleKey": "ButtonStyle\_Secondary\_PixelArt\_Medium",
"confirmDialog\_IfChangesUnapplied\_OnBack": {
"titleKey\_cz": "dialog.unsaved\_settings.title\_cz", "defaultTitle\_cz": "Neuložené Změny",
"messageKey\_cz": "dialog.unsaved\_settings.message\_cz", "defaultMessage\_cz": "Máte neuložené změny v nastavení. Chcete je použít před odchodem, nebo je zahodit?",
"button\_ApplyAndBack\_Text\_cz": "Použít a Zpět",
"button\_DiscardAndBack\_Text\_cz": "Zahodit a Zpět",
"button\_StayOnSettings\_Text\_cz": "Zůstat v Nastavení"
}
},
"layout": "Horizontal\_RightAligned\_Footer", "spacingPx": 15
},
"sharedTooltipStyleKey": "TooltipStyle\_Standard\_PixelArt\_Dark",
"onSettingsChanged\_NeedsRestart\_Indicator\_cz": { "text\_cz": "(vyžaduje restart hry)", "iconAsset": "client/public/assets/images/icons/ui/restart\_required\_pixelart\_icon.png", "color": "\#FFA500" },
"settingsStorage\_Mechanism": "LocalStorage\_Via\_SettingsStore",
"soundEffects": {
"openScreen": "sfx/ui/settings\_screen\_open\_interface.wav",
"closeScreen": "sfx/ui/settings\_screen\_close\_confirm.wav",
"tab\_Change": "sfx/ui/settings\_tab\_switch\_click.wav",
"setting\_ValueChange\_Generic": "sfx/ui/settings\_value\_change\_tick.wav",
"button\_Apply\_Click": "sfx/ui/settings\_apply\_changes\_confirm.wav",
"button\_Defaults\_Click": "sfx/ui/settings\_reset\_defaults\_action.wav"
}
}
’ \- PIXIJS: Render as Container with AnimatedSprite background, Text for labels, and interactive UI elements.
’ 2\. CREDITSSCREEN ’ \- PURPOSE: Displays credits and thanks with scrolling text and animated background. ’ \- SPECIFICATION (CreditsScreenConfig):
{
"id": "CreditsScreen",
"screenName\_cz": "Tvůrci Hry",
"isModal": true,
"background": {
"type": "Animated\_Starfield\_DeepSpace\_PixelArt",
"assetPath\_Template": "client/public/assets/images/ui/backgrounds/credits\_bg\_starfield\_parallax\_layer\_{1,2,3}.png",
"layerCount": 3,
"animationParams\_StarScroll": { "frameCount": 1, "speed": \-0.5, "loop": true }
},
"scrollingText\_Content\_Path\_cz": "client/public/assets/data/ui\_config/credits\_text\_cz.json",
"scrollingText\_Style": {
"fontFamily\_Title": "FontStyle\_PixelArt\_Header\_Large\_Gold",
"fontFamily\_Entry": "FontStyle\_PixelArt\_Credits\_White",
"lineSpacingPx": 8,
"scrollSpeed\_PixelsPerSecond": 30,
"alignment": "center"
},
"music\_CreditsTheme\_AssetPath": "client/public/assets/audio/music/themes/credits\_theme\_reflective\_epic\_loop.ogg",
"interactionButtons": {
"skipButton\_Text\_cz": "Přeskočit", "skipButton\_Key": "Escape", "skipButton\_StyleKey": "ButtonStyle\_Transparent\_Small\_TopRight",
"speedUpButton\_Text\_cz": "Zrychlit (Držet)", "speedUpButton\_Key": "ArrowDown",
"backButton\_Text\_cz": "Zpět do Menu", "backButton\_StyleKey": "ButtonStyle\_Standard\_PixelArt\_BottomCenter"
},
"autoReturnTo\_PreviousScreen\_AfterScrollEnd": true
}
’ \- PIXIJS: Use ParallaxContainer with AnimatedSprite layers, Text for scrolling content.
’ 3\. EXITGAMEDIALOG ’ \- PURPOSE: Confirmation dialog for game exit with unsaved changes handling. ’ \- SPECIFICATION (ExitGameDialogConfig):
{
"id": "ExitGameConfirmationDialog",
"dialogStyleKey": "DialogStyle\_PixelArt\_Warning\_Retro",
"titleKey\_cz": "dialog.exit.title\_cz", "defaultTitle\_cz": "Ukončit Hru?",
"messageText\_cz\_Template": "Opravdu si přejete ukončit {GameTitle}?{UnsavedChangesWarning\_IfPresent}",
"buttons": {
"confirmExit\_Button": { "textKey\_cz": "dialog.exit.button\_confirm\_cz", "defaultText\_cz": "Ano, Ukončit", "styleKey": "ButtonStyle\_Danger\_PixelArt", "action": "APPLICATION\_QUIT" },
"cancelExit\_Button": { "textKey\_cz": "dialog.exit.button\_cancel\_cz", "defaultText\_cz": "Ne, Zpět do Hry", "styleKey": "ButtonStyle\_Secondary\_PixelArt", "action": "CLOSE\_DIALOG" },
"saveAndExit\_Button\_IfUnsavedChanges": { "textKey\_cz": "dialog.exit.button\_save\_and\_exit\_cz", "defaultText\_cz": "Uložit a Ukončit", "styleKey": "ButtonStyle\_Primary\_PixelArt", "action": "SAVE\_GAME\_THEN\_APPLICATION\_QUIT" }
},
"iconAsset\_Warning\_Path": "client/public/assets/images/icons/ui/warning\_icon\_pixelart\_large.png",
"soundEffect\_OpenDialog": "sfx/ui/dialog\_open\_warning\_chime.wav"
}
’ \- PIXIJS: Render as Container with Sprite background and Text/buttons.
’ 4\. LOADGAMESCREEN ’ \- PURPOSE: Screen for loading and deleting saved game slots. ’ \- SPECIFICATION (LoadGameScreenConfig):
{
"id": "LoadGameScreen",
"screenName\_cz": "Načíst Uloženou Hru",
"isModal": true,
"panelStyle": {
"backgroundImageAsset\_Path": "client/public/assets/images/ui/backgrounds/load\_game\_bg\_data\_archives\_pixelart.png"
},
"layout": {
"saveSlotList\_Position": { "x\_percent": 30, "y\_percent": 20, "width\_percent": 40, "height\_percent": 60 },
"selectedSavePreviewPanel\_Position": { "x\_percent": 70, "y\_percent": 20, "width\_percent": 25, "height\_percent": 60 },
"actionButtons\_Panel\_Position": "Bottom\_Row\_Spread"
},
"saveSlotList\_MaxVisible\_BeforeScroll": 5,
"saveSlotItem\_Style": {
"heightPx": 100,
"backgroundColor\_Default": "\#0A0F18",
"backgroundColor\_Hover": "\#1A1F28",
"backgroundColor\_Selected": "\#2A2F38",
"borderColor\_Selected": "\#2070A0",
"thumbnail\_SizePx": { "x": 160, "y": 90 },
"thumbnail\_Placeholder\_AssetPath": "client/public/assets/images/ui/save\_load/save\_slot\_thumbnail\_placeholder.png",
"fontStyle\_SlotName": { "styleKey": "FontStyle\_PixelArt\_DefaultText\_Bold" },
"fontStyle\_PlayerName": { "styleKey": "FontStyle\_PixelArt\_DefaultText" },
"fontStyle\_GameTime": { "styleKey": "FontStyle\_PixelArt\_SmallText" },
"fontStyle\_RealDateTime": { "styleKey": "FontStyle\_PixelArt\_SmallText" },
"fontStyle\_GameVersion\_MismatchWarning": { "color": "\#FFA500" },
"deleteButton\_IconAsset": "client/public/assets/images/icons/ui/delete\_icon\_pixelart\_small.png",
"deleteButton\_StyleKey": "ButtonStyle\_IconOnly\_Danger\_Small"
},
"selectedSavePreviewPanel\_Content\_cz": {
"largerThumbnail": true,
"currentLocation\_Text\_cz": "Poslední Lokace: {SystemName} / {PlanetName}",
"mainQuest\_Progress\_Text\_cz": "Hlavní Úkol: {QuestName} ({PercentComplete}%)",
"shipName\_And\_Class\_Text\_cz": "Loď: {ShipName} (Třída {ShipClass})"
},
"actionButtons": {
"loadButton": { "id": "load\_game", "textLabelKey\_cz": "load.button.load\_cz", "defaultText\_cz": "NAČÍST HRU", "action": { "type": "LOAD\_SELECTED\_GAME" }, "styleKey": "ButtonStyle\_Primary\_PixelArt\_Large" },
"deleteButton": { "id": "delete\_save", "textLabelKey\_cz": "load.button.delete\_cz", "defaultText\_cz": "SMAZAT", "action": { "type": "DELETE\_SELECTED\_SAVE" }, "confirmDialog\_MessageKey\_cz": "load.dialog.delete\_confirm\_cz", "defaultConfirmDialog\_Message\_cz": "Opravdu smazat {SaveName}?", "styleKey": "ButtonStyle\_Danger\_PixelArt\_Medium" },
"backButton": { "id": "load\_back", "textLabelKey\_cz": "load.button.back\_cz", "defaultText\_cz": "ZPĚT", "action": { "type": "NAVIGATE\_BACK", "target": "PreviousScreen\_Or\_MainMenu" }, "styleKey": "ButtonStyle\_Secondary\_PixelArt\_Medium" }
},
"emptySaveList\_MessageKey\_cz": "load.message.no\_saves\_cz", "defaultEmptySaveList\_Message\_cz": "Žádné uložené hry nebyly nalezeny.",
"saveFileVersion\_CompatibilityCheck\_Logic\_cz": "Varovat hráče, pokud se snaží načíst uložení z nekompatibilní verze. Možnost 'Načíst na vlastní riziko'.",
"soundEffects": {
"openScreen": "sfx/ui/load\_game\_screen\_open\_data\_access.wav",
"slot\_Select": "sfx/ui/load\_game\_slot\_hover.wav",
"button\_Load\_Confirm": "sfx/ui/load\_game\_confirm\_systems\_online.wav",
"button\_Delete\_Confirm": "sfx/ui/load\_game\_delete\_confirm.wav",
"delete\_Success\_Sound": "sfx/ui/load\_game\_delete\_success.wav",
"delete\_Fail\_Sound": "sfx/ui/load\_game\_delete\_fail.wav"
}
}
’ \- PIXIJS: Use ScrollContainer for slots, Sprite for thumbnails, Text for details.
’ 5\. AI DIRECTIVES FOR TRAE ’ \- IMPLEMENT SETTINGSSCREEN: ’ \- Create SettingsScreen.tsx with tabs (Graphics, Sound, Controls) and UI elements. ’ \- Integrate with settingsStore for persistence. ’ \- Handle apply, defaults, and back logic with confirmation dialog. ’ \- IMPLEMENT CREDITSSCREEN: ’ \- Create CreditsScreen.tsx with scrolling Text and Parallax background. ’ \- Add skip, speed-up, and back controls. ’ \- IMPLEMENT EXITGAMEDIALOG: ’ \- Create ExitGameDialog.tsx with conditional buttons for unsaved changes. ’ \- Link to application quit logic. ’ \- IMPLEMENT LOADGAMESCREEN: ’ \- Create LoadGameScreen.tsx with slot list and preview panel. ’ \- Integrate with SaveLoadManager for metadata and deletion. ’ \- Add version compatibility check. ’ \- GENERATE ASSETS: ’ \- Settings: settings\_panel\_bg\_tech\_circuitry\_anim\_sheet.png, tab icons, UI styles. ’ \- Credits: starfield\_parallax\_layer\_{1,2,3}.png, fonts, music. ’ \- Exit: dialog\_warning\_bg\_pixelart.png, warning\_icon\_pixelart\_large.png. ’ \- Load: load\_game\_bg\_data\_archives\_pixelart.png, save\_slot\_thumbnail\_placeholder.png, delete\_icon\_pixelart\_small.png. ’ \- ENSURE: ’ \- Pixelart style with retro touch, Czech localization, responsive UI. ’ \- Test with SceneManager and StateManager. ’ \- OUTPUT: ’ \- List of new files and assets. ’ \- Screenshots of each screen/dialog.
’ DIAGRAM UPDATE ’ graph TD A\[Spuštění Aplikace\] –\> B(NS\_Prompt\_02: Úvodní Načítací Obrazovka); B –\> C{NS\_Prompt\_02: Hlavní Menu Hry}; C –\> |“NOVÁ HRA”| D(NS\_Prompt\_03: Přechodová Načítací Obrazovka); D –\> E\[NS\_Prompt\_03: Tvorba Nové Hry (Vícekroková)\]; E –\> |Zahájit Hru| D2(NS\_Prompt\_03: Přechodová Načítací Obrazovka
“Generuji Galaxii…”); D2 –\> F\_GAME\[NS\_Prompt\_42: Hlavní Herní Scéna\]; C –\> |“NAČÍST HRU”| G(NS\_Prompt\_03: Přechodová Načítací Obrazovka); G –\> H\[NS\_Prompt\_04: Obrazovka Načtení Uložené Hry\]; H –\> |Načíst| G2(NS\_Prompt\_03: Přechodová Načítací Obrazovka
“Načítám Hru…”); G2 –\> F\_GAME; C –\> |“NASTAVENÍ”| I\[NS\_Prompt\_04: Nastavení Hry (Modální)\]; I – Zpět –\> C; C –\> |“KNIHOVNA”| J\[NS\_Prompt\_19 & 47: Knihovna Znalostí (Modální)\]; J – Zpět –\> C; C –\> |“TVŮRCI”| K\[NS\_Prompt\_04: Obrazovka Tvůrců (Modální)\]; K – Zpět –\> C; C –\> |“UKONČIT HRU”| L\[NS\_Prompt\_04: Potvrzovací Dialog Ukončení\]; L – Ano –\> M\[Ukončení Aplikace\]; L – Ne –\> C; subgraph InGameInteractions \[Interakce ve Hře\] F\_GAME –\> N\[NS\_Prompt\_XX: Menu ve Hře (In-Game Menu \- Modální)\]; N –\> I\_GM\[NS\_Prompt\_04: Nastavení Hry (Modální)\]; I\_GM – Zpět –\> N; N –\> L\_GM\[NS\_Prompt\_04: Potvrzovací Dialog Ukončení\]; L\_GM – Ano –\> M; L\_GM – Ne –\> N; N –\> H\_GM\[NS\_Prompt\_04: Obrazovka Načtení Uložené Hry (Modální)\]; H\_GM – Zpět –\> N; N – Uložit Hru –\> O\[Obrazovka Uložení Hry (Modální)\]; O – Zpět –\> N; end style H fill:\#ff9900,stroke:\#fff,stroke-width:2px style I fill:\#ff9900,stroke:\#fff,stroke-width:2px style K fill:\#ff9900,stroke:\#fff,stroke-width:2px style L fill:\#ff9900,stroke:\#fff,stroke-width:2px style I\_GM fill:\#ff9900,stroke:\#fff,stroke-width:2px style L\_GM fill:\#ff9900,stroke:\#fff,stroke-width:2px style H\_GM fill:\#ff9900,stroke:\#fff,stroke-width:2px style O fill:\#ff9900,stroke:\#fff,stroke-width:2px
\#\#\# Podrobnosti pro Trae
1\. \*\*SettingsScreen\*\*:
\- Modal UI with tabs, integrated with settingsStore, and restart indicators.
2\. \*\*CreditsScreen\*\*:
\- Scrolling text with parallax starfield, interactive controls.
3\. \*\*ExitGameDialog\*\*:
\- Confirmation with unsaved changes logic.
4\. \*\*LoadGameScreen\*\*:
\- Slot list with preview, deletion, and version checks.
5\. \*\*Assets\*\*:
\- Detailed pixelart for backgrounds, icons, and UI styles.