Skip to content

Commit c83697a

Browse files
committed
Upgrade
1 parent bd9e7f0 commit c83697a

6 files changed

Lines changed: 54 additions & 44 deletions

File tree

src/NosCore.PathFinder.Api/NosCore.PathFinder.Api.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk.Web">
22

33
<PropertyGroup>
4-
<TargetFramework>net7.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<Nullable>enable</Nullable>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<LangVersion>latest</LangVersion>
@@ -12,8 +12,8 @@
1212
</PropertyGroup>
1313

1414
<ItemGroup>
15-
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="7.0.18" />
16-
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.20">
15+
<PackageReference Include="Npgsql.EntityFrameworkCore.PostgreSQL" Version="10.0.0" />
16+
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="10.0.0">
1717
<PrivateAssets>all</PrivateAssets>
1818
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1919
</PackageReference>

src/NosCore.PathFinder.Api/Program.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,6 @@ class HeuristicProvider
266266
private readonly Dictionary<string, IHeuristic> _heuristics = new(StringComparer.OrdinalIgnoreCase)
267267
{
268268
["octile"] = new OctileDistanceHeuristic(),
269-
["manhattan"] = new ManhattanDistanceHeuristic(),
270-
["euclidean"] = new EuclideanDistanceHeuristic(),
271-
["chebyshev"] = new ChebyshevDistanceHeuristic()
272269
};
273270

274271
public IHeuristic Get(string? name) =>

src/NosCore.PathFinder.Api/wwwroot/app.js

Lines changed: 45 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -271,45 +271,58 @@ function updateEntities(deltaTime) {
271271
entity.y = entity.homeY;
272272
returnFlowFields.delete(entity.id);
273273
entity.needsReturnPath = false;
274+
entity.stuckFrames = 0;
274275
continue;
275276
}
276277

277-
if (!entity.needsReturnPath && dist > 0.5) {
278-
entity.needsReturnPath = true;
279-
requestReturnPath(entity);
280-
}
281-
282-
const returnField = returnFlowFields.get(entity.id);
283-
if (returnField) {
284-
const returnVector = returnField.get(key);
285-
if (returnVector) {
286-
const newX = entity.x + returnVector.dx * RETURN_SPEED * deltaTime;
287-
const newY = entity.y + returnVector.dy * RETURN_SPEED * deltaTime;
288-
if (isWalkable(newX, newY)) {
289-
entity.x = newX;
290-
entity.y = newY;
291-
} else if (isWalkable(newX, entity.y)) {
292-
entity.x = newX;
293-
} else if (isWalkable(entity.x, newY)) {
294-
entity.y = newY;
295-
}
296-
continue;
297-
}
298-
}
299-
300278
const nx = dx / dist;
301279
const ny = dy / dist;
302280
const move = Math.min(dist, RETURN_SPEED * deltaTime);
303-
const newX = entity.x + nx * move;
304-
const newY = entity.y + ny * move;
281+
const directX = entity.x + nx * move;
282+
const directY = entity.y + ny * move;
283+
284+
let moved = false;
285+
if (isWalkable(directX, directY)) {
286+
entity.x = directX;
287+
entity.y = directY;
288+
moved = true;
289+
entity.stuckFrames = 0;
290+
returnFlowFields.delete(entity.id);
291+
entity.needsReturnPath = false;
292+
} else if (isWalkable(directX, entity.y)) {
293+
entity.x = directX;
294+
moved = true;
295+
entity.stuckFrames = 0;
296+
} else if (isWalkable(entity.x, directY)) {
297+
entity.y = directY;
298+
moved = true;
299+
entity.stuckFrames = 0;
300+
}
305301

306-
if (isWalkable(newX, newY)) {
307-
entity.x = newX;
308-
entity.y = newY;
309-
} else if (isWalkable(newX, entity.y)) {
310-
entity.x = newX;
311-
} else if (isWalkable(entity.x, newY)) {
312-
entity.y = newY;
302+
if (!moved) {
303+
entity.stuckFrames = (entity.stuckFrames || 0) + 1;
304+
305+
if (entity.stuckFrames > 5 && !entity.needsReturnPath) {
306+
entity.needsReturnPath = true;
307+
requestReturnPath(entity);
308+
}
309+
310+
const returnField = returnFlowFields.get(entity.id);
311+
if (returnField) {
312+
const returnVector = returnField.get(key);
313+
if (returnVector) {
314+
const pathX = entity.x + returnVector.dx * RETURN_SPEED * deltaTime;
315+
const pathY = entity.y + returnVector.dy * RETURN_SPEED * deltaTime;
316+
if (isWalkable(pathX, pathY)) {
317+
entity.x = pathX;
318+
entity.y = pathY;
319+
} else if (isWalkable(pathX, entity.y)) {
320+
entity.x = pathX;
321+
} else if (isWalkable(entity.x, pathY)) {
322+
entity.y = pathY;
323+
}
324+
}
325+
}
313326
}
314327
}
315328
}

src/NosCore.PathFinder/NosCore.PathFinder.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net7.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<LangVersion>latest</LangVersion>
66
<ApplicationIcon>favicon.ico</ApplicationIcon>
77
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
@@ -30,8 +30,8 @@
3030

3131
<ItemGroup>
3232
<PackageReference Include="Mapster" Version="7.3.0" />
33-
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.0" />
34-
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="7.0.0" />
33+
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="10.0.0" />
34+
<PackageReference Include="Microsoft.Extensions.DependencyModel" Version="10.0.0" />
3535
<PackageReference Include="Serilog" Version="2.12.0" />
3636
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
3737
</ItemGroup>

test/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark/NosCore.PathFinder.Benchmark.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
33
<OutputType>Exe</OutputType>
4-
<TargetFramework>net7.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<Nullable>enable</Nullable>
66
</PropertyGroup>
77

test/NosCore.PathFinder.Tests/NosCore.PathFinder.Tests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net7.0</TargetFramework>
4+
<TargetFramework>net10.0</TargetFramework>
55
<Nullable>enable</Nullable>
66
<IsPackable>false</IsPackable>
77
</PropertyGroup>
88

99
<ItemGroup>
1010
<PackageReference Include="ApprovalTests" Version="5.7.3" />
11-
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="7.0.0" />
11+
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="10.0.0" />
1212
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.4.0" />
1313
<PackageReference Include="Moq" Version="4.18.2" />
1414
<PackageReference Include="MSTest.TestAdapter" Version="2.2.10" />

0 commit comments

Comments
 (0)