From 85a813927019ce579bc7bb3a576324bf88f79176 Mon Sep 17 00:00:00 2001 From: Thomas Date: Mon, 31 Aug 2020 16:38:39 +0200 Subject: [PATCH] Added leaderboard --- client/src/components/Game.vue | 25 +++++++++++++++--- .../gltronic/tronio/business/GameManager.java | 13 ++------- .../gltronic/tronio/model/GameEntity.java | 5 ---- .../tronio/business/GameManager.class | Bin 9096 -> 9096 bytes .../gltronic/tronio/model/GameEntity.class | Bin 299 -> 0 bytes 5 files changed, 23 insertions(+), 20 deletions(-) delete mode 100644 server/src/main/java/gltronic/tronio/model/GameEntity.java delete mode 100644 server/target/classes/gltronic/tronio/model/GameEntity.class diff --git a/client/src/components/Game.vue b/client/src/components/Game.vue index e279e3a..53cfec5 100644 --- a/client/src/components/Game.vue +++ b/client/src/components/Game.vue @@ -21,6 +21,7 @@ export default { x: 0, y: 0 }, + leaderboard: [], renderTimer: null } }, @@ -71,6 +72,11 @@ export default { if (!this.players) return + this.players.sort((a, b) => { + return a.walls.length - b.walls.length + }) + this.leaderboard = [] + this.players.forEach(player => { if (player.color === this.player.color) { this.camera.x = player.x @@ -79,7 +85,10 @@ export default { } this.renderPlayer(player) this.renderWalls(player) + this.leaderboard.push(player.id + ' - ' + player.walls.length) }) + + this.renderLeaderboard() }, renderBorders () { this.context.strokeStyle = 'black' @@ -116,10 +125,11 @@ export default { const canvasX = this.canvas.width / 2 const canvasY = this.canvas.height / 2 - this.context.fillText('player x: ' + player.x + ' y:' + player.y, 10, 10) - this.context.fillText('a:' + player.angle + ' a_t' + player.targetAngle, 10, 20) - this.context.fillText('canvasX: ' + canvasX + ' canvasY:' + canvasY, 10, 30) - this.context.fillText('walls: ' + player.walls.length, 10, 40) + this.context.textAlign = 'start' + this.context.fillText('player x: ' + player.x + ' y:' + player.y, 10, 12) + this.context.fillText('a:' + player.angle + ' a_t' + player.targetAngle, 10, 24) + this.context.fillText('canvasX: ' + canvasX + ' canvasY:' + canvasY, 10, 36) + this.context.fillText('walls: ' + player.walls.length, 10, 48) this.context.beginPath() this.context.arc(this.mouse.x, this.mouse.y, 25, 0, 2 * Math.PI, false) @@ -127,6 +137,13 @@ export default { this.context.strokeStyle = player.color this.context.stroke() }, + renderLeaderboard () { + this.context.textAlign = 'end' + this.context.fillText('Leaderboard: ', this.canvas.width - 50, 10) + for (var i = 0; i < this.leaderboard.length; i++) { + this.context.fillText(this.players[i].color + ' - ' + this.players[i].walls.length, this.canvas.width - 50, 15 + (i + 1) * 10) + } + }, mouseEvent (event) { var rect = this.canvas.getBoundingClientRect() this.mouse.x = event.clientX - rect.left diff --git a/server/src/main/java/gltronic/tronio/business/GameManager.java b/server/src/main/java/gltronic/tronio/business/GameManager.java index dc22812..2094342 100644 --- a/server/src/main/java/gltronic/tronio/business/GameManager.java +++ b/server/src/main/java/gltronic/tronio/business/GameManager.java @@ -134,7 +134,6 @@ public class GameManager implements IGameManager { SocketUtils.sendObject(game.getSessions().get(id), "gamePlayerDead", new ObjectMapper().writeValueAsString(player)); } catch (JsonProcessingException e) { - // TODO Auto-generated catch block e.printStackTrace(); } } @@ -149,20 +148,12 @@ public class GameManager implements IGameManager { } private boolean isCrossingLine (double xa, double ya, double xb, double yb, double xc, double yc, double radius) { - /* - var a = xc - xa; - var b = xb - xa; - var c = yc - ya; - var d = yb - ya; - var result = (a * d - b * c) / Math.sqrt(Math.pow(xa - xb, 2) + Math.pow(ya - yb, 2)); - */ - - var result = Math.abs((yb - ya) * xc - (xb - xa) * yc + xb * ya - yb * xa)/ Math.sqrt(Math.pow(xb - xa, 2) + Math.pow(yb - ya, 2)); + var result = Math.abs((yb - ya) * xc - (xb - xa) * yc + xb * ya - yb * xa) / Math.sqrt(Math.pow(xb - xa, 2) + Math.pow(yb - ya, 2)); return result < radius; } - private Player initPlayer(Player player) { + private Player initPlayer (Player player) { Random rand = new Random(); double x = game.getSettings().getArenaSize() * (0.25 + Math.random() * 0.5); double y = game.getSettings().getArenaSize() * (0.25 + Math.random() * 0.5); diff --git a/server/src/main/java/gltronic/tronio/model/GameEntity.java b/server/src/main/java/gltronic/tronio/model/GameEntity.java deleted file mode 100644 index d9b0753..0000000 --- a/server/src/main/java/gltronic/tronio/model/GameEntity.java +++ /dev/null @@ -1,5 +0,0 @@ -package gltronic.tronio.model; - -public abstract class GameEntity { - -} \ No newline at end of file diff --git a/server/target/classes/gltronic/tronio/business/GameManager.class b/server/target/classes/gltronic/tronio/business/GameManager.class index 838bc431662b08e2acf38b6685186ebb55ebc893..dc4a1481795b4d621ded4851111df4aee095659c 100644 GIT binary patch delta 90 zcmeBh?{MGnLz=adp^~9{@?YsQf_)6!4E+pZ3=874C5FihTjOGbl{bvlDN!_3X> ua;l7qa~U`o<}t`K%m)fBX0Tyc!r;!Zlp%>>8ACe5a)w-nm79I#tyuuA@EAz| delta 90 zcmV-g0HyzkM~FwT_!|X^0C@n6ll>da5sv^10FVF{0FeM80FnSK0F<-Z94G+=pa3@j wqO%7cB>^F(00;o503QIT05<@v06YM#07n3>0Ac{I0A~QO0Br!WvrQj61iBO$vj6}9 diff --git a/server/target/classes/gltronic/tronio/model/GameEntity.class b/server/target/classes/gltronic/tronio/model/GameEntity.class deleted file mode 100644 index 8dde7df24a2f07f4ece8797fdddac5c508a24d39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 299 zcmaivu}%U(5QhIb?l?KYBR&CA0R>xHNN9}ET(pqT?;RUhvbUR@i;0hAWkTTt_)x~# zi;1Pp|Ia^@nSAs0ef|V+i(!h0Fxng6IIAnsniI9#DI?ahRu9%||CS;q43F|v3M1`a zJe5aPc|v!gt@cYoXENOq;(Ol9&_S<{1YJU2XsaGib*Y+-ER7;u7p{_KD;pj1Z!`7> z{X!TQ|8d+AvS)W{Dz(z#TK