chore: analyzer cleanup for server and tests
Apply Roslyn/dotnet-format fixes across NeonSprawl.Server and NeonSprawl.Server.Tests: collection expressions, concrete helper return types, record XML docs, logging guards, quest store refactors, and removal of redundant usings via GlobalUsings.cs. Extend csharp-style.md with the recurring patterns.pull/191/head
parent
2cf8bcd0b9
commit
b233fa040d
|
|
@ -50,31 +50,57 @@ if (string.IsNullOrEmpty(key))
|
||||||
return false;
|
return false;
|
||||||
```
|
```
|
||||||
- **Indentation:** **4 spaces** per level; no tabs unless the file already uses tabs—never mix.
|
- **Indentation:** **4 spaces** per level; no tabs unless the file already uses tabs—never mix.
|
||||||
|
- **Trailing whitespace:** do not leave spaces or tabs at the end of a line, including blank lines between statements (RCS1037).
|
||||||
- **`var`:** use when the type is obvious from the right-hand side; use explicit types when it improves readability or for literals where the type matters.
|
- **`var`:** use when the type is obvious from the right-hand side; use explicit types when it improves readability or for literals where the type matters.
|
||||||
- **File-scoped namespaces** (`namespace X;`) for new single-namespace files when the SDK/version allows.
|
- **File-scoped namespaces** (`namespace X;`) for new single-namespace files when the SDK/version allows.
|
||||||
|
- **Empty marker types** (collection fixtures, `[CollectionDefinition]`, marker interfaces): omit `{ }` and end with `;` when the type has no members (RCS1251).
|
||||||
- **Pattern matching / nullability:** prefer modern C# features where they simplify code; honor **nullable reference type** annotations when the project enables them.
|
- **Pattern matching / nullability:** prefer modern C# features where they simplify code; honor **nullable reference type** annotations when the project enables them.
|
||||||
|
|
||||||
## Collection expressions (IDE0305)
|
## Collection expressions (IDE0300 / IDE0305)
|
||||||
|
|
||||||
|
- Prefer **`["a", "b"]`** over **`new[] { "a", "b" }`** for inline string (and other) array/list literals.
|
||||||
- Prefer **collection spread** (`[.. source]`) over **`.ToArray()`** / **`.ToList()`** when materializing a sequence into a new array or list for return values, record `with` copies, or local snapshots.
|
- Prefer **collection spread** (`[.. source]`) over **`.ToArray()`** / **`.ToList()`** when materializing a sequence into a new array or list for return values, record `with` copies, or local snapshots.
|
||||||
- Give an **explicit target type** when the compiler cannot infer one (CS9176), e.g. `string[] ids = [.. query.Select(static x => x.Id)];`.
|
- Give an **explicit target type** when the compiler cannot infer one (CS9176), e.g. `string[] ids = [.. query.Select(static x => x.Id)];`.
|
||||||
- In **assertions**, avoid passing a bare spread directly to APIs with span overloads (e.g. `Assert.Equal`) — assign to a typed local first:
|
- In **assertions**, avoid passing a bare spread directly to APIs with span overloads (e.g. `Assert.Equal`) — assign to a typed local first, or use a **`private static readonly`** field when the same literal is reused (CA1861):
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
// Prefer
|
// Prefer
|
||||||
return [.. query];
|
return [.. query];
|
||||||
GrantedItems = [.. row.GrantedItems],
|
GrantedItems = [.. row.GrantedItems],
|
||||||
|
new SkillDefRow("salvage", "gather", "Salvage", ["activity", "mission_reward"]),
|
||||||
|
|
||||||
// When type inference fails
|
// When type inference fails
|
||||||
string[] expectedOrder = [.. registry.GetDefinitionsInIdOrder().Select(static d => d.Id)];
|
string[] expectedOrder = [.. registry.GetDefinitionsInIdOrder().Select(static d => d.Id)];
|
||||||
string[] actualOrder = [.. body.Quests.Select(static row => row.QuestId)];
|
string[] actualOrder = [.. body.Quests.Select(static row => row.QuestId)];
|
||||||
Assert.Equal(expectedOrder, actualOrder);
|
Assert.Equal(expectedOrder, actualOrder);
|
||||||
|
|
||||||
|
// Reused expected literals in tests
|
||||||
|
private static readonly string[] ExpectedSkillIds = ["intrusion", "refine", "salvage"];
|
||||||
|
Assert.Equal(ExpectedSkillIds, ids);
|
||||||
|
|
||||||
// Avoid (ambiguous Assert overloads; unnecessary allocation helper)
|
// Avoid (ambiguous Assert overloads; unnecessary allocation helper)
|
||||||
Assert.Equal(expectedOrder, [.. body.Quests.Select(static row => row.QuestId)]);
|
Assert.Equal(expectedOrder, [.. body.Quests.Select(static row => row.QuestId)]);
|
||||||
return query.ToArray();
|
return query.ToArray();
|
||||||
|
new[] { "activity", "mission_reward" }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Target-typed `new` (IDE0090)
|
||||||
|
|
||||||
|
- When the return type or variable type is already explicit, prefer **`new()`** over repeating the type name in object initializers (common in test request helpers):
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
private static SkillProgressionGrantRequest Grant(...) =>
|
||||||
|
new()
|
||||||
|
{
|
||||||
|
SchemaVersion = schemaVersion,
|
||||||
|
SkillId = skillId,
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
## Async pass-through (CDT1003)
|
||||||
|
|
||||||
|
- Do not mark a method **`async`** when it only **`await`**s and returns a single **`Task`** — return that task directly with an expression body or **`return`** statement.
|
||||||
|
|
||||||
## `using` / `await using` (IDE0063)
|
## `using` / `await using` (IDE0063)
|
||||||
|
|
||||||
- When a **`using` or `await using` block contains exactly one statement**, prefer the declaration form without braces: `await using var conn = …;` then the single statement on following lines **only if** it is still logically one resource scope (typical for `NpgsqlConnection` + one command in integration-test reset helpers).
|
- When a **`using` or `await using` block contains exactly one statement**, prefer the declaration form without braces: `await using var conn = …;` then the single statement on following lines **only if** it is still logically one resource scope (typical for `NpgsqlConnection` + one command in integration-test reset helpers).
|
||||||
|
|
@ -83,15 +109,19 @@ return query.ToArray();
|
||||||
|
|
||||||
## Local `const` (RCS1118)
|
## Local `const` (RCS1118)
|
||||||
|
|
||||||
- When a local is initialized from a **compile-time constant** (string literal, numeric literal, or `public const` field), declare it **`const`** instead of **`var`**.
|
- When a local is initialized from a **compile-time constant** (string literal, raw string literal, numeric literal, or `public const` field), declare it **`const`** instead of **`var`**.
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
const string questId = PrototypeE7M1QuestCatalogRules.GatherIntroQuestId;
|
const string questId = PrototypeE7M1QuestCatalogRules.GatherIntroQuestId;
|
||||||
|
const string fixtureJson = """
|
||||||
|
{ "schemaVersion": 1 }
|
||||||
|
""";
|
||||||
```
|
```
|
||||||
|
|
||||||
## Inline declarations (IDE0018)
|
## Inline declarations (IDE0018 / IDE0059)
|
||||||
|
|
||||||
- Prefer **inline initialization** over declare-then-assign when the analyzer suggests it, e.g. `var outcome = Operation(...)` and `TryGet(..., out var snapshot)` instead of separate upfront declarations.
|
- Prefer **inline initialization** over declare-then-assign when the analyzer suggests it, e.g. `var outcome = Operation(...)` and `TryGet(..., out var snapshot)` instead of separate upfront declarations.
|
||||||
|
- Do **not** pre-initialize locals with **`default`**, **`null`**, or **`false`** when the variable is assigned in the next block before its first read (IDE0059) — declare without an initializer instead.
|
||||||
|
|
||||||
```csharp
|
```csharp
|
||||||
// Prefer — single disposable, single follow-on statement
|
// Prefer — single disposable, single follow-on statement
|
||||||
|
|
@ -119,8 +149,27 @@ var store = secondScope.ServiceProvider.GetRequiredService<IExampleStore>(); //
|
||||||
|
|
||||||
## Concrete return types (CA1859)
|
## Concrete return types (CA1859)
|
||||||
|
|
||||||
- When a private helper always returns a materialized array, prefer the **concrete array type** as the return type (e.g. `RewardItemGrantApplied[]`) instead of `IReadOnlyList<T>` if callers only need the array and analyzers suggest it.
|
- When a private helper always returns a materialized array or list, prefer the **concrete type** as the return type (e.g. `List<T>`, `T[]`, `Dictionary<,>`) instead of `IReadOnlyList<T>` / `IReadOnlyDictionary<,>` when callers only need the materialized value and analyzers suggest it.
|
||||||
|
- Same rule applies to **`BuildDefinitionsInIdOrder`**, **`MapSlots`**, **`ReadBindings`**, and similar helpers that always construct a new collection.
|
||||||
|
|
||||||
|
## Logging guards (CA1873)
|
||||||
|
|
||||||
|
- Before **`LogInformation`**, **`LogDebug`**, or other structured logs whose arguments allocate (interpolated strings, exceptions, collection counts), guard with **`logger.IsEnabled(LogLevel.…)`** (or **`logger?.IsEnabled(...) is true`** when the logger is nullable).
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
if (logger.IsEnabled(LogLevel.Information))
|
||||||
|
{
|
||||||
|
logger.LogInformation("Loaded catalog from {Path} with {Count} rows.", path, rows.Count);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## SQL parameter names (RCS1015)
|
||||||
|
|
||||||
|
- When an ADO.NET / Npgsql parameter name matches a local variable, prefer **`nameof(variable)`** over a string literal: **`AddWithValue(nameof(xp), xp)`**.
|
||||||
|
|
||||||
|
## Arithmetic clarity (RCS1123)
|
||||||
|
|
||||||
|
- In mixed products inside calls (e.g. **`Math.Sqrt((dx * dx) + (dz * dz))`**), parenthesize each product so precedence is explicit.
|
||||||
|
|
||||||
- Prefer **expression-bodied** members only when they stay one clear idea.
|
- Prefer **expression-bodied** members only when they stay one clear idea.
|
||||||
- **LINQ:** favor readability over micro-chains; break complex queries across lines.
|
- **LINQ:** favor readability over micro-chains; break complex queries across lines.
|
||||||
|
|
@ -133,7 +182,14 @@ var store = secondScope.ServiceProvider.GetRequiredService<IExampleStore>(); //
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
- Use **`///` XML doc comments** on public APIs (types and members) when behavior or contracts are not obvious.
|
- Use **`///` XML doc comments** on public APIs (types and members) when behavior or contracts are not obvious.
|
||||||
- **Primary-constructor records:** include a **`<summary>`** on the type. Prefer **`<see cref="PropertyName"/>`** in the summary for positional parameters. Do **not** use **`<param>`** on **`record struct`** primary constructors — Roslynator reports false-positive **RCS1263** ([roslynator#1730](https://github.com/dotnet/roslynator/issues/1730)). **`record class`** / **`class`** primary constructors may use `<param>` when the analyzer accepts them.
|
- **Primary-constructor records:** include a **`<summary>`** on the type. Document positional parameters with **`<see cref="PropertyName"/>`** inside the summary — **never** **`/// <param>`** on **`record struct`** or **`record class`** primary constructors (Roslynator **RCS1263** false positive; [roslynator#1730](https://github.com/dotnet/roslynator/issues/1730)).
|
||||||
|
- **Property / field docs:** every **`///`** block must include a **`<summary>`** — do not ship **`<remarks>`**-only comments (RCS1139). Put extra detail in **`<remarks>`** after the summary when needed.
|
||||||
|
|
||||||
|
```csharp
|
||||||
|
/// <summary>Deny reason when <see cref="Granted"/> is <c>false</c>.</summary>
|
||||||
|
/// <remarks>Stable snake_case values; see README.</remarks>
|
||||||
|
public string? ReasonCode { get; init; }
|
||||||
|
```
|
||||||
|
|
||||||
## Null checks (IDE0270)
|
## Null checks (IDE0270)
|
||||||
|
|
||||||
|
|
@ -207,3 +263,4 @@ public async Task PostExample_ShouldReturnOk_WhenBodyValid()
|
||||||
## Tooling
|
## Tooling
|
||||||
|
|
||||||
- Prefer fixes that satisfy built-in **.NET analyzers** / `dotnet format` (if adopted) rather than fighting IDE warnings without reason.
|
- Prefer fixes that satisfy built-in **.NET analyzers** / `dotnet format` (if adopted) rather than fighting IDE warnings without reason.
|
||||||
|
- Remove **unnecessary `using` directives** (IDE0005 / CS8019) — with **implicit usings** and **global usings**, many `Microsoft.Extensions.*`, `System.Threading`, and `System.Linq` imports are redundant. Run `dotnet format <project>.csproj --diagnostics IDE0005 --severity info` before merge on touched projects.
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,7 @@
|
||||||
meta {
|
meta {
|
||||||
name: Neon Sprawl Server
|
name: Neon Sprawl Server
|
||||||
}
|
}
|
||||||
|
|
||||||
|
docs {
|
||||||
|
chore/cleanup analyzer pass: no HTTP route or request-body changes.
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,17 +1,10 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using NeonSprawl.Server.Game.Gigs;
|
using NeonSprawl.Server.Game.Gigs;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.Targeting;
|
using NeonSprawl.Server.Game.Targeting;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
||||||
|
|
||||||
|
|
@ -36,8 +29,8 @@ public sealed class AbilityCastApiTests
|
||||||
post.EnsureSuccessStatusCode();
|
post.EnsureSuccessStatusCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static async Task LockPrototypeTargetAlphaAsync(HttpClient client) =>
|
private static Task LockPrototypeTargetAlphaAsync(HttpClient client) =>
|
||||||
await LockPrototypeTargetAsync(client, PrototypeNpcRegistry.PrototypeNpcMeleeId);
|
LockPrototypeTargetAsync(client, PrototypeNpcRegistry.PrototypeNpcMeleeId);
|
||||||
|
|
||||||
private static async Task LockPrototypeTargetAsync(HttpClient client, string targetId)
|
private static async Task LockPrototypeTargetAsync(HttpClient client, string targetId)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.Targeting;
|
using NeonSprawl.Server.Game.Targeting;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using System.Text;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,5 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
namespace NeonSprawl.Server.Tests.Game.AbilityInput;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,6 @@
|
||||||
using System.Net;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json.Nodes;
|
using System.Text.Json.Nodes;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
using System.IO;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,4 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using NeonSprawl.Server.Tests.Game.Npc;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using NeonSprawl.Server.Tests.Game.Npc;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,7 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,6 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.Targeting;
|
using NeonSprawl.Server.Game.Targeting;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using NeonSprawl.Server.Tests.Game.Npc;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Tests.Game.Npc;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,7 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Targeting;
|
using NeonSprawl.Server.Game.Targeting;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Combat;
|
namespace NeonSprawl.Server.Tests.Game.Combat;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
|
|
@ -6,9 +5,6 @@ using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using NeonSprawl.Server.Game.Rewards;
|
using NeonSprawl.Server.Game.Rewards;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,8 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Rewards;
|
using NeonSprawl.Server.Game.Rewards;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,7 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Rewards;
|
using NeonSprawl.Server.Game.Rewards;
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,8 @@
|
||||||
using System.Collections.Frozen;
|
using System.Collections.Frozen;
|
||||||
using System.Text;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests.Game.Skills;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,4 @@
|
||||||
using System.Collections.Frozen;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using NeonSprawl.Server.Tests.Game.Skills;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,5 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,6 @@
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Rewards;
|
using NeonSprawl.Server.Game.Rewards;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
namespace NeonSprawl.Server.Tests.Game.Contracts;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,9 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.Crafting;
|
using NeonSprawl.Server.Game.Crafting;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using NeonSprawl.Server.Game.Rewards;
|
using NeonSprawl.Server.Game.Rewards;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,6 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Crafting;
|
using NeonSprawl.Server.Game.Crafting;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,8 @@
|
||||||
using System.Collections.Frozen;
|
using System.Collections.Frozen;
|
||||||
using System.Net;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json.Nodes;
|
using System.Text.Json.Nodes;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Crafting;
|
using NeonSprawl.Server.Game.Crafting;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
using System.Collections.Frozen;
|
using System.Collections.Frozen;
|
||||||
using System.IO;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Crafting;
|
using NeonSprawl.Server.Game.Crafting;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Crafting;
|
using NeonSprawl.Server.Game.Crafting;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
namespace NeonSprawl.Server.Tests.Game.Crafting;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
|
|
@ -6,9 +5,6 @@ using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using NeonSprawl.Server.Game.Rewards;
|
using NeonSprawl.Server.Game.Rewards;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Contracts;
|
using NeonSprawl.Server.Game.Contracts;
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
|
|
@ -6,9 +5,6 @@ using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using NeonSprawl.Server.Game.Rewards;
|
using NeonSprawl.Server.Game.Rewards;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,5 @@
|
||||||
using System.Net;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,7 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using NeonSprawl.Server.Game.Items;
|
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Targeting;
|
using NeonSprawl.Server.Game.Targeting;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json.Nodes;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Encounters;
|
using NeonSprawl.Server.Game.Encounters;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
namespace NeonSprawl.Server.Tests.Game.Encounters;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
using System.Text;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Factions;
|
namespace NeonSprawl.Server.Tests.Game.Factions;
|
||||||
|
|
||||||
|
|
@ -90,7 +87,7 @@ public class FactionDefinitionCatalogLoaderTests
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var (_, factionsDir, schemaPath) = CreateTempContentLayout();
|
var (_, factionsDir, schemaPath) = CreateTempContentLayout();
|
||||||
var singleFaction = """
|
const string singleFaction = """
|
||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"factions": [
|
"factions": [
|
||||||
|
|
@ -118,7 +115,7 @@ public class FactionDefinitionCatalogLoaderTests
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
var (_, factionsDir, schemaPath) = CreateTempContentLayout();
|
var (_, factionsDir, schemaPath) = CreateTempContentLayout();
|
||||||
var oneFaction = """
|
const string oneFaction = """
|
||||||
{
|
{
|
||||||
"schemaVersion": 1,
|
"schemaVersion": 1,
|
||||||
"factions": [
|
"factions": [
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,4 @@
|
||||||
using System.Text;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Factions;
|
namespace NeonSprawl.Server.Tests.Game.Factions;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Factions;
|
namespace NeonSprawl.Server.Tests.Game.Factions;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,8 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using NeonSprawl.Server.Game.Rewards;
|
using NeonSprawl.Server.Game.Rewards;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Factions;
|
namespace NeonSprawl.Server.Tests.Game.Factions;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Factions;
|
namespace NeonSprawl.Server.Tests.Game.Factions;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Factions;
|
namespace NeonSprawl.Server.Tests.Game.Factions;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Factions;
|
namespace NeonSprawl.Server.Tests.Game.Factions;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Factions;
|
namespace NeonSprawl.Server.Tests.Game.Factions;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,5 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Factions;
|
namespace NeonSprawl.Server.Tests.Game.Factions;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,9 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Factions;
|
using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using NeonSprawl.Server.Game.Rewards;
|
using NeonSprawl.Server.Game.Rewards;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,6 @@
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json.Nodes;
|
using System.Text.Json.Nodes;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using NeonSprawl.Server.Game.Items;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,4 @@
|
||||||
using System.IO;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
namespace NeonSprawl.Server.Tests.Game.Gathering;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Gigs;
|
using NeonSprawl.Server.Game.Gigs;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gigs;
|
namespace NeonSprawl.Server.Tests.Game.Gigs;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,15 +1,8 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Gigs;
|
using NeonSprawl.Server.Game.Gigs;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Targeting;
|
using NeonSprawl.Server.Game.Targeting;
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gigs;
|
namespace NeonSprawl.Server.Tests.Game.Gigs;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Gigs;
|
using NeonSprawl.Server.Game.Gigs;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Gigs;
|
namespace NeonSprawl.Server.Tests.Game.Gigs;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using NeonSprawl.Server.Game.World;
|
using NeonSprawl.Server.Game.World;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
||||||
|
|
||||||
|
|
@ -62,10 +61,10 @@ public class HorizontalReachTests
|
||||||
public void IsWithinHorizontalRadius_NegativeRadius_ThrowsArgumentOutOfRange()
|
public void IsWithinHorizontalRadius_NegativeRadius_ThrowsArgumentOutOfRange()
|
||||||
{
|
{
|
||||||
// Arrange
|
// Arrange
|
||||||
Action act = () => HorizontalReach.IsWithinHorizontalRadius(0, 0, 0, 0, -1.0);
|
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
var ex = Assert.Throws<ArgumentOutOfRangeException>(act);
|
var ex = Assert.Throws<ArgumentOutOfRangeException>(
|
||||||
|
() => HorizontalReach.IsWithinHorizontalRadius(0, 0, 0, 0, -1.0));
|
||||||
|
|
||||||
// Assert
|
// Assert
|
||||||
Assert.NotNull(ex);
|
Assert.NotNull(ex);
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Interaction;
|
using NeonSprawl.Server.Game.Interaction;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
||||||
|
|
||||||
|
|
@ -28,7 +24,8 @@ public class InteractablesWorldApiTests
|
||||||
Assert.Equal(5, body.Interactables.Count);
|
Assert.Equal(5, body.Interactables.Count);
|
||||||
|
|
||||||
var ids = body.Interactables.Select(static x => x.InteractableId).ToList();
|
var ids = body.Interactables.Select(static x => x.InteractableId).ToList();
|
||||||
Assert.Equal(ids.OrderBy(static x => x, StringComparer.Ordinal).ToList(), ids);
|
string[] expectedOrder = [.. ids.OrderBy(static x => x, StringComparer.Ordinal)];
|
||||||
|
Assert.Equal(expectedOrder, ids);
|
||||||
|
|
||||||
var alpha = body.Interactables.Single(x => x.InteractableId == PrototypeInteractableRegistry.PrototypeResourceNodeAlphaId);
|
var alpha = body.Interactables.Single(x => x.InteractableId == PrototypeInteractableRegistry.PrototypeResourceNodeAlphaId);
|
||||||
Assert.Equal("resource_node", alpha.Kind);
|
Assert.Equal("resource_node", alpha.Kind);
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,5 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using System.Text;
|
|
||||||
using NeonSprawl.Server.Game.Interaction;
|
using NeonSprawl.Server.Game.Interaction;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,7 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using NeonSprawl.Server.Game.Interaction;
|
using NeonSprawl.Server.Game.Interaction;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Game.World;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,5 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Interaction;
|
using NeonSprawl.Server.Game.Interaction;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Game.World;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ using System.Diagnostics.CodeAnalysis;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using Microsoft.Extensions.Time.Testing;
|
using Microsoft.Extensions.Time.Testing;
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
|
|
@ -12,11 +11,8 @@ using NeonSprawl.Server.Game.Factions;
|
||||||
using NeonSprawl.Server.Game.Gathering;
|
using NeonSprawl.Server.Game.Gathering;
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Quests;
|
using NeonSprawl.Server.Game.Quests;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using Npgsql;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
namespace NeonSprawl.Server.Tests.Game.Interaction;
|
||||||
|
|
||||||
|
|
@ -110,19 +106,19 @@ internal sealed class SalvageActivityDeniedSkillRegistry : ISkillDefinitionRegis
|
||||||
"salvage",
|
"salvage",
|
||||||
"gather",
|
"gather",
|
||||||
"Salvage",
|
"Salvage",
|
||||||
new[] { "mission_reward" });
|
["mission_reward"]);
|
||||||
|
|
||||||
private static readonly SkillDefRow Refine = new(
|
private static readonly SkillDefRow Refine = new(
|
||||||
"refine",
|
"refine",
|
||||||
"process",
|
"process",
|
||||||
"Refine",
|
"Refine",
|
||||||
new[] { "activity", "mission_reward", "trainer" });
|
["activity", "mission_reward", "trainer"]);
|
||||||
|
|
||||||
private static readonly SkillDefRow Intrusion = new(
|
private static readonly SkillDefRow Intrusion = new(
|
||||||
"intrusion",
|
"intrusion",
|
||||||
"tech",
|
"tech",
|
||||||
"Intrusion",
|
"Intrusion",
|
||||||
new[] { "activity", "mission_reward", "book_or_item" });
|
["activity", "mission_reward", "book_or_item"]);
|
||||||
|
|
||||||
private static readonly IReadOnlyList<SkillDefRow> Ordered =
|
private static readonly IReadOnlyList<SkillDefRow> Ordered =
|
||||||
[
|
[
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Items;
|
namespace NeonSprawl.Server.Tests.Game.Items;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,6 @@
|
||||||
using System.Net;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json.Nodes;
|
using System.Text.Json.Nodes;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Items;
|
namespace NeonSprawl.Server.Tests.Game.Items;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,4 @@
|
||||||
using System.IO;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Items;
|
namespace NeonSprawl.Server.Tests.Game.Items;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Items;
|
namespace NeonSprawl.Server.Tests.Game.Items;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Items;
|
namespace NeonSprawl.Server.Tests.Game.Items;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,4 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Items;
|
namespace NeonSprawl.Server.Tests.Game.Items;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,6 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Items;
|
using NeonSprawl.Server.Game.Items;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Items;
|
namespace NeonSprawl.Server.Tests.Game.Items;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
using System.Collections.Frozen;
|
using System.Collections.Frozen;
|
||||||
using System.Net;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Tests.Game.Skills;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
using System.Net;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,5 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
||||||
|
|
||||||
|
|
@ -18,7 +11,7 @@ public sealed class MasteryFixtureApiTests
|
||||||
private static MasteryFixtureRequest ValidFixture(
|
private static MasteryFixtureRequest ValidFixture(
|
||||||
bool resetPerkState = true,
|
bool resetPerkState = true,
|
||||||
Dictionary<string, int>? skillXp = null) =>
|
Dictionary<string, int>? skillXp = null) =>
|
||||||
new MasteryFixtureRequest
|
new()
|
||||||
{
|
{
|
||||||
SchemaVersion = MasteryFixtureRequest.CurrentSchemaVersion,
|
SchemaVersion = MasteryFixtureRequest.CurrentSchemaVersion,
|
||||||
ResetPerkState = resetPerkState,
|
ResetPerkState = resetPerkState,
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,4 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using System.Text.Json;
|
|
||||||
using System.Text;
|
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
||||||
|
|
||||||
|
|
@ -19,7 +11,7 @@ public sealed class PerkStateApiTests
|
||||||
int tierIndex,
|
int tierIndex,
|
||||||
string branchId,
|
string branchId,
|
||||||
int schemaVersion = PerkBranchSelectRequest.CurrentSchemaVersion) =>
|
int schemaVersion = PerkBranchSelectRequest.CurrentSchemaVersion) =>
|
||||||
new PerkBranchSelectRequest
|
new()
|
||||||
{
|
{
|
||||||
SchemaVersion = schemaVersion,
|
SchemaVersion = schemaVersion,
|
||||||
SkillId = skillId,
|
SkillId = skillId,
|
||||||
|
|
@ -28,7 +20,7 @@ public sealed class PerkStateApiTests
|
||||||
};
|
};
|
||||||
|
|
||||||
private static SkillProgressionGrantRequest SalvageGrant(int amount) =>
|
private static SkillProgressionGrantRequest SalvageGrant(int amount) =>
|
||||||
new SkillProgressionGrantRequest
|
new()
|
||||||
{
|
{
|
||||||
SchemaVersion = SkillProgressionGrantRequest.CurrentSchemaVersion,
|
SchemaVersion = SkillProgressionGrantRequest.CurrentSchemaVersion,
|
||||||
SkillId = "salvage",
|
SkillId = "salvage",
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Tests.Game.PositionState;
|
using NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
using Npgsql;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
using System.Net.Http.Json;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Interaction;
|
using NeonSprawl.Server.Game.Interaction;
|
||||||
using NeonSprawl.Server.Game.Mastery;
|
using NeonSprawl.Server.Game.Mastery;
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Skills;
|
|
||||||
using NeonSprawl.Server.Game.World;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
namespace NeonSprawl.Server.Tests.Game.Mastery;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,6 @@
|
||||||
using System.Net.Http.Json;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Targeting;
|
using NeonSprawl.Server.Game.Targeting;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,3 @@
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,3 @@
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,5 @@
|
||||||
using System.Net;
|
|
||||||
using System.Text;
|
|
||||||
using System.Text.Json.Nodes;
|
using System.Text.Json.Nodes;
|
||||||
using Microsoft.AspNetCore.Mvc.Testing;
|
using Microsoft.AspNetCore.Mvc.Testing;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,4 @@
|
||||||
using System.IO;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using Microsoft.Extensions.Logging.Abstractions;
|
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,3 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,5 @@
|
||||||
using Microsoft.Extensions.Options;
|
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,5 @@
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.Targeting;
|
using NeonSprawl.Server.Game.Targeting;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,3 @@
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
@ -95,11 +91,11 @@ public class PrototypeNpcRegistryTests
|
||||||
.ToList();
|
.ToList();
|
||||||
// Assert
|
// Assert
|
||||||
Assert.Equal(InstancesInIdOrder.Length, resolved.Count);
|
Assert.Equal(InstancesInIdOrder.Length, resolved.Count);
|
||||||
foreach (var row in resolved)
|
foreach (var (_, found, behaviorDefId, resolvedDef, resolvedId) in resolved)
|
||||||
{
|
{
|
||||||
Assert.True(row.Found);
|
Assert.True(found);
|
||||||
Assert.True(row.Resolved);
|
Assert.True(resolvedDef);
|
||||||
Assert.Equal(row.BehaviorDefId, row.ResolvedId);
|
Assert.Equal(behaviorDefId, resolvedId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,5 @@
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Combat;
|
using NeonSprawl.Server.Game.Combat;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.Npc;
|
namespace NeonSprawl.Server.Tests.Game.Npc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,7 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.AbilityInput;
|
using NeonSprawl.Server.Game.AbilityInput;
|
||||||
using NeonSprawl.Server.Game.Npc;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using NeonSprawl.Server.Game.Targeting;
|
using NeonSprawl.Server.Game.Targeting;
|
||||||
using NeonSprawl.Server.Tests;
|
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.PositionState;
|
namespace NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
|
|
||||||
|
|
@ -151,12 +144,8 @@ public class MoveCommandApiTests
|
||||||
// Arrange
|
// Arrange
|
||||||
|
|
||||||
await using var factory = new InMemoryWebApplicationFactory().WithWebHostBuilder(b =>
|
await using var factory = new InMemoryWebApplicationFactory().WithWebHostBuilder(b =>
|
||||||
{
|
|
||||||
b.ConfigureTestServices(services =>
|
b.ConfigureTestServices(services =>
|
||||||
{
|
services.PostConfigure<GamePositionOptions>(o => o.MovementValidation.MaxVerticalStep = 0.5)));
|
||||||
services.PostConfigure<GamePositionOptions>(o => o.MovementValidation.MaxVerticalStep = 0.5);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
var client = factory.CreateClient();
|
var client = factory.CreateClient();
|
||||||
var cmd = new MoveCommandRequest
|
var cmd = new MoveCommandRequest
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.PositionState;
|
namespace NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,5 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using System.Text;
|
|
||||||
using Microsoft.AspNetCore.TestHost;
|
using Microsoft.AspNetCore.TestHost;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.PositionState;
|
namespace NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,4 @@
|
||||||
using System.Net;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using NeonSprawl.Server.Game.PositionState;
|
using NeonSprawl.Server.Game.PositionState;
|
||||||
using Xunit;
|
|
||||||
|
|
||||||
namespace NeonSprawl.Server.Tests.Game.PositionState;
|
namespace NeonSprawl.Server.Tests.Game.PositionState;
|
||||||
|
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue