diff --git a/.junie/plans/add-galaxy-map-and-ui-improvements.md b/.junie/plans/add-galaxy-map-and-ui-improvements.md index 230df71..f8fce52 100644 --- a/.junie/plans/add-galaxy-map-and-ui-improvements.md +++ b/.junie/plans/add-galaxy-map-and-ui-improvements.md @@ -2,71 +2,66 @@ sessionId: session-260928-131223-1ueu --- -# Delivery Steps +# Requirements -### ✓ Step 1: Implementation - -History processor: During the current session, you have worked on the following ``. -The `` usually continues or extends your previous work. Consider all `` and `` together. -If ``/`` blocks are present, treat them as additional user-provided context that may contain important clarifications about the task. - -## Plan Task -Improve the UI of the ZeroSpace.Web app. -Add a galaxy page that shows all the planetary nodes laid out by there x and y positions, and with their connections being drawn with a line. Make it so you can hover over the planet to see a hover popup of it's information. - - -tool name: submit -tool parameters: - - "delivery_plan"=[{"name":"Implement Galaxy Map SVG rendering and connection lines","description":"A functional SVG-based Galaxy Map page (`Galaxy.razor`) renders all star system nodes and connection lines based on their world coordinates.\n\n- Create `ZeroSpace.Web/Pages/Galaxy.razor` with route `@page \"/galaxy\"` and navigation title.\n- Parse `StarSystems.All` to extract unique undirected connection pairs and planetary node coordinate models.\n- Render connection lines (``) in SVG with dark-steel futuristic line styling (`#3a4d6b`, opacity, glow).\n- Render planetary nodes (`` / ``) positioned at `(system.X, system.Y)` using color coding based on `StarSystemKind` (Homeworld = green, Core = orange/amber, Side = blue/cyan).\n- Add SVG viewBox scaling (e.g. `0 0 1000 1000`) and responsive container layout to ensure crisp vector rendering on all screen sizes.\n- Implement click handlers on nodes to navigate directly to `/StarSystem/{Id}`."},{"name":"Implement dynamic planetary hover popup and interactive highlights","description":"Interactive hover tooltip overlays display rich star system details when the user hovers over any planet node on the galaxy map.\n\n- Design a floating glassmorphism hover card component / markup positioned dynamically relative to the active node or cursor.\n- Display star system metadata: system name, `Kind` badge, `OccupationBuff`, `SystemMastery` link, and `Yield` bonuses (Influence, Credits, Energy, Items).\n- Add highlight visual effects when hovering over a node (pulsing glow radius, highlight connected lines).\n- Handle edge cases such as tooltip boundary clamping near viewport edges and debounced mouse enter/leave events."},{"name":"Refine global UI, navigation menu, and dashboard landing page","description":"ZeroSpace.Web navigation, Home landing dashboard, and global UI styles are updated to match a polished sci-fi space aesthetic.\n\n- Update `ZeroSpace.Web/Layout/NavMenu.razor` with a dedicated \"Galaxy Map\" navigation link with custom star/galaxy icon.\n- Transform `ZeroSpace.Web/Pages/Home.razor` into an overview hub showcasing quick links and summary stats for Galaxy Map, Star Systems, System Masteries, and Units.\n- Enhance `ZeroSpace.Web/wwwroot/css/app.css` and component stylesheets with refined dark-theme colors, glassmorphism cards, glowing badges, and smooth hover transitions.\n- Verify solution builds cleanly and all navigation flows between the Galaxy map, system details, and other pages work seamlessly."}], - - "proposal"=[{"name":"Requirements","content":"### Overview & Goals\nThe goal of this initiative is to elevate the UI and user experience of `ZeroSpace.Web` and introduce an interactive **Galaxy Map** page. The Galaxy Map will visually display all planetary nodes positioned by their coordinates `(X, Y)`, render connection lines between interconnected systems, and provide instant hover information popups detailing yields, occupation buffs, masteries, and faction classifications.\n\n### Scope\n#### In Scope\n- **Galaxy Page (`/galaxy`)**: Interactive star map rendering all 78 star systems from `StarSystems.All` with their actual `(X, Y)` spatial coordinates.\n- **Connection Lines**: Drawing connection paths between systems based on `StarSystemData.ConnectedSystems`.\n- **Hover Information Popup**: Dynamic floating tooltip/card showing system name, kind, occupation buffs, system masteries, yield bonuses, and connections.\n- **Click Navigation**: Direct navigation from galaxy nodes to `/StarSystem/{Id}` details page.\n- **UI & Aesthetic Overhaul**:\n - Updating `NavMenu.razor` with a dedicated Galaxy Map entry and modern styling.\n - Revamping `Home.razor` from default template placeholder to an engaging sci-fi overview dashboard.\n - Enhancing theme colors, badge indicators, cards, and typography in `app.css`.\n\n#### Out of Scope\n- Backend database schema modifications (uses existing static/generated `ZeroSpace.Model` records).\n- Real-time multiplayer synchronization or editing capabilities (map editing remains in `ZeroSpace.MapEditor`).\n\n### User Stories\n- **As a player / wiki reader**, I want to view a visual galaxy map with all planetary nodes and connections so that I can understand system layout and routes across the galaxy.\n- **As a player**, I want to hover over any planetary node to immediately see its occupation buff, yields, and system mastery without having to navigate to separate pages.\n- **As a user**, I want to click on a star system node on the map to navigate directly to its detailed page.\n- **As a user**, I want a sleek, cohesive dark sci-fi web interface with clear navigation and a functional dashboard.\n\n### Functional Requirements\n1. **Galaxy Map Rendering**:\n - The map shall render an SVG canvas encompassing coordinate bounds (0 to 1000) preserving aspect ratio.\n - Lines must connect every system with its entries in `ConnectedSystems` without duplicate edge rendering.\n - Planetary nodes shall be rendered as circular nodes styled and colored according to `StarSystemKind`:\n - *Homeworld*: Vibrant Emerald / Green (`#43a047` / `#10b981`)\n - *Core*: Vibrant Amber / Orange (`#fb8c00` / `#f59e0b`)\n - *Side*: Vibrant Sky Blue / Cyan (`#4a90d9` / `#38bdf8`)\n2. **Hover Information Popup**:\n - Hovering over a planet node triggers a floating information popup.\n - Popup content includes:\n - Planet Name & Kind badge\n - Occupation buff (e.g. `+50 Starting Hexite`)\n - System mastery name (if present)\n - Higher yield indicators (Influence, Credits, Energy, Items)\n - Count and list of connected star systems\n - Tooltip disappears smoothly when the cursor leaves the node.\n3. **Map Interaction**:\n - Hovering a node highlights the node (glow ring) and highlights incoming/outgoing connection lines.\n - Clicking a node navigates to `/StarSystem/{Id}`.\n4. **App Navigation & Home Page**:\n - `NavMenu.razor` includes a link to `/galaxy` labeled \"Galaxy Map\" with an appropriate icon.\n - `Home.razor` provides quick-launch cards to Galaxy Map, Star Systems, Masteries, and Units with summary counts.\n\n### Non-Functional Requirements\n- **Performance**: Instant SVG rendering with zero lag for 78 nodes and ~200 connections; pure CSS/Blazor event handling with no external heavy mapping dependencies.\n- **Responsiveness**: Map scales smoothly inside its container across desktop and mobile screens.\n- **Accessibility**: Clear contrast ratios, readable tooltips, and keyboard/touch support for node selection."},{"name":"Technical Design","content":"### Current Implementation\n- `ZeroSpace.Model.StarSystems.All`: Contains all 78 star systems with records containing `Id`, `Name`, `Kind`, `X`, `Y`, `ConnectedSystems`, `OccupationBuff`, `SystemMastery`, and yield flags.\n- `ZeroSpace.Web`: Blazor WebAssembly application using Bootstrap 5 and Telerik Blazor components.\n- Existing pages include `StarSystemIndex.razor`, `StarSystemDetail.razor`, `SystemMasteryIndex.razor`, and `Units.razor`.\n- `Home.razor` is currently a default \"Hello World\" template placeholder.\n\n### Key Decisions\n1. **SVG Vector Graphics for Galaxy Map**:\n - *Chosen Approach*: Native Blazor SVG rendering (``).\n - *Rationale*: SVG offers vector sharpness at all display resolutions, reactive Blazor event binding (`@onmouseenter`, `@onmouseleave`, `@onclick`), lightweight footprint, and zero external JS dependency overhead.\n2. **Dynamic Overlay Tooltip**:\n - *Chosen Approach*: HTML/CSS floating glassmorphism card positioned relative to the hovered node/cursor with smooth fade transition.\n - *Rationale*: Allows rich formatting (badges, icons, multi-column yields) and styling that matches the dark sci-fi aesthetic better than native SVG `` or basic browser tooltips.\n3. **Connection Line Optimization**:\n - *Chosen Approach*: Precompute unique undirected edge pairs `(From, To)` on initialization.\n - *Rationale*: Prevents duplicate overlapping lines between reciprocal connections `A -> B` and `B -> A`, improving render performance and visual clarity.\n\n### Proposed Architecture & Flow\n\n```mermaid\ngraph TD\n Nav[NavMenu.razor] -->|Navigate /galaxy| GalaxyPage[Galaxy.razor]\n Home[Home.razor] -->|Quick Link| GalaxyPage\n \n subgraph Galaxy.razor\n Model[StarSystems.All] --> EdgeBuilder[Connection Deduplicator]\n EdgeBuilder --> SVGCanvas[SVG Canvas ViewBox 0 0 1000 1000]\n Model --> NodeRenderer[Node Elements & Coordinates]\n \n SVGCanvas --> Lines[SVG Lines: Connection Paths]\n SVGCanvas --> Nodes[SVG Circles & Glows: Planets]\n \n Nodes -->|@onmouseenter| HoverState[Hovered System State]\n Nodes -->|@onclick| NavAction[NavigationManager.NavigateTo /StarSystem/Id]\n \n HoverState --> Popup[Floating Planet Info Card]\n end\n```\n\n### Components & File Structure\n- **New Files**:\n - `ZeroSpace.Web/Pages/Galaxy.razor`: Main Galaxy map page containing the SVG viewport, control header, node filtering/legend, and popup overlay.\n - `ZeroSpace.Web/Pages/Galaxy.razor.css`: Scoped styles for map container, SVG glow effects, connection styling, and animated hover card.\n- **Modified Files**:\n - `ZeroSpace.Web/Layout/NavMenu.razor`: Add \"Galaxy Map\" item with navigation icon.\n - `ZeroSpace.Web/Pages/Home.razor`: Overhaul into a sci-fi hub with hero banner and feature cards.\n - `ZeroSpace.Web/wwwroot/css/app.css`: Dark sci-fi styling improvements, badge colors, and glassmorphism utilities.\n\n### Data Models / Contracts\n```csharp\npublic sealed record ConnectionEdge(\n StarSystemData From,\n StarSystemData To);\n\npublic sealed class GalaxyMapState\n{\n public IReadOnlyList Systems { get; set; } = StarSystems.All;\n public IReadOnlyList Connections { get; set; } = [];\n public StarSystemData? HoveredSystem { get; set; }\n public double TooltipX { get; set; }\n public double TooltipY { get; set; }\n public string? SelectedKindFilter { get; set; }\n}\n```\n\n### Risks & Mitigations\n- **Tooltip overflow near screen edges**: Clamp calculated tooltip coordinates within container boundaries to prevent viewport clipping.\n- **Coordinate overlap on small screens**: Ensure viewBox preserves 1:1 aspect ratio (`preserveAspectRatio=\"xMidYMid meet\"`) and allow zooming/scaling via standard CSS/viewport responsiveness."},{"content":"### Validation Approach\nVerification will be performed through build checks, component markup analysis, and interactive scenario validation in the Blazor runtime.\n\n### Key Scenarios\n1. **Galaxy Map Rendering**:\n - Verify that all 78 star systems are rendered at their designated `(X, Y)` positions.\n - Verify that connection lines accurately connect linked systems without orphaned or broken lines.\n - Verify node color coding matches `StarSystemKind` (Homeworld, Core, Side).\n2. **Hover Information Popup**:\n - Hovering over a planet node displays the popup immediately.\n - Verify all fields render accurately (Occupation buff, System mastery, Yields, Connected systems list).\n - Moving the mouse away dismisses the popup cleanly.\n3. **Navigation & Interactivity**:\n - Clicking a node navigates to the corresponding `/StarSystem/{Id}` route.\n - Navigating via the \"Galaxy Map\" link in `NavMenu.razor` loads the page properly.\n4. **UI & Responsiveness**:\n - Verify `Home.razor` renders updated dashboard cards and quick links.\n - Verify dark-theme sci-fi visual style across desktop and smaller browser viewports.\n\n### Regressions & Edge Cases\n- Star systems without occupation buffs or masteries display clean fallback dashes (`—`) without layout breaks.\n- Rapid mouse movements over adjacent nodes update the hover popup smoothly without flickering.","name":"Testing"}], - - "name"="add-galaxy-map-and-ui-improvements" - - -## Orchestrated Plan Task -implement according to the plan - - -### Summary -- Implemented the planned ZeroSpace.Web UI overhaul, including a new interactive `/galaxy` SVG map with clickable star systems, hyperlane connections, and rich hover details. -- Completed the sci-fi navigation/home-page refresh and verified the web project builds cleanly after all changes. +### Overview & Goals +Resolve the compilation error `CS7036` on `PlatformImage` in `ZeroSpace.MapEditor/Services/MapBackground.cs` and resolve compiler nullability warnings in `MapEditorPage.xaml.cs`, ensuring `ZeroSpace.MapEditor` and the entire solution (`ZeroSpace.sln`) compile cleanly with zero errors. -### Changes -- Added `Galaxy.razor` and scoped styles to render all star systems from `StarSystems.All`, deduplicate/display connection lines, support click-through to `/StarSystem/{Id}`, and keep SVG numeric output locale-safe. -- Added interactive hover/focus behavior on the galaxy map with a floating info card, connected-line/node highlighting, keyboard-friendly node interaction, and tooltip edge clamping. -- Updated `NavMenu`, `Home`, and shared CSS/layout styling to add the Galaxy Map entry, create a dashboard landing page with live counts/quick links, and apply a cohesive dark sci-fi visual theme. +### Scope +#### In Scope +- Update `ZeroSpace.MapEditor/Services/MapBackground.cs` to load the galaxy map background image stream via the MAUI Graphics `PlatformImage.FromStream(buffer)` factory instead of the invalid two-parameter constructor `PlatformImage(ICanvasResourceCreator, CanvasBitmap)`. +- Resolve `CS8604` nullability warnings in `ZeroSpace.MapEditor/Views/MapEditorPage.xaml.cs` for `PopulateInspector` calls. +- Verify end-to-end solution build (`dotnet build ZeroSpace\ZeroSpace.sln`) with 0 errors across all projects. -### Verification -- Reviewed each delivery step and resolved the only blocking issue found (culture-sensitive SVG number formatting) plus a dashboard count inconsistency. -- `dotnet build ZeroSpace.Web/ZeroSpace.Web.csproj --no-restore` and solution-level builds passed with 0 warnings and 0 errors. +#### Out of Scope +- Redesigning MapEditor UI layouts or modifying StarSystem data structures. +- Altering web pages in `ZeroSpace.Web`. -### Notes -- No PR/branch workflow was used because the user asked only for implementation, not for a dedicated branch or pull request. - - -## Plan Task -Add a new frontmatter data point to the markdown files that indicates the ownership of a planet system. The owner can be The Keeper Council, The Eden Accord, and The Obsidian Order. These factions are represented with the colour blue, green and red. +### User Stories +- **As a developer**, I want `ZeroSpace.MapEditor` and the entire `ZeroSpace.sln` solution to build cleanly without compile errors so that the Map Editor and all companion projects can be built, debugged, and run reliably. -For now, assign all planets to The Eden Accord. Use the owner colour in the galaxy map. +### Functional Requirements +1. **PlatformImage Factory**: `MapBackground.LoadAsync()` must use the platform-compatible image stream loader (`Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(buffer)`) returning `IImage?`. +2. **Graceful Exception Fallback**: Maintain existing `try-catch` exception handling so the editor runs cleanly even if the background asset cannot be loaded or is absent. +3. **Null-Safety in MapEditorPage**: Ensure `PopulateInspector(MapNode node)` receives a guaranteed non-null `MapNode` reference across all selection and marquee interaction paths. -Add filters on the galaxy map to filter highlighted planets by mastery, special yields, or system type. +--- -Speaking of system types. Instead of the markdown being something like isHomeworldSystem: true, instead be systemCategory: Homeworld System, systemCategory: Side System, or systemCategory: Core System. Have the rest of the codebase reflect that data change - - -tool name: submit -tool parameters: - - +# Technical Design - -Add a new frontmatter data point to the markdown files that indicates the ownership of a planet system. The owner can be The Keeper Council, The Eden Accord, and The Obsidian Order. These factions are represented with the colour blue, green and red. +### Current Implementation +- `ZeroSpace.MapEditor/Services/MapBackground.cs` attempts `new Microsoft.Maui.Graphics.Platform.PlatformImage(buffer)` which fails with `CS7036: There is no argument given that corresponds to the required parameter 'bitmap' of 'PlatformImage.PlatformImage(ICanvasResourceCreator, CanvasBitmap)'`. +- In `Microsoft.Maui.Graphics.Platform` (.NET 10 / Windows App SDK / Win2D), `PlatformImage` instances from byte streams are instantiated via `PlatformImage.FromStream(Stream stream, ImageFormat format = ImageFormat.Png)` or `PlatformImageService.Instance.FromStream(stream)`. +- `MapEditorPage.xaml.cs` has 3 occurrences of `CS8604` possible null reference arguments where `_selected` is passed to `PopulateInspector(MapNode node)` right after `SetActiveNode(_pressNode)` or in multi-node selection resolution. -For now, assign all planets to The Eden Accord. Use the owner colour in the galaxy map. +### Key Decisions +1. **Use `PlatformImage.FromStream` Factory**: + - *Chosen Approach*: Replace direct `new PlatformImage(buffer)` constructor calls with `Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(buffer)`. + - *Rationale*: `PlatformImage.FromStream` is the standard cross-platform MAUI Graphics factory method for creating `IImage` instances from stream buffers on Windows and MacCatalyst. +2. **Explicit Non-Null Variable Passing in `MapEditorPage`**: + - *Chosen Approach*: Pass `_pressNode` or computed non-null `active` node directly to `PopulateInspector(node)`. + - *Rationale*: Eliminates nullable warnings cleanly without suppressing diagnostics or adding runtime overhead. -Add filters on the galaxy map to filter highlighted planets by mastery, special yields, or system type. +### Proposed Changes +1. `ZeroSpace.MapEditor/Services/MapBackground.cs`: + - Replace `new Microsoft.Maui.Graphics.Platform.PlatformImage(buffer)` with `Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(buffer)`. +2. `ZeroSpace.MapEditor/Views/MapEditorPage.xaml.cs`: + - Pass `_pressNode` in selection click handlers and pass local non-null `active` node in multi-select resolution before calling `PopulateInspector`. -Speaking of system types. Instead of the markdown being something like isHomeworldSystem: true, instead be systemCategory: Homeworld System, systemCategory: Side System, or systemCategory: Core System. Have the rest of the codebase reflect that data change - +### File Structure +- `ZeroSpace/ZeroSpace.MapEditor/Services/MapBackground.cs` (Modified) +- `ZeroSpace/ZeroSpace.MapEditor/Views/MapEditorPage.xaml.cs` (Modified) -This task has no prior planning phase. Before implementation, analyze the task and codebase, define acceptance criteria if not explicitly provided in the task description, and plan your approach. -The Reviewer must independently define its own acceptance criteria and will verify them. \ No newline at end of file +--- + +# Testing + +### Validation Approach +- Execute `dotnet build ZeroSpace\ZeroSpace.sln` to verify all projects compile with 0 errors. +- Verify `ZeroSpace.MapEditor.csproj` compiles cleanly for `net10.0-windows10.0.19041.0`. + +### Key Scenarios +1. **MapBackground Image Stream Loading**: Confirm `MapBackground.LoadAsync()` builds cleanly with `PlatformImage.FromStream`. +2. **Full Solution Compilation**: Confirm `ZeroSpace.sln` completes with 0 errors and 0 blocking warnings. + +--- \ No newline at end of file diff --git a/.junie/plans/fix-mapbackground-platformimage-constructor-error.md b/.junie/plans/fix-mapbackground-platformimage-constructor-error.md new file mode 100644 index 0000000..3d9c15d --- /dev/null +++ b/.junie/plans/fix-mapbackground-platformimage-constructor-error.md @@ -0,0 +1,86 @@ +--- +sessionId: session-260928-184444-1lki +--- + +# Requirements + +### Overview & Goals +Fix the build error in `ZeroSpace.MapEditor/Services/MapBackground.cs` where invoking `new PlatformImage(buffer)` fails with compilation error `CS7036: There is no argument given that corresponds to the required parameter 'bitmap' of 'PlatformImage.PlatformImage(ICanvasResourceCreator, CanvasBitmap)'`. + +### Scope +- **In Scope:** + - Fix the image instantiation logic in `ZeroSpace.MapEditor/Services/MapBackground.cs` to use `Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(buffer)`. + - Ensure compatibility with .NET MAUI Windows (`net10.0-windows10.0.19041.0`) and MacCatalyst (`net10.0-maccatalyst`). + - Verify project build and clean diagnostic status. +- **Out of Scope:** + - Modifying the galaxy map raw asset or canvas drawing logic in `MapEditorPage.xaml.cs` and `MapEditorDrawable.cs`. + - Introducing external third-party image decoding dependencies. + +### Functional Requirements +- `MapBackground.LoadAsync()` must asynchronously open `galaxymap.png` from app package assets, copy the stream into memory, and return a valid `Microsoft.Maui.Graphics.IImage` instance on supported platforms. +- If the asset cannot be found or is loaded on an unsupported platform, `MapBackground.LoadAsync()` must catch the exception and return `null` without crashing the application. +- `MapEditorPage` must continue to display the galaxy map background when enabled. + +### Non-Functional Requirements +- Maintain zero build errors and zero warnings across all supported target frameworks. +- Preserve memory stream behavior ensuring stream data remains accessible for lazy platform decoders. + +# Technical Design + +### Current Implementation +In `ZeroSpace.MapEditor/Services/MapBackground.cs`: +```csharp +#if WINDOWS + return new Microsoft.Maui.Graphics.Platform.PlatformImage(buffer); +#elif MACCATALYST + return new Microsoft.Maui.Graphics.Platform.PlatformImage(buffer); +#else + return null; +#endif +``` +On Windows (`Microsoft.Maui.Graphics.Win2D`), `PlatformImage` has no single-parameter constructor accepting a `Stream`. Its constructor expects `(ICanvasResourceCreator, CanvasBitmap)` or `(byte[], ImageFormat)`. + +### Root Cause +Directly calling the `PlatformImage` constructor with a `MemoryStream` is invalid in Microsoft.Maui.Graphics for Win2D. The supported API to construct an `IImage` from a `Stream` across all MAUI platforms is the static factory method `PlatformImage.FromStream(Stream, ImageFormat)`. + +### Key Decisions +- **Decision:** Use `PlatformImage.FromStream(buffer)` instead of constructor invocation. + - **Rationale:** `PlatformImage.FromStream(Stream, ImageFormat)` is the standard Microsoft.Maui.Graphics API designed for stream-based image creation on both Windows and MacCatalyst platforms. + +### Proposed Changes +- In `ZeroSpace.MapEditor/Services/MapBackground.cs`: + - Update lines 25–31 to invoke `Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(buffer)` under `#if WINDOWS || MACCATALYST`. + - Maintain the existing try-catch safety wrapper that returns `null` if loading fails. + +### File Structure +- `ZeroSpace.MapEditor/Services/MapBackground.cs` (Modified: update image factory call) +- `ZeroSpace.MapEditor/Views/MapEditorPage.xaml.cs` (Referenced: consumes `MapBackground.LoadAsync()`) + +# Testing + +### Validation Approach +Verify that the compilation error `CS7036` is resolved and `ZeroSpace.MapEditor` builds successfully. + +### Key Scenarios +- **Compilation Check:** + - Verify `ZeroSpace.MapEditor/Services/MapBackground.cs` with Rider code analysis to confirm zero compiler errors. + - Build `ZeroSpace.MapEditor.csproj` target framework `net10.0-windows10.0.19041.0`. +- **Image Loading & Fallback Check:** + - Ensure `MapBackground.LoadAsync()` returns an `IImage` instance when `galaxymap.png` is available. + - Ensure exceptions during loading (e.g. missing asset) are handled cleanly and return `null`. + +# Delivery Steps + +### ✓ Step 1: Refactor image stream loading to use PlatformImage.FromStream in MapBackground +`MapBackground.cs` compiles without CS7036 errors across target platforms by using the static factory method `PlatformImage.FromStream`. + +- Replace `new Microsoft.Maui.Graphics.Platform.PlatformImage(buffer)` with `Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(buffer)` in `ZeroSpace.MapEditor/Services/MapBackground.cs`. +- Consolidate platform conditional directives `#if WINDOWS || MACCATALYST` (or use platform-agnostic graphics loading) while preserving graceful `null` fallback in the `catch` block and unsupported target platforms. +- Ensure using directives for `Microsoft.Maui.Graphics.Platform` are properly configured. + +### ✓ Step 2: Verify compilation and image rendering integration +`ZeroSpace.MapEditor` builds cleanly without diagnostics or runtime issues when loading raw background assets. + +- Run code analysis/diagnostics on `ZeroSpace.MapEditor/Services/MapBackground.cs` to confirm zero compilation errors and warnings. +- Build the `ZeroSpace.MapEditor` project to ensure proper integration with `Microsoft.Maui.Controls` and `Microsoft.Maui.Graphics`. +- Validate that `MapEditorPage.xaml.cs` successfully receives the `IImage` instance from `MapBackground.LoadAsync()` and invalidates the map canvas for rendering. \ No newline at end of file diff --git a/ZeroSpace/ZeroSpace.MapEditor/Services/MapBackground.cs b/ZeroSpace/ZeroSpace.MapEditor/Services/MapBackground.cs index c84652c..9f14e77 100644 --- a/ZeroSpace/ZeroSpace.MapEditor/Services/MapBackground.cs +++ b/ZeroSpace/ZeroSpace.MapEditor/Services/MapBackground.cs @@ -1,5 +1,4 @@ -using Microsoft.Maui.Graphics; -using Microsoft.Maui.Storage; +using IImage = Microsoft.Maui.Graphics.IImage; namespace ZeroSpace.MapEditor.Services; @@ -9,22 +8,21 @@ namespace ZeroSpace.MapEditor.Services; /// public static class MapBackground { - private const string AssetName = "galaxymap.png"; + private const string AssetName = "Resources\\Raw\\galaxymap.png"; public static async Task LoadAsync() { try { await using var packageStream = await FileSystem.OpenAppPackageFileAsync(AssetName); + // Copy into memory and leave the buffer undisposed: some platform // image implementations read from the stream lazily. var buffer = new MemoryStream(); await packageStream.CopyToAsync(buffer); buffer.Position = 0; -#if WINDOWS - return new Microsoft.Maui.Graphics.Platform.PlatformImage(buffer); -#elif MACCATALYST - return new Microsoft.Maui.Graphics.Platform.PlatformImage(buffer); +#if WINDOWS || MACCATALYST + return Microsoft.Maui.Graphics.Platform.PlatformImage.FromStream(buffer); #else return null; #endif @@ -36,4 +34,4 @@ public static class MapBackground return null; } } -} +} \ No newline at end of file diff --git a/ZeroSpace/ZeroSpace.MapEditor/Views/MapDrawable.cs b/ZeroSpace/ZeroSpace.MapEditor/Views/MapDrawable.cs index 32dde07..c31861f 100644 --- a/ZeroSpace/ZeroSpace.MapEditor/Views/MapDrawable.cs +++ b/ZeroSpace/ZeroSpace.MapEditor/Views/MapDrawable.cs @@ -1,6 +1,7 @@ using Microsoft.Maui.Graphics; using ZeroSpace.MapEditor.Models; using ZeroSpace.MapEditor.Services; +using IImage = Microsoft.Maui.Graphics.IImage; namespace ZeroSpace.MapEditor.Views; diff --git a/ZeroSpace/ZeroSpace.MapEditor/ZeroSpace.MapEditor.csproj b/ZeroSpace/ZeroSpace.MapEditor/ZeroSpace.MapEditor.csproj index 5810b22..80e297c 100644 --- a/ZeroSpace/ZeroSpace.MapEditor/ZeroSpace.MapEditor.csproj +++ b/ZeroSpace/ZeroSpace.MapEditor/ZeroSpace.MapEditor.csproj @@ -26,7 +26,9 @@ - + + PreserveNewest + diff --git a/zs.docs/StarSystem/Andus Reach.md b/zs.docs/StarSystem/Andus Reach.md index 78db653..89523a5 100644 --- a/zs.docs/StarSystem/Andus Reach.md +++ b/zs.docs/StarSystem/Andus Reach.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Igneous Cascade]]" - "[[Corundum Dream]]" - "[[Sullen Dwarf]]" -x: 1960.1 -y: 739.2 +x: 728.2 +y: 317.9 --- diff --git a/zs.docs/StarSystem/Aquila Rift.md b/zs.docs/StarSystem/Aquila Rift.md index 5089638..bca8648 100644 --- a/zs.docs/StarSystem/Aquila Rift.md +++ b/zs.docs/StarSystem/Aquila Rift.md @@ -11,6 +11,6 @@ connectedSystems: - "[[Calm Belt]]" - "[[Burning Cairn]]" - "[[Pleiades Cluster]]" -x: 1921.8 -y: 774.3 +x: 355.2 +y: 715.7 --- diff --git a/zs.docs/StarSystem/Artemis Grotto.md b/zs.docs/StarSystem/Artemis Grotto.md index bbe6d53..85cfcfc 100644 --- a/zs.docs/StarSystem/Artemis Grotto.md +++ b/zs.docs/StarSystem/Artemis Grotto.md @@ -8,6 +8,6 @@ systemMastery: "[[Unit Vision and Attack Range]]" connectedSystems: - "[[Nexus Prime]]" - "[[The High Council]]" -x: -264.9 -y: 703.8 +x: 148.5 +y: 567.3 --- diff --git a/zs.docs/StarSystem/Ashes of Revenge.md b/zs.docs/StarSystem/Ashes of Revenge.md index 75dc995..34d2f74 100644 --- a/zs.docs/StarSystem/Ashes of Revenge.md +++ b/zs.docs/StarSystem/Ashes of Revenge.md @@ -7,6 +7,6 @@ systemMastery: "[[Unit Health and Shields]]" connectedSystems: - "[[Eden's Heart]]" - "[[Lights Bounty]]" -x: 665.7 -y: -173.0 +x: 605.5 +y: 65.6 --- diff --git a/zs.docs/StarSystem/Astral Haven.md b/zs.docs/StarSystem/Astral Haven.md index a6cc5e5..7ac5cdb 100644 --- a/zs.docs/StarSystem/Astral Haven.md +++ b/zs.docs/StarSystem/Astral Haven.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Crystallic Genesis]]" - "[[Andus Reach]]" - "[[Igneous Cascade]]" -x: 1024.3 -y: 91.3 +x: 777.5 +y: 255.9 --- diff --git a/zs.docs/StarSystem/Aurora Vale.md b/zs.docs/StarSystem/Aurora Vale.md index 2978152..d9b8412 100644 --- a/zs.docs/StarSystem/Aurora Vale.md +++ b/zs.docs/StarSystem/Aurora Vale.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Endless Wastes]]" - "[[Beta Clarity]]" - "[[Stronghold Nova Centauri]]" -x: 173.0 -y: -221.7 +x: 319.5 +y: 93.4 --- diff --git a/zs.docs/StarSystem/Beta Clarity.md b/zs.docs/StarSystem/Beta Clarity.md index bd4671b..8ded917 100644 --- a/zs.docs/StarSystem/Beta Clarity.md +++ b/zs.docs/StarSystem/Beta Clarity.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Aurora Vale]]" - "[[Solaris Reach]]" - "[[Nebulon Drift]]" -x: 1728.9 -y: 326.2 +x: 337.3 +y: 168.4 --- diff --git a/zs.docs/StarSystem/Burning Cairn.md b/zs.docs/StarSystem/Burning Cairn.md index 10d9467..bd4368c 100644 --- a/zs.docs/StarSystem/Burning Cairn.md +++ b/zs.docs/StarSystem/Burning Cairn.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Aquila Rift]]" - "[[Calm Belt]]" - "[[Zeta Horizon]]" -x: 1896.8 -y: 617.3 +x: 370.4 +y: 783.5 --- diff --git a/zs.docs/StarSystem/Calm Belt.md b/zs.docs/StarSystem/Calm Belt.md index 9641a02..e6f4148 100644 --- a/zs.docs/StarSystem/Calm Belt.md +++ b/zs.docs/StarSystem/Calm Belt.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Burning Cairn]]" - "[[Draconis Reach]]" - "[[Stronghold Vega]]" -x: 2098.0 -y: 789.6 +x: 428.7 +y: 751.9 --- diff --git a/zs.docs/StarSystem/Celestial Forge Stronghold.md b/zs.docs/StarSystem/Celestial Forge Stronghold.md index 8a78068..6d25aa2 100644 --- a/zs.docs/StarSystem/Celestial Forge Stronghold.md +++ b/zs.docs/StarSystem/Celestial Forge Stronghold.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Sigma Vortex]]" - "[[Epsilon Arc]]" - "[[Scarlett Ire]]" -x: 1816.2 -y: 798.6 +x: 382.9 +y: 340.2 --- diff --git a/zs.docs/StarSystem/Corundum Dream.md b/zs.docs/StarSystem/Corundum Dream.md index ee8380f..65c4c9e 100644 --- a/zs.docs/StarSystem/Corundum Dream.md +++ b/zs.docs/StarSystem/Corundum Dream.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Iotan Tears]]" - "[[Idal's Word]]" - "[[Sullen Dwarf]]" -x: 2029.7 -y: 590.5 +x: 726.9 +y: 403.5 --- diff --git a/zs.docs/StarSystem/Crimson Expanse.md b/zs.docs/StarSystem/Crimson Expanse.md index 54fb18f..66e5431 100644 --- a/zs.docs/StarSystem/Crimson Expanse.md +++ b/zs.docs/StarSystem/Crimson Expanse.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Typhon's Call]]" - "[[Nucleic Redux]]" - "[[Devil's Trident]]" -x: 2011.6 -y: 903.5 +x: 273.2 +y: 570.4 --- diff --git a/zs.docs/StarSystem/Crystallic Genesis.md b/zs.docs/StarSystem/Crystallic Genesis.md index d16bcc8..2ffa0e9 100644 --- a/zs.docs/StarSystem/Crystallic Genesis.md +++ b/zs.docs/StarSystem/Crystallic Genesis.md @@ -7,6 +7,6 @@ systemMastery: "[[Unit Energy and Regeneration (not heroes)]]" connectedSystems: - "[[Stronghold Orion]]" - "[[Astral Haven]]" -x: 948.3 -y: 11.6 +x: 763.7 +y: 186.2 --- diff --git a/zs.docs/StarSystem/Devil's Trident.md b/zs.docs/StarSystem/Devil's Trident.md index 3bb5805..cc334ed 100644 --- a/zs.docs/StarSystem/Devil's Trident.md +++ b/zs.docs/StarSystem/Devil's Trident.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Nucleic Redux]]" - "[[Xenon Abyss]]" - "[[Void Star]]" -x: 2142.9 -y: 699.0 +x: 319.4 +y: 600.3 --- diff --git a/zs.docs/StarSystem/Draconis Reach.md b/zs.docs/StarSystem/Draconis Reach.md index 628378e..5f1e352 100644 --- a/zs.docs/StarSystem/Draconis Reach.md +++ b/zs.docs/StarSystem/Draconis Reach.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Xenthic Fields]]" - "[[Noxious Energy]]" - "[[Gelid Storm]]" -x: 1848.4 -y: 898.1 +x: 419.9 +y: 825.0 --- diff --git a/zs.docs/StarSystem/Ebony Keep.md b/zs.docs/StarSystem/Ebony Keep.md index ad14452..e557d3b 100644 --- a/zs.docs/StarSystem/Ebony Keep.md +++ b/zs.docs/StarSystem/Ebony Keep.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Vulcan's Breath]]" - "[[Helios Crossing]]" - "[[Forge of Souls]]" -x: 1934.3 -y: 539.8 +x: 587.7 +y: 585.6 --- diff --git a/zs.docs/StarSystem/Eden's Heart.md b/zs.docs/StarSystem/Eden's Heart.md index 9bf1ccc..e4f89d1 100644 --- a/zs.docs/StarSystem/Eden's Heart.md +++ b/zs.docs/StarSystem/Eden's Heart.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Yellow Dawn]]" - "[[Proxima Prime]]" - "[[Ashes of Revenge]]" -x: 560.8 -y: -129.8 +x: 524.7 +y: 72.9 --- diff --git a/zs.docs/StarSystem/Endless Wastes.md b/zs.docs/StarSystem/Endless Wastes.md index b0ad553..f2f327c 100644 --- a/zs.docs/StarSystem/Endless Wastes.md +++ b/zs.docs/StarSystem/Endless Wastes.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Gamma Swarm]]" - "[[Nebulon Drift]]" - "[[Aurora Vale]]" -x: -42.0 -y: -69.3 +x: 251.0 +y: 141.4 --- diff --git a/zs.docs/StarSystem/Epsilon Arc.md b/zs.docs/StarSystem/Epsilon Arc.md index 2f681bf..e83fcb7 100644 --- a/zs.docs/StarSystem/Epsilon Arc.md +++ b/zs.docs/StarSystem/Epsilon Arc.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Celestial Forge Stronghold]]" - "[[Scarlett Ire]]" - "[[Magnetic Folly]]" -x: 2116.2 -y: 583.9 +x: 312.0 +y: 361.5 --- diff --git a/zs.docs/StarSystem/Erebus Deep.md b/zs.docs/StarSystem/Erebus Deep.md index 36b88c1..587a7d8 100644 --- a/zs.docs/StarSystem/Erebus Deep.md +++ b/zs.docs/StarSystem/Erebus Deep.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Vulcan's Breath]]" - "[[Stronghold Cronus]]" - "[[Mercury Forge]]" -x: 1949.6 -y: 965.2 +x: 591.7 +y: 518.1 --- diff --git a/zs.docs/StarSystem/Forge of Souls.md b/zs.docs/StarSystem/Forge of Souls.md index 81a63a8..c022a90 100644 --- a/zs.docs/StarSystem/Forge of Souls.md +++ b/zs.docs/StarSystem/Forge of Souls.md @@ -11,6 +11,6 @@ connectedSystems: - "[[Wild's End]]" - "[[Obsidian Palace]]" - "[[Starless Sky]]" -x: 1811.4 -y: 561.0 +x: 573.9 +y: 685.4 --- diff --git a/zs.docs/StarSystem/Galactic Zenith.md b/zs.docs/StarSystem/Galactic Zenith.md index e3d6bb3..741fd97 100644 --- a/zs.docs/StarSystem/Galactic Zenith.md +++ b/zs.docs/StarSystem/Galactic Zenith.md @@ -16,6 +16,6 @@ connectedSystems: - "[[Shattered Light]]" - "[[Magnetic Folly]]" - "[[Scarlett Ire]]" -x: 2195.8 -y: 770.9 +x: 406.0 +y: 460.2 --- diff --git a/zs.docs/StarSystem/Gamma Swarm.md b/zs.docs/StarSystem/Gamma Swarm.md index 67a44bb..d8ff570 100644 --- a/zs.docs/StarSystem/Gamma Swarm.md +++ b/zs.docs/StarSystem/Gamma Swarm.md @@ -11,6 +11,6 @@ connectedSystems: - "[[Hyperion Nebula]]" - "[[Raider's Reef]]" - "[[Occam's Abode]]" -x: 1760.3 -y: 878.2 +x: 225.8 +y: 262.5 --- diff --git a/zs.docs/StarSystem/Gelid Storm.md b/zs.docs/StarSystem/Gelid Storm.md index 056a84c..f6225cf 100644 --- a/zs.docs/StarSystem/Gelid Storm.md +++ b/zs.docs/StarSystem/Gelid Storm.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Noxious Energy]]" - "[[Draconis Reach]]" - "[[Stronghold Vega]]" -x: 174.8 -y: 1277.2 +x: 489.9 +y: 853.7 --- diff --git a/zs.docs/StarSystem/Glittering Hope.md b/zs.docs/StarSystem/Glittering Hope.md index 9806d66..c6dcd35 100644 --- a/zs.docs/StarSystem/Glittering Hope.md +++ b/zs.docs/StarSystem/Glittering Hope.md @@ -9,6 +9,6 @@ connectedSystems: - "[[The High Council]]" - "[[Neera's Gift]]" - "[[Stronghold Leo]]" -x: 2086.5 -y: 959.8 +x: 218.1 +y: 684.5 --- diff --git a/zs.docs/StarSystem/Heigen Stream.md b/zs.docs/StarSystem/Heigen Stream.md index 8c4da9c..de79c54 100644 --- a/zs.docs/StarSystem/Heigen Stream.md +++ b/zs.docs/StarSystem/Heigen Stream.md @@ -7,6 +7,6 @@ systemMastery: "[[Unit Energy and Regeneration (not heroes)]]" connectedSystems: - "[[Iotan Tears]]" - "[[Stronghold Atlas]]" -x: 1058.6 -y: 579.6 +x: 796.3 +y: 545.9 --- diff --git a/zs.docs/StarSystem/Helios Crossing.md b/zs.docs/StarSystem/Helios Crossing.md index 6b104d3..2dc9662 100644 --- a/zs.docs/StarSystem/Helios Crossing.md +++ b/zs.docs/StarSystem/Helios Crossing.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Vulcan's Breath]]" - "[[Ebony Keep]]" - "[[Forge of Souls]]" -x: 2200.4 -y: 628.2 +x: 555.1 +y: 608.1 --- diff --git a/zs.docs/StarSystem/Hyperion Nebula.md b/zs.docs/StarSystem/Hyperion Nebula.md index 2d7b56f..ba06ec5 100644 --- a/zs.docs/StarSystem/Hyperion Nebula.md +++ b/zs.docs/StarSystem/Hyperion Nebula.md @@ -10,6 +10,6 @@ connectedSystems: - "[[The Crucible]]" - "[[Epsilon Arc]]" - "[[Gamma Swarm]]" -x: 1856.0 -y: 988.0 +x: 291.0 +y: 280.8 --- diff --git a/zs.docs/StarSystem/Idal's Word.md b/zs.docs/StarSystem/Idal's Word.md index d42ab5b..7156075 100644 --- a/zs.docs/StarSystem/Idal's Word.md +++ b/zs.docs/StarSystem/Idal's Word.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Corundum Dream]]" - "[[Iotan Tears]]" - "[[Stronghold Atlas]]" -x: 1867.1 -y: 480.8 +x: 701.9 +y: 470.4 --- diff --git a/zs.docs/StarSystem/Igneous Cascade.md b/zs.docs/StarSystem/Igneous Cascade.md index 968727d..c0b1cb9 100644 --- a/zs.docs/StarSystem/Igneous Cascade.md +++ b/zs.docs/StarSystem/Igneous Cascade.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Andus Reach]]" - "[[Corundum Dream]]" - "[[Iotan Tears]]" -x: 1090.9 -y: 256.4 +x: 793.5 +y: 349.9 --- diff --git a/zs.docs/StarSystem/Inferno's Edge Stronghold.md b/zs.docs/StarSystem/Inferno's Edge Stronghold.md index 5bc7598..7a743c8 100644 --- a/zs.docs/StarSystem/Inferno's Edge Stronghold.md +++ b/zs.docs/StarSystem/Inferno's Edge Stronghold.md @@ -11,6 +11,6 @@ connectedSystems: - "[[Tartarus Expanse]]" - "[[Void Star]]" - "[[Xenon Abyss]]" -x: 1685.2 -y: 811.7 +x: 415.6 +y: 595.8 --- diff --git a/zs.docs/StarSystem/Iotan Tears.md b/zs.docs/StarSystem/Iotan Tears.md index 2c0e234..6718c39 100644 --- a/zs.docs/StarSystem/Iotan Tears.md +++ b/zs.docs/StarSystem/Iotan Tears.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Corundum Dream]]" - "[[Idal's Word]]" - "[[Heigen Stream]]" -x: 1073.3 -y: 347.5 +x: 793.8 +y: 476.4 --- diff --git a/zs.docs/StarSystem/Ivory Fields.md b/zs.docs/StarSystem/Ivory Fields.md index 91d1407..4745e91 100644 --- a/zs.docs/StarSystem/Ivory Fields.md +++ b/zs.docs/StarSystem/Ivory Fields.md @@ -8,6 +8,6 @@ systemMastery: "[[Unit Energy and Regeneration (not heroes)]]" connectedSystems: - "[[Starless Sky]]" - "[[Obsidian Palace]]" -x: 644.1 -y: 1206.4 +x: 645.2 +y: 795.1 --- diff --git a/zs.docs/StarSystem/Ivory Steel.md b/zs.docs/StarSystem/Ivory Steel.md index 7b45325..f5406e0 100644 --- a/zs.docs/StarSystem/Ivory Steel.md +++ b/zs.docs/StarSystem/Ivory Steel.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Titan's Fall]]" - "[[Mercury Forge]]" - "[[Sullen Dwarf]]" -x: 1724.4 -y: 556.6 +x: 552.8 +y: 371.2 --- diff --git a/zs.docs/StarSystem/Lambda Gateway.md b/zs.docs/StarSystem/Lambda Gateway.md index 26f533f..03238de 100644 --- a/zs.docs/StarSystem/Lambda Gateway.md +++ b/zs.docs/StarSystem/Lambda Gateway.md @@ -11,6 +11,6 @@ connectedSystems: - "[[Stellar Forge]]" - "[[Stronghold Cronus]]" - "[[Mercury Forge]]" -x: 2261.7 -y: 714.2 +x: 500.8 +y: 427.6 --- diff --git a/zs.docs/StarSystem/Leviathan's Wake.md b/zs.docs/StarSystem/Leviathan's Wake.md index 71e07d7..1c92638 100644 --- a/zs.docs/StarSystem/Leviathan's Wake.md +++ b/zs.docs/StarSystem/Leviathan's Wake.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Shattered Light]]" - "[[Inferno's Edge Stronghold]]" - "[[Tartarus Expanse]]" -x: 1751.6 -y: 964.6 +x: 454.7 +y: 541.5 --- diff --git a/zs.docs/StarSystem/Lights Bounty.md b/zs.docs/StarSystem/Lights Bounty.md index 6136f39..59cfaf2 100644 --- a/zs.docs/StarSystem/Lights Bounty.md +++ b/zs.docs/StarSystem/Lights Bounty.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Ashes of Revenge]]" - "[[Stronghold Orion]]" - "[[The Undergrowth]]" -x: 686.4 -y: -92.6 +x: 618.2 +y: 170.3 --- diff --git a/zs.docs/StarSystem/Magenta Bloom.md b/zs.docs/StarSystem/Magenta Bloom.md index baf35b6..85d3fea 100644 --- a/zs.docs/StarSystem/Magenta Bloom.md +++ b/zs.docs/StarSystem/Magenta Bloom.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Pleiades Cluster]]" - "[[Zeta Horizon]]" - "[[Xenthic Fields]]" -x: -144.2 -y: 1423.5 +x: 261.2 +y: 855.5 --- diff --git a/zs.docs/StarSystem/Magnetic Folly.md b/zs.docs/StarSystem/Magnetic Folly.md index 12935f8..18e52a8 100644 --- a/zs.docs/StarSystem/Magnetic Folly.md +++ b/zs.docs/StarSystem/Magnetic Folly.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Epsilon Arc]]" - "[[Scarlett Ire]]" - "[[Galactic Zenith]]" -x: 1641.5 -y: 709.7 +x: 338.2 +y: 468.1 --- diff --git a/zs.docs/StarSystem/Mercury Forge.md b/zs.docs/StarSystem/Mercury Forge.md index 90e64a3..a71eca5 100644 --- a/zs.docs/StarSystem/Mercury Forge.md +++ b/zs.docs/StarSystem/Mercury Forge.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Lambda Gateway]]" - "[[Ivory Steel]]" - "[[Sullen Dwarf]]" -x: 2218.3 -y: 543.2 +x: 603.5 +y: 414.0 --- diff --git a/zs.docs/StarSystem/Nebulon Drift.md b/zs.docs/StarSystem/Nebulon Drift.md index 434de53..90ad2f8 100644 --- a/zs.docs/StarSystem/Nebulon Drift.md +++ b/zs.docs/StarSystem/Nebulon Drift.md @@ -11,6 +11,6 @@ connectedSystems: - "[[The Crucible]]" - "[[Hyperion Nebula]]" - "[[Gamma Swarm]]" -x: 1901.3 -y: 1062.2 +x: 304.2 +y: 223.3 --- diff --git a/zs.docs/StarSystem/Neera's Gift.md b/zs.docs/StarSystem/Neera's Gift.md index d422be3..8aa6241 100644 --- a/zs.docs/StarSystem/Neera's Gift.md +++ b/zs.docs/StarSystem/Neera's Gift.md @@ -8,6 +8,6 @@ connectedSystems: - "[[The High Council]]" - "[[Glittering Hope]]" - "[[Stronghold Leo]]" -x: -316.3 -y: 1083.0 +x: 159.3 +y: 683.6 --- diff --git a/zs.docs/StarSystem/Negative Ion.md b/zs.docs/StarSystem/Negative Ion.md index 7852987..b7011f5 100644 --- a/zs.docs/StarSystem/Negative Ion.md +++ b/zs.docs/StarSystem/Negative Ion.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Sigma Vortex]]" - "[[Orion's Gate]]" - "[[The Undergrowth]]" -x: 2284.5 -y: 828.1 +x: 509.2 +y: 295.9 --- diff --git a/zs.docs/StarSystem/Nexus Prime.md b/zs.docs/StarSystem/Nexus Prime.md index a20e3f4..84f2cbb 100644 --- a/zs.docs/StarSystem/Nexus Prime.md +++ b/zs.docs/StarSystem/Nexus Prime.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Typhon's Call]]" - "[[The High Council]]" - "[[Artemis Grotto]]" -x: -180.2 -y: 569.1 +x: 197.1 +y: 514.9 --- diff --git a/zs.docs/StarSystem/Noxious Energy.md b/zs.docs/StarSystem/Noxious Energy.md index 719a7ff..c7cca86 100644 --- a/zs.docs/StarSystem/Noxious Energy.md +++ b/zs.docs/StarSystem/Noxious Energy.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Xenthic Fields]]" - "[[Draconis Reach]]" - "[[Gelid Storm]]" -x: 53.6 -y: 1487.3 +x: 427.3 +y: 899.3 --- diff --git a/zs.docs/StarSystem/Nucleic Redux.md b/zs.docs/StarSystem/Nucleic Redux.md index bc9bd4e..2d1fa37 100644 --- a/zs.docs/StarSystem/Nucleic Redux.md +++ b/zs.docs/StarSystem/Nucleic Redux.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Crimson Expanse]]" - "[[Devil's Trident]]" - "[[Void Star]]" -x: 2091.4 -y: 1061.7 +x: 264.7 +y: 613.0 --- diff --git a/zs.docs/StarSystem/Obsidian Palace.md b/zs.docs/StarSystem/Obsidian Palace.md index 0ccc9db..99f7ad2 100644 --- a/zs.docs/StarSystem/Obsidian Palace.md +++ b/zs.docs/StarSystem/Obsidian Palace.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Forge of Souls]]" - "[[Starless Sky]]" - "[[Ivory Fields]]" -x: 719.7 -y: 1024.8 +x: 647.1 +y: 717.6 --- diff --git a/zs.docs/StarSystem/Occam's Abode.md b/zs.docs/StarSystem/Occam's Abode.md index 12871b8..25a44fc 100644 --- a/zs.docs/StarSystem/Occam's Abode.md +++ b/zs.docs/StarSystem/Occam's Abode.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Uanachian Whirlpool]]" - "[[Gamma Swarm]]" - "[[Stronghold Tau]]" -x: -174.3 -y: 249.9 +x: 172.9 +y: 330.2 --- diff --git a/zs.docs/StarSystem/Orion's Gate.md b/zs.docs/StarSystem/Orion's Gate.md index 73fb424..2612ad7 100644 --- a/zs.docs/StarSystem/Orion's Gate.md +++ b/zs.docs/StarSystem/Orion's Gate.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Sigma Vortex]]" - "[[Negative Ion]]" - "[[The Undergrowth]]" -x: 1778.3 -y: 1049.4 +x: 452.5 +y: 245.8 --- diff --git a/zs.docs/StarSystem/Pleiades Cluster.md b/zs.docs/StarSystem/Pleiades Cluster.md index a311847..a988d29 100644 --- a/zs.docs/StarSystem/Pleiades Cluster.md +++ b/zs.docs/StarSystem/Pleiades Cluster.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Stronghold Leo]]" - "[[Aquila Rift]]" - "[[Magenta Bloom]]" -x: -97.6 -y: 1259.1 +x: 277.7 +y: 767.4 --- diff --git a/zs.docs/StarSystem/Proxima Prime.md b/zs.docs/StarSystem/Proxima Prime.md index f76e0fa..238f899 100644 --- a/zs.docs/StarSystem/Proxima Prime.md +++ b/zs.docs/StarSystem/Proxima Prime.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Yellow Dawn]]" - "[[Eden's Heart]]" - "[[The Undergrowth]]" -x: 2259.3 -y: 951.7 +x: 478.7 +y: 153.3 --- diff --git a/zs.docs/StarSystem/Quartzalian Berth.md b/zs.docs/StarSystem/Quartzalian Berth.md index 08adeea..b2ec6cb 100644 --- a/zs.docs/StarSystem/Quartzalian Berth.md +++ b/zs.docs/StarSystem/Quartzalian Berth.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Stronghold Orion]]" - "[[Andus Reach]]" - "[[Sullen Dwarf]]" -x: 1592.3 -y: 785.0 +x: 677.9 +y: 281.5 --- diff --git a/zs.docs/StarSystem/Raider's Reef.md b/zs.docs/StarSystem/Raider's Reef.md index 336e7b4..2701f7b 100644 --- a/zs.docs/StarSystem/Raider's Reef.md +++ b/zs.docs/StarSystem/Raider's Reef.md @@ -7,6 +7,6 @@ systemMastery: "[[Building Health and Shields]]" connectedSystems: - "[[Gamma Swarm]]" - "[[Stronghold Tau]]" -x: 2202.7 -y: 454.2 +x: 229.9 +y: 339.4 --- diff --git a/zs.docs/StarSystem/Scarlett Ire.md b/zs.docs/StarSystem/Scarlett Ire.md index 49caad9..f67bd48 100644 --- a/zs.docs/StarSystem/Scarlett Ire.md +++ b/zs.docs/StarSystem/Scarlett Ire.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Celestial Forge Stronghold]]" - "[[Magnetic Folly]]" - "[[Galactic Zenith]]" -x: 1973.9 -y: 1116.8 +x: 381.6 +y: 399.9 --- diff --git a/zs.docs/StarSystem/Shattered Light.md b/zs.docs/StarSystem/Shattered Light.md index 6eb0c48..b3da82b 100644 --- a/zs.docs/StarSystem/Shattered Light.md +++ b/zs.docs/StarSystem/Shattered Light.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Leviathan's Wake]]" - "[[Inferno's Edge Stronghold]]" - "[[Xenon Abyss]]" -x: 1692.4 -y: 467.5 +x: 390.7 +y: 537.3 --- diff --git a/zs.docs/StarSystem/Sigma Vortex.md b/zs.docs/StarSystem/Sigma Vortex.md index db54ef5..ba99de4 100644 --- a/zs.docs/StarSystem/Sigma Vortex.md +++ b/zs.docs/StarSystem/Sigma Vortex.md @@ -9,6 +9,6 @@ connectedSystems: - "[[The Crucible]]" - "[[Orion's Gate]]" - "[[Negative Ion]]" -x: 2344.5 -y: 758.9 +x: 439.2 +y: 313.4 --- diff --git a/zs.docs/StarSystem/Solaris Reach.md b/zs.docs/StarSystem/Solaris Reach.md index 4be5abd..49f3ed4 100644 --- a/zs.docs/StarSystem/Solaris Reach.md +++ b/zs.docs/StarSystem/Solaris Reach.md @@ -7,6 +7,6 @@ systemMastery: "[[Turret Damage]]" connectedSystems: - "[[Beta Clarity]]" - "[[Stronghold Nova Centauri]]" -x: 1660.7 -y: 986.6 +x: 383.1 +y: 168.6 --- diff --git a/zs.docs/StarSystem/Starless Sky.md b/zs.docs/StarSystem/Starless Sky.md index 0f621e0..e8db5ea 100644 --- a/zs.docs/StarSystem/Starless Sky.md +++ b/zs.docs/StarSystem/Starless Sky.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Forge of Souls]]" - "[[Obsidian Palace]]" - "[[Ivory Fields]]" -x: 486.2 -y: 1123.4 +x: 580.1 +y: 755.3 --- diff --git a/zs.docs/StarSystem/Steel Depths.md b/zs.docs/StarSystem/Steel Depths.md index 3e9c9ef..df8dbc2 100644 --- a/zs.docs/StarSystem/Steel Depths.md +++ b/zs.docs/StarSystem/Steel Depths.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Obsidian Palace]]" - "[[Wild's End]]" - "[[Stronghold Atlas]]" -x: 888.4 -y: 933.2 +x: 714.3 +y: 676.0 --- diff --git a/zs.docs/StarSystem/Stellar Forge.md b/zs.docs/StarSystem/Stellar Forge.md index e2dea1d..3380f6b 100644 --- a/zs.docs/StarSystem/Stellar Forge.md +++ b/zs.docs/StarSystem/Stellar Forge.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Galactic Zenith]]" - "[[Lambda Gateway]]" - "[[Stronghold Cronus]]" -x: 1571.6 -y: 649.8 +x: 489.9 +y: 486.8 --- diff --git a/zs.docs/StarSystem/Stronghold Atlas.md b/zs.docs/StarSystem/Stronghold Atlas.md index 503fca8..da4373a 100644 --- a/zs.docs/StarSystem/Stronghold Atlas.md +++ b/zs.docs/StarSystem/Stronghold Atlas.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Heigen Stream]]" - "[[Steel Depths]]" - "[[Wild's End]]" -x: 904.5 -y: 743.4 +x: 718.2 +y: 609.9 --- diff --git a/zs.docs/StarSystem/Stronghold Cronus.md b/zs.docs/StarSystem/Stronghold Cronus.md index cb5e1b8..e9a46d7 100644 --- a/zs.docs/StarSystem/Stronghold Cronus.md +++ b/zs.docs/StarSystem/Stronghold Cronus.md @@ -11,6 +11,6 @@ connectedSystems: - "[[Vulcan's Breath]]" - "[[Erebus Deep]]" - "[[Mercury Forge]]" -x: 1835.0 -y: 1124.8 +x: 541.4 +y: 459.3 --- diff --git a/zs.docs/StarSystem/Stronghold Leo.md b/zs.docs/StarSystem/Stronghold Leo.md index 2e2e572..3bee39f 100644 --- a/zs.docs/StarSystem/Stronghold Leo.md +++ b/zs.docs/StarSystem/Stronghold Leo.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Glittering Hope]]" - "[[Neera's Gift]]" - "[[Pleiades Cluster]]" -x: -246.5 -y: 1198.2 +x: 193.0 +y: 752.7 --- diff --git a/zs.docs/StarSystem/Stronghold Nova Centauri.md b/zs.docs/StarSystem/Stronghold Nova Centauri.md index d9e159e..a5c860b 100644 --- a/zs.docs/StarSystem/Stronghold Nova Centauri.md +++ b/zs.docs/StarSystem/Stronghold Nova Centauri.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Solaris Reach]]" - "[[Yellow Dawn]]" - "[[Proxima Prime]]" -x: 322.9 -y: -167.2 +x: 399.2 +y: 109.8 --- diff --git a/zs.docs/StarSystem/Stronghold Orion.md b/zs.docs/StarSystem/Stronghold Orion.md index 0a26f02..ca0cbe6 100644 --- a/zs.docs/StarSystem/Stronghold Orion.md +++ b/zs.docs/StarSystem/Stronghold Orion.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Lights Bounty]]" - "[[Crystallic Genesis]]" - "[[Quartzalian Berth]]" -x: 767.2 -y: 17.7 +x: 670.9 +y: 204.3 --- diff --git a/zs.docs/StarSystem/Stronghold Tau.md b/zs.docs/StarSystem/Stronghold Tau.md index 3995628..163a50d 100644 --- a/zs.docs/StarSystem/Stronghold Tau.md +++ b/zs.docs/StarSystem/Stronghold Tau.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Occam's Abode]]" - "[[Raider's Reef]]" - "[[Nexus Prime]]" -x: -181.0 -y: 412.1 +x: 192.3 +y: 438.2 --- diff --git a/zs.docs/StarSystem/Stronghold Vega.md b/zs.docs/StarSystem/Stronghold Vega.md index 461a3e6..daf4803 100644 --- a/zs.docs/StarSystem/Stronghold Vega.md +++ b/zs.docs/StarSystem/Stronghold Vega.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Calm Belt]]" - "[[Gelid Storm]]" - "[[Starless Sky]]" -x: 327.2 -y: 1135.7 +x: 503.4 +y: 767.6 --- diff --git a/zs.docs/StarSystem/Sullen Dwarf.md b/zs.docs/StarSystem/Sullen Dwarf.md index 3a1617d..5d77c70 100644 --- a/zs.docs/StarSystem/Sullen Dwarf.md +++ b/zs.docs/StarSystem/Sullen Dwarf.md @@ -11,6 +11,6 @@ connectedSystems: - "[[Idal's Word]]" - "[[Mercury Forge]]" - "[[Ivory Steel]]" -x: 1603.9 -y: 507.7 +x: 658.7 +y: 368.8 --- diff --git a/zs.docs/StarSystem/Tartarus Expanse.md b/zs.docs/StarSystem/Tartarus Expanse.md index 3cda064..47f79da 100644 --- a/zs.docs/StarSystem/Tartarus Expanse.md +++ b/zs.docs/StarSystem/Tartarus Expanse.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Inferno's Edge Stronghold]]" - "[[Void Star]]" - "[[Aquila Rift]]" -x: 2382.3 -y: 668.8 +x: 456.1 +y: 635.9 --- diff --git a/zs.docs/StarSystem/The Crucible.md b/zs.docs/StarSystem/The Crucible.md index 2510e3a..e851f04 100644 --- a/zs.docs/StarSystem/The Crucible.md +++ b/zs.docs/StarSystem/The Crucible.md @@ -11,6 +11,6 @@ connectedSystems: - "[[Celestial Forge Stronghold]]" - "[[Sigma Vortex]]" - "[[Orion's Gate]]" -x: 1694.5 -y: 1078.8 +x: 376.8 +y: 272.0 --- diff --git a/zs.docs/StarSystem/The High Council.md b/zs.docs/StarSystem/The High Council.md index bbb9e73..74b6a5d 100644 --- a/zs.docs/StarSystem/The High Council.md +++ b/zs.docs/StarSystem/The High Council.md @@ -11,6 +11,6 @@ connectedSystems: - "[[Typhon's Call]]" - "[[Glittering Hope]]" - "[[Neera's Gift]]" -x: -206.0 -y: 863.0 +x: 191.4 +y: 614.1 --- diff --git a/zs.docs/StarSystem/The Undergrowth.md b/zs.docs/StarSystem/The Undergrowth.md index 0ad6cfe..1cc444b 100644 --- a/zs.docs/StarSystem/The Undergrowth.md +++ b/zs.docs/StarSystem/The Undergrowth.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Orion's Gate]]" - "[[Proxima Prime]]" - "[[Lights Bounty]]" -x: 2279.7 -y: 1037.8 +x: 539.7 +y: 219.8 --- diff --git a/zs.docs/StarSystem/Titan's Fall.md b/zs.docs/StarSystem/Titan's Fall.md index e7bb22c..3eb107b 100644 --- a/zs.docs/StarSystem/Titan's Fall.md +++ b/zs.docs/StarSystem/Titan's Fall.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Galactic Zenith]]" - "[[Lambda Gateway]]" - "[[Ivory Steel]]" -x: 1519.7 -y: 734.9 +x: 474.9 +y: 384.1 --- diff --git a/zs.docs/StarSystem/Typhon's Call.md b/zs.docs/StarSystem/Typhon's Call.md index 23d69aa..7b94924 100644 --- a/zs.docs/StarSystem/Typhon's Call.md +++ b/zs.docs/StarSystem/Typhon's Call.md @@ -10,6 +10,6 @@ connectedSystems: - "[[The High Council]]" - "[[Crimson Expanse]]" - "[[Nucleic Redux]]" -x: 2290.0 -y: 442.9 +x: 236.9 +y: 568.9 --- diff --git a/zs.docs/StarSystem/Uanachian Whirlpool.md b/zs.docs/StarSystem/Uanachian Whirlpool.md index e7bd902..0211acf 100644 --- a/zs.docs/StarSystem/Uanachian Whirlpool.md +++ b/zs.docs/StarSystem/Uanachian Whirlpool.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Endless Wastes]]" - "[[Gamma Swarm]]" - "[[Occam's Abode]]" -x: -158.1 -y: 74.5 +x: 185.1 +y: 217.0 --- diff --git a/zs.docs/StarSystem/Void Star.md b/zs.docs/StarSystem/Void Star.md index 62fbc2f..7ad6739 100644 --- a/zs.docs/StarSystem/Void Star.md +++ b/zs.docs/StarSystem/Void Star.md @@ -12,6 +12,6 @@ connectedSystems: - "[[Xenon Abyss]]" - "[[Inferno's Edge Stronghold]]" - "[[Tartarus Expanse]]" -x: 2273.9 -y: 332.8 +x: 363.7 +y: 653.1 --- diff --git a/zs.docs/StarSystem/Vulcan's Breath.md b/zs.docs/StarSystem/Vulcan's Breath.md index f6234ba..c25a9f3 100644 --- a/zs.docs/StarSystem/Vulcan's Breath.md +++ b/zs.docs/StarSystem/Vulcan's Breath.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Erebus Deep]]" - "[[Ebony Keep]]" - "[[Helios Crossing]]" -x: 2404.9 -y: 822.4 +x: 547.7 +y: 537.4 --- diff --git a/zs.docs/StarSystem/Wild's End.md b/zs.docs/StarSystem/Wild's End.md index fb2eed0..32ad850 100644 --- a/zs.docs/StarSystem/Wild's End.md +++ b/zs.docs/StarSystem/Wild's End.md @@ -10,6 +10,6 @@ connectedSystems: - "[[Obsidian Palace]]" - "[[Steel Depths]]" - "[[Stronghold Atlas]]" -x: 1573.4 -y: 979.9 +x: 650.6 +y: 640.3 --- diff --git a/zs.docs/StarSystem/Xenon Abyss.md b/zs.docs/StarSystem/Xenon Abyss.md index 8ad2993..32301c6 100644 --- a/zs.docs/StarSystem/Xenon Abyss.md +++ b/zs.docs/StarSystem/Xenon Abyss.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Void Star]]" - "[[Inferno's Edge Stronghold]]" - "[[Shattered Light]]" -x: 153.8 -y: 1421.0 +x: 364.1 +y: 582.9 --- diff --git a/zs.docs/StarSystem/Xenthic Fields.md b/zs.docs/StarSystem/Xenthic Fields.md index 37c7465..fe79fb0 100644 --- a/zs.docs/StarSystem/Xenthic Fields.md +++ b/zs.docs/StarSystem/Xenthic Fields.md @@ -9,6 +9,6 @@ connectedSystems: - "[[Zeta Horizon]]" - "[[Draconis Reach]]" - "[[Noxious Energy]]" -x: -29.7 -y: 1471.5 +x: 334.0 +y: 894.7 --- diff --git a/zs.docs/StarSystem/Yellow Dawn.md b/zs.docs/StarSystem/Yellow Dawn.md index 0e8e596..d88216c 100644 --- a/zs.docs/StarSystem/Yellow Dawn.md +++ b/zs.docs/StarSystem/Yellow Dawn.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Stronghold Nova Centauri]]" - "[[Proxima Prime]]" - "[[Eden's Heart]]" -x: 426.5 -y: -199.2 +x: 448.6 +y: 89.8 --- diff --git a/zs.docs/StarSystem/Zeta Horizon.md b/zs.docs/StarSystem/Zeta Horizon.md index 2234618..c973939 100644 --- a/zs.docs/StarSystem/Zeta Horizon.md +++ b/zs.docs/StarSystem/Zeta Horizon.md @@ -8,6 +8,6 @@ connectedSystems: - "[[Burning Cairn]]" - "[[Xenthic Fields]]" - "[[Magenta Bloom]]" -x: 2393.6 -y: 565.2 +x: 321.3 +y: 826.1 ---