From 0c04d4305ba4456ef293f8251ae897a54627b925 Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20N=C3=A9grier?= Date: Fri, 1 May 2020 23:38:09 +0200 Subject: [PATCH] Displaying the name of a player above its head (names are not passed through the network yet) --- front/src/Phaser/Entity/PlayableCaracter.ts | 10 +++++++++- front/src/Phaser/Game/GameScene.ts | 4 ++++ front/src/Phaser/NonPlayer/NonPlayer.ts | 18 +++++++++--------- front/src/Phaser/Player/Player.ts | 3 ++- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/front/src/Phaser/Entity/PlayableCaracter.ts b/front/src/Phaser/Entity/PlayableCaracter.ts index 987d6bd..3b1442c 100644 --- a/front/src/Phaser/Entity/PlayableCaracter.ts +++ b/front/src/Phaser/Entity/PlayableCaracter.ts @@ -1,13 +1,20 @@ import {getPlayerAnimations, playAnimation, PlayerAnimationNames} from "../Player/Animation"; import {ActiveEventList, UserInputEvent} from "../UserInput/UserInputManager"; import {SpeechBubble} from "./SpeechBubble"; +import BitmapText = Phaser.GameObjects.BitmapText; export class PlayableCaracter extends Phaser.Physics.Arcade.Sprite { private bubble: SpeechBubble; + private playerName: BitmapText; - constructor(scene: Phaser.Scene, x: number, y: number, texture: string, frame?: string | number) { + constructor(scene: Phaser.Scene, x: number, y: number, texture: string, name: string, frame?: string | number) { super(scene, x, y, texture, frame); + // Yes, I know, I'm declaring a sprite inside a sprite. ARP, save me from this madness :) + this.playerName = new BitmapText(scene, x, y - 32, 'main_font', name, 8); + this.playerName.setOrigin(0.5).setCenterAlign(); + scene.add.existing(this.playerName); + this.scene.sys.updateList.add(this); this.scene.sys.displayList.add(this); //this.setScale(2); @@ -36,6 +43,7 @@ export class PlayableCaracter extends Phaser.Physics.Arcade.Sprite { if(this.bubble) { this.bubble.moveBubble(this.x, this.y); } + this.playerName.setPosition(this.x, this.y - 32); } stop(){ diff --git a/front/src/Phaser/Game/GameScene.ts b/front/src/Phaser/Game/GameScene.ts index 904b2d0..f5a7728 100644 --- a/front/src/Phaser/Game/GameScene.ts +++ b/front/src/Phaser/Game/GameScene.ts @@ -63,6 +63,8 @@ export class GameScene extends Phaser.Scene implements GameSceneInterface{ 'resources/characters/pipoya/Male 01-1.png', { frameWidth: 32, frameHeight: 32 } ); + this.load.bitmapFont('main_font', 'resources/fonts/arcade.png', 'resources/fonts/arcade.xml'); + cypressAsserter.preloadFinished(); } @@ -166,6 +168,7 @@ export class GameScene extends Phaser.Scene implements GameSceneInterface{ this, this.startX, this.startY, + this.playerName ); this.CurrentPlayer.initAnimation(); @@ -253,6 +256,7 @@ export class GameScene extends Phaser.Scene implements GameSceneInterface{ this, MessageUserPosition.position.x, MessageUserPosition.position.y, + 'Foo' ); player.initAnimation(); this.MapPlayers.add(player); diff --git a/front/src/Phaser/NonPlayer/NonPlayer.ts b/front/src/Phaser/NonPlayer/NonPlayer.ts index 63012e4..4291750 100644 --- a/front/src/Phaser/NonPlayer/NonPlayer.ts +++ b/front/src/Phaser/NonPlayer/NonPlayer.ts @@ -6,13 +6,13 @@ import {MessageUserPositionInterface} from "../../Connexion"; import {playAnimation} from "../Player/Animation"; export class NonPlayer extends PlayableCaracter { - + isFleeing: boolean = false; fleeingDirection:any = null //todo create a vector class - - constructor(scene: Phaser.Scene, x: number, y: number) { - super(scene, x, y, Textures.Player, 1); - this.setSize(32, 32); //edit the hitbox to better match the caracter model + + constructor(scene: Phaser.Scene, x: number, y: number, name: string) { + super(scene, x, y, Textures.Player, name, 1); + this.setSize(32, 32); //edit the hitbox to better match the character model } @@ -26,15 +26,15 @@ export class NonPlayer extends PlayableCaracter { if (this.isFleeing) return; this.say("Don't touch me!"); this.isFleeing = true; - + setTimeout(() => { this.say("Feww, I escaped."); this.isFleeing = false this.fleeingDirection = null }, 3000); - - let vectorX = this.x - player.x; + + let vectorX = this.x - player.x; let vectorY = this.y - player.y; this.fleeingDirection = {x: vectorX, y: vectorY} } -} \ No newline at end of file +} diff --git a/front/src/Phaser/Player/Player.ts b/front/src/Phaser/Player/Player.ts index 60326a2..3c7c404 100644 --- a/front/src/Phaser/Player/Player.ts +++ b/front/src/Phaser/Player/Player.ts @@ -31,9 +31,10 @@ export class Player extends PlayableCaracter implements CurrentGamerInterface, G Scene: GameSceneInterface, x: number, y: number, + name: string, PlayerValue: string = Textures.Player ) { - super(Scene, x, y, PlayerValue, 1); + super(Scene, x, y, PlayerValue, name, 1); //create input to move this.userInputManager = new UserInputManager(Scene); -- 2.25.1