diff --git a/Chrono/Build/Program.cs b/Chrono/Build/Program.cs index 7238e64..71daaba 100644 --- a/Chrono/Build/Program.cs +++ b/Chrono/Build/Program.cs @@ -5,7 +5,7 @@ using Chrono.Model; var repoRoot = Path.GetFullPath(Path.Combine(AppContext.BaseDirectory, "..", "..", "..", "..", "..")); var docsDir = Path.Combine(repoRoot, "chrono.docs"); var webWwwRoot = Path.Combine(repoRoot, "Chrono", "Web", "wwwroot"); -var generatedFile = Path.Combine(repoRoot, "Chrono", "Web", "Generated", "Cards.g.cs"); +var generatedFile = Path.Combine(repoRoot, "Chrono", "Shared", "Generated", "Cards.g.cs"); Console.WriteLine($"Repo root: {repoRoot}"); Console.WriteLine($"Docs dir: {docsDir}"); @@ -163,7 +163,7 @@ foreach (var file in deckFiles) Console.WriteLine($"Parsed {decks.Count} deck files"); // Generate Decks.g.cs -var deckGeneratedFile = Path.Combine(repoRoot, "Chrono", "Web", "Generated", "Decks.g.cs"); +var deckGeneratedFile = Path.Combine(repoRoot, "Chrono", "Shared", "Generated", "Decks.g.cs"); Directory.CreateDirectory(Path.GetDirectoryName(deckGeneratedFile)!); using var deckWriter = new StreamWriter(deckGeneratedFile, false, Encoding.UTF8); deckWriter.WriteLine("// "); diff --git a/Chrono/Chrono.sln b/Chrono/Chrono.sln index 458e9a4..63fd9e4 100644 --- a/Chrono/Chrono.sln +++ b/Chrono/Chrono.sln @@ -12,6 +12,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests\Tests.csproj EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Server", "Server\Server.csproj", "{BFB7B73F-EFDD-4DE8-89F2-E1CBE1B55C27}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Shared", "Shared\Shared.csproj", "{30D8468D-01E1-4D8A-99AF-EE4A75A5E956}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -94,6 +96,18 @@ Global {BFB7B73F-EFDD-4DE8-89F2-E1CBE1B55C27}.Release|x64.Build.0 = Release|Any CPU {BFB7B73F-EFDD-4DE8-89F2-E1CBE1B55C27}.Release|x86.ActiveCfg = Release|Any CPU {BFB7B73F-EFDD-4DE8-89F2-E1CBE1B55C27}.Release|x86.Build.0 = Release|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Debug|Any CPU.Build.0 = Debug|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Debug|x64.ActiveCfg = Debug|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Debug|x64.Build.0 = Debug|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Debug|x86.ActiveCfg = Debug|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Debug|x86.Build.0 = Debug|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Release|Any CPU.ActiveCfg = Release|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Release|Any CPU.Build.0 = Release|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Release|x64.ActiveCfg = Release|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Release|x64.Build.0 = Release|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Release|x86.ActiveCfg = Release|Any CPU + {30D8468D-01E1-4D8A-99AF-EE4A75A5E956}.Release|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Chrono/Web/Generated/Cards.g.cs b/Chrono/Shared/Generated/Cards.g.cs similarity index 100% rename from Chrono/Web/Generated/Cards.g.cs rename to Chrono/Shared/Generated/Cards.g.cs diff --git a/Chrono/Web/Generated/Decks.g.cs b/Chrono/Shared/Generated/Decks.g.cs similarity index 100% rename from Chrono/Web/Generated/Decks.g.cs rename to Chrono/Shared/Generated/Decks.g.cs diff --git a/Chrono/Web/Layout/MainLayout.razor b/Chrono/Shared/Layout/MainLayout.razor similarity index 80% rename from Chrono/Web/Layout/MainLayout.razor rename to Chrono/Shared/Layout/MainLayout.razor index 1bdc6e9..19b17e1 100644 --- a/Chrono/Web/Layout/MainLayout.razor +++ b/Chrono/Shared/Layout/MainLayout.razor @@ -1,4 +1,5 @@ -@inherits LayoutComponentBase +@namespace Shared.Layout +@inherits LayoutComponentBase
\ No newline at end of file +
diff --git a/Chrono/Web/Layout/MainLayout.razor.css b/Chrono/Shared/Layout/MainLayout.razor.css similarity index 100% rename from Chrono/Web/Layout/MainLayout.razor.css rename to Chrono/Shared/Layout/MainLayout.razor.css diff --git a/Chrono/Web/Layout/NavMenu.razor b/Chrono/Shared/Layout/NavMenu.razor similarity index 95% rename from Chrono/Web/Layout/NavMenu.razor rename to Chrono/Shared/Layout/NavMenu.razor index 1189715..dadd8ca 100644 --- a/Chrono/Web/Layout/NavMenu.razor +++ b/Chrono/Shared/Layout/NavMenu.razor @@ -1,4 +1,6 @@ - - diff --git a/Chrono/Web/Pages/Home.razor.css b/Chrono/Shared/Pages/Home.razor.css similarity index 99% rename from Chrono/Web/Pages/Home.razor.css rename to Chrono/Shared/Pages/Home.razor.css index 42053fc..6c2767c 100644 --- a/Chrono/Web/Pages/Home.razor.css +++ b/Chrono/Shared/Pages/Home.razor.css @@ -291,4 +291,4 @@ .home-stats { grid-template-columns: repeat(2, 1fr); } -} \ No newline at end of file +} diff --git a/Chrono/Shared/Pages/NotFound.razor b/Chrono/Shared/Pages/NotFound.razor new file mode 100644 index 0000000..6fbbf95 --- /dev/null +++ b/Chrono/Shared/Pages/NotFound.razor @@ -0,0 +1,6 @@ +@namespace Shared.Pages +@page "/not-found" +@layout MainLayout + +

