Save record on server

This commit is contained in:
KGrzeg 2021-10-17 23:47:52 +02:00
parent a38072214e
commit a575d447f9
9 changed files with 68 additions and 36 deletions

View file

@ -20,7 +20,7 @@ export default {
})
} catch (err) {
console.log("oops");
console.error(err)
}
@ -33,5 +33,13 @@ export default {
async login(key: string) {
return this.post("login", { key })
}
},
async record(points: number, shoots: number, time: number) {
return this.post("record", {
points,
shoots,
time
})
},
}

View file

@ -27,6 +27,9 @@ export default class Bullets extends Phaser.Physics.Arcade.Group {
if (bullet && this.lastShoot + this.cooldown <= time) {
bullet.fire(shooter.x, shooter.y, shooter.rotation)
this.lastShoot = time
return true
}
return false
}
}

View file

@ -16,6 +16,7 @@ export default class Ship extends Phaser.Physics.Arcade.Sprite {
bullets: Bullets
thruster: Thruster
life = 3
shoots = 0
constructor(scene: Phaser.Scene) {
super(
@ -56,8 +57,10 @@ export default class Ship extends Phaser.Physics.Arcade.Sprite {
if (keyRight.isDown) vec.x = this.acceleration
if (keyLeft.isDown) vec.x = -this.acceleration
if (this.scene.input.activePointer.leftButtonDown())
this.bullets!.fireBullet(time, this);
if (this.scene.input.activePointer.leftButtonDown()) {
if (this.bullets!.fireBullet(time, this))
this.shoots++
}
this.rotation = Phaser.Math.Angle.BetweenPoints(
this,
@ -78,8 +81,8 @@ export default class Ship extends Phaser.Physics.Arcade.Sprite {
asteroid.destroy() //TODO: use objects pool
this.scene.events.emit("ship:gothit")
}
if (!this.life){
if (!this.life) {
this.scene.events.emit("ship:destroyed")
}
}

View file

@ -8,6 +8,8 @@ declare global {
key?: String | null,
record?: String | null,
}
freezeGui: Function,
unfreezeGui: Function
}
}
@ -26,6 +28,18 @@ declare global {
key: document.getElementById("key"),
}
window.freezeGui = () => {
(elements.buttons.login as HTMLButtonElement).disabled = true;
(elements.buttons.logout as HTMLButtonElement).disabled = true;
(elements.buttons.signup as HTMLButtonElement).disabled = true;
}
window.unfreezeGui = () => {
(elements.buttons.login as HTMLButtonElement).disabled = false;
(elements.buttons.logout as HTMLButtonElement).disabled = false;
(elements.buttons.signup as HTMLButtonElement).disabled = false;
}
function readDataFromToken(token) {
return JSON.parse(
atob(token.split('.')[1])

View file

@ -1,4 +1,5 @@
import Phaser from 'phaser'
import API from "../api"
export default class PlayScene extends Phaser.Scene {
@ -11,7 +12,7 @@ export default class PlayScene extends Phaser.Scene {
this.load.image('hs3-logo', 'assets/img/hs3-logo.png')
}
create(data) {
async create(data) {
console.log("Show end screen with data:", data)
this.add.image(250, 550, 'phaser-logo').setScale(0.5)
@ -27,6 +28,7 @@ export default class PlayScene extends Phaser.Scene {
const rank = 0
const pts = data.points || 0
const lvl = data.level || 0
const shts = data.shoots || 0
const time = Math.ceil(data.elapsedTime || 0)
this.add.text(this.cameras.main.centerX, this.cameras.main.centerY, [
@ -39,5 +41,9 @@ export default class PlayScene extends Phaser.Scene {
align: 'center',
color: 'cyan'
}).setOrigin(0.5, 0.5)
if (window.myStuff.token)
await API.record(pts, shts, time)
window.unfreezeGui()
}
}

View file

@ -16,7 +16,6 @@ export default class PlayScene extends Phaser.Scene {
backgroundOrder: number[] = []
backgroundId = 0
startTimestamp: number = 0
auth: any
constructor() {
super('play-scene')
@ -36,10 +35,7 @@ export default class PlayScene extends Phaser.Scene {
this.load.multiatlas('asteroids', 'assets/img/asteroids.json', 'assets/img');
}
create(data) {
console.log("Started game with", data)
this.auth = data
create() {
Asteroid.createAnimations(this)
this.difficulty = new DifficultyManager(this)
this.events.on('getpoint', this.updateLabel, this)
@ -69,7 +65,8 @@ export default class PlayScene extends Phaser.Scene {
this.scene.start('game-over-scene', {
points: this.difficulty!.getPoints(),
level: this.difficulty!.getLevel(),
elapsedTime: (this.time.now - this.startTimestamp) / 1000
elapsedTime: (this.time.now - this.startTimestamp) / 1000,
shoots: this.player!.shoots
})
}

View file

@ -34,7 +34,8 @@ export default class StartScene extends Phaser.Scene {
}).setOrigin(0.5, 0.5)
this.input.on('pointerup', () => {
this.scene.start('play-scene', window.myStuff);
window.freezeGui()
this.scene.start('play-scene');
});
}
}