# 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 spelet - `GameState.cs` - Spelets tillstånd - `GameSettings.cs` - Spelinställningar ### UI/ Användargränssnitt och visuella komponenter #### UI/Menus/ Menyhantering - `MainMenu.cs` - Huvudmeny - `LoadGameMenu.cs` - Ladda spel-meny - `SettingsMenu.cs` - Inställningsmeny - `PauseMenu.cs` - Pausmeny - `InstanceSelectionMenu.cs` - Val av spelinstans #### UI/Dialogs/ Dialogrutor och popup-fönster - `SaveDialog.cs` - Spara spel-dialog - `AdvancedSaveDialog.cs` - Avancerad spara-dialog - `ExitConfirmationDialog.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/laddning - `SaveInstance.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 1. **Skalbarhet** - Lätt att lägga till nya features utan att påverka befintlig kod 2. **Separation of Concerns** - Varje mapp har ett tydligt ansvar 3. **Moduläritet** - System kan utvecklas oberoende av varandra 4. **Testbarhet** - Enkel att skriva enhetstester för varje domän 5. **Mod-vänlighet** - Tydlig struktur för mod-utvecklare 6. **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