Not Found

+

Sorry, the content you are looking for does not exist.

diff --git a/Chrono/Shared/Shared.csproj b/Chrono/Shared/Shared.csproj new file mode 100644 index 0000000..e3d27d4 --- /dev/null +++ b/Chrono/Shared/Shared.csproj @@ -0,0 +1,35 @@ + + + + net10.0 + enable + enable + + + + + + + + + + + + + + + + + + + <_BuildProject>$(MSBuildThisFileDirectory)..\Build\Build.csproj + + + + + + + + + + diff --git a/Chrono/Shared/_Imports.razor b/Chrono/Shared/_Imports.razor new file mode 100644 index 0000000..c43fdb0 --- /dev/null +++ b/Chrono/Shared/_Imports.razor @@ -0,0 +1,12 @@ +@using System.Net.Http +@using System.Net.Http.Json +@using Chrono.Model +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.JSInterop +@using Shared.Layout +@using Telerik.Blazor +@using Telerik.Blazor.Components +@using Telerik.DataSource diff --git a/Chrono/Web/App.razor b/Chrono/Web/App.razor index 735b1ff..d8c17c7 100644 --- a/Chrono/Web/App.razor +++ b/Chrono/Web/App.razor @@ -1,5 +1,4 @@ -@using Web.Pages - + diff --git a/Chrono/Web/Generated/.gitkeep b/Chrono/Web/Generated/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/Chrono/Web/Pages/DeckDetail.razor.css b/Chrono/Web/Pages/DeckDetail.razor.css deleted file mode 100644 index 514c94f..0000000 --- a/Chrono/Web/Pages/DeckDetail.razor.css +++ /dev/null @@ -1,203 +0,0 @@ -.deck-detail-page { - max-width: 800px; - margin: 0 auto; - padding: 0 1rem 3rem; -} - -.back-link { - display: inline-flex; - align-items: center; - gap: 0.4rem; - color: var(--text-secondary); - text-decoration: none; - font-size: 0.85rem; - margin-bottom: 1.5rem; - transition: color var(--transition); -} - -.back-link:hover { - color: var(--accent); -} - -.deck-article { - background: var(--bg-surface); - border: 1px solid var(--border); - border-radius: var(--radius); - padding: 2rem; -} - -.deck-header { - margin-bottom: 2rem; - padding-bottom: 1.5rem; - border-bottom: 1px solid var(--border); -} - -.deck-header h1 { - margin: 0 0 0.5rem; -} - -.deck-factions { - display: flex; - gap: 0.4rem; - margin-bottom: 0.5rem; - flex-wrap: wrap; -} - -.faction-badge { - display: inline-block; - font-size: 0.75rem; - font-weight: 600; - padding: 0.2rem 0.7rem; - border-radius: 999px; - background: var(--bg-elevated); - color: var(--accent); - border: 1px solid var(--border); - text-transform: uppercase; - letter-spacing: 0.05em; -} - -.deck-card-count { - font-size: 0.85rem; - color: var(--text-muted); - margin: 0; -} - -.deck-section { - margin-bottom: 2rem; -} - -.deck-section:last-child { - margin-bottom: 0; -} - -.deck-section h2 { - font-size: 1.05rem; - font-weight: 600; - margin: 0 0 1rem; - display: flex; - align-items: center; - gap: 0.5rem; - color: var(--text-primary); -} - -.deck-card-row { - display: flex; - flex-wrap: wrap; - gap: 0.75rem; -} - -.mini-card-btn { - background: none; - border: none; - padding: 0; - cursor: pointer; - font-family: inherit; - display: block; -} - -.mini-card { - width: 100px; - background: var(--bg-elevated); - border: 1px solid var(--border); - border-radius: var(--radius-sm); - overflow: hidden; - transition: border-color var(--transition), transform var(--transition); - position: relative; - aspect-ratio: 2.5 / 3.5; - display: flex; - flex-direction: column; -} - -.mini-card:hover { - border-color: var(--accent); - z-index: 10; -} - -.mini-card-img { - flex: 1; - overflow: hidden; - background: var(--bg-primary); - display: flex; - align-items: center; - justify-content: center; -} - -.mini-card-img img { - width: 100%; - height: 100%; - object-fit: contain; - background: #000; -} - -.mini-card-name { - font-size: 0.7rem; - font-weight: 500; - padding: 0.25rem 0.3rem; - text-align: center; - color: var(--text-secondary); - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - background: var(--bg-elevated); - border-top: 1px solid var(--border); -} - -.mini-card-stack { - position: relative; - width: 110px; /* Base width + some offset space */ - height: 140px; /* Adjusted for aspect ratio */ -} - -.mini-card-stack .mini-card { - position: absolute; - top: calc(var(--stack-index) * 4px); - left: calc(var(--stack-index) * 4px); - z-index: calc(10 - var(--stack-index)); -} - -.mini-card-count { - position: absolute; - top: 0.25rem; - right: 0.25rem; - background: var(--accent); - color: white; - font-size: 0.65rem; - font-weight: 800; - padding: 0.1rem 0.3rem; - border-radius: 4px; - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.3); - z-index: 20; -} - -.mini-card-btn.is-stacked:hover .mini-card { - transform: translate(calc(var(--stack-index) * 2px), calc(var(--stack-index) * -2px)); -} - -.deck-description { - font-size: 0.95rem; - line-height: 1.7; - color: var(--text-secondary); -} - - -.deck-description p { - margin: 0 0 1rem; -} - -.deck-description p:last-child { - margin-bottom: 0; -} - -.empty-state { - text-align: center; - padding: 4rem 1rem; - color: var(--text-muted); -} - -.empty-state i { - font-size: 3rem; - display: block; - margin-bottom: 1rem; -} - - diff --git a/Chrono/Web/Pages/NotFound.razor b/Chrono/Web/Pages/NotFound.razor deleted file mode 100644 index 917ada1..0000000 --- a/Chrono/Web/Pages/NotFound.razor +++ /dev/null @@ -1,5 +0,0 @@ -@page "/not-found" -@layout MainLayout - -

Not Found

-

Sorry, the content you are looking for does not exist.

\ No newline at end of file diff --git a/Chrono/Web/Web.csproj b/Chrono/Web/Web.csproj index 14d424b..c217d48 100644 --- a/Chrono/Web/Web.csproj +++ b/Chrono/Web/Web.csproj @@ -16,22 +16,6 @@ + - - - - - - - - - <_BuildProject>$(MSBuildThisFileDirectory)..\Build\Build.csproj - - - - - - - - diff --git a/Chrono/Web/_Imports.razor b/Chrono/Web/_Imports.razor index 29df494..3b779d9 100644 --- a/Chrono/Web/_Imports.razor +++ b/Chrono/Web/_Imports.razor @@ -7,8 +7,8 @@ @using Microsoft.AspNetCore.Components.Web.Virtualization @using Microsoft.AspNetCore.Components.WebAssembly.Http @using Microsoft.JSInterop -@using Web -@using Web.Layout +@using Shared.Layout +@using Shared.Pages @using Chrono.Components @using Telerik.Blazor @using Telerik.Blazor.Components diff --git a/chrono.docs/.obsidian/workspace.json b/chrono.docs/.obsidian/workspace.json index a97913e..e29fe4e 100644 --- a/chrono.docs/.obsidian/workspace.json +++ b/chrono.docs/.obsidian/workspace.json @@ -11,13 +11,14 @@ "id": "9aaa8a83f2165190", "type": "leaf", "state": { - "type": "bases", + "type": "markdown", "state": { - "file": "_Debuff.base", - "viewName": "Table" + "file": "Immortalized/[[Phasetide]]/Alina, the Overflowing Cup.md", + "mode": "source", + "source": false }, - "icon": "lucide-table", - "title": "_Debuff" + "icon": "lucide-file", + "title": "Alina, the Overflowing Cup" } } ] @@ -182,12 +183,26 @@ "bases:Create new base": false } }, - "active": "0ce4e65b7e2934e1", + "active": "9aaa8a83f2165190", "lastOpenFiles": [ + "_Factions.base", + "Redirect/Cores.md", + "Redirect/Agents.md", + "Rule/Round End.md", + "Rule/Discarded.md", + "Rule/Core.md", + "Rule/Chain.md", + "Decks/Rewind Me.canvas", + "Faction/Singularity.md", + "Faction/Splintergleam.md", + "Faction/Silence.md", + "Faction/Phasetide.md", + "Faction/Lifeblood.md", + "Faction/Sungrace.md", + "_Debuff.base", "Keyword/Sprout.md", "Keyword/Sprout.md", "Keyword/Siphon.md", - "_Debuff.base", "Debuff/Transient.md", "Debuff/Temporary.md", "Debuff/Exposed.md", @@ -207,20 +222,6 @@ "Agent/[[Lifeblood]]/2", "Agent/[[Phasetide]]/5", "Keyword/Surge.md", - "Keyword/Breakdown.md", - "Keyword/Revive.md", - "Keyword/Refresh.md", - "Keyword/Rejuvenate.md", - "Keyword/Heal.md", - "Keyword/Fervor.md", - "Keyword/Evasive.md", - "Keyword/Confront.md", - "Keyword/Cleave.md", - "Keyword/Blitz.md", - "Keyword/Draw.md", - "Spell/[[Lifeblood]]/Affront to Nature.md", - "Timeline/[[Lifeblood]]/Deadly Fauna.md", - "Decks/Rewind Me.canvas", "images/Wolf.png", "images/Seedling.png", "images/Pocket Scout.png", diff --git a/chrono.docs/Faction/Lifeblood.md b/chrono.docs/Faction/Lifeblood.md index c17ed9b..fcf8d66 100644 --- a/chrono.docs/Faction/Lifeblood.md +++ b/chrono.docs/Faction/Lifeblood.md @@ -1,3 +1,6 @@ --- category: Faction --- +Concepts: +- Wide Boards +- Overpower \ No newline at end of file diff --git a/chrono.docs/Faction/Phasetide.md b/chrono.docs/Faction/Phasetide.md index c17ed9b..d229d7f 100644 --- a/chrono.docs/Faction/Phasetide.md +++ b/chrono.docs/Faction/Phasetide.md @@ -1,3 +1,6 @@ --- category: Faction --- +Concepts: +- Healing +- \ No newline at end of file diff --git a/chrono.docs/Faction/Silence.md b/chrono.docs/Faction/Silence.md index c17ed9b..692e03c 100644 --- a/chrono.docs/Faction/Silence.md +++ b/chrono.docs/Faction/Silence.md @@ -1,3 +1,6 @@ --- category: Faction --- +Concepts: +- Activatable Agents +- \ No newline at end of file diff --git a/chrono.docs/Faction/Singularity.md b/chrono.docs/Faction/Singularity.md index c17ed9b..84ac8a3 100644 --- a/chrono.docs/Faction/Singularity.md +++ b/chrono.docs/Faction/Singularity.md @@ -1,3 +1,5 @@ --- category: Faction --- +Concepts: +- Discard \ No newline at end of file diff --git a/chrono.docs/Faction/Splintergleam.md b/chrono.docs/Faction/Splintergleam.md index c17ed9b..b0bfb55 100644 --- a/chrono.docs/Faction/Splintergleam.md +++ b/chrono.docs/Faction/Splintergleam.md @@ -1,3 +1,7 @@ --- category: Faction --- +Concepts: +- Self Damage +- Bleed +- \ No newline at end of file diff --git a/chrono.docs/Faction/Sungrace.md b/chrono.docs/Faction/Sungrace.md index c17ed9b..f40d7c0 100644 --- a/chrono.docs/Faction/Sungrace.md +++ b/chrono.docs/Faction/Sungrace.md @@ -1,3 +1,7 @@ --- category: Faction --- +Concepts: +- Ramp +- Using and Replenishing Reserved Energy +- \ No newline at end of file