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