Move all C# scripts from flat structure to organized folders: - Core/ for game logic (Game, GameState, GameSettings) - UI/Menus/ and UI/Dialogs/ for user interface - Systems/ for reusable systems (Save, Localization) - Data/ for data models and configuration - Added framework for future: Gameplay/, Story/, Modding/ Update all .tscn scene files to reference new script paths. Fix timing issue in AdvancedSaveDialog focus handling.
Scripts Structure - Domain-Driven Design
Detta projekt använder en Domain-Driven Design-struktur för att organisera koden på ett skalbart och underhållbart sätt.
Mappstruktur
Core/
Grundläggande spellogik och huvudsystem
Game.cs- Huvudklass för speletGameState.cs- Spelets tillståndGameSettings.cs- Spelinställningar
UI/
Användargränssnitt och visuella komponenter
UI/Menus/
Menyhantering
MainMenu.cs- HuvudmenyLoadGameMenu.cs- Ladda spel-menySettingsMenu.cs- InställningsmenyPauseMenu.cs- PausmenyInstanceSelectionMenu.cs- Val av spelinstans
UI/Dialogs/
Dialogrutor och popup-fönster
SaveDialog.cs- Spara spel-dialogAdvancedSaveDialog.cs- Avancerad spara-dialogExitConfirmationDialog.cs- Bekräftelse för avslut
UI/HUD/
Heads-up Display komponenter (framtida användning)
Gameplay/
Spelmekanik och spelspecifik logik
Gameplay/Units/
Enheter och karaktärer (framtida användning)
Gameplay/Actions/
Spelares aktioner och kommandon (framtida användning)
Gameplay/Stats/
Statistik och värdesystem (framtida användning)
Gameplay/Combat/
Stridssystem (framtida användning)
Gameplay/World/
Världslogik och miljö (framtida användning)
Story/
Berättelse och narrativ
Story/Events/
Story-events och händelser (framtida användning)
Story/Dialogue/
Dialogsystem (framtida användning)
Story/Quests/
Uppdragssystem (framtida användning)
Story/Narrative/
Berättarlogik (framtida användning)
Systems/
Återanvändbara system och managers
Systems/Save/
Spara/ladda-system
SaveManager.cs- Hanterar sparning/laddningSaveInstance.cs- Representation av sparfil
Systems/Localization/
Lokaliseringssystem
LocalizationManager.cs- Hanterar språkstöd
Systems/Audio/
Ljudsystem (framtida användning)
Systems/Input/
Inputhantering (framtida användning)
Systems/Events/
Event bus och messaging (framtida användning)
Data/
Datamodeller och konfiguration
GameSeed.cs- Spelfrö för procedurell generering
Data/Configurations/
Konfigurationsfiler (framtida användning)
Data/Definitions/
Data definitions för units, actions etc (framtida användning)
Data/Serialization/
Serialization helpers (framtida användning)
Modding/
Mod-stöd och utbyggbarhet
Modding/API/
Mod API interfaces (framtida användning)
Modding/Loader/
Mod loading system (framtida användning)
Modding/Framework/
Mod framework (framtida användning)
Fördelar med denna struktur
- Skalbarhet - Lätt att lägga till nya features utan att påverka befintlig kod
- Separation of Concerns - Varje mapp har ett tydligt ansvar
- Moduläritet - System kan utvecklas oberoende av varandra
- Testbarhet - Enkel att skriva enhetstester för varje domän
- Mod-vänlighet - Tydlig struktur för mod-utvecklare
- Underhållbarhet - Utvecklare vet direkt var de ska leta efter funktionalitet
Riktlinjer för utveckling
- Håll relaterade klasser tillsammans i samma undermapp
- Använd namespaces som matchar mappstrukturen
- Skapa nya undermappar när en mapp blir för stor (>10-15 filer)
- Undvik cirkulära dependencies mellan mappar
- Använd interfaces för att kommunicera mellan olika domäner