diff --git a/common/player.js b/common/player.js
index 51ed313..e028e46 100644
--- a/common/player.js
+++ b/common/player.js
@@ -96,7 +96,7 @@ class Player extends Entity {
handleTick(game) {
let { entities, width, height } = game;
- this.headCount += 1 / 200;
+ this.headCount += 1 / 40;
this.headCount = Math.round(this.headCount * 1000) / 1000;
diff --git a/game.js b/game.js
index 12ec3dc..673ce55 100644
--- a/game.js
+++ b/game.js
@@ -9,6 +9,10 @@ import { createHash } from "crypto";
let db = await initDb();
+function sround(n) {
+ return Math.round(n * 1000) / 1000;
+}
+
class Game extends GameBasic {
constructor() {
super();
@@ -100,13 +104,22 @@ class Game extends GameBasic {
let { entities } = this;
let entList = [];
for (let entity of entities) {
- entity.pos = { x: Math.round(entity.pos.x), y: Math.round(entity.pos.y) };
- entity.vel = { x: Math.round(entity.vel.x), y: Math.round(entity.vel.y) };
- entity.camera = entity.camera ? { x: Math.round(entity.camera.x), y: Math.round(entity.camera.y) } : false;
+ entity.camera = entity.camera || false;
let props = entity.serverProps;
let basic = props.map(prop => entity[prop]);
- let str = JSON.stringify(basic);
+ for (let posn in basic) {
+ let posp = basic[posn];
+ if (!posp) continue;
+ if (posp.x && posp.y) {
+ posp.x = sround(posp.x);
+ posp.y = sround(posp.y);
+ }
+ if (typeof posp == 'number') {
+ basic[posn] = sround(posp);
+ }
+ }
+ let str = JSON.stringify(basic,null);
entList.push({ entity, str, basic });
}
diff --git a/static/js/index.js b/static/js/index.js
index bff97e5..e742371 100644
--- a/static/js/index.js
+++ b/static/js/index.js
@@ -131,6 +131,9 @@ class Game extends GameBasic {
textArgs = [`XY: ${-Math.round(player.camera.x)}, ${-Math.round(player.camera.y)}`, 25, 25];
ctx.strokeText(...textArgs);
ctx.fillText(...textArgs);
+ textArgs = [`PT: ${Math.round(player.headCount)}`, 25, 75];
+ ctx.strokeText(...textArgs);
+ ctx.fillText(...textArgs);
if (player.health <= 0 || player.isMenu) {
this.doMenu();
@@ -145,7 +148,10 @@ class Game extends GameBasic {
ctx.textAlign = "center";
ctx.textBaseline = "middle";
ctx.font = "bold 48px sans-serif";
- if (player.health <= 0) ctx.fillText('You died! Click to respawn', cs / 2, cs / 2);
+ if (player.health <= 0) {
+ ctx.fillText(`You died! Click to respawn\n`, cs / 2, cs / 2);
+ return;
+ }
if (player.isMenu) {
let r = Math.floor(Math.abs(player.rot / 1.2) % emojis.length);
ctx.fillText(`Click to react ${emojis[r]}`, cs / 2, cs / 2)
@@ -298,7 +304,7 @@ class Game extends GameBasic {
let sant = document.querySelector('.lb').innerHTML;
- sant = sant.replaceAll(/\[([^\[]+)\]/g,'[$1]');
+ sant = sant.replaceAll(/\[([^\[]+)\]/g, '[$1]');
document.querySelector('.lb').innerHTML = sant;
}