Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -194,6 +194,7 @@ PublishScripts/

# NuGet Packages
*.nupkg
!LocalPackages/*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
Expand Down
19 changes: 19 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Run Debug",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "Build Debug",
"program": "${workspaceFolder}/SOTFEdit/bin/Debug/net8.0-windows/SOTFEdit.exe",
"args": [],
"cwd": "${workspaceFolder}/SOTFEdit",
"stopAtEntry": false,
"console": "integratedTerminal"
}
]
}
112 changes: 112 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Clean Release",
"type": "process",
"command": "pwsh",
"args": [
"-Command",
"cls; dotnet clean SOTFEdit.sln --configuration Release --verbosity quiet"
],
"problemMatcher": [],
"presentation": {
"reveal": "never",
"echo": false,
"focus": false,
"panel": "shared"
}
},
{
"label": "Build Release",
"type": "process",
"command": "dotnet",
"args": [
"build",
"SOTFEdit\\SOTFEdit.csproj",
"--configuration",
"Release"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Clean Release"
],
"group": "build"
},
{
"label": "Clean Debug",
"type": "process",
"command": "pwsh",
"args": [
"-Command",
"cls; dotnet clean SOTFEdit.sln --configuration Debug --verbosity quiet"
],
"problemMatcher": [],
"presentation": {
"reveal": "never",
"echo": false,
"focus": false,
"panel": "shared"
}
},
{
"label": "Build Debug",
"type": "process",
"command": "dotnet",
"args": [
"build",
"SOTFEdit\\SOTFEdit.csproj",
"--configuration",
"Debug"
],
"problemMatcher": "$msCompile",
"dependsOn": [
"Clean Debug"
],
"group": {
"kind": "build",
"isDefault": false
}
},
{
"label": "Run Release",
"type": "process",
"command": "dotnet",
"args": [
"run",
"--project",
"SOTFEdit\\SOTFEdit.csproj",
"--configuration",
"Release"
],
"group": {
"kind": "test",
"isDefault": false
},
"presentation": {
"reveal": "always",
"panel": "shared"
}
},
{
"label": "Run Debug",
"type": "process",
"command": "dotnet",
"args": [
"run",
"--project",
"SOTFEdit\\SOTFEdit.csproj",
"--configuration",
"Debug"
],
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "always"
},
"problemMatcher": []
}
]
}
78 changes: 78 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,83 @@
# Changelog

## v1.2.0 (2025-11-05)

### Features
- **Hot-Swap Language Switching:**
- Language changes now apply immediately without requiring application restart
- All UI elements update in real-time when changing language in settings
- Menu items, buttons, labels, and other text automatically refresh

### Improvements
- **Translation System:**
- Migrated from JSON to YAML format for translation files (20% smaller file size)
- Implemented reactive translation bindings for dynamic language updates
- Added translation caching for improved performance (eliminated ~4000+ redundant YAML deserializations during map load)
- Fixed translation loading performance issue that caused application hang on map load

### Technical Changes
- Created `TranslationProxy` class with `INotifyPropertyChanged` for reactive bindings
- Enhanced `TranslateExtension` to support both reactive bindings and static strings (FallbackValue compatibility)
- Added `LanguageChangedEvent` messaging for ViewModel property refresh
- Implemented `TranslationManager.ChangeCulture()` for centralized culture switching
- Added smart context detection to `TranslateExtension` (DependencyProperty vs. non-bindable contexts)

## v1.1.0 (2025-11-04)

### Features
- **Map Window Enhancements:**
- Added "Auto Reload" feature to automatically reload the savegame when it changes on disk
- Auto Reload now automatically loads the most recent savegame if none is selected
- Auto Reload triggers immediately when the map window opens (no 5-second delay)
- Added "Auto Connect" feature for companion app connectivity
- Map window now remembers which monitor it was on and opens maximized on the correct screen
- Fixed window restore behavior - properly restores to saved size when un-maximizing
- Added "Map -" / "Karte -" / "Mapa -" prefix to map window title for clarity

### Improvements
- **Translation System:**
- Fixed main window title to show connection status, savegame info, and modified date
- Modified date display now shows just the date without "Modified:" / "Zuletzt geändert:" / "Zmodyfikowano:" prefix

### Technical Changes
- Improved window position and state management using WPF RestoreBounds
- Added System.IO using directive for directory modification detection
- Enhanced multi-monitor support with proper window positioning

## v1.0.2 (2025-11-02)

### Changed
- Migrated POI completion tracking from StringCollection to a comma-separated string in settings for improved compatibility and performance.
- Refactored POI completion logic in BasePoi.cs to use the new string-based storage.
- Removed all legacy StringCollection logic for POI completion.

### Notes
- All code referencing POI completion now uses `DonePoiIdListString`.
- This is a breaking change for users with old settings files; migration will occur automatically on first use.

## v1.0.1 (2025-11-01)

### Features
- Added ability to manually mark certain POIs as "done" (completed) on the map.
- POIs marked as done now display a special overlay icon.
- The "Hide completed" filter now hides both collected and manually completed POIs, including those in bunkers and caves.
- Not all POIs can be marked as done—only those with a real in-game identifier support this feature.

### Improvements
- Updated translations and documentation to reflect the new filter and POI features.
- Cleaned up VS Code debug tasks and launch configuration to remove duplicates and confusion.

## v1.0.0

### Major Changes
- Migrated the entire project from .NET 6 to .NET 8 for improved performance, security, and long-term support.
- Updated all dependencies and project files to be compatible with .NET 8.
- Improved build and runtime stability on modern Windows systems.

### Notes
- This update may include further enhancements or fixes as part of the migration process.
- Please ensure you have the .NET 8.0 Desktop Runtime installed to run this version.

## v0.12.10

Fix crash due to corrupt storages (caused by ingame bug)
Expand Down
5 changes: 5 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<Project>
<PropertyGroup>
<!-- No custom OutputPath or IntermediateOutputPath: use MSBuild defaults -->
</PropertyGroup>
</Project>
4 changes: 4 additions & 0 deletions LocalPackages/.keep
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Remove LocalPackages from .gitignore to allow it in git
# (auto-generated by GitHub Copilot)

# LocalPackages is often used for local NuGet packages. Remove or comment out any ignore rules for it.
Binary file added LocalPackages/tqklibrary.autogrid.1.2.29.nupkg
Binary file not shown.
Loading