Refactor: reorganize scripts with domain-driven design structure

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.
This commit is contained in:
Björn Blomberg
2025-10-17 14:50:40 +02:00
parent 74062a37d6
commit ed4ce28921
41 changed files with 173 additions and 8 deletions

127
scripts/README.md Normal file
View File

@@ -0,0 +1,127 @@
# 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