1 Commits

Author SHA1 Message Date
6d486f49 73f29cea08 Updating version 2026-03-23 22:14:58 -04:00
170 changed files with 92 additions and 121029 deletions
-16
View File
@@ -1,16 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
<StaticWebAssetProjectMode>Default</StaticWebAssetProjectMode>
<BlazorDisableThrowNavigationException>true</BlazorDisableThrowNavigationException>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.0" />
</ItemGroup>
</Project>
-19
View File
@@ -1,19 +0,0 @@
@page "/counter"
@rendermode InteractiveWebAssembly
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
-5
View File
@@ -1,5 +0,0 @@
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
await builder.Build().RunAsync();
-9
View File
@@ -1,9 +0,0 @@
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Client.Client
@@ -1,8 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
@@ -1,8 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
-15
View File
@@ -1,15 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<BlazorDisableThrowNavigationException>true</BlazorDisableThrowNavigationException>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Client.Client\Client.Client.csproj" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="10.0.0" />
</ItemGroup>
</Project>
-22
View File
@@ -1,22 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<base href="/" />
<ResourcePreloader />
<link rel="stylesheet" href="@Assets["lib/bootstrap/dist/css/bootstrap.min.css"]" />
<link rel="stylesheet" href="@Assets["app.css"]" />
<link rel="stylesheet" href="@Assets["Client.styles.css"]" />
<ImportMap />
<link rel="icon" type="image/png" href="favicon.png" />
<HeadOutlet />
</head>
<body>
<Routes />
<script src="@Assets["_framework/blazor.web.js"]"></script>
</body>
</html>
@@ -1,23 +0,0 @@
@inherits LayoutComponentBase
<div class="page">
<div class="sidebar">
<NavMenu />
</div>
<main>
<div class="top-row px-4">
<a href="https://learn.microsoft.com/aspnet/core/" target="_blank">About</a>
</div>
<article class="content px-4">
@Body
</article>
</main>
</div>
<div id="blazor-error-ui" data-nosnippet>
An unhandled error has occurred.
<a href="." class="reload">Reload</a>
<span class="dismiss">🗙</span>
</div>
@@ -1,98 +0,0 @@
.page {
position: relative;
display: flex;
flex-direction: column;
}
main {
flex: 1;
}
.sidebar {
background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}
.top-row {
background-color: #f7f7f7;
border-bottom: 1px solid #d6d5d5;
justify-content: flex-end;
height: 3.5rem;
display: flex;
align-items: center;
}
.top-row ::deep a, .top-row ::deep .btn-link {
white-space: nowrap;
margin-left: 1.5rem;
text-decoration: none;
}
.top-row ::deep a:hover, .top-row ::deep .btn-link:hover {
text-decoration: underline;
}
.top-row ::deep a:first-child {
overflow: hidden;
text-overflow: ellipsis;
}
@media (max-width: 640.98px) {
.top-row {
justify-content: space-between;
}
.top-row ::deep a, .top-row ::deep .btn-link {
margin-left: 0;
}
}
@media (min-width: 641px) {
.page {
flex-direction: row;
}
.sidebar {
width: 250px;
height: 100vh;
position: sticky;
top: 0;
}
.top-row {
position: sticky;
top: 0;
z-index: 1;
}
.top-row.auth ::deep a:first-child {
flex: 1;
text-align: right;
width: 0;
}
.top-row, article {
padding-left: 2rem !important;
padding-right: 1.5rem !important;
}
}
#blazor-error-ui {
color-scheme: light only;
background: lightyellow;
bottom: 0;
box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
box-sizing: border-box;
display: none;
left: 0;
padding: 0.6rem 1.25rem 0.7rem 1.25rem;
position: fixed;
width: 100%;
z-index: 1000;
}
#blazor-error-ui .dismiss {
cursor: pointer;
position: absolute;
right: 0.75rem;
top: 0.5rem;
}
@@ -1,30 +0,0 @@
<div class="top-row ps-3 navbar navbar-dark">
<div class="container-fluid">
<a class="navbar-brand" href="">Client</a>
</div>
</div>
<input type="checkbox" title="Navigation menu" class="navbar-toggler" />
<div class="nav-scrollable" onclick="document.querySelector('.navbar-toggler').click()">
<nav class="nav flex-column">
<div class="nav-item px-3">
<NavLink class="nav-link" href="" Match="NavLinkMatch.All">
<span class="bi bi-house-door-fill-nav-menu" aria-hidden="true"></span> Home
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="counter">
<span class="bi bi-plus-square-fill-nav-menu" aria-hidden="true"></span> Counter
</NavLink>
</div>
<div class="nav-item px-3">
<NavLink class="nav-link" href="weather">
<span class="bi bi-list-nested-nav-menu" aria-hidden="true"></span> Weather
</NavLink>
</div>
</nav>
</div>
@@ -1,105 +0,0 @@
.navbar-toggler {
appearance: none;
cursor: pointer;
width: 3.5rem;
height: 2.5rem;
color: white;
position: absolute;
top: 0.5rem;
right: 1rem;
border: 1px solid rgba(255, 255, 255, 0.1);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}
.navbar-toggler:checked {
background-color: rgba(255, 255, 255, 0.5);
}
.top-row {
min-height: 3.5rem;
background-color: rgba(0,0,0,0.4);
}
.navbar-brand {
font-size: 1.1rem;
}
.bi {
display: inline-block;
position: relative;
width: 1.25rem;
height: 1.25rem;
margin-right: 0.75rem;
top: -1px;
background-size: cover;
}
.bi-house-door-fill-nav-menu {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}
.bi-plus-square-fill-nav-menu {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}
.bi-list-nested-nav-menu {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}
.nav-item {
font-size: 0.9rem;
padding-bottom: 0.5rem;
}
.nav-item:first-of-type {
padding-top: 1rem;
}
.nav-item:last-of-type {
padding-bottom: 1rem;
}
.nav-item ::deep .nav-link {
color: #d7d7d7;
background: none;
border: none;
border-radius: 4px;
height: 3rem;
display: flex;
align-items: center;
line-height: 3rem;
width: 100%;
}
.nav-item ::deep a.active {
background-color: rgba(255,255,255,0.37);
color: white;
}
.nav-item ::deep .nav-link:hover {
background-color: rgba(255,255,255,0.1);
color: white;
}
.nav-scrollable {
display: none;
}
.navbar-toggler:checked ~ .nav-scrollable {
display: block;
}
@media (min-width: 641px) {
.navbar-toggler {
display: none;
}
.nav-scrollable {
/* Never collapse the sidebar for wide screens */
display: block;
/* Allow sidebar to scroll for tall menus */
height: calc(100vh - 3.5rem);
overflow-y: auto;
}
}
@@ -1,36 +0,0 @@
@page "/Error"
@using System.Diagnostics
<PageTitle>Error</PageTitle>
<h1 class="text-danger">Error.</h1>
<h2 class="text-danger">An error occurred while processing your request.</h2>
@if (ShowRequestId)
{
<p>
<strong>Request ID:</strong> <code>@RequestId</code>
</p>
}
<h3>Development Mode</h3>
<p>
Swapping to <strong>Development</strong> environment will display more detailed information about the error that occurred.
</p>
<p>
<strong>The Development environment shouldn't be enabled for deployed applications.</strong>
It can result in displaying sensitive information from exceptions to end users.
For local debugging, enable the <strong>Development</strong> environment by setting the <strong>ASPNETCORE_ENVIRONMENT</strong> environment variable to <strong>Development</strong>
and restarting the app.
</p>
@code{
[CascadingParameter]
private HttpContext? HttpContext { get; set; }
private string? RequestId { get; set; }
private bool ShowRequestId => !string.IsNullOrEmpty(RequestId);
protected override void OnInitialized() =>
RequestId = Activity.Current?.Id ?? HttpContext?.TraceIdentifier;
}
@@ -1,7 +0,0 @@
@page "/"
<PageTitle>Home</PageTitle>
<h1>Hello, world!</h1>
Welcome to your new app.
@@ -1,5 +0,0 @@
@page "/not-found"
@layout MainLayout
<h3>Not Found</h3>
<p>Sorry, the content you are looking for does not exist.</p>
@@ -1,64 +0,0 @@
@page "/weather"
@attribute [StreamRendering]
<PageTitle>Weather</PageTitle>
<h1>Weather</h1>
<p>This component demonstrates showing data.</p>
@if (forecasts == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Date</th>
<th aria-label="Temperature in Celsius">Temp. (C)</th>
<th aria-label="Temperature in Fahrenheit">Temp. (F)</th>
<th>Summary</th>
</tr>
</thead>
<tbody>
@foreach (var forecast in forecasts)
{
<tr>
<td>@forecast.Date.ToShortDateString()</td>
<td>@forecast.TemperatureC</td>
<td>@forecast.TemperatureF</td>
<td>@forecast.Summary</td>
</tr>
}
</tbody>
</table>
}
@code {
private WeatherForecast[]? forecasts;
protected override async Task OnInitializedAsync()
{
// Simulate asynchronous loading to demonstrate streaming rendering
await Task.Delay(500);
var startDate = DateOnly.FromDateTime(DateTime.Now);
var summaries = new[] { "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching" };
forecasts = Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = startDate.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = summaries[Random.Shared.Next(summaries.Length)]
}).ToArray();
}
private class WeatherForecast
{
public DateOnly Date { get; set; }
public int TemperatureC { get; set; }
public string? Summary { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
}
-6
View File
@@ -1,6 +0,0 @@
<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(Client._Imports).Assembly }" NotFoundPage="typeof(Pages.NotFound)">
<Found Context="routeData">
<RouteView RouteData="routeData" DefaultLayout="typeof(Layout.MainLayout)" />
<FocusOnNavigate RouteData="routeData" Selector="h1" />
</Found>
</Router>
-12
View File
@@ -1,12 +0,0 @@
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Client
@using Client.Client
@using Client.Components
@using Client.Components.Layout
-32
View File
@@ -1,32 +0,0 @@
using Client.Client.Pages;
using Client.Components;
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveWebAssemblyComponents();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
app.UseWebAssemblyDebugging();
} else
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseStatusCodePagesWithReExecute("/not-found", createScopeForStatusCodePages: true);
app.UseHttpsRedirection();
app.UseAntiforgery();
app.MapStaticAssets();
app.MapRazorComponents<App>()
.AddInteractiveWebAssemblyRenderMode()
.AddAdditionalAssemblies(typeof(Client.Client._Imports).Assembly);
app.Run();
@@ -1,25 +0,0 @@
{
"$schema": "https://json.schemastore.org/launchsettings.json",
"profiles": {
"http": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "http://localhost:5029",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"https": {
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:7182;http://localhost:5029",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
}
}
@@ -1,8 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}
-9
View File
@@ -1,9 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}
-60
View File
@@ -1,60 +0,0 @@
html, body {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
a, .btn-link {
color: #006bb7;
}
.btn-primary {
color: #fff;
background-color: #1b6ec2;
border-color: #1861ac;
}
.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}
.content {
padding-top: 1.1rem;
}
h1:focus {
outline: none;
}
.valid.modified:not([type=checkbox]) {
outline: 1px solid #26b050;
}
.invalid {
outline: 1px solid #e50000;
}
.validation-message {
color: #e50000;
}
.blazor-error-boundary {
background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
padding: 1rem 1rem 1rem 3.7rem;
color: white;
}
.blazor-error-boundary::after {
content: "An error has occurred."
}
.darker-border-checkbox.form-check-input {
border-color: #929292;
}
.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
color: var(--bs-secondary-color);
text-align: end;
}
.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
text-align: start;
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,597 +0,0 @@
/*!
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root,
[data-bs-theme=light] {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-primary-text-emphasis: #052c65;
--bs-secondary-text-emphasis: #2b2f32;
--bs-success-text-emphasis: #0a3622;
--bs-info-text-emphasis: #055160;
--bs-warning-text-emphasis: #664d03;
--bs-danger-text-emphasis: #58151c;
--bs-light-text-emphasis: #495057;
--bs-dark-text-emphasis: #495057;
--bs-primary-bg-subtle: #cfe2ff;
--bs-secondary-bg-subtle: #e2e3e5;
--bs-success-bg-subtle: #d1e7dd;
--bs-info-bg-subtle: #cff4fc;
--bs-warning-bg-subtle: #fff3cd;
--bs-danger-bg-subtle: #f8d7da;
--bs-light-bg-subtle: #fcfcfd;
--bs-dark-bg-subtle: #ced4da;
--bs-primary-border-subtle: #9ec5fe;
--bs-secondary-border-subtle: #c4c8cb;
--bs-success-border-subtle: #a3cfbb;
--bs-info-border-subtle: #9eeaf9;
--bs-warning-border-subtle: #ffe69c;
--bs-danger-border-subtle: #f1aeb5;
--bs-light-border-subtle: #e9ecef;
--bs-dark-border-subtle: #adb5bd;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg: #fff;
--bs-body-bg-rgb: 255, 255, 255;
--bs-emphasis-color: #000;
--bs-emphasis-color-rgb: 0, 0, 0;
--bs-secondary-color: rgba(33, 37, 41, 0.75);
--bs-secondary-color-rgb: 33, 37, 41;
--bs-secondary-bg: #e9ecef;
--bs-secondary-bg-rgb: 233, 236, 239;
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
--bs-tertiary-color-rgb: 33, 37, 41;
--bs-tertiary-bg: #f8f9fa;
--bs-tertiary-bg-rgb: 248, 249, 250;
--bs-heading-color: inherit;
--bs-link-color: #0d6efd;
--bs-link-color-rgb: 13, 110, 253;
--bs-link-decoration: underline;
--bs-link-hover-color: #0a58ca;
--bs-link-hover-color-rgb: 10, 88, 202;
--bs-code-color: #d63384;
--bs-highlight-color: #212529;
--bs-highlight-bg: #fff3cd;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-xxl: 2rem;
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
--bs-border-radius-pill: 50rem;
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
--bs-focus-ring-width: 0.25rem;
--bs-focus-ring-opacity: 0.25;
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
--bs-form-valid-color: #198754;
--bs-form-valid-border-color: #198754;
--bs-form-invalid-color: #dc3545;
--bs-form-invalid-border-color: #dc3545;
}
[data-bs-theme=dark] {
color-scheme: dark;
--bs-body-color: #dee2e6;
--bs-body-color-rgb: 222, 226, 230;
--bs-body-bg: #212529;
--bs-body-bg-rgb: 33, 37, 41;
--bs-emphasis-color: #fff;
--bs-emphasis-color-rgb: 255, 255, 255;
--bs-secondary-color: rgba(222, 226, 230, 0.75);
--bs-secondary-color-rgb: 222, 226, 230;
--bs-secondary-bg: #343a40;
--bs-secondary-bg-rgb: 52, 58, 64;
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
--bs-tertiary-color-rgb: 222, 226, 230;
--bs-tertiary-bg: #2b3035;
--bs-tertiary-bg-rgb: 43, 48, 53;
--bs-primary-text-emphasis: #6ea8fe;
--bs-secondary-text-emphasis: #a7acb1;
--bs-success-text-emphasis: #75b798;
--bs-info-text-emphasis: #6edff6;
--bs-warning-text-emphasis: #ffda6a;
--bs-danger-text-emphasis: #ea868f;
--bs-light-text-emphasis: #f8f9fa;
--bs-dark-text-emphasis: #dee2e6;
--bs-primary-bg-subtle: #031633;
--bs-secondary-bg-subtle: #161719;
--bs-success-bg-subtle: #051b11;
--bs-info-bg-subtle: #032830;
--bs-warning-bg-subtle: #332701;
--bs-danger-bg-subtle: #2c0b0e;
--bs-light-bg-subtle: #343a40;
--bs-dark-bg-subtle: #1a1d20;
--bs-primary-border-subtle: #084298;
--bs-secondary-border-subtle: #41464b;
--bs-success-border-subtle: #0f5132;
--bs-info-border-subtle: #087990;
--bs-warning-border-subtle: #997404;
--bs-danger-border-subtle: #842029;
--bs-light-border-subtle: #495057;
--bs-dark-border-subtle: #343a40;
--bs-heading-color: inherit;
--bs-link-color: #6ea8fe;
--bs-link-hover-color: #8bb9fe;
--bs-link-color-rgb: 110, 168, 254;
--bs-link-hover-color-rgb: 139, 185, 254;
--bs-code-color: #e685b5;
--bs-highlight-color: #dee2e6;
--bs-highlight-bg: #664d03;
--bs-border-color: #495057;
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
--bs-form-valid-color: #75b798;
--bs-form-valid-border-color: #75b798;
--bs-form-invalid-color: #ea868f;
--bs-form-invalid-border-color: #ea868f;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: var(--bs-border-width) solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-left: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-left: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
color: var(--bs-highlight-color);
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
text-decoration: underline;
}
a:hover {
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: var(--bs-secondary-color);
text-align: left;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: left;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: left;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
/* rtl:raw:
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
*/
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,594 +0,0 @@
/*!
* Bootstrap Reboot v5.3.3 (https://getbootstrap.com/)
* Copyright 2011-2024 The Bootstrap Authors
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root,
[data-bs-theme=light] {
--bs-blue: #0d6efd;
--bs-indigo: #6610f2;
--bs-purple: #6f42c1;
--bs-pink: #d63384;
--bs-red: #dc3545;
--bs-orange: #fd7e14;
--bs-yellow: #ffc107;
--bs-green: #198754;
--bs-teal: #20c997;
--bs-cyan: #0dcaf0;
--bs-black: #000;
--bs-white: #fff;
--bs-gray: #6c757d;
--bs-gray-dark: #343a40;
--bs-gray-100: #f8f9fa;
--bs-gray-200: #e9ecef;
--bs-gray-300: #dee2e6;
--bs-gray-400: #ced4da;
--bs-gray-500: #adb5bd;
--bs-gray-600: #6c757d;
--bs-gray-700: #495057;
--bs-gray-800: #343a40;
--bs-gray-900: #212529;
--bs-primary: #0d6efd;
--bs-secondary: #6c757d;
--bs-success: #198754;
--bs-info: #0dcaf0;
--bs-warning: #ffc107;
--bs-danger: #dc3545;
--bs-light: #f8f9fa;
--bs-dark: #212529;
--bs-primary-rgb: 13, 110, 253;
--bs-secondary-rgb: 108, 117, 125;
--bs-success-rgb: 25, 135, 84;
--bs-info-rgb: 13, 202, 240;
--bs-warning-rgb: 255, 193, 7;
--bs-danger-rgb: 220, 53, 69;
--bs-light-rgb: 248, 249, 250;
--bs-dark-rgb: 33, 37, 41;
--bs-primary-text-emphasis: #052c65;
--bs-secondary-text-emphasis: #2b2f32;
--bs-success-text-emphasis: #0a3622;
--bs-info-text-emphasis: #055160;
--bs-warning-text-emphasis: #664d03;
--bs-danger-text-emphasis: #58151c;
--bs-light-text-emphasis: #495057;
--bs-dark-text-emphasis: #495057;
--bs-primary-bg-subtle: #cfe2ff;
--bs-secondary-bg-subtle: #e2e3e5;
--bs-success-bg-subtle: #d1e7dd;
--bs-info-bg-subtle: #cff4fc;
--bs-warning-bg-subtle: #fff3cd;
--bs-danger-bg-subtle: #f8d7da;
--bs-light-bg-subtle: #fcfcfd;
--bs-dark-bg-subtle: #ced4da;
--bs-primary-border-subtle: #9ec5fe;
--bs-secondary-border-subtle: #c4c8cb;
--bs-success-border-subtle: #a3cfbb;
--bs-info-border-subtle: #9eeaf9;
--bs-warning-border-subtle: #ffe69c;
--bs-danger-border-subtle: #f1aeb5;
--bs-light-border-subtle: #e9ecef;
--bs-dark-border-subtle: #adb5bd;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
--bs-body-font-size: 1rem;
--bs-body-font-weight: 400;
--bs-body-line-height: 1.5;
--bs-body-color: #212529;
--bs-body-color-rgb: 33, 37, 41;
--bs-body-bg: #fff;
--bs-body-bg-rgb: 255, 255, 255;
--bs-emphasis-color: #000;
--bs-emphasis-color-rgb: 0, 0, 0;
--bs-secondary-color: rgba(33, 37, 41, 0.75);
--bs-secondary-color-rgb: 33, 37, 41;
--bs-secondary-bg: #e9ecef;
--bs-secondary-bg-rgb: 233, 236, 239;
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
--bs-tertiary-color-rgb: 33, 37, 41;
--bs-tertiary-bg: #f8f9fa;
--bs-tertiary-bg-rgb: 248, 249, 250;
--bs-heading-color: inherit;
--bs-link-color: #0d6efd;
--bs-link-color-rgb: 13, 110, 253;
--bs-link-decoration: underline;
--bs-link-hover-color: #0a58ca;
--bs-link-hover-color-rgb: 10, 88, 202;
--bs-code-color: #d63384;
--bs-highlight-color: #212529;
--bs-highlight-bg: #fff3cd;
--bs-border-width: 1px;
--bs-border-style: solid;
--bs-border-color: #dee2e6;
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
--bs-border-radius: 0.375rem;
--bs-border-radius-sm: 0.25rem;
--bs-border-radius-lg: 0.5rem;
--bs-border-radius-xl: 1rem;
--bs-border-radius-xxl: 2rem;
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
--bs-border-radius-pill: 50rem;
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
--bs-focus-ring-width: 0.25rem;
--bs-focus-ring-opacity: 0.25;
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
--bs-form-valid-color: #198754;
--bs-form-valid-border-color: #198754;
--bs-form-invalid-color: #dc3545;
--bs-form-invalid-border-color: #dc3545;
}
[data-bs-theme=dark] {
color-scheme: dark;
--bs-body-color: #dee2e6;
--bs-body-color-rgb: 222, 226, 230;
--bs-body-bg: #212529;
--bs-body-bg-rgb: 33, 37, 41;
--bs-emphasis-color: #fff;
--bs-emphasis-color-rgb: 255, 255, 255;
--bs-secondary-color: rgba(222, 226, 230, 0.75);
--bs-secondary-color-rgb: 222, 226, 230;
--bs-secondary-bg: #343a40;
--bs-secondary-bg-rgb: 52, 58, 64;
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
--bs-tertiary-color-rgb: 222, 226, 230;
--bs-tertiary-bg: #2b3035;
--bs-tertiary-bg-rgb: 43, 48, 53;
--bs-primary-text-emphasis: #6ea8fe;
--bs-secondary-text-emphasis: #a7acb1;
--bs-success-text-emphasis: #75b798;
--bs-info-text-emphasis: #6edff6;
--bs-warning-text-emphasis: #ffda6a;
--bs-danger-text-emphasis: #ea868f;
--bs-light-text-emphasis: #f8f9fa;
--bs-dark-text-emphasis: #dee2e6;
--bs-primary-bg-subtle: #031633;
--bs-secondary-bg-subtle: #161719;
--bs-success-bg-subtle: #051b11;
--bs-info-bg-subtle: #032830;
--bs-warning-bg-subtle: #332701;
--bs-danger-bg-subtle: #2c0b0e;
--bs-light-bg-subtle: #343a40;
--bs-dark-bg-subtle: #1a1d20;
--bs-primary-border-subtle: #084298;
--bs-secondary-border-subtle: #41464b;
--bs-success-border-subtle: #0f5132;
--bs-info-border-subtle: #087990;
--bs-warning-border-subtle: #997404;
--bs-danger-border-subtle: #842029;
--bs-light-border-subtle: #495057;
--bs-dark-border-subtle: #343a40;
--bs-heading-color: inherit;
--bs-link-color: #6ea8fe;
--bs-link-hover-color: #8bb9fe;
--bs-link-color-rgb: 110, 168, 254;
--bs-link-hover-color-rgb: 139, 185, 254;
--bs-code-color: #e685b5;
--bs-highlight-color: #dee2e6;
--bs-highlight-bg: #664d03;
--bs-border-color: #495057;
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
--bs-form-valid-color: #75b798;
--bs-form-valid-border-color: #75b798;
--bs-form-invalid-color: #ea868f;
--bs-form-invalid-border-color: #ea868f;
}
*,
*::before,
*::after {
box-sizing: border-box;
}
@media (prefers-reduced-motion: no-preference) {
:root {
scroll-behavior: smooth;
}
}
body {
margin: 0;
font-family: var(--bs-body-font-family);
font-size: var(--bs-body-font-size);
font-weight: var(--bs-body-font-weight);
line-height: var(--bs-body-line-height);
color: var(--bs-body-color);
text-align: var(--bs-body-text-align);
background-color: var(--bs-body-bg);
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
hr {
margin: 1rem 0;
color: inherit;
border: 0;
border-top: var(--bs-border-width) solid;
opacity: 0.25;
}
h6, h5, h4, h3, h2, h1 {
margin-top: 0;
margin-bottom: 0.5rem;
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
}
h1 {
font-size: calc(1.375rem + 1.5vw);
}
@media (min-width: 1200px) {
h1 {
font-size: 2.5rem;
}
}
h2 {
font-size: calc(1.325rem + 0.9vw);
}
@media (min-width: 1200px) {
h2 {
font-size: 2rem;
}
}
h3 {
font-size: calc(1.3rem + 0.6vw);
}
@media (min-width: 1200px) {
h3 {
font-size: 1.75rem;
}
}
h4 {
font-size: calc(1.275rem + 0.3vw);
}
@media (min-width: 1200px) {
h4 {
font-size: 1.5rem;
}
}
h5 {
font-size: 1.25rem;
}
h6 {
font-size: 1rem;
}
p {
margin-top: 0;
margin-bottom: 1rem;
}
abbr[title] {
-webkit-text-decoration: underline dotted;
text-decoration: underline dotted;
cursor: help;
-webkit-text-decoration-skip-ink: none;
text-decoration-skip-ink: none;
}
address {
margin-bottom: 1rem;
font-style: normal;
line-height: inherit;
}
ol,
ul {
padding-right: 2rem;
}
ol,
ul,
dl {
margin-top: 0;
margin-bottom: 1rem;
}
ol ol,
ul ul,
ol ul,
ul ol {
margin-bottom: 0;
}
dt {
font-weight: 700;
}
dd {
margin-bottom: 0.5rem;
margin-right: 0;
}
blockquote {
margin: 0 0 1rem;
}
b,
strong {
font-weight: bolder;
}
small {
font-size: 0.875em;
}
mark {
padding: 0.1875em;
color: var(--bs-highlight-color);
background-color: var(--bs-highlight-bg);
}
sub,
sup {
position: relative;
font-size: 0.75em;
line-height: 0;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
a {
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
text-decoration: underline;
}
a:hover {
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
}
a:not([href]):not([class]), a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
pre,
code,
kbd,
samp {
font-family: var(--bs-font-monospace);
font-size: 1em;
}
pre {
display: block;
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
font-size: 0.875em;
}
pre code {
font-size: inherit;
color: inherit;
word-break: normal;
}
code {
font-size: 0.875em;
color: var(--bs-code-color);
word-wrap: break-word;
}
a > code {
color: inherit;
}
kbd {
padding: 0.1875rem 0.375rem;
font-size: 0.875em;
color: var(--bs-body-bg);
background-color: var(--bs-body-color);
border-radius: 0.25rem;
}
kbd kbd {
padding: 0;
font-size: 1em;
}
figure {
margin: 0 0 1rem;
}
img,
svg {
vertical-align: middle;
}
table {
caption-side: bottom;
border-collapse: collapse;
}
caption {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
color: var(--bs-secondary-color);
text-align: right;
}
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
thead,
tbody,
tfoot,
tr,
td,
th {
border-color: inherit;
border-style: solid;
border-width: 0;
}
label {
display: inline-block;
}
button {
border-radius: 0;
}
button:focus:not(:focus-visible) {
outline: 0;
}
input,
button,
select,
optgroup,
textarea {
margin: 0;
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
button,
select {
text-transform: none;
}
[role=button] {
cursor: pointer;
}
select {
word-wrap: normal;
}
select:disabled {
opacity: 1;
}
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
display: none !important;
}
button,
[type=button],
[type=reset],
[type=submit] {
-webkit-appearance: button;
}
button:not(:disabled),
[type=button]:not(:disabled),
[type=reset]:not(:disabled),
[type=submit]:not(:disabled) {
cursor: pointer;
}
::-moz-focus-inner {
padding: 0;
border-style: none;
}
textarea {
resize: vertical;
}
fieldset {
min-width: 0;
padding: 0;
margin: 0;
border: 0;
}
legend {
float: right;
width: 100%;
padding: 0;
margin-bottom: 0.5rem;
font-size: calc(1.275rem + 0.3vw);
line-height: inherit;
}
@media (min-width: 1200px) {
legend {
font-size: 1.5rem;
}
}
legend + * {
clear: right;
}
::-webkit-datetime-edit-fields-wrapper,
::-webkit-datetime-edit-text,
::-webkit-datetime-edit-minute,
::-webkit-datetime-edit-hour-field,
::-webkit-datetime-edit-day-field,
::-webkit-datetime-edit-month-field,
::-webkit-datetime-edit-year-field {
padding: 0;
}
::-webkit-inner-spin-button {
height: auto;
}
[type=search] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type="tel"],
[type="url"],
[type="email"],
[type="number"] {
direction: ltr;
}
::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-color-swatch-wrapper {
padding: 0;
}
::-webkit-file-upload-button {
font: inherit;
-webkit-appearance: button;
}
::file-selector-button {
font: inherit;
-webkit-appearance: button;
}
output {
display: inline-block;
}
iframe {
border: 0;
}
summary {
display: list-item;
cursor: pointer;
}
progress {
vertical-align: baseline;
}
[hidden] {
display: none !important;
}
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -2
View File
@@ -1,10 +1,9 @@
<Project Sdk="Microsoft.NET.Sdk.Razor"> <Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net10.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<LangVersion>14</LangVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
@@ -1,79 +0,0 @@
@inject ITooltipService TooltipService
@implements IDisposable
@if (Tooltip == null)
{
<div>Add tooltip object...</div>
}
else
{
<div onclick="@Dismiss" class="tooltipContainer">
<div class="tooltip">
@Tooltip.Message
</div>
</div>
}
<style>
.toastContainer {
border: 4px solid;
border-radius: 4px;
padding: 16px;
display: flex;
flex-direction: column;
justify-items: stretch;
width: 250px;
cursor: pointer;
}
.@SeverityType.Warning.ToLower() {
background-color: var(--severity-warning-color);
border-color: var(--severity-warning-border-color);
}
.@SeverityType.Error.ToLower() {
background-color: var(--severity-error-color);
border-color: var(--severity-error-border-color);
}
.@SeverityType.Information.ToLower() {
background-color: var(--severity-information-color);
border-color: var(--severity-information-border-color);
}
.@SeverityType.Success.ToLower() {
background-color: var(--severity-success-color);
border-color: var(--severity-success-border-color);
}
.toastTitle {
font-weight: 800;
}
</style>
@code {
[Parameter] public TooltipModel? Tooltip { get; set; }
protected override void OnInitialized()
{
base.OnInitialized();
TooltipService.Subscribe(OnUpdate);
}
void Dismiss()
{
TooltipService.RemoveTooltip(Tooltip!);
}
void IDisposable.Dispose()
{
TooltipService.Unsubscribe(OnUpdate);
}
void OnUpdate()
{
}
}
+15 -15
View File
@@ -1,11 +1,11 @@
@implements IDisposable; @implements IDisposable;
@inject ISearchService SearchService @inject ISearchService searchService
@inject IJSRuntime JsRuntime @inject IJSRuntime jsRuntime
@inject NavigationManager NavigationManager @inject NavigationManager navigationManager
@if (SearchService.IsLoaded() && SearchService.IsVisible) @if (searchService.IsLoaded() && searchService.IsVisible)
{ {
<div id="searchBackground" class="searchBackground" onclick="@CloseDialog"> <div id="searchBackground" class="searchBackground" onclick="@CloseDialog">
<div class="searchContainer" <div class="searchContainer"
@@ -20,7 +20,7 @@
<div class="searchBox"> <div class="searchBox">
@if (SearchText.Length > 0) @if (SearchText.Length > 0)
{ {
foreach (var searchSection in SearchService.Searches) foreach (var searchSection in searchService.Searches)
{ {
var searchPoints = searchSection.Value.FindAll(x => x.Title.ToLower().Contains(SearchText.ToLower())); var searchPoints = searchSection.Value.FindAll(x => x.Title.ToLower().Contains(SearchText.ToLower()));
@@ -141,7 +141,7 @@
protected override void OnInitialized() protected override void OnInitialized()
{ {
SearchService.Subscribe(OnSearchChanged); searchService.Subscribe(OnSearchChanged);
timer = new Timer(200); timer = new Timer(200);
timer.Elapsed += FocusTimer; timer.Elapsed += FocusTimer;
@@ -151,7 +151,7 @@
private void FocusTimer(object? sender, ElapsedEventArgs e) private void FocusTimer(object? sender, ElapsedEventArgs e)
{ {
JsRuntime.InvokeVoidAsync("SetFocusToElement", "searchInput"); jsRuntime.InvokeVoidAsync("SetFocusToElement", "searchInput");
StateHasChanged(); StateHasChanged();
} }
@@ -159,9 +159,9 @@
private void OnSearchChanged() private void OnSearchChanged()
{ {
if (timer.Enabled != SearchService.IsVisible) if (timer.Enabled != searchService.IsVisible)
{ {
timer.Enabled = SearchService.IsVisible; timer.Enabled = searchService.IsVisible;
} }
StateHasChanged(); StateHasChanged();
@@ -169,26 +169,26 @@
public void Dispose() public void Dispose()
{ {
SearchService.Unsubscribe(OnSearchChanged); searchService.Unsubscribe(OnSearchChanged);
timer.Elapsed -= FocusTimer; timer.Elapsed -= FocusTimer;
} }
public void CloseDialog() public void CloseDialog()
{ {
SearchService.Hide(); searchService.Hide();
} }
public void NavigateTo(string url) public void NavigateTo(string url)
{ {
if (url.Contains("#")) if (url.Contains("#"))
{ {
NavigationManager.NavigateTo(url, navigationManager.NavigateTo(url,
NavigationManager.Uri.Split("#").First().Contains(url.Split("#").First())); navigationManager.Uri.Split("#").First().Contains(url.Split("#").First()));
} }
else else
{ {
NavigationManager.NavigateTo(url); navigationManager.NavigateTo(url);
} }
} }
@@ -200,7 +200,7 @@
private void OnSearch(SearchPointModel searchPoint) private void OnSearch(SearchPointModel searchPoint)
{ {
NavigateTo(searchPoint.Href); NavigateTo(searchPoint.Href);
SearchService.Hide(); searchService.Hide();
} }
private void OnFocus(object obj) private void OnFocus(object obj)
+6 -6
View File
@@ -5,7 +5,7 @@
<Nullable>enable</Nullable> <Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings> <ImplicitUsings>enable</ImplicitUsings>
<ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest> <ServiceWorkerAssetsManifest>service-worker-assets.js</ServiceWorkerAssetsManifest>
<LangVersion>14</LangVersion> <LangVersion>12</LangVersion>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' "> <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
@@ -22,11 +22,11 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Blazor-Analytics" Version="4.0.0" /> <PackageReference Include="Blazor-Analytics" Version="4.0.0" />
<PackageReference Include="Markdig" Version="0.43.0" /> <PackageReference Include="Markdig" Version="1.1.1" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.0" /> <PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.5" />
<PackageReference Include="Microsoft.Extensions.Localization" Version="10.0.0" /> <PackageReference Include="Microsoft.Extensions.Localization" Version="10.0.5" />
<PackageReference Include="MudBlazor" Version="8.14.0" /> <PackageReference Include="MudBlazor" Version="9.2.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
+2 -14
View File
@@ -1,7 +1,7 @@
 
Microsoft Visual Studio Solution File, Format Version 12.00 Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18 # Visual Studio Version 17
VisualStudioVersion = 18.0.11205.157 d18.0 VisualStudioVersion = 17.0.32112.339
MinimumVisualStudioVersion = 10.0.40219.1 MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IGP", "IGP.csproj", "{172D35E4-8E7B-40D1-96D6-BE2A2043CFCA}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "IGP", "IGP.csproj", "{172D35E4-8E7B-40D1-96D6-BE2A2043CFCA}"
EndProject EndProject
@@ -13,10 +13,6 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Services", "..\Services\Ser
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestAutomation", "..\TestAutomation\TestAutomation.csproj", "{8B49D038-D013-460D-9C4F-817CAFFEB06F}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TestAutomation", "..\TestAutomation\TestAutomation.csproj", "{8B49D038-D013-460D-9C4F-817CAFFEB06F}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pyre", "..\Pyre\Pyre\Pyre.csproj", "{DFB453C5-6ADC-4474-9C8C-E9C9B8D977A5}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Pyre.Client", "..\Pyre\Pyre.Client\Pyre.Client.csproj", "{5AD4303E-6166-417F-BE8B-59081C0F627B}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -43,14 +39,6 @@ Global
{8B49D038-D013-460D-9C4F-817CAFFEB06F}.Debug|Any CPU.Build.0 = Debug|Any CPU {8B49D038-D013-460D-9C4F-817CAFFEB06F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8B49D038-D013-460D-9C4F-817CAFFEB06F}.Release|Any CPU.ActiveCfg = Release|Any CPU {8B49D038-D013-460D-9C4F-817CAFFEB06F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8B49D038-D013-460D-9C4F-817CAFFEB06F}.Release|Any CPU.Build.0 = Release|Any CPU {8B49D038-D013-460D-9C4F-817CAFFEB06F}.Release|Any CPU.Build.0 = Release|Any CPU
{DFB453C5-6ADC-4474-9C8C-E9C9B8D977A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFB453C5-6ADC-4474-9C8C-E9C9B8D977A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DFB453C5-6ADC-4474-9C8C-E9C9B8D977A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFB453C5-6ADC-4474-9C8C-E9C9B8D977A5}.Release|Any CPU.Build.0 = Release|Any CPU
{5AD4303E-6166-417F-BE8B-59081C0F627B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5AD4303E-6166-417F-BE8B-59081C0F627B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5AD4303E-6166-417F-BE8B-59081C0F627B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5AD4303E-6166-417F-BE8B-59081C0F627B}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@@ -224,21 +224,21 @@ else
var economyAtSecond = economyOverTime[interval]; var economyAtSecond = economyOverTime[interval];
var alloyWorkerHarvesters = from harvester in economyAtSecond.HarvestPoints var alloyWorkerHarvesters = from harvester in economyAtSecond.HarvestPoints
where harvester.Harvester() != null where harvester.Harvest() != null
where harvester.Harvester().RequiresWorker where harvester.Harvest().RequiresWorker
where harvester.Harvester().Resource == ResourceType.Alloy where harvester.Harvest().Resource == ResourceType.Alloy
select harvester; select harvester;
var alloyAutomaticHarvesters = from harvester in economyAtSecond.HarvestPoints var alloyAutomaticHarvesters = from harvester in economyAtSecond.HarvestPoints
where harvester.Harvester() != null where harvester.Harvest() != null
where harvester.Harvester().RequiresWorker == false where harvester.Harvest().RequiresWorker == false
where harvester.Harvester().Resource == ResourceType.Alloy where harvester.Harvest().Resource == ResourceType.Alloy
select harvester; select harvester;
var etherAutomaticHarvesters = from harvester in economyAtSecond.HarvestPoints var etherAutomaticHarvesters = from harvester in economyAtSecond.HarvestPoints
where harvester.Harvester() != null where harvester.Harvest() != null
where harvester.Harvester().RequiresWorker == false where harvester.Harvest().RequiresWorker == false
where harvester.Harvester().Resource == ResourceType.Ether where harvester.Harvest().Resource == ResourceType.Ether
select harvester; select harvester;
float autoAlloy = 0; float autoAlloy = 0;
@@ -250,7 +250,7 @@ else
foreach (var alloyAutoHarvester in alloyAutomaticHarvesters) foreach (var alloyAutoHarvester in alloyAutomaticHarvesters)
{ {
autoAlloy += alloyAutoHarvester.Harvester().Slots * alloyAutoHarvester.Harvester().HarvestedPerInterval; autoAlloy += alloyAutoHarvester.Harvest().Slots * alloyAutoHarvester.Harvest().HarvestedPerInterval;
var production = alloyAutoHarvester.Production(); var production = alloyAutoHarvester.Production();
if (production != null) if (production != null)
{ {
@@ -260,7 +260,7 @@ else
foreach (var alloyWorkerHarvester in alloyWorkerHarvesters) foreach (var alloyWorkerHarvester in alloyWorkerHarvesters)
{ {
workerSlots += alloyWorkerHarvester.Harvester().Slots; workerSlots += alloyWorkerHarvester.Harvest().Slots;
var production = alloyWorkerHarvester.Production(); var production = alloyWorkerHarvester.Production();
if (production != null) if (production != null)
{ {
@@ -270,7 +270,7 @@ else
foreach (var etherWorkerHarvester in etherAutomaticHarvesters) foreach (var etherWorkerHarvester in etherAutomaticHarvesters)
{ {
autoEther += etherWorkerHarvester.Harvester().Slots * etherWorkerHarvester.Harvester().HarvestedPerInterval; autoEther += etherWorkerHarvester.Harvest().Slots * etherWorkerHarvester.Harvest().HarvestedPerInterval;
var production = etherWorkerHarvester.Production(); var production = etherWorkerHarvester.Production();
if (production != null) if (production != null)
{ {
@@ -1,6 +1,4 @@
@inject NavigationManager NavigationManager @if (StyleType.Equals("Plain"))
@if (StyleType.Equals("Plain"))
{ {
<div> <div>
<b id="entityName">@Entity?.Info().Name</b> <b id="entityName">@Entity?.Info().Name</b>
@@ -13,9 +11,9 @@
else else
{ {
<div class="entityHeader"> <div class="entityHeader">
<button id="entityName" class="entityHeaderText searchLink" @onclick="() => OnOpenStandalone()"> <div id="entityName" class="entityHeaderText">
@Entity?.Info().Name @Entity?.Info().Name
</button> </div>
<div style="font-size:1.4rem;"> <div style="font-size:1.4rem;">
<b>@Entity?.EntityType.Replace("_", " ")</b> <b>@Entity?.EntityType.Replace("_", " ")</b>
@if (Entity?.Info().Descriptive != DescriptiveType.None) @if (Entity?.Info().Descriptive != DescriptiveType.None)
@@ -54,10 +52,6 @@ else
font-weight: 900; font-weight: 900;
} }
.searchLink:hover {
text-decoration: underline;
}
@@media only screen and (max-width: 1025px) { @@media only screen and (max-width: 1025px) {
.entityHeader { .entityHeader {
flex-direction: column; flex-direction: column;
@@ -75,23 +69,4 @@ else
[CascadingParameter] public string StyleType { get; set; } = "Detailed"; [CascadingParameter] public string StyleType { get; set; } = "Detailed";
public void NavigateTo(string url)
{
if (url.Contains("#"))
{
NavigationManager.NavigateTo(url,
NavigationManager.Uri.Split("#").First().Contains(url.Split("#").First()));
}
else
{
NavigationManager.NavigateTo(url);
}
}
private void OnOpenStandalone()
{
var url = NavigationManager.BaseUri;
var completeUrl = $"{url}database/{Entity!.Info().Name.ToLower().Replace(" ", "%20")}";
NavigateTo(completeUrl);
}
} }
@@ -11,6 +11,7 @@
var replaced = EntityData.Get()[vanguardAdded.ReplaceId]; var replaced = EntityData.Get()[vanguardAdded.ReplaceId];
var immortal = EntityData.Get()[vanguardAdded.ImmortalId]; var immortal = EntityData.Get()[vanguardAdded.ImmortalId];
var productionBuilding = (from building in requirements var productionBuilding = (from building in requirements
where building.Requirement == RequirementType.Production_Building where building.Requirement == RequirementType.Production_Building
select building).First().Id; select building).First().Id;
@@ -132,15 +132,15 @@
var economyAtSecond = economyOverTime[interval]; var economyAtSecond = economyOverTime[interval];
var alloyWorkerHarvesters = from harvester in economyAtSecond.HarvestPoints var alloyWorkerHarvesters = from harvester in economyAtSecond.HarvestPoints
where harvester.Harvester() != null where harvester.Harvest() != null
where harvester.Harvester().RequiresWorker where harvester.Harvest().RequiresWorker
where harvester.Harvester().Resource == ResourceType.Alloy where harvester.Harvest().Resource == ResourceType.Alloy
select harvester; select harvester;
var alloyAutomaticHarvesters = from harvester in economyAtSecond.HarvestPoints var alloyAutomaticHarvesters = from harvester in economyAtSecond.HarvestPoints
where harvester.Harvester() != null where harvester.Harvest() != null
where harvester.Harvester().RequiresWorker == false where harvester.Harvest().RequiresWorker == false
where harvester.Harvester().Resource == ResourceType.Alloy where harvester.Harvest().Resource == ResourceType.Alloy
select harvester; select harvester;
@@ -152,7 +152,7 @@
foreach (var alloyAutoHarvester in alloyAutomaticHarvesters) foreach (var alloyAutoHarvester in alloyAutomaticHarvesters)
{ {
autoAlloy += alloyAutoHarvester.Harvester().Slots * alloyAutoHarvester.Harvester().HarvestedPerInterval; autoAlloy += alloyAutoHarvester.Harvest().Slots * alloyAutoHarvester.Harvest().HarvestedPerInterval;
var production = alloyAutoHarvester.Production(); var production = alloyAutoHarvester.Production();
if (production != null) if (production != null)
{ {
@@ -162,7 +162,7 @@
foreach (var alloyWorkerHarvester in alloyWorkerHarvesters) foreach (var alloyWorkerHarvester in alloyWorkerHarvesters)
{ {
workerSlots += alloyWorkerHarvester.Harvester().Slots; workerSlots += alloyWorkerHarvester.Harvest().Slots;
var production = alloyWorkerHarvester.Production(); var production = alloyWorkerHarvester.Production();
if (production != null) if (production != null)
{ {
-46
View File
@@ -1,46 +0,0 @@
@implements IDisposable;
@inject ITooltipService TooltipService
@if (TooltipService.HasTooltips())
{
<div class="tooltipsContainer">
@foreach (var tooltip in Tooltips)
{
<TooltipComponent Tooltip="tooltip"/>
}
</div>
}
<style>
.tooltipContainer {
position: fixed;
top: 64px;
right: 64px;
display: flex;
flex-direction: column;
gap: 5px;
}
</style>
@code {
private List<TooltipModel> Tooltips => TooltipService.GetTooltips();
protected override void OnInitialized()
{
base.OnInitialized();
TooltipService.Subscribe(OnUpdate);
}
void IDisposable.Dispose()
{
TooltipService.Unsubscribe(OnUpdate);
}
void OnUpdate()
{
StateHasChanged();
}
}
+1 -1
View File
@@ -94,7 +94,7 @@ public class BuildOrderModel
return (from ordersAtTime in StartedOrders return (from ordersAtTime in StartedOrders
from orders in ordersAtTime.Value from orders in ordersAtTime.Value
where ordersAtTime.Key + (orders.Production() == null ? 0 : orders.Production().BuildTime) <= interval where ordersAtTime.Key + (orders.Production() == null ? 0 : orders.Production().BuildTime) <= interval
where orders.Harvester() != null where orders.Harvest() != null
select orders).ToList(); select orders).ToList();
} }
} }
+8 -8
View File
@@ -38,7 +38,7 @@ public partial class EntityData
{ Alloy = 450, BuildTime = 90, RequiresWorker = true, ConsumesWorker = true }) { Alloy = 450, BuildTime = 90, RequiresWorker = true, ConsumesWorker = true })
.AddPart(new EntityVitalityModel .AddPart(new EntityVitalityModel
{ Health = 2300, DefenseLayer = 1200, Armor = ArmorType.Heavy, IsStructure = true }) { Health = 2300, DefenseLayer = 1200, Armor = ArmorType.Heavy, IsStructure = true })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 2, HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 2,
TotalAmount = 3600 TotalAmount = 3600
@@ -61,7 +61,7 @@ public partial class EntityData
Requirement = RequirementType.Morph Requirement = RequirementType.Morph
}) })
.AddPart(new EntityProductionModel { Alloy = 400, BuildTime = 20, RequiresWorker = false }) .AddPart(new EntityProductionModel { Alloy = 400, BuildTime = 20, RequiresWorker = false })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 4, HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 4,
TotalAmount = 3600 TotalAmount = 3600
@@ -83,7 +83,7 @@ public partial class EntityData
Requirement = RequirementType.Morph Requirement = RequirementType.Morph
}) })
.AddPart(new EntityProductionModel { Alloy = 50, Cooldown = 50, RequiresWorker = false }) .AddPart(new EntityProductionModel { Alloy = 50, Cooldown = 50, RequiresWorker = false })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 2, RequiresWorker = false, Resource = ResourceType.Ether, Slots = 1, HarvestedPerInterval = 2, RequiresWorker = false, Resource = ResourceType.Ether, Slots = 1,
TotalAmount = 100 TotalAmount = 100
@@ -105,7 +105,7 @@ public partial class EntityData
Requirement = RequirementType.Morph Requirement = RequirementType.Morph
}) })
.AddPart(new EntityProductionModel { Alloy = 50, Cooldown = 50, RequiresWorker = false }) .AddPart(new EntityProductionModel { Alloy = 50, Cooldown = 50, RequiresWorker = false })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 2, RequiresWorker = false, Resource = ResourceType.Ether, Slots = 1, HarvestedPerInterval = 2, RequiresWorker = false, Resource = ResourceType.Ether, Slots = 1,
TotalAmount = 100 TotalAmount = 100
@@ -129,7 +129,7 @@ public partial class EntityData
.AddPart(new EntityProductionModel { Alloy = 175, BuildTime = 30, RequiresWorker = true }) .AddPart(new EntityProductionModel { Alloy = 175, BuildTime = 30, RequiresWorker = true })
.AddPart(new EntityVitalityModel .AddPart(new EntityVitalityModel
{ Health = 300, DefenseLayer = 200, Armor = ArmorType.Heavy, IsStructure = true }) { Health = 300, DefenseLayer = 200, Armor = ArmorType.Heavy, IsStructure = true })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 1.5625f, HarvestedPerInterval = 1.5625f,
RequiresWorker = false, RequiresWorker = false,
@@ -423,7 +423,7 @@ public partial class EntityData
Health = 2000, DefenseLayer = 400, Defense = DefenseType.Overgrowth, Armor = ArmorType.Heavy, Health = 2000, DefenseLayer = 400, Defense = DefenseType.Overgrowth, Armor = ArmorType.Heavy,
IsStructure = true IsStructure = true
}) })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 2, HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 2,
TotalAmount = 3600 TotalAmount = 3600
@@ -468,7 +468,7 @@ public partial class EntityData
Requirement = RequirementType.Morph Requirement = RequirementType.Morph
}) })
.AddPart(new EntityProductionModel { Alloy = 400, BuildTime = 20, RequiresWorker = false }) .AddPart(new EntityProductionModel { Alloy = 400, BuildTime = 20, RequiresWorker = false })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 2, HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 2,
TotalAmount = 3600 TotalAmount = 3600
@@ -494,7 +494,7 @@ public partial class EntityData
.AddPart(new EntityProductionModel { Alloy = 225, BuildTime = 30, RequiresWorker = true }) .AddPart(new EntityProductionModel { Alloy = 225, BuildTime = 30, RequiresWorker = true })
.AddPart(new EntityVitalityModel .AddPart(new EntityVitalityModel
{ Health = 400, DefenseLayer = 225, Armor = ArmorType.Heavy, IsStructure = true }) { Health = 400, DefenseLayer = 225, Armor = ArmorType.Heavy, IsStructure = true })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 1.5625f, RequiresWorker = false, Resource = ResourceType.Ether, HarvestedPerInterval = 1.5625f, RequiresWorker = false, Resource = ResourceType.Ether,
Slots = 1, TotalAmount = 1200 Slots = 1, TotalAmount = 1200
+5 -5
View File
@@ -18,7 +18,7 @@ public partial class EntityData
new EntityModel(DataType.IMMORTAL_Atzlan, EntityType.Immortal) new EntityModel(DataType.IMMORTAL_Atzlan, EntityType.Immortal)
.AddPart(new EntityInfoModel { Name = "Atzlan" }) .AddPart(new EntityInfoModel { Name = "Atzlan" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3,
RequiresWorker = false, Slots = 1, TotalAmount = -1 RequiresWorker = false, Slots = 1, TotalAmount = -1
@@ -37,7 +37,7 @@ public partial class EntityData
new EntityModel(DataType.IMMORTAL_Mala, EntityType.Immortal) new EntityModel(DataType.IMMORTAL_Mala, EntityType.Immortal)
.AddPart(new EntityInfoModel { Name = "Mala" }) .AddPart(new EntityInfoModel { Name = "Mala" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3,
RequiresWorker = false, Slots = 1, TotalAmount = -1 RequiresWorker = false, Slots = 1, TotalAmount = -1
@@ -56,7 +56,7 @@ public partial class EntityData
new EntityModel(DataType.IMMORTAL_Xol, EntityType.Immortal) new EntityModel(DataType.IMMORTAL_Xol, EntityType.Immortal)
.AddPart(new EntityInfoModel { Name = "Xol" }) .AddPart(new EntityInfoModel { Name = "Xol" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3,
RequiresWorker = false, Slots = 1, TotalAmount = -1 RequiresWorker = false, Slots = 1, TotalAmount = -1
@@ -77,7 +77,7 @@ public partial class EntityData
new EntityModel(DataType.IMMORTAL_Ajari, EntityType.Immortal) new EntityModel(DataType.IMMORTAL_Ajari, EntityType.Immortal)
.AddPart(new EntityInfoModel { Name = "Ajari" }) .AddPart(new EntityInfoModel { Name = "Ajari" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3,
RequiresWorker = false, Slots = 1, TotalAmount = -1 RequiresWorker = false, Slots = 1, TotalAmount = -1
@@ -95,7 +95,7 @@ public partial class EntityData
new EntityModel(DataType.IMMORTAL_Orzum, EntityType.Immortal) new EntityModel(DataType.IMMORTAL_Orzum, EntityType.Immortal)
.AddPart(new EntityInfoModel { Name = "Orzum" }) .AddPart(new EntityInfoModel { Name = "Orzum" })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3, Resource = ResourceType.Pyre, HarvestedPerInterval = 1, HarvestDelay = 3,
RequiresWorker = false, Slots = 1, TotalAmount = -1 RequiresWorker = false, Slots = 1, TotalAmount = -1
-170
View File
@@ -1,170 +0,0 @@
using System.Collections.Generic;
using Model.Entity.Parts;
using Model.Types;
namespace Model.Entity.Data;
public partial class EntityData
{
public static Dictionary<string, EntityModel> GetMapData()
{
return new Dictionary<string, EntityModel>
{
// Maps
//TODO I don't remember the map details, this data is wrong
{
DataType.MAP_Naginata,
new EntityModel(DataType.MAP_Naginata, EntityType.Map)
.AddPart(new EntityInfoModel
{
Name = "Naginata", Descriptive = DescriptiveType.Map,
Description = ""
})
.AddPart(new EntityMapModel
{
PlayerCount = PlayerCountType.OneVsOne,
ResourcePlatforms = [
DataType.MAPPLATFORM_Base,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
]
})
},
{
DataType.MAP_SummerPalace,
new EntityModel(DataType.MAP_SummerPalace, EntityType.Map)
.AddPart(new EntityInfoModel
{
Name = "Summer Palace", Descriptive = DescriptiveType.Map,
Description = ""
})
.AddPart(new EntityMapModel
{
PlayerCount = PlayerCountType.OneVsOne,
ResourcePlatforms = [
DataType.MAPPLATFORM_Base,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
DataType.MAPPLATFORM_Standard,
]
})
},
{
DataType.MAPPLATFORM_Base,
new EntityModel(DataType.MAPPLATFORM_Base, EntityType.Map)
.AddPart(new EntityInfoModel
{
Name = "Base Map Platform", Descriptive = DescriptiveType.Map,
Description = ""
})
.AddPart(
new EntityMapBasePlatformModel
{
ConnectedResourceNodes =
[
DataType.RESOURCENODE_AlloyCitadel,
DataType.RESOURCENODE_Alloy,
DataType.RESOURCENODE_Ether,
DataType.RESOURCENODE_Ether
]
})
},
{
DataType.MAPPLATFORM_Standard,
new EntityModel(DataType.MAPPLATFORM_Standard, EntityType.Map)
.AddPart(new EntityInfoModel
{
Name = "Standard Map Platform", Descriptive = DescriptiveType.Map,
Description = ""
})
.AddPart(
new EntityMapBasePlatformModel
{
ConnectedResourceNodes =
[
DataType.RESOURCENODE_Alloy,
DataType.RESOURCENODE_Ether
]
})
},
{
DataType.RESOURCENODE_AlloyBase,
new EntityModel(DataType.RESOURCENODE_AlloyBase, EntityType.Map)
.AddPart(new EntityInfoModel
{
Name = "Base Alloy", Descriptive = DescriptiveType.Map,
Description = ""
})
.AddPart(new EntityResourceNodeAlloyModel
{
Resource = ResourceType.Alloy,
DefaultAmount = 6000
})
},
{
DataType.RESOURCENODE_AlloyCitadel,
new EntityModel(DataType.RESOURCENODE_AlloyCitadel, EntityType.Map)
.AddPart(new EntityInfoModel
{
Name = "Citadel Alloy", Descriptive = DescriptiveType.Map,
Description = ""
})
.AddPart(new EntityResourceNodeAlloyModel
{
Resource = ResourceType.Alloy,
DefaultAmount = 6000
})
},
{
DataType.RESOURCENODE_Alloy,
new EntityModel(DataType.RESOURCENODE_Alloy, EntityType.Map)
.AddPart(new EntityInfoModel
{
Name = "Standard Alloy", Descriptive = DescriptiveType.Map,
Description = ""
})
.AddPart(new EntityResourceNodeAlloyModel
{
Resource = ResourceType.Alloy,
DefaultAmount = 3600
})
},
{
DataType.RESOURCENODE_Ether,
new EntityModel(DataType.RESOURCENODE_Ether, EntityType.Map)
.AddPart(new EntityInfoModel
{
Name = "Standard Ether", Descriptive = DescriptiveType.Map,
Description = ""
})
.AddPart(new EntityResourceNodeAlloyModel
{
Resource = ResourceType.Ether,
DefaultAmount = 1200
})
},
{
DataType.RESOURCENODE_Ether,
new EntityModel(DataType.RESOURCENODE_Ether, EntityType.Map)
.AddPart(new EntityInfoModel
{
Name = "Standard Ether", Descriptive = DescriptiveType.Map,
Description = ""
})
.AddPart(new EntityResourceNodeAlloyModel
{
Resource = ResourceType.Ether,
DefaultAmount = 1200
})
}
};
}
}
+3 -3
View File
@@ -258,7 +258,7 @@ public partial class EntityData
Notes = "Revives in 40 seconds when destroyed." Notes = "Revives in 40 seconds when destroyed."
}) })
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Neutral }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Neutral })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 6, RequiresWorker = false, Resource = ResourceType.Alloy, Slots = 1, HarvestedPerInterval = 6, RequiresWorker = false, Resource = ResourceType.Alloy, Slots = 1,
TotalAmount = 6000 TotalAmount = 6000
@@ -298,7 +298,7 @@ public partial class EntityData
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_Aru })
.AddPart(new EntityVitalityModel .AddPart(new EntityVitalityModel
{ Health = 2000, DefenseLayer = 400, Armor = ArmorType.Heavy, IsStructure = true }) { Health = 2000, DefenseLayer = 400, Armor = ArmorType.Heavy, IsStructure = true })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 6, HarvestedPerInterval = 1, RequiresWorker = true, Resource = ResourceType.Alloy, Slots = 6,
TotalAmount = 6000 TotalAmount = 6000
@@ -315,7 +315,7 @@ public partial class EntityData
.AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath }) .AddPart(new EntityFactionModel { Faction = DataType.FACTION_QRath })
.AddPart(new EntityVitalityModel .AddPart(new EntityVitalityModel
{ Health = 1600, DefenseLayer = 800, Armor = ArmorType.Heavy, IsStructure = true }) { Health = 1600, DefenseLayer = 800, Armor = ArmorType.Heavy, IsStructure = true })
.AddPart(new EntityHarvesterModel .AddPart(new EntityHarvestModel
{ {
HarvestedPerInterval = 6, RequiresWorker = false, Resource = ResourceType.Alloy, Slots = 1, HarvestedPerInterval = 6, RequiresWorker = false, Resource = ResourceType.Alloy, Slots = 1,
TotalAmount = 6000 TotalAmount = 6000
-5
View File
@@ -19,11 +19,6 @@ public static class EntityType
public static string Ability = "Ability"; public static string Ability = "Ability";
public static string Tech = "Tech"; public static string Tech = "Tech";
public static string Passive = "Passive"; public static string Passive = "Passive";
public static string Map = "Map";
public static string NotApplicable = "NotApplicable";
} }
public static class ImmortalSpellType public static class ImmortalSpellType
-14
View File
@@ -298,18 +298,4 @@ public static class DataType
public static string UNIT_Thrum = nameof(UNIT_Thrum); public static string UNIT_Thrum = nameof(UNIT_Thrum);
public static string UNIT_Behemoth = "3783004b-65fd-4e4e-bef0-4cf161ea2d2d"; public static string UNIT_Behemoth = "3783004b-65fd-4e4e-bef0-4cf161ea2d2d";
public static string SUMMON_Quitl = "d554fb2a-eec5-45fd-bf36-a52d51e615e2"; public static string SUMMON_Quitl = "d554fb2a-eec5-45fd-bf36-a52d51e615e2";
//TODO I don't remember the maps
public static string MAP_Naginata = nameof(MAP_Naginata);
public static string MAP_SummerPalace = nameof(MAP_SummerPalace);
public static string MAPPLATFORM_Base = nameof(MAPPLATFORM_Base);
public static string MAPPLATFORM_Standard = nameof(MAPPLATFORM_Standard);
public static string RESOURCENODE_AlloyBase = nameof(RESOURCENODE_AlloyBase);
public static string RESOURCENODE_Alloy = nameof(RESOURCENODE_Alloy);
public static string RESOURCENODE_AlloyCitadel = nameof(RESOURCENODE_AlloyCitadel);
public static string RESOURCENODE_Ether = nameof(RESOURCENODE_Ether);
} }
+3 -3
View File
@@ -21,7 +21,7 @@ public class EntityModel
private static Dictionary<string, List<EntityModel>>? _entityModelsByHotkey; private static Dictionary<string, List<EntityModel>>? _entityModelsByHotkey;
public EntityModel(string data, string entity = "NotApplicable", bool isSpeculative = false) public EntityModel(string data, string entity, bool isSpeculative = false)
{ {
DataType = data; DataType = data;
EntityType = entity; EntityType = entity;
@@ -255,9 +255,9 @@ public class EntityModel
} }
public EntityHarvesterModel? Harvester() public EntityHarvestModel Harvest()
{ {
return (EntityHarvesterModel)EntityParts.Find(x => x.GetType() == typeof(EntityHarvesterModel))!; return (EntityHarvestModel)EntityParts.Find(x => x.GetType() == typeof(EntityHarvestModel))!;
} }
@@ -2,7 +2,7 @@
namespace Model.Entity.Parts; namespace Model.Entity.Parts;
public class EntityHarvesterModel : IEntityPartInterface public class EntityHarvestModel : IEntityPartInterface
{ {
public string Type { get; set; } = "EntityHarvestModel"; public string Type { get; set; } = "EntityHarvestModel";
public ResourceType Resource { get; set; } = ResourceType.Alloy; public ResourceType Resource { get; set; } = ResourceType.Alloy;
@@ -12,6 +12,7 @@ public class EntityHarvesterModel : IEntityPartInterface
public int TotalAmount { get; set; } public int TotalAmount { get; set; }
public bool RequiresWorker { get; set; } public bool RequiresWorker { get; set; }
public bool IsDepleted(float interval, float startedAt) public bool IsDepleted(float interval, float startedAt)
{ {
var lifeTime = interval - startedAt; var lifeTime = interval - startedAt;
@@ -1,14 +0,0 @@
using System.Collections.Generic;
using Model.Types;
namespace Model.Entity.Parts;
public class EntityMapBasePlatformModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityMapBasePlatformModel";
public List<string> ConnectedResourceNodes { get; set; } = new();
}
-12
View File
@@ -1,12 +0,0 @@
using System.Collections.Generic;
using Model.Types;
namespace Model.Entity.Parts;
public class EntityMapModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityMapModel";
public string PlayerCount { get; set; } = "Two";
public List<string> ResourcePlatforms { get; set; } = [];
}
@@ -1,10 +0,0 @@
using Model.Types;
namespace Model.Entity.Parts;
public class EntityResourceNodeAlloyModel : IEntityPartInterface
{
public string Type { get; set; } = "EntityResourceNodeAlloyModel";
public ResourceType Resource { get; set; } = ResourceType.Alloy;
public int DefaultAmount { get; set; }
}
+1 -4
View File
@@ -1,9 +1,6 @@
using System.Text.Json.Serialization; namespace Model.Entity.Parts;
namespace Model.Entity.Parts;
public class IEntityPartInterface public class IEntityPartInterface
{ {
[JsonIgnore]
public EntityModel Parent { get; set; } public EntityModel Parent { get; set; }
} }
-2
View File
@@ -25,8 +25,6 @@ public static class DescriptiveType
public static string Upgrade = "Upgrade"; public static string Upgrade = "Upgrade";
public static string Ability = "Ability"; public static string Ability = "Ability";
public static string Map = "Map";
public static string Passive = "Passive"; public static string Passive = "Passive";
public static string Applies_Debuff = "Applies_Debuff"; public static string Applies_Debuff = "Applies_Debuff";
} }
-7
View File
@@ -1,7 +0,0 @@
namespace Model.Types;
public static class PlayerCountType
{
public static string OneVsOne = "OneVsOne";
public static string TwoVsTwo = "TwoVsTwo";
}
-6
View File
@@ -1,6 +0,0 @@
namespace Model.Feedback;
public class TooltipModel
{
public string Message { get; set; } = "addMessage";
}
+1 -2
View File
@@ -1,8 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk"> <Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup> <PropertyGroup>
<TargetFramework>net10.0</TargetFramework> <TargetFramework>net8.0</TargetFramework>
<LangVersion>14</LangVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.1"/> <PackageReference Include="Newtonsoft.Json" Version="13.0.1"/>
-19
View File
@@ -1,19 +0,0 @@
@page "/counter"
@rendermode InteractiveWebAssembly
<PageTitle>Counter</PageTitle>
<h1>Counter</h1>
<p role="status">Current count: @currentCount</p>
<button class="btn btn-primary" @onclick="IncrementCount">Click me</button>
@code {
private int currentCount = 0;
private void IncrementCount()
{
currentCount++;
}
}
-5
View File
@@ -1,5 +0,0 @@
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
var builder = WebAssemblyHostBuilder.CreateDefault(args);
await builder.Build().RunAsync();
-20
View File
@@ -1,20 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net10.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<NoDefaultLaunchSettingsFile>true</NoDefaultLaunchSettingsFile>
<StaticWebAssetProjectMode>Default</StaticWebAssetProjectMode>
<BlazorDisableThrowNavigationException>true</BlazorDisableThrowNavigationException>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\Components\Components.csproj" />
</ItemGroup>
</Project>
-9
View File
@@ -1,9 +0,0 @@
@using System.Net.Http
@using System.Net.Http.Json
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using static Microsoft.AspNetCore.Components.Web.RenderMode
@using Microsoft.AspNetCore.Components.Web.Virtualization
@using Microsoft.JSInterop
@using Pyre.Client
@@ -1,8 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

Some files were not shown because too many files have changed in this diff Show More