add distance moved score
This commit is contained in:
parent
259d63d683
commit
4e605d556c
|
@ -75,6 +75,7 @@ export default function PlayerInfo({player}: { player: string }) {
|
||||||
<ScoreRow name="walls destroyed" value={lastJsonMessage.scores.wallsDestroyed}/>
|
<ScoreRow name="walls destroyed" value={lastJsonMessage.scores.wallsDestroyed}/>
|
||||||
<ScoreRow name="bullets fired" value={lastJsonMessage.scores.shotsFired}/>
|
<ScoreRow name="bullets fired" value={lastJsonMessage.scores.shotsFired}/>
|
||||||
<ScoreRow name="power ups collected" value={lastJsonMessage.scores.powerUpsCollected}/>
|
<ScoreRow name="power ups collected" value={lastJsonMessage.scores.powerUpsCollected}/>
|
||||||
|
<ScoreRow name="pixels moved" value={lastJsonMessage.scores.pixelsMoved}/>
|
||||||
|
|
||||||
<ScoreRow name="score" value={lastJsonMessage.scores.overallScore}/>
|
<ScoreRow name="score" value={lastJsonMessage.scores.overallScore}/>
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|
|
@ -58,6 +58,11 @@ export default function Scoreboard({}: {}) {
|
||||||
visualize: p => p.scores.powerUpsCollected.toString(),
|
visualize: p => p.scores.powerUpsCollected.toString(),
|
||||||
sorter: (a, b) => numberSorter(a.scores.powerUpsCollected, b.scores.powerUpsCollected)
|
sorter: (a, b) => numberSorter(a.scores.powerUpsCollected, b.scores.powerUpsCollected)
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
field: 'distance',
|
||||||
|
visualize: p => p.scores.pixelsMoved.toString(),
|
||||||
|
sorter: (a, b) => numberSorter(a.scores.pixelsMoved, b.scores.pixelsMoved)
|
||||||
|
},
|
||||||
{
|
{
|
||||||
field: 'score',
|
field: 'score',
|
||||||
visualize: p => p.scores.overallScore.toString(),
|
visualize: p => p.scores.overallScore.toString(),
|
||||||
|
|
|
@ -9,6 +9,7 @@ export type Scores = {
|
||||||
readonly shotsFired: number;
|
readonly shotsFired: number;
|
||||||
readonly overallScore: number;
|
readonly overallScore: number;
|
||||||
readonly powerUpsCollected: number;
|
readonly powerUpsCollected: number;
|
||||||
|
readonly pixelsMoved: number;
|
||||||
};
|
};
|
||||||
|
|
||||||
export type Player = {
|
export type Player = {
|
||||||
|
|
|
@ -54,6 +54,7 @@ internal sealed class MoveTanks(
|
||||||
if (HitsTank(tank, newPosition))
|
if (HitsTank(tank, newPosition))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
tank.Owner.Scores.DistanceMoved += newPosition.Distance(tank.Position);
|
||||||
tank.Position = newPosition;
|
tank.Position = newPosition;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace TanksServer.Models;
|
namespace TanksServer.Models;
|
||||||
|
|
||||||
internal sealed record class Scores
|
internal sealed record class Scores
|
||||||
|
@ -24,10 +26,15 @@ internal sealed record class Scores
|
||||||
|
|
||||||
public int PowerUpsCollected { get; set; }
|
public int PowerUpsCollected { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore] public double DistanceMoved { get; set; }
|
||||||
|
|
||||||
|
public int PixelsMoved => (int)DistanceMoved;
|
||||||
|
|
||||||
public int OverallScore => Math.Max(0,
|
public int OverallScore => Math.Max(0,
|
||||||
10000 * Kills
|
10000 * Kills
|
||||||
- 1000 * Deaths
|
- 1000 * Deaths
|
||||||
+ 100 * PowerUpsCollected
|
+ 100 * PowerUpsCollected
|
||||||
+ 10 * (ShotsFired + WallsDestroyed)
|
+ 10 * (ShotsFired + WallsDestroyed)
|
||||||
|
+ PixelsMoved
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue