From 34dae300dabd40a51fea48e213ac18cf22b8ff24 Mon Sep 17 00:00:00 2001 From: schmelczerandras Date: Sat, 24 Oct 2020 22:24:27 +0200 Subject: [PATCH] Change gameplay --- backend/src/default-options.ts | 3 +- backend/src/game-server.ts | 100 +++++- backend/src/main.ts | 3 - backend/src/objects/circle-physical.ts | 2 +- backend/src/objects/generates-points.ts | 8 + backend/src/objects/lamp-physical.ts | 2 + backend/src/objects/planet-physical.ts | 82 +++-- .../src/objects/player-character-physical.ts | 23 +- backend/src/objects/projectile-physical.ts | 12 +- backend/src/options.ts | 1 + .../physics/containers/physical-container.ts | 26 +- .../src/physics/physicals/dynamic-physical.ts | 1 - .../src/physics/physicals/physical-base.ts | 2 +- backend/src/players/player-container.ts | 6 +- backend/src/players/player.ts | 40 +-- backend/src/update-game-object-message.ts | 11 - frontend/src/index.ts | 11 +- frontend/src/main.scss | 75 ++++- frontend/src/scripts/game.ts | 290 ++++++++---------- frontend/src/scripts/join-form-handler.ts | 44 ++- frontend/src/scripts/objects/camera.ts | 2 +- .../src/scripts/objects/character-view.ts | 2 +- .../scripts/objects/game-object-container.ts | 19 +- frontend/src/scripts/objects/lamp-view.ts | 2 +- frontend/src/scripts/objects/planet-view.ts | 72 ++++- .../scripts/objects/player-character-view.ts | 18 +- .../src/scripts/objects/projectile-view.ts | 4 +- frontend/src/scripts/options-handler.ts | 6 +- frontend/src/scripts/sound-handler.ts | 66 +++- frontend/src/scripts/start-animation.ts | 64 ++++ frontend/src/styles/_vars.scss | 2 +- frontend/src/styles/form.scss | 6 + frontend/src/styles/settings.scss | 42 ++- frontend/static/flag.svg | 7 + frontend/static/shoot2.mp3 | Bin 0 -> 30764 bytes frontend/static/shoot3.mp3 | Bin 0 -> 28883 bytes frontend/static/shoot4.mp3 | Bin 0 -> 28939 bytes frontend/static/shoot5.mp3 | Bin 0 -> 145783 bytes frontend/static/shoot6.mp3 | Bin 0 -> 21483 bytes shared/src/commands/types/game-end.ts | 18 ++ shared/src/commands/types/game-start.ts | 13 + .../commands/types/remote-calls-for-object.ts | 14 + .../types/remote-calls-for-objects.ts | 15 + .../src/commands/types/server-announcement.ts | 13 + .../src/commands/types/update-game-state.ts | 24 +- shared/src/commands/types/update-objects.ts | 15 - .../types/update-other-player-directions.ts | 27 ++ .../src/communication/server-information.ts | 3 +- shared/src/main.ts | 12 +- shared/src/objects/game-object.ts | 41 ++- shared/src/objects/types/planet-base.ts | 6 + .../objects/types/player-character-base.ts | 19 ++ shared/src/objects/types/projectile-base.ts | 10 + shared/src/objects/update-object-message.ts | 12 - shared/src/settings.ts | 6 +- shared/src/transport/transport-events.ts | 4 +- 56 files changed, 906 insertions(+), 400 deletions(-) create mode 100644 backend/src/objects/generates-points.ts delete mode 100644 backend/src/update-game-object-message.ts create mode 100644 frontend/src/scripts/start-animation.ts create mode 100644 frontend/static/flag.svg create mode 100644 frontend/static/shoot2.mp3 create mode 100644 frontend/static/shoot3.mp3 create mode 100644 frontend/static/shoot4.mp3 create mode 100644 frontend/static/shoot5.mp3 create mode 100644 frontend/static/shoot6.mp3 create mode 100644 shared/src/commands/types/game-end.ts create mode 100644 shared/src/commands/types/game-start.ts create mode 100644 shared/src/commands/types/remote-calls-for-object.ts create mode 100644 shared/src/commands/types/remote-calls-for-objects.ts create mode 100644 shared/src/commands/types/server-announcement.ts delete mode 100644 shared/src/commands/types/update-objects.ts create mode 100644 shared/src/commands/types/update-other-player-directions.ts delete mode 100644 shared/src/objects/update-object-message.ts diff --git a/backend/src/default-options.ts b/backend/src/default-options.ts index 8ae4ab8..465a036 100644 --- a/backend/src/default-options.ts +++ b/backend/src/default-options.ts @@ -4,6 +4,7 @@ export const defaultOptions: Options = { port: 3000, name: 'Localhost', playerLimit: 16, - seed: 51, + seed: Math.random(), + scoreLimit: 500, worldSize: 10000, }; diff --git a/backend/src/game-server.ts b/backend/src/game-server.ts index 1aae894..6d6c047 100644 --- a/backend/src/game-server.ts +++ b/backend/src/game-server.ts @@ -6,6 +6,12 @@ import { settings, ServerInformation, PlayerInformation, + serializable, + UpdateGameState, + serialize, + CharacterTeam, + GameEnd, + GameStart, } from 'shared'; import { createWorld } from './map/create-world'; import { DeltaTimeCalculator } from './helper/delta-time-calculator'; @@ -15,22 +21,40 @@ import { PlayerContainer } from './players/player-container'; const playerCountSubscribedRoom = 'playerCountUpdates'; export class GameServer { - private objects = new PhysicalContainer(); - private players: PlayerContainer; - private deltaTimes: Array = []; - private deltaTimeCalculator = new DeltaTimeCalculator(); + private objects!: PhysicalContainer; + private players!: PlayerContainer; + private deltaTimes!: Array; + private deltaTimeCalculator!: DeltaTimeCalculator; + + private declaPoints = 0; + private redPoints = 0; + + private isInEndGame = false; + private timeScaling = 1; private serverName: string; private playerLimit: number; - constructor(private readonly io: ioserver.Server, options: Options) { + private initialize() { + const previousPlayers = this.players; + this.objects = new PhysicalContainer(); this.players = new PlayerContainer(this.objects); + this.deltaTimeCalculator = new DeltaTimeCalculator(); + this.deltaTimes = []; + this.declaPoints = 0; + this.redPoints = 0; + this.isInEndGame = false; + this.timeScaling = 1; + createWorld(this.objects, this.options.worldSize); + this.objects.initialize(); + previousPlayers?.sendOnSocket(serialize(new GameStart())); + } + constructor(private readonly io: ioserver.Server, private options: Options) { this.serverName = options.name; this.playerLimit = options.playerLimit; - createWorld(this.objects, options.worldSize); - this.objects.initialize(); + this.initialize(); io.on('connection', (socket: SocketIO.Socket) => { socket.on(TransportEvents.PlayerJoining, (playerInfo: PlayerInformation) => { @@ -40,33 +64,61 @@ export class GameServer { player.sendCommand(command); }); - this.sendPlayerCountUpdate(); + this.sendServerStateUpdate(); socket.on('disconnect', () => { player.destroy(); this.players.deletePlayer(player); - this.sendPlayerCountUpdate(); + this.sendServerStateUpdate(); }); }); - socket.on(TransportEvents.SubscribeForPlayerCount, () => { + socket.on(TransportEvents.SubscribeForServerInfoUpdates, () => { socket.join(playerCountSubscribedRoom); }); }); } - public sendPlayerCountUpdate() { + private timeSinceLastServerStateUpdate = 0; + public sendServerStateUpdate() { this.io .to(playerCountSubscribedRoom) - .emit(TransportEvents.PlayerCountUpdate, this.players.count); + .emit(TransportEvents.ServerInfoUpdate, [this.players.count, this.gameProgress]); } public start() { this.handlePhysics(); } + private updatePoints() { + if (this.isInEndGame) { + return; + } + const { decla, red } = this.objects.getPointsGenerated(); + this.declaPoints += decla; + this.redPoints += red; + if (this.declaPoints >= this.options.scoreLimit) { + this.endGame(CharacterTeam.decla); + } else if (this.redPoints >= this.options.scoreLimit) { + this.endGame(CharacterTeam.red); + } + } + + private endGame(winningTeam: CharacterTeam) { + this.isInEndGame = true; + const endTitleLength = 6000; + this.players.sendOnSocket( + serialize(new GameEnd(winningTeam, endTitleLength / 1000, true)), + ); + setTimeout(() => this.destroy(), endTitleLength * 1.1); + } + + private destroy() { + this.initialize(); + } + private handlePhysics() { - const delta = this.deltaTimeCalculator.getNextDeltaTimeInSeconds(); + let delta = this.deltaTimeCalculator.getNextDeltaTimeInSeconds(); const framesBetweenDeltaTimeCalculation = 1000; if (this.deltaTimes.length > framesBetweenDeltaTimeCalculation) { @@ -82,8 +134,25 @@ export class GameServer { this.deltaTimes = []; } + if ((this.timeSinceLastServerStateUpdate += delta) > 5) { + this.timeSinceLastServerStateUpdate = 0; + this.sendServerStateUpdate(); + } + + if (this.isInEndGame) { + this.timeScaling *= Math.pow(settings.endGameDeltaScaling, delta); + delta /= this.timeScaling; + } + this.objects.stepObjects(delta); + this.updatePoints(); + this.players.sendOnSocket( + serialize( + new UpdateGameState(this.declaPoints, this.redPoints, this.options.scoreLimit), + ), + ); this.players.step(delta); + this.objects.resetRemoteCalls(); const physicsDelta = this.deltaTimeCalculator.getDeltaTimeInSeconds() * 1000; this.deltaTimes.push(physicsDelta); @@ -96,11 +165,16 @@ export class GameServer { } } + private get gameProgress(): number { + return (Math.max(this.declaPoints, this.redPoints) / this.options.scoreLimit) * 100; + } + public get serverInfo(): ServerInformation { return { serverName: this.serverName, playerCount: this.players.count, playerLimit: this.playerLimit, + gameStatePercent: this.gameProgress, }; } } diff --git a/backend/src/main.ts b/backend/src/main.ts index d1a3abd..c4a57a1 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -4,11 +4,8 @@ import { Server } from 'http'; import cors from 'cors'; import { applyArrayPlugins, Random, serverInformationEndpoint } from 'shared'; import minimist from 'minimist'; - import { glMatrix } from 'gl-matrix'; - import { GameServer } from './game-server'; - import { defaultOptions } from './default-options'; glMatrix.setMatrixArrayType(Array); diff --git a/backend/src/objects/circle-physical.ts b/backend/src/objects/circle-physical.ts index 6e1afec..daf6191 100644 --- a/backend/src/objects/circle-physical.ts +++ b/backend/src/objects/circle-physical.ts @@ -1,5 +1,5 @@ import { vec2 } from 'gl-matrix'; -import { Circle, GameObject, serializesTo, settings, UpdateObjectMessage } from 'shared'; +import { Circle, GameObject, serializesTo, settings } from 'shared'; import { PhysicalBase } from '../physics/physicals/physical-base'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; import { BoundingBoxBase } from '../physics/bounding-boxes/bounding-box-base'; diff --git a/backend/src/objects/generates-points.ts b/backend/src/objects/generates-points.ts new file mode 100644 index 0000000..053f89a --- /dev/null +++ b/backend/src/objects/generates-points.ts @@ -0,0 +1,8 @@ +export interface GeneratesPoints { + getPoints(): { + decla: number; + red: number; + }; +} + +export const generatesPoints = (a: any): a is GeneratesPoints => a && 'getPoints' in a; diff --git a/backend/src/objects/lamp-physical.ts b/backend/src/objects/lamp-physical.ts index b10a1cb..43ed4a5 100644 --- a/backend/src/objects/lamp-physical.ts +++ b/backend/src/objects/lamp-physical.ts @@ -36,6 +36,8 @@ export class LampPhysical extends LampBase implements StaticPhysical { return vec2.create(); } + public step(deltaTime: number): void {} + public distance(target: vec2): number { return vec2.distance(this.center, target); } diff --git a/backend/src/objects/planet-physical.ts b/backend/src/objects/planet-physical.ts index 561a4c4..38d29bd 100644 --- a/backend/src/objects/planet-physical.ts +++ b/backend/src/objects/planet-physical.ts @@ -10,15 +10,16 @@ import { settings, PlanetBase, CharacterTeam, - UpdateObjectMessage, } from 'shared'; import { ImmutableBoundingBox } from '../physics/bounding-boxes/immutable-bounding-box'; import { StaticPhysical } from '../physics/physicals/static-physical'; -import { UpdateGameObjectMessage } from '../update-game-object-message'; +import { GeneratesPoints } from './generates-points'; @serializesTo(PlanetBase) -export class PlanetPhysical extends PlanetBase implements StaticPhysical { +export class PlanetPhysical + extends PlanetBase + implements StaticPhysical, GeneratesPoints { public readonly canCollide = true; public readonly canMove = false; @@ -67,41 +68,62 @@ export class PlanetPhysical extends PlanetBase implements StaticPhysical { return sign * d; } - public calculateUpdates(): UpdateObjectMessage { - return new UpdateGameObjectMessage(this, ['ownership']); + public get team(): CharacterTeam { + return this.ownership === 0.5 + ? CharacterTeam.neutral + : this.ownership < 0.5 + ? CharacterTeam.decla + : CharacterTeam.red; + } + + private timeSinceLastPointGeneration = 0; + public getPoints(): { + decla: number; + red: number; + } { + if (this.timeSinceLastPointGeneration > settings.planetPointGenerationInterval) { + this.timeSinceLastPointGeneration = 0; + if (this.team !== CharacterTeam.neutral) { + this.remoteCall('generatedPoints', settings.planetPointGenerationValue); + } + + return { + decla: + this.team === CharacterTeam.decla ? settings.planetPointGenerationValue : 0, + red: this.team === CharacterTeam.red ? settings.planetPointGenerationValue : 0, + }; + } + + return { + decla: 0, + red: 0, + }; + } + + public step(deltaTime: number): void { + this.timeSinceLastPointGeneration += deltaTime; + + // In reverse order, so that teams can achieve a 100% control. + this.remoteCall('setOwnership', this.ownership); + this.takeControl(CharacterTeam.neutral, deltaTime); } public takeControl(team: CharacterTeam, deltaTime: number) { - const previousOwnership = this.ownership; if (team === CharacterTeam.decla) { this.ownership -= (0.5 / settings.takeControlTimeInSeconds) * deltaTime; - if ( - previousOwnership >= 0.5 - settings.planetControlThreshold && - this.ownership < 0.5 - settings.planetControlThreshold - ) { - PlanetPhysical.declaPlanetCount++; - PlanetPhysical.neutralPlanetCount--; - } else if ( - previousOwnership > 0.5 + settings.planetControlThreshold && - previousOwnership <= 0.5 + settings.planetControlThreshold - ) { - PlanetPhysical.redPlanetCount--; - PlanetPhysical.neutralPlanetCount++; - } - } else { + } else if (team === CharacterTeam.red) { this.ownership += (0.5 / settings.takeControlTimeInSeconds) * deltaTime; + } else { + const previous = this.ownership; + this.ownership += + -Math.sign(this.ownership - 0.5) * + (0.5 / settings.loseControlTimeInSeconds) * + deltaTime; if ( - previousOwnership < 0.5 + settings.planetControlThreshold && - this.ownership >= 0.5 + settings.planetControlThreshold + (previous < 0.5 && this.ownership > 0.5) || + (previous > 0.5 && this.ownership < 0.5) ) { - PlanetPhysical.redPlanetCount++; - PlanetPhysical.neutralPlanetCount--; - } else if ( - previousOwnership <= 0.5 - settings.planetControlThreshold && - previousOwnership > 0.5 + settings.planetControlThreshold - ) { - PlanetPhysical.declaPlanetCount--; - PlanetPhysical.neutralPlanetCount++; + this.ownership = 0.5; } } diff --git a/backend/src/objects/player-character-physical.ts b/backend/src/objects/player-character-physical.ts index 7703920..0813004 100644 --- a/backend/src/objects/player-character-physical.ts +++ b/backend/src/objects/player-character-physical.ts @@ -21,8 +21,6 @@ import { forceAtPosition } from '../physics/functions/force-at-position'; import { getBoundingBoxOfCircle } from '../physics/functions/get-bounding-box-of-circle'; import { PlanetPhysical } from './planet-physical'; import { ReactsToCollision } from '../physics/physicals/reacts-to-collision'; -import { UpdateObjectMessage } from 'shared/lib/src/objects/update-object-message'; -import { UpdateGameObjectMessage } from '../update-game-object-message'; @serializesTo(PlayerCharacterBase) export class PlayerCharacterPhysical @@ -133,20 +131,15 @@ export class PlayerCharacterPhysical ); } - public calculateUpdates(): UpdateObjectMessage { - return new UpdateGameObjectMessage(this, [ - 'head', - 'leftFoot', - 'rightFoot', - 'health', - 'killCount', - ]); - } - public handleMovementAction(c: MoveActionCommand) { this.movementActions.push(c); } + private addKill() { + this.killCount++; + this.remoteCall('setKillCount', this.killCount); + } + public onCollision(other: GameObject) { if ( other instanceof ProjectilePhysical && @@ -155,9 +148,10 @@ export class PlayerCharacterPhysical ) { other.destroy(); this.health -= other.strength; + this.remoteCall('setHealth', this.health); if (this.health <= 0) { this.destroy(); - other.originator.killCount++; + other.originator.addKill(); } } } @@ -182,6 +176,8 @@ export class PlayerCharacterPhysical this.container, ); this.container.addObject(projectile); + + this.remoteCall('onShoot', strength); } public get boundingBox(): BoundingBoxBase { @@ -299,6 +295,7 @@ export class PlayerCharacterPhysical this.stepBodyPart(this.leftFoot, deltaTime); this.stepBodyPart(this.rightFoot, deltaTime); this.keepPosture(); + this.remoteCall('updateCircles', this.head, this.leftFoot, this.rightFoot); } private setDirection(direction: vec2, deltaTime: number) { diff --git a/backend/src/objects/projectile-physical.ts b/backend/src/objects/projectile-physical.ts index 95b160d..18f421b 100644 --- a/backend/src/objects/projectile-physical.ts +++ b/backend/src/objects/projectile-physical.ts @@ -13,8 +13,6 @@ import { DynamicPhysical } from '../physics/physicals/dynamic-physical'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { PlanetPhysical } from './planet-physical'; import { ReactsToCollision } from '../physics/physicals/reacts-to-collision'; -import { UpdateObjectMessage } from 'shared/lib/src/objects/update-object-message'; -import { UpdateGameObjectMessage } from '../update-game-object-message'; import { PlayerCharacterPhysical } from './player-character-physical'; import { moveCircle } from '../physics/functions/move-circle'; @@ -68,10 +66,6 @@ export class ProjectilePhysical vec2.add(this.center, this.center, delta); } - public calculateUpdates(): UpdateObjectMessage { - return new UpdateGameObjectMessage(this, ['center', 'strength']); - } - public get boundingBox(): ImmutableBoundingBox { if (!this._boundingBox) { this._boundingBox = (this.object as CirclePhysical).boundingBox; @@ -105,7 +99,9 @@ export class ProjectilePhysical } public step(deltaTime: number) { - if ((this.strength -= settings.projectileFadeSpeed * deltaTime) < 0) { + super.step(deltaTime); + + if (this.strength <= 0) { this.destroy(); return; } @@ -122,5 +118,7 @@ export class ProjectilePhysical this.object.velocity = this.velocity; this.object.step2(deltaTime); + + this.remoteCall('setCenter', this.center); } } diff --git a/backend/src/options.ts b/backend/src/options.ts index 3b738a5..67d63b9 100644 --- a/backend/src/options.ts +++ b/backend/src/options.ts @@ -2,6 +2,7 @@ export interface Options { port: number; name: string; playerLimit: number; + scoreLimit: number; seed: number; worldSize: number; } diff --git a/backend/src/physics/containers/physical-container.ts b/backend/src/physics/containers/physical-container.ts index 80ad925..f53e300 100644 --- a/backend/src/physics/containers/physical-container.ts +++ b/backend/src/physics/containers/physical-container.ts @@ -6,12 +6,14 @@ import { BoundingBoxTree } from './bounding-box-tree'; import { Physical } from '../physicals/physical'; import { StaticPhysical } from '../physicals/static-physical'; import { DynamicPhysical } from '../physicals/dynamic-physical'; +import { GeneratesPoints, generatesPoints } from '../../objects/generates-points'; export class PhysicalContainer { private isTreeInitialized = false; private staticBoundingBoxesWaitList: Array = []; private staticBoundingBoxes = new BoundingBoxTree(); private dynamicBoundingBoxes = new BoundingBoxList(); + private objects: Array = []; public initialize() { this.staticBoundingBoxes.build(this.staticBoundingBoxesWaitList); @@ -19,6 +21,8 @@ export class PhysicalContainer { } public addObject(physical: Physical) { + this.objects.push(physical); + if (physical.canMove) { this.dynamicBoundingBoxes.insert(physical); } else { @@ -31,11 +35,31 @@ export class PhysicalContainer { } public removeObject(object: DynamicPhysical) { + this.objects = this.objects.filter((p) => p !== object); this.dynamicBoundingBoxes.remove(object); } public stepObjects(deltaTime: number) { - this.dynamicBoundingBoxes.forEach((o) => o.step(deltaTime)); + this.objects.forEach((o) => o.step(deltaTime)); + } + + public resetRemoteCalls() { + this.objects.forEach((o) => o.gameObject.resetRemoteCalls()); + } + + public getPointsGenerated(): { decla: number; red: number } { + return this.objects + .filter((o) => generatesPoints(o)) + .reduce( + (sum, o) => { + const { decla, red } = ((o as unknown) as GeneratesPoints).getPoints(); + return { + decla: sum.decla + decla, + red: sum.red + red, + }; + }, + { decla: 0, red: 0 }, + ); } public findIntersecting(box: BoundingBoxBase): Array { diff --git a/backend/src/physics/physicals/dynamic-physical.ts b/backend/src/physics/physicals/dynamic-physical.ts index a5e03c1..d72cd9d 100644 --- a/backend/src/physics/physicals/dynamic-physical.ts +++ b/backend/src/physics/physicals/dynamic-physical.ts @@ -2,5 +2,4 @@ import { PhysicalBase } from './physical-base'; export interface DynamicPhysical extends PhysicalBase { readonly canMove: true; - step(deltaTimeInMilliseconds: number): void; } diff --git a/backend/src/physics/physicals/physical-base.ts b/backend/src/physics/physicals/physical-base.ts index 66b0018..ba0a753 100644 --- a/backend/src/physics/physicals/physical-base.ts +++ b/backend/src/physics/physicals/physical-base.ts @@ -9,5 +9,5 @@ export interface PhysicalBase { readonly gameObject: GameObject; distance(target: vec2): number; - step(deltaTimeInMilliseconds: number): void; + step(deltaTime: number): void; } diff --git a/backend/src/players/player-container.ts b/backend/src/players/player-container.ts index 2f8dbdd..ec42e1c 100644 --- a/backend/src/players/player-container.ts +++ b/backend/src/players/player-container.ts @@ -1,4 +1,4 @@ -import { CharacterTeam, PlayerInformation, Random } from 'shared'; +import { CharacterTeam, PlayerInformation, Random, TransportEvents } from 'shared'; import { PhysicalContainer } from '../physics/containers/physical-container'; import { Player } from './player'; @@ -32,6 +32,10 @@ export class PlayerContainer { this.players.forEach((p) => p.step(deltaTimeInSeconds)); } + public sendOnSocket(message: any) { + this.players.forEach((p) => p.socket.emit(TransportEvents.ServerToPlayer, message)); + } + private getTeamOfNextPlayer(): CharacterTeam { const declaCount = this._players.filter((p) => p.team === CharacterTeam.decla).length; const redCount = this._players.filter((p) => p.team === CharacterTeam.red).length; diff --git a/backend/src/players/player.ts b/backend/src/players/player.ts index 86eaab7..5cc3649 100644 --- a/backend/src/players/player.ts +++ b/backend/src/players/player.ts @@ -8,7 +8,6 @@ import { MoveActionCommand, serialize, TransportEvents, - UpdateObjectsCommand, SetAspectRatioActionCommand, calculateViewArea, SecondaryActionCommand, @@ -17,11 +16,13 @@ import { Circle, PlayerInformation, CharacterTeam, - UpdateGameState, + UpdateOtherPlayerDirections, GameObject, Command, - UpdateObjectMessage, OtherPlayerDirection, + RemoteCallsForObject, + RemoteCallsForObjects, + ServerAnnouncement, } from 'shared'; import { getTimeInMilliseconds } from '../helper/get-time-in-milliseconds'; import { BoundingBox } from '../physics/bounding-boxes/bounding-box'; @@ -70,7 +71,7 @@ export class Player extends CommandReceiver { private readonly playerInfo: PlayerInformation, private readonly playerContainer: PlayerContainer, private readonly objectContainer: PhysicalContainer, - private readonly socket: SocketIO.Socket, + public readonly socket: SocketIO.Socket, public readonly team: CharacterTeam, ) { super(); @@ -123,8 +124,15 @@ export class Player extends CommandReceiver { this.character = null; this.timeUntilRespawn = settings.playerDiedTimeout; } - } else if ((this.timeUntilRespawn -= deltaTimeInSeconds) < 0) { - this.createCharacter(); + } else { + this.sendToPlayer( + new ServerAnnouncement(`Reviving in ${Math.round(this.timeUntilRespawn)}…`), + ); + if ((this.timeUntilRespawn -= deltaTimeInSeconds) < 0) { + this.createCharacter(); + this.center = this.character!.center; + this.sendToPlayer(new ServerAnnouncement('')); + } } const viewArea = calculateViewArea(this.center, this.aspectRatio, 1.5); @@ -155,21 +163,14 @@ export class Player extends CommandReceiver { } this.sendToPlayer( - new UpdateObjectsCommand( - this.objectsPreviouslyInViewArea - .map((g) => g.calculateUpdates()) - .filter((u) => u) as Array, + new RemoteCallsForObjects( + this.objectsPreviouslyInViewArea.map( + (g) => new RemoteCallsForObject(g.id, g.getRemoteCalls()), + ), ), ); - this.sendToPlayer( - new UpdateGameState( - PlanetPhysical.declaPlanetCount, - PlanetPhysical.redPlanetCount, - PlanetPhysical.neutralPlanetCount, - this.getOtherPlayers(), - ), - ); + this.sendToPlayer(new UpdateOtherPlayerDirections(this.getOtherPlayers())); } private findEmptyPositionForPlayer(): vec2 { @@ -223,7 +224,7 @@ export class Player extends CommandReceiver { .filter((g) => g instanceof PlayerCharacterPhysical); const otherPlayers = this.playerContainer.players.filter( - (p) => playersInViewArea.indexOf(p.character!) < 0, + (p) => p.character?.isAlive && playersInViewArea.indexOf(p.character!) < 0, ); return otherPlayers.map( @@ -244,7 +245,6 @@ export class Player extends CommandReceiver { public destroy() { this.isActive = false; - this.character?.destroy(); } } diff --git a/backend/src/update-game-object-message.ts b/backend/src/update-game-object-message.ts deleted file mode 100644 index 181ab30..0000000 --- a/backend/src/update-game-object-message.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { GameObject, serializesTo, UpdateMessage, UpdateObjectMessage } from 'shared'; - -@serializesTo(UpdateObjectMessage) -export class UpdateGameObjectMessage extends UpdateObjectMessage { - constructor(object: T, keys: Array) { - super( - object.id, - keys.map((k) => new UpdateMessage(k, object[k])), - ); - } -} diff --git a/frontend/src/index.ts b/frontend/src/index.ts index db372bd..7bdad78 100644 --- a/frontend/src/index.ts +++ b/frontend/src/index.ts @@ -108,7 +108,12 @@ const applyServerContainerShadows = () => { const main = async () => { try { let game: Game; - SoundHandler.initialize(); + + const firstClickListener = () => { + SoundHandler.initialize(); + document.removeEventListener('click', firstClickListener); + }; + document.addEventListener('click', firstClickListener); handleFullScreen(minimize, maximize); toggleSettingsButton.addEventListener('click', toggleSettings); @@ -134,7 +139,7 @@ const main = async () => { for (;;) { show(spinner); - hide(logoutButton); + hide(logoutButton, true); show(landingUI, true, 'flex'); const background = new LandingPageBackground(canvas); @@ -156,7 +161,7 @@ const main = async () => { await game.started; isInGame = true; hide(spinner); - show(logoutButton); + show(logoutButton, true, 'block'); await gameOver; isInGame = false; } diff --git a/frontend/src/main.scss b/frontend/src/main.scss index ffc2012..52be356 100644 --- a/frontend/src/main.scss +++ b/frontend/src/main.scss @@ -37,7 +37,9 @@ h1 { font-size: 6rem; text-align: center; padding-bottom: $medium-padding; - + @media (max-width: $height-breakpoint) { + font-size: 4.5rem; + } @media (max-height: $height-breakpoint) { display: none; } @@ -163,11 +165,23 @@ body { font-size: 0; transform: translateX(-50%) translateY(-50%); + box-shadow: inset 0 0 3px 0px rgba(0, 0, 0, 0.2); + @include square(50px); border-radius: 1000px; mask-image: url('../static/mask.svg'); } + .falling-point { + font-size: 1.2em; + &.decla { + color: $bright-decla; + } + &.red { + color: $bright-red; + } + } + .other-player-arrow { @include square($large-icon); @media (max-width: $breakpoint) { @@ -205,18 +219,29 @@ body { } .announcement { - top: 50%; - left: 50%; - transform: translateX(-50%) translateY(-50%); + top: 25%; + transform: translateX(calc(-50% + 50vw)) translateY(-50%); + font-size: 3rem; @include background; z-index: 1000; padding: $medium-padding; border-radius: 16px; + + &:empty { + display: none; + } + + .decla { + color: $bright-decla; + } + + .red { + color: $bright-red; + } } .planet-progress { - position: absolute; top: $small-padding; left: 50%; transform: translateX(-50%); @@ -225,26 +250,50 @@ body { $height: 8px; height: $height; + justify-content: space-between; + box-shadow: inset 0 0 3px 0px rgba(0, 0, 0, 0.2); + border-radius: 4px; z-index: 100; - div { - height: $height; + &::before { + content: ''; + position: absolute; + left: 50%; + top: 50%; + transform: translateX(-50%) translateY(-50%); + background-color: #888; + height: 24px; + width: 4px; + border-radius: 1000px; } - border-radius: 100px; - overflow: hidden; + &::after { + content: ''; + position: absolute; + left: 50%; + top: 50%; + transform: translateX(-50%) translateY(50%); + + @include square(24px); + + background-image: url('../static/flag.svg'); + background-size: contain; + } + + div { + height: $height; + box-shadow: inset 0 0 3px 0px rgba(0, 0, 0, 0.2); + } div:nth-child(1) { background: $bright-decla; + border-radius: 100px 0 0 100px; } div:nth-child(2) { - background: $bright-neutral; - } - - div:nth-child(3) { background: $bright-red; + border-radius: 0 100px 100px 0; } } } diff --git a/frontend/src/scripts/game.ts b/frontend/src/scripts/game.ts index e11db3f..d26fa09 100644 --- a/frontend/src/scripts/game.ts +++ b/frontend/src/scripts/game.ts @@ -1,156 +1,95 @@ import { vec2 } from 'gl-matrix'; -import { - CircleLight, - ColorfulCircle, - FilteringOptions, - Flashlight, - Renderer, - renderNoise, - runAnimation, - WrapOptions, -} from 'sdf-2d'; +import { Renderer, renderNoise } from 'sdf-2d'; import { broadcastCommands, deserialize, serialize, - settings, TransportEvents, SetAspectRatioActionCommand, PlayerInformation, PlayerDiedCommand, - UpdateGameState, + UpdateOtherPlayerDirections, clamp, + UpdateGameState, + GameEnd, + CharacterTeam, + ServerAnnouncement, + GameStart, + CommandReceiver, + CommandExecutors, + Command, } from 'shared'; import io from 'socket.io-client'; import { KeyboardListener } from './commands/generators/keyboard-listener'; import { MouseListener } from './commands/generators/mouse-listener'; import { TouchJoystickListener } from './commands/generators/touch-joystick-listener'; import { CommandReceiverSocket } from './commands/receivers/command-receiver-socket'; +import { startAnimation } from './start-animation'; import { PlayerDecision } from './join-form-handler'; import { GameObjectContainer } from './objects/game-object-container'; import { OptionsHandler } from './options-handler'; -import { BlobShape } from './shapes/blob-shape'; -import { PlanetShape } from './shapes/planet-shape'; -export class Game { - public readonly gameObjects = new GameObjectContainer(this); +export class Game extends CommandReceiver { + public gameObjects = new GameObjectContainer(this); public renderer?: Renderer; private socket!: SocketIOClient.Socket; - private deadTimeout = 0; + private isBetweenGames = false; + + public started: Promise; + private resolveStarted!: () => unknown; private declaPlanetCountElement = document.createElement('div'); private redPlanetCountElement = document.createElement('div'); - private neutralPlanetCountElement = document.createElement('div'); private announcementText = document.createElement('h2'); + private progressBar = document.createElement('div'); + private arrowElements: Array = []; constructor( private readonly playerDecision: PlayerDecision, private readonly canvas: HTMLCanvasElement, private readonly overlay: HTMLElement, ) { + super(); + this.started = new Promise((r) => (this.resolveStarted = r)); this.announcementText.className = 'announcement'; - const progressBar = document.createElement('div'); - progressBar.className = 'planet-progress'; - overlay.appendChild(progressBar); - progressBar.appendChild(this.declaPlanetCountElement); - progressBar.appendChild(this.neutralPlanetCountElement); - progressBar.appendChild(this.redPlanetCountElement); + this.progressBar.className = 'planet-progress'; + this.progressBar.appendChild(this.declaPlanetCountElement); + this.progressBar.appendChild(this.redPlanetCountElement); } - private arrowElements: Array = []; - private async setupCommunication(serverUrl: string): Promise { - this.socket = io(serverUrl, { + private initialize() { + this.isBetweenGames = true; + + this.socket?.close(); + this.gameObjects = new GameObjectContainer(this); + this.overlay.innerHTML = ''; + this.overlay.appendChild(this.progressBar); + this.announcementText.innerText = ''; + this.overlay.appendChild(this.announcementText); + + this.socket = io(this.playerDecision.server, { reconnectionDelayMax: 10000, transports: ['websocket'], + forceNew: true, }); this.socket.on('reconnect_attempt', () => { this.socket.io.opts.transports = ['polling', 'websocket']; }); - this.socket.on('disconnect', this.destroy.bind(this)); - - this.socket.on(TransportEvents.ServerToPlayer, (serialized: string) => { - const command = deserialize(serialized); - if (command instanceof PlayerDiedCommand) { - this.deadTimeout = command.timeout; - if (OptionsHandler.options.vibrationEnabled) { - navigator.vibrate(150); - } - this.overlay.appendChild(this.announcementText); - } else if (command instanceof UpdateGameState) { - const all = command.declaCount + command.redCount + command.neutralCount; - this.declaPlanetCountElement.style.width = (command.declaCount / all) * 100 + '%'; - this.neutralPlanetCountElement.style.width = - (command.neutralCount / all) * 100 + '%'; - this.redPlanetCountElement.style.width = (command.redCount / all) * 100 + '%'; - - if (command.declaCount > all * 0.5) { - this.overlay.appendChild(this.announcementText); - this.announcementText.innerText = 'Decla team won 🎉'; - } - - if (command.redCount > all * 0.5) { - this.overlay.appendChild(this.announcementText); - this.announcementText.innerText = 'Red team won 🎉'; - } - - this.arrowElements - .splice(command.otherPlayerDirections.length, this.arrowElements.length) - .forEach((e) => e.parentElement?.removeChild(e)); - - for ( - let i = this.arrowElements.length; - i < command.otherPlayerDirections.length; - i++ - ) { - const element = document.createElement('div'); - this.arrowElements.push(element); - this.overlay.appendChild(element); - } - - this.arrowElements.forEach((e, i) => { - const direction = command.otherPlayerDirections[i].direction; - const team = command.otherPlayerDirections[i].team; - const angle = Math.atan2(direction.y, direction.x); - e.className = 'other-player-arrow ' + team; - - const { width, height } = this.overlay.getBoundingClientRect(); - const aspectRatio = width / height; - const directionRatio = direction.x / direction.y; - - let deltaX: number, deltaY: number; - if (aspectRatio < Math.abs(directionRatio)) { - deltaX = (width / 2) * Math.sign(direction.x); - deltaY = deltaX / directionRatio; - } else { - deltaY = (height / 2) * Math.sign(direction.y); - deltaX = deltaY * directionRatio; - } - - const delta = vec2.fromValues(deltaX, deltaY); - const center = vec2.fromValues(width / 2, height / 2); - const p = vec2.add(center, center, delta); - const arrowPadding = 24; - vec2.set( - p, - clamp(p.x, arrowPadding, width - arrowPadding), - clamp(height - p.y, arrowPadding, height - arrowPadding), - ); - e.style.transform = `translateX(${p.x}px) translateY(${ - p.y - }px) translateX(-50%) translateY(-50%) rotate(${-angle + Math.PI / 2}rad) `; - }); - } else this.gameObjects.sendCommand(command); + this.socket.on('disconnect', () => { + if (!this.isBetweenGames) { + this.destroy(); + } }); this.socket.on(TransportEvents.Ping, () => { this.socket.emit(TransportEvents.Pong); }); - this.socket.emit(TransportEvents.PlayerJoining, { - name: this.playerDecision.playerName, - } as PlayerInformation); + this.socket.on(TransportEvents.ServerToPlayer, (serialized: string) => + this.sendCommand(deserialize(serialized)), + ); broadcastCommands( [ @@ -160,57 +99,94 @@ export class Game { ], [this.gameObjects, new CommandReceiverSocket(this.socket)], ); + + this.isBetweenGames = false; + + this.socket.emit(TransportEvents.PlayerJoining, { + name: this.playerDecision.playerName, + } as PlayerInformation); + } + + protected defaultCommandExecutor(c: Command) { + this.gameObjects.sendCommand(c); + } + + protected commandExecutors: CommandExecutors = { + [ServerAnnouncement.type]: (c: ServerAnnouncement) => + (this.announcementText.innerText = c.text), + [PlayerDiedCommand.type]: (c: PlayerDiedCommand) => { + if (OptionsHandler.options.vibrationEnabled) { + navigator.vibrate(150); + } + }, + [UpdateGameState.type]: (c: UpdateGameState) => { + this.declaPlanetCountElement.style.width = (c.declaCount / c.limit) * 50 + '%'; + this.redPlanetCountElement.style.width = (c.redCount / c.limit) * 50 + '%'; + }, + [GameEnd.type]: (c: GameEnd) => { + const team = + c.winningTeam === CharacterTeam.decla + ? 'decla' + : 'red'; + this.announcementText.innerHTML = `Team ${team} won 🎉`; + }, + [UpdateOtherPlayerDirections.type]: this.handleOtherPlayerDirections.bind(this), + [GameStart.type]: this.initialize.bind(this), + }; + + private handleOtherPlayerDirections(command: UpdateOtherPlayerDirections) { + this.arrowElements + .splice(command.otherPlayerDirections.length, this.arrowElements.length) + .forEach((e) => e.parentElement?.removeChild(e)); + + for ( + let i = this.arrowElements.length; + i < command.otherPlayerDirections.length; + i++ + ) { + const element = document.createElement('div'); + this.arrowElements.push(element); + this.overlay.appendChild(element); + } + + this.arrowElements.forEach((e, i) => { + const direction = command.otherPlayerDirections[i].direction; + const team = command.otherPlayerDirections[i].team; + const angle = Math.atan2(direction.y, direction.x); + e.className = 'other-player-arrow ' + team; + + const { width, height } = this.overlay.getBoundingClientRect(); + const aspectRatio = width / height; + const directionRatio = direction.x / direction.y; + + let deltaX: number, deltaY: number; + if (aspectRatio < Math.abs(directionRatio)) { + deltaX = (width / 2) * Math.sign(direction.x); + deltaY = deltaX / directionRatio; + } else { + deltaY = (height / 2) * Math.sign(direction.y); + deltaX = deltaY * directionRatio; + } + + const delta = vec2.fromValues(deltaX, deltaY); + const center = vec2.fromValues(width / 2, height / 2); + const p = vec2.add(center, center, delta); + const arrowPadding = 24; + vec2.set( + p, + clamp(p.x, arrowPadding, width - arrowPadding), + clamp(height - p.y, arrowPadding, height - arrowPadding), + ); + e.style.transform = `translateX(${p.x}px) translateY(${ + p.y + }px) translateX(-50%) translateY(-50%) rotate(${-angle + Math.PI / 2}rad) `; + }); } public async start(): Promise { const noiseTexture = await renderNoise([256, 256], 2, 1); - this.setupCommunication(this.playerDecision.server); - await runAnimation( - this.canvas, - [ - { - ...PlanetShape.descriptor, - shaderCombinationSteps: [0, 1, 2, 3], - }, - { - ...BlobShape.descriptor, - shaderCombinationSteps: [0, 1, 2, 8], - }, - { - ...ColorfulCircle.descriptor, - shaderCombinationSteps: [0, 2, 16], - }, - { - ...CircleLight.descriptor, - shaderCombinationSteps: [0, 1, 2, 4, 8, 16], - }, - { - ...Flashlight.descriptor, - shaderCombinationSteps: [0], - }, - ], - this.gameLoop.bind(this), - { - shadowTraceCount: 16, - paletteSize: settings.palette.length, - //enableStopwatch: true, - }, - { - colorPalette: settings.palette, - enableHighDpiRendering: true, - lightCutoffDistance: settings.lightCutoffDistance, - textures: { - noiseTexture: { - source: noiseTexture, - overrides: { - maxFilter: FilteringOptions.LINEAR, - wrapS: WrapOptions.MIRRORED_REPEAT, - wrapT: WrapOptions.MIRRORED_REPEAT, - }, - }, - }, - }, - ); + this.initialize(); + await startAnimation(this.canvas, this.gameLoop.bind(this), noiseTexture); this.socket.close(); this.overlay.innerHTML = ''; } @@ -237,17 +213,13 @@ export class Game { private gameLoop( renderer: Renderer, - currentTime: DOMHighResTimeStamp, + _: DOMHighResTimeStamp, deltaTime: DOMHighResTimeStamp, ): boolean { + this.resolveStarted(); + deltaTime /= 1000; + this.renderer = renderer; - - if ((this.deadTimeout -= deltaTime / 1000) > 0) { - this.announcementText.innerText = `Reviving in ${Math.floor(this.deadTimeout)}…`; - } else { - this.announcementText.parentElement?.removeChild(this.announcementText); - } - this.gameObjects.stepObjects(deltaTime); this.gameObjects.drawObjects(this.renderer, this.overlay); diff --git a/frontend/src/scripts/join-form-handler.ts b/frontend/src/scripts/join-form-handler.ts index 2fa9ba5..b241864 100644 --- a/frontend/src/scripts/join-form-handler.ts +++ b/frontend/src/scripts/join-form-handler.ts @@ -95,6 +95,9 @@ class ServerChooserOption { private divElement = document.createElement('div'); private inputElement = document.createElement('input'); private labelElement = document.createElement('label'); + private serverNameElement = document.createElement('span'); + private completionElement = document.createElement('span'); + private socket: SocketIOClient.Socket; constructor( @@ -111,7 +114,11 @@ class ServerChooserOption { this.labelElement.htmlFor = url; this.divElement.appendChild(this.inputElement); this.divElement.appendChild(this.labelElement); - this.setPlayerLabelText(); + this.labelElement.appendChild(this.serverNameElement); + this.labelElement.appendChild(document.createElement('br')); + this.labelElement.appendChild(this.completionElement); + this.completionElement.className = 'completion'; + this.setServerInfoLabelText(); this.socket = io(url, { reconnection: false, @@ -121,11 +128,15 @@ class ServerChooserOption { this.socket.on('connect_error', this.destroy.bind(this)); this.socket.on('connect_timeout', this.destroy.bind(this)); this.socket.on('disconnect', this.destroy.bind(this)); - this.socket.emit(TransportEvents.SubscribeForPlayerCount); - this.socket.on(TransportEvents.PlayerCountUpdate, (v: number) => { - this.content.playerCount = v; - this.setPlayerLabelText(); - }); + this.socket.emit(TransportEvents.SubscribeForServerInfoUpdates); + this.socket.on( + TransportEvents.ServerInfoUpdate, + ([playerCount, gameState]: [number, number]) => { + this.content.playerCount = playerCount; + this.content.gameStatePercent = gameState; + this.setServerInfoLabelText(); + }, + ); } public destroy() { @@ -134,8 +145,25 @@ class ServerChooserOption { this.onDestroy(this); } - private setPlayerLabelText() { - this.labelElement.innerText = `${this.content.serverName} - ${this.content.playerCount}/${this.content.playerLimit} players`; + private getRoundCompletionText(percent: number): string { + const texts = [ + 'Just started', + 'Just started', + 'Ongoing', + 'Halfway through', + 'Nearly over', + 'About to finish', + 'Game is over', + ]; + + return texts[Math.floor((percent / 100) * (texts.length - 1))]; + } + + private setServerInfoLabelText() { + this.serverNameElement.innerText = `${this.content.serverName} - ${this.content.playerCount}/${this.content.playerLimit} players`; + this.completionElement.innerText = this.getRoundCompletionText( + this.content.gameStatePercent, + ); } public get element(): HTMLElement { diff --git a/frontend/src/scripts/objects/camera.ts b/frontend/src/scripts/objects/camera.ts index 27d932f..07d78a5 100644 --- a/frontend/src/scripts/objects/camera.ts +++ b/frontend/src/scripts/objects/camera.ts @@ -16,7 +16,7 @@ export class Camera extends GameObject implements ViewObject { public beforeDestroy(): void {} - public step(deltaTimeInMilliseconds: number): void {} + public step(deltaTimeInSeconds: number): void {} public draw(renderer: Renderer, overlay: HTMLElement) { const canvasAspectRatio = renderer.canvasSize.x / renderer.canvasSize.y; diff --git a/frontend/src/scripts/objects/character-view.ts b/frontend/src/scripts/objects/character-view.ts index d065f2d..349fdb5 100644 --- a/frontend/src/scripts/objects/character-view.ts +++ b/frontend/src/scripts/objects/character-view.ts @@ -33,7 +33,7 @@ export class CharacterView extends CharacterBase implements ViewObject { public beforeDestroy(): void {} - public step(deltaTimeInMilliseconds: number): void {} + public step(deltaTimeInSeconds: number): void {} public draw(renderer: Renderer, overlay: HTMLElement): void { this.shape.setCircles([this.head!, this.leftFoot!, this.rightFoot!]); diff --git a/frontend/src/scripts/objects/game-object-container.ts b/frontend/src/scripts/objects/game-object-container.ts index cd076f5..89de287 100644 --- a/frontend/src/scripts/objects/game-object-container.ts +++ b/frontend/src/scripts/objects/game-object-container.ts @@ -5,9 +5,8 @@ import { CreateObjectsCommand, CreatePlayerCommand, DeleteObjectsCommand, - GameObject, Id, - UpdateObjectsCommand, + RemoteCallsForObjects, } from 'shared'; import { Game } from '../game'; import { Camera } from './camera'; @@ -24,8 +23,11 @@ export class GameObjectContainer extends CommandReceiver { if (this.camera) { this.deleteObject(this.camera.id); } + this.player = c.character as PlayerCharacterView; + this.camera = new Camera(this.game); + this.addObject(this.player); this.addObject(this.camera); }, @@ -33,24 +35,25 @@ export class GameObjectContainer extends CommandReceiver { [CreateObjectsCommand.type]: (c: CreateObjectsCommand) => c.objects.forEach((o) => this.addObject(o as ViewObject)), + [RemoteCallsForObjects.type]: (c: RemoteCallsForObjects) => + c.callsForObjects.forEach((c) => + this.objects.get(c.id)?.processRemoteCalls(c.calls), + ), + [DeleteObjectsCommand.type]: (c: DeleteObjectsCommand) => c.ids.forEach((id: Id) => this.deleteObject(id)), - - [UpdateObjectsCommand.type]: (c: UpdateObjectsCommand) => { - c.updates.forEach((u) => this.objects.get(u.id)?.update(u.updates)); - }, }; constructor(private game: Game) { super(); } - public stepObjects(delta: number) { + public stepObjects(deltaTimeInSeconds: number) { if (this.player) { this.camera.center = this.player.position; } - this.objects.forEach((o) => o.step(delta)); + this.objects.forEach((o) => o.step(deltaTimeInSeconds)); } public drawObjects(renderer: Renderer, overlay: HTMLElement) { diff --git a/frontend/src/scripts/objects/lamp-view.ts b/frontend/src/scripts/objects/lamp-view.ts index 2da4521..f41333f 100644 --- a/frontend/src/scripts/objects/lamp-view.ts +++ b/frontend/src/scripts/objects/lamp-view.ts @@ -16,7 +16,7 @@ export class LampView extends LampBase implements ViewObject { this.light = new CircleLight(center, color, lightness); } - public step(deltaTimeInMilliseconds: number): void {} + public step(deltaTimeInSeconds: number): void {} public beforeDestroy(): void {} diff --git a/frontend/src/scripts/objects/planet-view.ts b/frontend/src/scripts/objects/planet-view.ts index d3281c0..a2bc27a 100644 --- a/frontend/src/scripts/objects/planet-view.ts +++ b/frontend/src/scripts/objects/planet-view.ts @@ -5,6 +5,14 @@ import { RenderCommand } from '../commands/types/render'; import { PlanetShape } from '../shapes/planet-shape'; import { ViewObject } from './view-object'; +type FallingPoint = { + velocity: vec2; + position: vec2; + element: HTMLElement; + addedToOverlay: boolean; + timeToLive: number; +}; + export class PlanetView extends PlanetBase implements ViewObject { private shape: PlanetShape; private ownershipProgess: HTMLElement; @@ -22,9 +30,48 @@ export class PlanetView extends PlanetBase implements ViewObject { this.ownershipProgess.className = 'ownership'; } - public step(deltaTimeInMilliseconds: number): void { - this.shape.randomOffset += deltaTimeInMilliseconds / 4000; + public step(deltaTimeInSeconds: number): void { + this.shape.randomOffset += deltaTimeInSeconds / 4; this.shape.colorMixQ = this.ownership; + + this.generatedPointElements.forEach((p) => { + vec2.add( + p.velocity, + p.velocity, + vec2.scale(vec2.create(), vec2.fromValues(0, 50), deltaTimeInSeconds), + ); + + vec2.add( + p.position, + p.position, + vec2.scale(vec2.create(), p.velocity, deltaTimeInSeconds), + ); + + if ((p.timeToLive -= deltaTimeInSeconds) <= 0) { + p.element.parentElement?.removeChild(p.element); + } else { + p.element.style.opacity = Math.min(1, p.timeToLive).toString(); + } + }); + + this.generatedPointElements = this.generatedPointElements.filter( + (p) => p.timeToLive > 0, + ); + } + + private generatedPointElements: Array = []; + + public generatedPoints(value: number) { + const element = document.createElement('div'); + element.className = 'falling-point ' + (this.ownership < 0.5 ? 'decla' : 'red'); + element.innerText = '+' + value; + this.generatedPointElements.push({ + element, + addedToOverlay: false, + timeToLive: Random.getRandomInRange(2, 3), + position: vec2.create(), + velocity: vec2.fromValues(Random.getRandomInRange(-30, 30), 0), + }); } private getGradient(): string { @@ -34,18 +81,21 @@ export class PlanetView extends PlanetBase implements ViewObject { ? `conic-gradient( var(--bright-decla) ${sidePercent}%, var(--bright-decla) ${sidePercent}%, - var(--bright-neutral) ${sidePercent}%, - var(--bright-neutral) 100% + rgba(0, 0, 0, 0) ${sidePercent}%, + rgba(0, 0, 0, 0) 100% )` : `conic-gradient( - var(--bright-neutral) 0%, - var(--bright-neutral) ${100 - sidePercent}%, + rgba(0, 0, 0, 0) 0%, + rgba(0, 0, 0, 0) ${100 - sidePercent}%, var(--bright-red) ${100 - sidePercent}%, var(--bright-red) 100% )`; } public beforeDestroy(): void { this.ownershipProgess.parentElement?.removeChild(this.ownershipProgess); + this.generatedPointElements.forEach((p) => + p.element.parentElement?.removeChild(p.element), + ); } public draw(renderer: Renderer, overlay: HTMLElement): void { @@ -54,6 +104,16 @@ export class PlanetView extends PlanetBase implements ViewObject { } const screenPosition = renderer.worldToDisplayCoordinates(this.center); + + this.generatedPointElements.forEach((p) => { + if (!p.addedToOverlay) { + overlay.appendChild(p.element); + } + + p.element.style.left = screenPosition.x + p.position.x + 'px'; + p.element.style.top = screenPosition.y + p.position.y + 'px'; + }); + this.ownershipProgess.style.left = screenPosition.x + 'px'; this.ownershipProgess.style.top = screenPosition.y + 'px'; this.ownershipProgess.style.background = this.getGradient(); diff --git a/frontend/src/scripts/objects/player-character-view.ts b/frontend/src/scripts/objects/player-character-view.ts index 732fa6e..4560a08 100644 --- a/frontend/src/scripts/objects/player-character-view.ts +++ b/frontend/src/scripts/objects/player-character-view.ts @@ -4,6 +4,7 @@ import { Circle, Id, PlayerCharacterBase, CharacterTeam, settings } from 'shared import { OptionsHandler } from '../options-handler'; import { BlobShape } from '../shapes/blob-shape'; +import { SoundHandler, Sounds } from '../sound-handler'; import { ViewObject } from './view-object'; export class PlayerCharacterView extends PlayerCharacterBase implements ViewObject { @@ -39,8 +40,17 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje return this.head!.center; } - public step(deltaTimeInMilliseconds: number): void { - this.timeSinceLastNameElementUpdate += deltaTimeInMilliseconds; + public setHealth(health: number) { + const previousHealth = this.health; + super.setHealth(health); + SoundHandler.play( + Sounds.hit, + (0.4 * 2 * (previousHealth - health)) / settings.playerMaxStrength, + ); + } + + public step(deltaTimeInSeconds: number): void { + this.timeSinceLastNameElementUpdate += deltaTimeInSeconds; this.healthElement.style.width = (50 * this.health) / settings.playerMaxHealth + 'px'; this.statsElement.innerText = this.getStatsText(); if (this.previousHealth > this.health) { @@ -52,6 +62,10 @@ export class PlayerCharacterView extends PlayerCharacterBase implements ViewObje this.previousHealth = this.health; } + public onShoot(strength: number) { + SoundHandler.play(Sounds.shoot, (0.3 * 2 * strength) / settings.playerMaxStrength); + } + public beforeDestroy(): void { this.nameElement.parentElement?.removeChild(this.nameElement); } diff --git a/frontend/src/scripts/objects/projectile-view.ts b/frontend/src/scripts/objects/projectile-view.ts index 04e481f..6c3168b 100644 --- a/frontend/src/scripts/objects/projectile-view.ts +++ b/frontend/src/scripts/objects/projectile-view.ts @@ -23,7 +23,9 @@ export class ProjectileView extends ProjectileBase implements ViewObject { ); } - public step(deltaTimeInMilliseconds: number): void { + public step(deltaTimeInSeconds: number): void { + super.step(deltaTimeInSeconds); + this.circle.center = this.center; this.light.center = this.center; this.light.intensity = (0.15 * this.strength) / settings.projectileMaxStrength; diff --git a/frontend/src/scripts/options-handler.ts b/frontend/src/scripts/options-handler.ts index b67b50e..473636e 100644 --- a/frontend/src/scripts/options-handler.ts +++ b/frontend/src/scripts/options-handler.ts @@ -29,11 +29,7 @@ export abstract class OptionsHandler { }; if (this._options.musicEnabled) { - const firstClickListener = () => { - document.removeEventListener('click', firstClickListener); - SoundHandler.playAmbient(); - }; - document.addEventListener('click', firstClickListener); + SoundHandler.playAmbient(); } } diff --git a/frontend/src/scripts/sound-handler.ts b/frontend/src/scripts/sound-handler.ts index 97112ac..bfab026 100644 --- a/frontend/src/scripts/sound-handler.ts +++ b/frontend/src/scripts/sound-handler.ts @@ -8,37 +8,71 @@ export enum Sounds { hit = 'hit', shoot = 'shoot', click = 'click', - ambient = 'ambient', } +const concurrencyScale = 5; + export abstract class SoundHandler { private static sounds: { [key in Sounds]: HTMLAudioElement }; + private static isAmbientPlaying = false; - public static initialize() { + private static ambientSound = new Audio(ambientSound); + + private static initialized = false; + public static async initialize() { this.sounds = { - [Sounds.hit]: new Audio(hitSound), - [Sounds.shoot]: new Audio(shootSound), - [Sounds.click]: new Audio(clickSound), - [Sounds.ambient]: new Audio(ambientSound), + [Sounds.hit]: await this.initializeSound(hitSound), + [Sounds.shoot]: await this.initializeSound(shootSound), + [Sounds.click]: await this.initializeSound(clickSound), }; - this.sounds.ambient.volume = 0.5; + + this.ambientSound.play(); + this.ambientSound.muted = true; + this.initialized = true; + + setTimeout(() => { + this.ambientSound.muted = false; + this.ambientSound.volume = 0.5; + if (!this.isAmbientPlaying) { + this.ambientSound.pause(); + } + }, 100); } - public static play(sound: Sounds) { - if (OptionsHandler.options.soundsEnabled) { - if (this.sounds[sound].currentTime > 0) { - (this.sounds[sound].cloneNode() as HTMLAudioElement).play(); - } else { - this.sounds[sound].play(); - } + private static async initializeSound(hitSound: string): Promise { + const sound = new Audio(hitSound); + sound.muted = true; + await sound.play(); + sound.pause(); + sound.muted = false; + sound.currentTime = 0; + return sound; + } + + public static play(sound: Sounds, volume: number = 1) { + if (!this.initialized || !OptionsHandler.options.soundsEnabled) { + return; } + + const audio = + this.sounds[sound].currentTime > 0 + ? (this.sounds[sound].cloneNode(true) as HTMLAudioElement) + : this.sounds[sound]; + audio.volume = volume; + audio.play(); } public static playAmbient() { - this.sounds.ambient.play(); + this.isAmbientPlaying = true; + if (this.initialized) { + this.ambientSound.play(); + } } public static stopAmbient() { - this.sounds.ambient.pause(); + this.isAmbientPlaying = false; + if (this.initialized) { + this.ambientSound.pause(); + } } } diff --git a/frontend/src/scripts/start-animation.ts b/frontend/src/scripts/start-animation.ts new file mode 100644 index 0000000..c8d6b37 --- /dev/null +++ b/frontend/src/scripts/start-animation.ts @@ -0,0 +1,64 @@ +import { + CircleLight, + ColorfulCircle, + FilteringOptions, + Flashlight, + Renderer, + runAnimation, + WrapOptions, +} from 'sdf-2d'; +import { settings } from 'shared'; +import { BlobShape } from './shapes/blob-shape'; +import { PlanetShape } from './shapes/planet-shape'; + +export const startAnimation = async ( + canvas: HTMLCanvasElement, + draw: (r: Renderer, current: number, delta: number) => boolean, + noiseTexture: TexImageSource, +): Promise => + await runAnimation( + canvas, + [ + { + ...PlanetShape.descriptor, + shaderCombinationSteps: [0, 1, 2, 3], + }, + { + ...BlobShape.descriptor, + shaderCombinationSteps: [0, 1, 2, 8], + }, + { + ...ColorfulCircle.descriptor, + shaderCombinationSteps: [0, 2, 16], + }, + { + ...CircleLight.descriptor, + shaderCombinationSteps: [0, 1, 2, 4, 8, 16], + }, + { + ...Flashlight.descriptor, + shaderCombinationSteps: [0], + }, + ], + draw, + { + shadowTraceCount: 16, + paletteSize: settings.palette.length, + //enableStopwatch: true, + }, + { + colorPalette: settings.palette, + enableHighDpiRendering: true, + lightCutoffDistance: settings.lightCutoffDistance, + textures: { + noiseTexture: { + source: noiseTexture, + overrides: { + maxFilter: FilteringOptions.LINEAR, + wrapS: WrapOptions.MIRRORED_REPEAT, + wrapT: WrapOptions.MIRRORED_REPEAT, + }, + }, + }, + }, + ); diff --git a/frontend/src/styles/_vars.scss b/frontend/src/styles/_vars.scss index dc4cd7b..377d9db 100644 --- a/frontend/src/styles/_vars.scss +++ b/frontend/src/styles/_vars.scss @@ -13,7 +13,7 @@ $large-icon: 48px; $small-icon: 32px; $bright-decla: #4069a5; $bright-red: #d15652; -$bright-neutral: #88888877; +$bright-neutral: #ccc; :root { --bright-decla: #{$bright-decla}; diff --git a/frontend/src/styles/form.scss b/frontend/src/styles/form.scss index 175e13d..b258c84 100644 --- a/frontend/src/styles/form.scss +++ b/frontend/src/styles/form.scss @@ -96,9 +96,15 @@ form { border-radius: $border-radius; padding: $small-padding; border: $border; + cursor: pointer; margin: $border-width-focused - $border-width $border-width-focused - $border-width + $small-padding / 2; + + .completion { + font-size: 0.7em; + color: $bright-neutral; + } } &:focus { diff --git a/frontend/src/styles/settings.scss b/frontend/src/styles/settings.scss index 839bbf4..8f918b0 100644 --- a/frontend/src/styles/settings.scss +++ b/frontend/src/styles/settings.scss @@ -50,13 +50,18 @@ #settings { display: flex; flex-direction: column; - padding: 0 $medium-padding $medium-padding $medium-padding; + @include background; + border-radius: 12px; + z-index: 100; + margin-right: $medium-padding - $small-padding; + padding: $small-padding; transform: translateY(-100%); @media (max-width: $breakpoint) { flex-direction: row-reverse; transform: translateX(100%); - padding: $medium-padding 0 $medium-padding $medium-padding; + margin-top: $medium-padding - $small-padding; + margin-right: 0; } opacity: 0; @@ -72,13 +77,9 @@ svg { cursor: pointer; transition: opacity $animation-time; - margin-bottom: $small-padding; - margin-left: 0; @include square($large-icon); @media (max-width: $breakpoint) { @include square($small-icon); - margin-bottom: 0; - margin-left: $small-padding; } } @@ -130,4 +131,33 @@ } } } + + img, + svg { + margin-top: $small-padding; + @media (max-width: $breakpoint) { + margin-top: 0; + margin-right: $small-padding; + } + } + + label:first-child { + img, + svg { + margin-top: 0; + margin-right: 0; + } + } + + label:not(:first-child) { + input[type='checkbox']:after { + $height: 4px; + top: $height / 2 + $small-padding; + + @media (max-width: $breakpoint) { + right: $small-padding; + top: $height / 2; + } + } + } } diff --git a/frontend/static/flag.svg b/frontend/static/flag.svg new file mode 100644 index 0000000..20653df --- /dev/null +++ b/frontend/static/flag.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/frontend/static/shoot2.mp3 b/frontend/static/shoot2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..de8c874eb82a8096299980063d338dea81e3be26 GIT binary patch literal 30764 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
    hQhkEP45#k*%upFh7e+4Xc0_Re1Nz4-e2_}aUF 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 MHvZoi{yz)+AJNm!9{>OV literal 0 HcmV?d00001 diff --git a/frontend/static/shoot5.mp3 b/frontend/static/shoot5.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..0dfa8b92dee07ae1e235a566ef3d5460c18517a3 GIT binary patch literal 145783 zcmeFYV{m0%)HQly8y(xWZQJVL#I|kQ=-4(o9ox3ej?+mx$xXj?-~0Fe`>MXGXH~7L zc~0%Bv-enIjXCyQ^GJ)af&sn;p_`ht8p~Gz@-@|z#F_s$6qXbD-%wjz<$ps_MTP$j zRYYa~-%wOhUj8d2{FlZ&YngNeQE*9HHL{}A{O zf&UQr4}t#>_z!{q5cm&){}A{Of&UQr4}t#>_z!{qa|nFC)&Kwgn6#al{ntfEUvm!t zO6?8+hlGJgL`K8J!o?>dC8wmNXJlsQ1A;{wOFZtEjGPXm0KJ`KxzecyxSvc7AbneRF63@Z{|B_wD`D%iH_E zo02nfGhydq;Qm*O`2PkO*y8`hU-$8&|Knfj;lJ^J6#`$369WLi4z)Fg;Cn$`BD=uz zGXQ9}!LFI90kAHWzr6`=0101Dw2yi10I&Pw)u35I(3(Onw;@8(B4Xy#A|l>R7~Z>U z0d#EVxBKrt=qH80SVBQ4$nw0u<}L%lS)ZFmiPPQp(G;$)ulGp>Kc5@j{Yb7K3rPe& zKX)^EZ?Qjvp^=H<16=s{m?TBF345UocW<7<|9}+&JiG@+{zPoJ1^^Brn43$Pce|E@ zz?p6UB2d8r{R>Qxm_H(7K0iNAKo?fy-FrSiZ{#w0dyoTJfD7FplSD#6*niO|zP`GJ z*=|M_;S>8B`deFDmtw-;q+g%hyNCja&V+=JFObf`LEzg3kb(okCw|rYd{SZM=|4|3 zuZtTAshOUM6lAodL0iC7%3*Pd+z}UARU)y<7ZM%l9qvU zd`5>!trcm;RdNg1t16PrR;M4w2I=Z{#u7rw;h7aL&Z_gt+~>h(xc1BF81{N5r(=VL zn2A;;n-~i*ktT#ux>EdY7^n$VeH`=w#6EE@jeIW+4yi+H0c@-8IrAN=b76GuKs1P_ zlyg&GCckDp(Yw^GOIPzly7tZ#F3t2^?S=kO_m1c=Ba~;W5r1Hp$hMz=-$(7)!>hA* z$L&?MS=Y;3xSqL3t!?FZj^N5;1lOM2^_`2Ussn$6tQN~3UH%<;Zav|f^{3BRR)7jt z8E|AhBG}>;s`U)&Y}WG5EVYuQaFUzwPErFxcp{Gy($BX>F=S9OO#am}BO*Y!EUoNG zF#xSYP?Mf%W?ZDQx+Nrw7)bMtEh&mtB@@;{TOGD)tRzV=pmsX?`=uArd#ycF``X1N|sg&v6n4Dnv3cgbwszC;-ih?}4D> z$bcl$WIFfZ!o8{*`Diu(5JCsIhjHNCFivi2$c5pOD>So}TF*6@M$4qLI73a=a8@i9 zr$`ilRcX&^k1c^gCWb4La69Z;;p&SQgG8l(gMEFICvGS4OwsCM(Llgg%1kr5hErU} ziO$+-_&|O9o1J>;yY>6$=T3L}+q22ZU#F7K@Xz1rYxdVP9_2DHF_cG~|vkn91Y^+PdtoqZt3>xuHHah!b(WGu&aua0GGp_j$@TUf<`seWcT<_VP2eDq z=zNNCEul68BxNX>)sn;jmXDG~kmx}D%hJh_JaKL!$$Tl$$+jvSpyUwTa`@!YsNL)A-2oad<(vvY=q15}o$GuxQXAtIJ)gR@+L8>1H~eN?JEqt^zM zuyl;4B0AnB5!JFmpVPB%u-ADZ^R8GWsu}HN&f<>K_&|hiV z=W|LIGzTUG{r{fTV035Exzc z9$7>RTPixKefG2m^~O7}P?)9EMM$HJZWEf(L@;mwG607K;TJ1~6)%2NxvIV5&Jzo_ zCqkyyQg^n!>%*ki==(D*XN&)bU8Yo58YVG(M5NDr53B0D%}4=4!OF7P&xhcJm-ty2 zKJ|V;$ccXyEL-pCfy^X1?Be$XA+*GK{qvV!{>)vY$-n)Y3zb?ZWavaVq7dRFk%5n3 zsPf#SNw^{8%UD52AthI^_(aH5MFcD=qcG6OfiT5JL#|L{bj7;dFqlzS`Oy~ZW~Do} zZ}i)Aj!K|#SK_d&#l}PzS9vH@-p89iey^NeGt!R}&l!P&qfvgqgJTbQfwG6X2?+xr zX$mBjHt8f3h`KN;`K_wp==2kziHiqKk-FBb=$W~+BK}bhGXQ+ibj2B-%^?e3 zSJ8+n4<*yw@-YMetI|O4mlpt%aV%>+_He4Ca;CKwIMgbpG2D@%(%~y)b%C zt@WWrmZ|+Ca`v}78iCsUJ5*keo%(zccEjyP=Yq#rP*i}_opGn2e;81pWx(#$b;r#g z8`Nq9Zz zY0^eY=reJiOEmKc3R0WN-`GY=JGA6YHS{ID%0z6Uury7yRHNJChv`oU>CJk%SjdJV zRH>yRy@WUWN`LmAV^e$%pLI?i*K@Eml4+WUu#yG9I$&XJW4aVzs2*80hyE$osUo*< z91}B*kO6lw!qZC@z1e~RM>j)4_6&<9QpssU!WmMT!>Nuv7J?^ zC|y-fG`3Y>p4mi`M9WguLFYqRG8eq(-e{n+JhYpgA;#K*jphX_qK__nOQjo|El{s7 zX{TP)osvtj9id@ng)Wr<4IxBGh6fb`9^w&d)GjKv*bl$B28{_+o^*x^%0K0_rWZ$+ zahMw|lFT*g^>X+bTUOB~TqYOail;t+z?4bGgJ|gBGFqk<5{Mbc>vudbSOnjR73p)G z+g^3{ExyD&({9YBk2va#FJ9k3&m)9NgyF>ZM?$!4`Ny@g;TVC`r4u?8Z=7byW@sz$ z+fnWL<8l>-DXJ7XDyjks@?vXVU@)%=X1CDtZbzB1v0YH<6rLQ|Kgyv2z{~aZ?Tm;( zW8`Rmj#L9wm_x0*Ljqt`tFL(T5<;Q7tn=R zp7$k{#tUdu<>%Fn$8otGUD=Nkx)dr`IUZ8uX!&G)2PR%u{~U|lX}4et+dTd?Pxr*D z`(NpB>n^{uoC>(wYotrIpL=emyW?g@37fXRk%Wz46L|axiHba#0;1Crx529}A9~o`g*>yNR0EB?H zDO3n!pl+|O4bbas7F0)ggB#I^At`QX%1E_=isgzql?r6V^V*=7Tmvei*s>=ruYM@8 zPc%hb0?Ip071q9$!9{#AG>v}O?;fA@tM93%JL^^BkHb?MUmh%AeoZQ_w62pH`?3yI?q5jx7wElx`f^Jgzv|q1Uo{iKCMnvPy+{)>DpI zoMsnYoo@D%%5+)Bw$J36@7u4$Lp$cFakaine`2#yx$Z3hnDZ*iW9cgLQek)xtxN>E^k}t{uF@qq!X{~O+ zyBS0M56U5J`p@ zCNb3BUJ$k3Z$zr@*7T0P)Eu$lV}`U|#@dM)zNlpFAFj1bx^|NLm8CSspGA zYi7NT29s=TXdl+BK-O>Yi@ljJ1tyYZ0|0n_AQFg8_>6k6Hx*B|py|FPtUy^2Zj;kd z)rwM%tM$t(y0qy+UOyJ>AML-Y)dlg=mL0~1j^Rp4AEfa*qA0|QGLE%_FzzS`=8b7} zE)w2s;}Mo$Xl0O!!j26|5zsHMLU$-dad-q1bWfzMFb{>5wdbp zu%j56`2OMGb!*OO=@!RF4~?D2|FTj5{P*)*;~rM)D>M~T;J}#Sj(0{Lu2VZI%Q)rRwz2fw#x8ygUXY2HrEaQTdK=PJC_VRzCLdG2r=&3eA= zIj6BhxdZ?N9~|-@tX(7IqeOj3B~djJC)vq9egT|b48BwdourKv?Sd2 zFSnf-+jRGN&#imul0lP1TKBJU@U}kTc?C2dKuzl`Ge3`m3_&F}F5ouUcYFQLl zkr4Lc8|u*Avv3Pb@>a`?^4Zq6ZZTjuv=IGf<%_#1ohHl2`j+d z`pJ}j2E`3$bRENpSDI%zciSucWzplF+qAK#x@>H=C`W$*J^SlVfrMD0?Wx}hxrGjT z!Y;_i!QT|X3mpPoFBZ!LPhLJ<^X07yk#VQwv%XfBBOIEjPboaKoV4gh8VukyH0c9g z07^`R$4S8`<$}Jn61^m%3(^!Knc2U7K%$dkDW?!kA~l1JJ;V#f7H)3R7AUrx37V=f->kS1mI zZw&HA>{y8b^=yqITdS!+Y)F%lBp&# zi#{Ro!r$j@{0jMpC&K7jY=$TeOkx`FiH`nC*YlZ&VgGGv#Ud|FO`;5a1Sc}3S>*`N zEjlZdup;`diLB?0D+QZwVa@rDv&Bo|@t*j{#2s>TOezfvAOuqiG_EUyBTUab;^AMv zzv!?e%{E^Eb>PpT7VS_mHTT8Ss0rAQ#lM!@GZmD z3wYL>C^%k!Bhnc3p-lbD`nkv#x+}hWL~Q=>U1y~3qoNKn89KbC;-J2DPeGmftP*IK zfccAG6bhFf8XDfJsejxw^ux5XCU64TS}dwI@HB{a>|zm4Uh;BI{Got>6tC+3?L*do zx^2>Jr;N9rah3$1rqx^R{5{1e$8l%gcl<;6aM@hoRp=DOw|JYo3W!jtccM#m!)|S0 zGs(fJ=&{tKsy7!>jhoJV22x5VHz@iwt10*ExzrSD@&|-#_KQ`5n!4$!YXn)NDzjM` z8|E?!lf@AA?3fgwTHHimHz>WOrZt%DLfL z^yIHV^20(0CvNOYy;qpP1OZ}{5a5aoDPb*R1+$L~+#*I~uR1H0m*&eXfq%g4 z`w4Jjg@LnX*3)9~F*QMC`EOnG_s&Ucvm+Nw5=24*DQEy{*~zIUZtokz<^Cb0;VfmZ z8RyU-Hg(9Yn_v?7sis}0f;Q&D-n^=&AQ3iwfl~S9q|ExBkbMnJg{X!2xLC?7hVphW zv`#2~lsL$Jn_36P*%xA!)nHz#l9(L}A*Le7tq0N49Kc)*xqho2Z4k zR&mue$J9^b;U6X5DcnWWTKY@}J&cO1k|i0Y*&4sHmaUxE<0;>&2474kFaP|=_*tHl z@c2ZbBim2wBrNJs5Q#nZy>1UAD1yo(ejbd2r}wK5P4&JYJGD(yf<=gIM6o<3NE$0} z0}7G>4~fFGkSfkI95OhQ*>=KIl|F#TInv8h94bnWM?W4@TkfJU?e_H4qsuNZ2JukC zP+N?&4&PaY7)8mLgNg*FuXmIyPmUwy#1q=K<*(VkGe_`)SJ4>@V;YL7mQJE(#97^h zlxS&11(I8d4z=5e@&}|s*E`HUBK z(8}$EcnL@fYPB$!M^X|d^})cLAgnZ+5X;6rv}43R(lT9?mnoXwefOOj{oQFb)@(En zmUg5nN(BD6fCLi&L~+1L6(#AWCBKhz+!^+@W}$xj=$o;PC9o<}L2vUH064QBQ%KKd zzcXk|v>?(z3QQuE-V;(%!w$fkN4Zr8tAQL zmN5y9P6+ZQ9&Y0EmUS*9N&IlLH`=Yza3RzvLr- z1x=MD0sz*TGPVOKI={QK7ncS}G3+I_Y0UFm@!s;8F6BC;6bB_%@&qjtfC&FftlvPv z^R<^vVAz}zV|0;>sC-l~0`;qzW<-EZHvA!(FCvsAN)xN_Y>ue5kfGxH`Kd<8=YoI> z4?4b%LFnU5TiPk$fG3BN1hf*G^s$NIL6SU!W>#SxL2Nfx+Vh7mdb-u+@j&x{b>VN) zw(aAZrUT306W*Kt2>P5qO6s|P;<9Hr%)BF_nP{2)J7xH$UX04blv%zz$I%~0URcH2 zN;F}R{z@6Wm@EV?;+lP$F<-upg_;gde|KY!1UqAnv#IyjRuGWK?9JN>xgYG&sI!eUydgocZ#V!IcfL+Y<~?$<6oX?_vzveb_jawWi&ViNklF zCS}vD+$WAT#{I212-T}bfVGq)*@Enz3IY*du6cdrb)Rb)r0HRA)S0=8a}nXln4vGAOyPhs^#Iz2Lmb z{nqi=Qt;k%FwfxPM$=<-ZMoKgFdnyKKVw`1-37Pt_rU3DgudgROa^r_!lFzJ900=oi_@J;7zZ=Zi8mmJEQBrxR_5nl-u=l1{Fc2}7u?b+slbjy zkvY0~mwY>K(@edqT zL{o1;+1FDSO*8MZE~OIdZuqs+8i)i|HH}s_bRux*`tq_;v~IQyw<)NJ1$j>GsPFvG z1U9q=!!_lI&=YLg=o}X1K9Tdo#l}Sl6n}(Z5ZK18W6O;>MiUDPVopkQskvj@OTCrv*kvOC13K zKuq0+A9-{{LJJK!MgzM!Eaeqccm4zyjenv0?%LqEgvb4gSxzKd-|a_E=9<$=`>xYapA`5 z$z{9Vt?~1Fiw|30&(72m=e_q2ew=KLP$ve`5yqhmm_)F8dZ}i2Hs^}`rIQHKx!u$AqxROOWsvx8yaaT%9#p5 z>(a-AtF!MP%)@30jaT?QhV*7BQ7J!<@f2w=JSf`j-wEP>TTB_!3Zga_WFh8+ozJY>w~fhhj|5quHfs1 z7JLh-4%oaExyjF6sXG+2FT4N}78>bi%LY=uqa| zTcr(u-W?q*S^8~rq7+W?M2_@(z%n!J&VI{TRA8ncgAv5$+K!!5Eld?0T6$tn96~nC zV0yQNP@%*b#vV7sb;3anA4HoN?ViR&DJ8#8X{@$^_sRA$W3f9YA|(tKW_Llb%*m-yt=@s<~tE7UD+)tc+XUP$MN^6 z)ws6VLyEX~M2jyqP$UoB#{u`qERNt3SP+}zf(6TDz=I<7%oj=nliJ515sfhDBCZ}P z4lE4K6vc@$?-(p7GA=3Sqiq~FFNRavk1ec47-PWrZh9An0LcrbG=&!|hyC{Umr@}0 zUt+Zf0b4O!^M=7y3W0t7ThL3Z5dOJDYU=aOc&lW5FB{ zYXzB~G~c~O12=;ql%z{2$4m$<(74Es+trR7yIb=@$=Etx1daW}z@!XXx_+@CbqZUk5p|M%zXFh3_P`pE z5|YFQHB`%c4MkGq>|nI0srqW7CGyz-h+Z6*$ks3+V>xi0i$8WEd&KJ>vTU-JyV>OL zT=2hwc&#w@72Cke5}fMq@9S?w;84S_$O76W+cZ%dR~`{>@+I<6oInam-=$k z1@NjTlM1;{WwW8SX+RhN28A#nn1YDQbP+sOCKT026jlk+T&4vFVjV?mbo&&Xl}*345J+4_1tx#WX}QsrNC7*f`^Co*V)Z6F*V)R(G8H5 zB9is2O=eTJh(Rpi%!QXs9^Z(3-X_7jOGW>Ow6sMrDi1ZzgBkRACv`=*WPw}^Gmsm( zz6>K~2$HWdR7dvq1TN9ue=H_l$97BWNSxxR)|c{L^_v^N#c|5G~sf-pq9g|8Cg4( zC_&aIQbCJ1FeeK_iyv$0!>yC#%`+(C7c4(wq!4nI#~-O5J`5wIiLH-Dqp9H1c*K-J zlYzI*Di7{k*@Um4)@KJe*{^?jSA`b?bvaj2Y@t$kmSa-lO^>{if<!)_gRL-MqPmZ&}7UeSQ9TpSX}-c4YyQ8cD#lKJl-LC%-&@ zv~d&y9Uq1tmmni@*#alrZq+3+i}3Eh1t&hC6~lklw0Jgxs(P@Y06G9T`R>vHO8n?f4NX&gO#l%Es>WsA zgCg*ca$NzWuiP5WFk(tRaynaIDyOujuYXBaH+E8E?HdO3hn6_cd;>M&_lT%FKw7#0 zS_r)C`mhEjw!&e)f{6kH=L8Cw0TRj#-+8YzzO9K^nHfm(Fj082@3=|Dw5a4-AQf5e z=Y%%C`Sknv`$28zudGtjtsKu%7nV)E>Oty^V2jJ_=?7a~Qg!gTNR{T;LJM8&${nC3 zqOWJU!k^(mC#L8@Cyh#CarNY{Z479WBbM27WLM6w5kaf*fKg`HRhh`4D|-PEAwl*@ zAfyqKAxs{f8XDPbz)-N0B|0Ay*Y_#x;#CoEXFQRj1Vi2%+RA@nC>+Wa&%*B6e{zs( zoHox~&jcgBEMD_Mvz^=p`2ltp=WzYEK3atDXN0DPD_rQyr4y+;XWt@K%!HN2m&K6z zV45Gc9(R)B;wIKvJf}{GXw^*{-x_c3a>+e!d{MhBgl?1CK2@ijN&TZd6!cekH=j%w z?YK%|`LBs~zzQ&ak`rr2Hx8yxoi91h^&L|_M+!LaWKcQq+LtHU(vDavf9pVy z?_|ND7NztDx?+*FHcx)17$Ol~5D=q|k*-N5!P2UgMA1N2OQPx~7}S-%OwSu&m7(n; z*$jK^rj8$S#)YE zq8VHEALR~%$Oz3e-e7PYye46H42Q}w#53jTm{$8a8fkn((kcf3&iJ&oGRPQIj-w&g zswbO@8nxvz6f&uCVs^ky4RZOyz*=?p6j>i5KEkzaS5He5mi;2%>0l?lnVM}kiHhp} zQEh2;`eGoeSKenF!df&pEo<@ij#6Rjrw-&!sxG**dUnfjox>ro*o+u$0f%BN2Y|px zVY2*yMeuJSyGtW7Q4o6AbCtbYT|>3#u4c+oBS`zE&u8#PlvHwL+7hq9Hk$gW+S1JJ z-Wj(yW?w$|s^Z+WGNae_^P|3|XoX%Y}N57R&Nvisxzr6oA5$Fdb zzJ3K6V=!jFH1p~Bn*nPKdZREH2zL;cfuO!bmsjynU4zM~ZsU+kyr0(Wo6HHvGdX>E>T>1${8h4T^6SIP&C_jXW*{%0D)4J*LBdj^PQgvfWiin5Nxu39 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%0AWZ${u;eebmVe~hoo00Z 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 UNaxD`=Ij4*V*bzZzs(!?U*qUJU;qFB literal 0 HcmV?d00001 diff --git a/frontend/static/shoot6.mp3 b/frontend/static/shoot6.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..2ce159b2307d598f422df64a714f38cd7c9f6860 GIT binary patch literal 21483 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 { + return [this.winningTeam, this.endCardLengthInSeconds, this.shouldReconnect]; + } +} diff --git a/shared/src/commands/types/game-start.ts b/shared/src/commands/types/game-start.ts new file mode 100644 index 0000000..602670e --- /dev/null +++ b/shared/src/commands/types/game-start.ts @@ -0,0 +1,13 @@ +import { serializable } from '../../transport/serialization/serializable'; +import { Command } from '../command'; + +@serializable +export class GameStart extends Command { + constructor() { + super(); + } + + public toArray(): Array { + return []; + } +} diff --git a/shared/src/commands/types/remote-calls-for-object.ts b/shared/src/commands/types/remote-calls-for-object.ts new file mode 100644 index 0000000..f1713df --- /dev/null +++ b/shared/src/commands/types/remote-calls-for-object.ts @@ -0,0 +1,14 @@ +import { serializable } from '../../transport/serialization/serializable'; +import { Command } from '../command'; +import { RemoteCallsForObject } from './remote-calls-for-objects'; + +@serializable +export class RemoteCallsForObjects extends Command { + constructor(public readonly callsForObjects: Array) { + super(); + } + + public toArray(): Array { + return [this.callsForObjects]; + } +} diff --git a/shared/src/commands/types/remote-calls-for-objects.ts b/shared/src/commands/types/remote-calls-for-objects.ts new file mode 100644 index 0000000..f50f0c1 --- /dev/null +++ b/shared/src/commands/types/remote-calls-for-objects.ts @@ -0,0 +1,15 @@ +import { Id } from '../../main'; +import { RemoteCall } from '../../objects/game-object'; +import { serializable } from '../../transport/serialization/serializable'; +import { Command } from '../command'; + +@serializable +export class RemoteCallsForObject extends Command { + constructor(public readonly id: Id, public readonly calls: Array) { + super(); + } + + public toArray(): Array { + return [this.id, this.calls]; + } +} diff --git a/shared/src/commands/types/server-announcement.ts b/shared/src/commands/types/server-announcement.ts new file mode 100644 index 0000000..ae3c32a --- /dev/null +++ b/shared/src/commands/types/server-announcement.ts @@ -0,0 +1,13 @@ +import { serializable } from '../../transport/serialization/serializable'; +import { Command } from '../command'; + +@serializable +export class ServerAnnouncement extends Command { + constructor(public readonly text: string) { + super(); + } + + public toArray(): Array { + return [this.text]; + } +} diff --git a/shared/src/commands/types/update-game-state.ts b/shared/src/commands/types/update-game-state.ts index f9d231e..991a502 100644 --- a/shared/src/commands/types/update-game-state.ts +++ b/shared/src/commands/types/update-game-state.ts @@ -1,37 +1,17 @@ -import { vec2 } from 'gl-matrix'; -import { CharacterTeam } from '../../objects/types/character-team'; import { serializable } from '../../transport/serialization/serializable'; import { Command } from '../command'; -@serializable -export class OtherPlayerDirection { - public constructor( - public readonly direction: vec2, - public readonly team: CharacterTeam, - ) {} - - public toArray(): Array { - return [this.direction, this.team]; - } -} - @serializable export class UpdateGameState extends Command { public constructor( public readonly declaCount: number, public readonly redCount: number, - public readonly neutralCount: number, - public readonly otherPlayerDirections: Array, + public readonly limit: number, ) { super(); } public toArray(): Array { - return [ - this.declaCount, - this.redCount, - this.neutralCount, - this.otherPlayerDirections, - ]; + return [this.declaCount, this.redCount, this.limit]; } } diff --git a/shared/src/commands/types/update-objects.ts b/shared/src/commands/types/update-objects.ts deleted file mode 100644 index 8ff9356..0000000 --- a/shared/src/commands/types/update-objects.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { vec2 } from 'gl-matrix'; -import { UpdateObjectMessage } from '../../objects/update-object-message'; -import { serializable } from '../../transport/serialization/serializable'; -import { Command } from '../command'; - -@serializable -export class UpdateObjectsCommand extends Command { - public constructor(public readonly updates: Array) { - super(); - } - - public toArray(): Array { - return [this.updates]; - } -} diff --git a/shared/src/commands/types/update-other-player-directions.ts b/shared/src/commands/types/update-other-player-directions.ts new file mode 100644 index 0000000..b5bc248 --- /dev/null +++ b/shared/src/commands/types/update-other-player-directions.ts @@ -0,0 +1,27 @@ +import { vec2 } from 'gl-matrix'; +import { CharacterTeam } from '../../objects/types/character-team'; +import { serializable } from '../../transport/serialization/serializable'; +import { Command } from '../command'; + +@serializable +export class OtherPlayerDirection { + public constructor( + public readonly direction: vec2, + public readonly team: CharacterTeam, + ) {} + + public toArray(): Array { + return [this.direction, this.team]; + } +} + +@serializable +export class UpdateOtherPlayerDirections extends Command { + public constructor(public readonly otherPlayerDirections: Array) { + super(); + } + + public toArray(): Array { + return [this.otherPlayerDirections]; + } +} diff --git a/shared/src/communication/server-information.ts b/shared/src/communication/server-information.ts index fabbbdb..425ef2a 100644 --- a/shared/src/communication/server-information.ts +++ b/shared/src/communication/server-information.ts @@ -2,6 +2,7 @@ export interface ServerInformation { playerLimit: number; playerCount: number; serverName: string; + gameStatePercent: number; } -export const serverInformationEndpoint = '/stats'; +export const serverInformationEndpoint = '/state'; diff --git a/shared/src/main.ts b/shared/src/main.ts index bcb12f8..9031c73 100644 --- a/shared/src/main.ts +++ b/shared/src/main.ts @@ -5,12 +5,17 @@ export * from './commands/types/delete-objects'; export * from './commands/types/ternary-action'; export * from './commands/types/move-action'; export * from './commands/types/primary-action'; +export * from './commands/types/remote-calls-for-objects'; +export * from './commands/types/remote-calls-for-object'; export * from './commands/types/player-died'; -export * from './commands/types/update-objects'; -export * from './commands/types/update-game-state'; +export * from './commands/types/server-announcement'; +export * from './commands/types/game-end'; +export * from './commands/types/game-start'; +export * from './commands/types/update-other-player-directions'; export * from './commands/types/secondary-action'; -export * from './commands/command-receiver'; export * from './commands/types/update-game-state'; +export * from './commands/command-receiver'; +export * from './commands/types/update-other-player-directions'; export * from './commands/command-executors'; export * from './commands/command-generator'; export * from './commands/broadcast-commands'; @@ -46,7 +51,6 @@ export * from './objects/types/player-character-base'; export * from './objects/types/lamp-base'; export * from './objects/types/planet-base'; export * from './objects/types/projectile-base'; -export * from './objects/update-object-message'; export * from './settings'; export * from './transport/transport-events'; export * from './transport/identity'; diff --git a/shared/src/objects/game-object.ts b/shared/src/objects/game-object.ts index 76f080d..fd8cedf 100644 --- a/shared/src/objects/game-object.ts +++ b/shared/src/objects/game-object.ts @@ -1,14 +1,37 @@ -import { UpdateMessage, UpdateObjectMessage } from '../main'; import { Id } from '../transport/identity'; +import { serializable } from '../transport/serialization/serializable'; -export abstract class GameObject { - constructor(public readonly id: Id) {} +@serializable +export class RemoteCall { + constructor(public readonly functionName: string, public readonly args: Array) {} - public calculateUpdates(): UpdateObjectMessage | undefined { - return; - } - - update(updates: Array): void { - updates.forEach((u) => ((this as any)[u.key] = u.value)); + public toArray(): Array { + return [this.functionName, this.args]; + } +} + +export abstract class GameObject { + private remoteCalls: Array = []; + + constructor(public readonly id: Id) {} + + public processRemoteCalls(remoteCalls: Array) { + remoteCalls.forEach((r) => + ((this[r.functionName as keyof this] as unknown) as ( + ...args: Array + ) => unknown)(...r.args), + ); + } + + public getRemoteCalls(): Array { + return this.remoteCalls; + } + + public resetRemoteCalls() { + this.remoteCalls = []; + } + + protected remoteCall(name: string & keyof this, ...args: Array) { + this.remoteCalls.push(new RemoteCall(name, args)); } } diff --git a/shared/src/objects/types/planet-base.ts b/shared/src/objects/types/planet-base.ts index 2f2b1e0..2fe77f3 100644 --- a/shared/src/objects/types/planet-base.ts +++ b/shared/src/objects/types/planet-base.ts @@ -19,6 +19,12 @@ export class PlanetBase extends GameObject { vec2.scale(this.center, this.center, 1 / vertices.length); } + public setOwnership(value: number) { + this.ownership = value; + } + + public generatedPoints(value: number) {} + public static createPlanetVertices( center: vec2, width: number, diff --git a/shared/src/objects/types/player-character-base.ts b/shared/src/objects/types/player-character-base.ts index 889c0dc..5fec1ad 100644 --- a/shared/src/objects/types/player-character-base.ts +++ b/shared/src/objects/types/player-character-base.ts @@ -20,6 +20,25 @@ export class PlayerCharacterBase extends CharacterBase { super(id, team, health, head, leftFoot, rightFoot); } + public onShoot(strength: number) {} + + public updateCircles(head: Circle, leftFoot: Circle, rightFoot: Circle) { + this.head!.center = head.center; + this.head!.radius = head.radius; + this.leftFoot!.center = leftFoot.center; + this.leftFoot!.radius = leftFoot.radius; + this.rightFoot!.center = rightFoot.center; + this.rightFoot!.radius = rightFoot.radius; + } + + public setHealth(health: number) { + this.health = health; + } + + public setKillCount(killCount: number) { + this.killCount = killCount; + } + public toArray(): Array { return [ this.id, diff --git a/shared/src/objects/types/projectile-base.ts b/shared/src/objects/types/projectile-base.ts index 89d27db..96aa789 100644 --- a/shared/src/objects/types/projectile-base.ts +++ b/shared/src/objects/types/projectile-base.ts @@ -1,4 +1,5 @@ import { vec2 } from 'gl-matrix'; +import { settings } from '../../settings'; import { Id } from '../../transport/identity'; import { serializable } from '../../transport/serialization/serializable'; import { GameObject } from '../game-object'; @@ -16,6 +17,15 @@ export class ProjectileBase extends GameObject { super(id); } + public setCenter(center: vec2) { + this.center = center; + } + + public step(deltaTimeInSeconds: number) { + this.strength -= settings.projectileFadeSpeed * deltaTimeInSeconds; + this.strength = Math.max(0, this.strength); + } + public toArray(): Array { return [this.id, this.center, this.radius, this.team, this.strength]; } diff --git a/shared/src/objects/update-object-message.ts b/shared/src/objects/update-object-message.ts deleted file mode 100644 index 89c57a0..0000000 --- a/shared/src/objects/update-object-message.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Id } from '../main'; -import { serializable } from '../transport/serialization/serializable'; -import { UpdateMessage } from './update-message'; - -@serializable -export class UpdateObjectMessage { - constructor(public id: Id, public updates: Array) {} - - public toArray(): Array { - return [this.id, this.updates]; - } -} diff --git a/shared/src/settings.ts b/shared/src/settings.ts index a6bb3d8..679a51a 100644 --- a/shared/src/settings.ts +++ b/shared/src/settings.ts @@ -21,6 +21,9 @@ export const settings = { objectsOnCircleLength: 0.002, planetEdgeCount: 7, takeControlTimeInSeconds: 4, + loseControlTimeInSeconds: 24, + planetPointGenerationInterval: 1.5, + planetPointGenerationValue: 1, maxGravityDistance: 700, maxGravityQ: 180, planetControlThreshold: 0.2, @@ -28,6 +31,7 @@ export const settings = { maxGravityStrength: 10000, maxAcceleration: 10000, playerMaxStrength: 80, + endGameDeltaScaling: 4, playerDiedTimeout: 5, playerStrengthRegenerationPerSeconds: 40, projectileMaxStrength: 40, @@ -37,7 +41,7 @@ export const settings = { projectileFadeSpeed: 20, projectileCreationInterval: 0.1, playerColorIndexOffset: 3, - backgroundGradient: [rgb255(90, 38, 43), rgb255(0, 0, 0), rgb255(43, 39, 73)], + backgroundGradient: [rgb255(90, 38, 43), rgb255(43, 39, 73)], declaColor, declaPlanetColor, redColor, diff --git a/shared/src/transport/transport-events.ts b/shared/src/transport/transport-events.ts index 8104af6..395a564 100644 --- a/shared/src/transport/transport-events.ts +++ b/shared/src/transport/transport-events.ts @@ -2,8 +2,8 @@ export enum TransportEvents { PlayerJoining = 'PlayerJoining', PlayerToServer = 'PlayerToServer', ServerToPlayer = 'ServerToPlayer', - SubscribeForPlayerCount = 'SubscribeForPlayerCount', - PlayerCountUpdate = 'PlayerCountUpdate', + SubscribeForServerInfoUpdates = 'SubscribeForServerInfoUpdates', + ServerInfoUpdate = 'ServerInfoUpdate', Ping = 'Ping', Pong = 'Pong', }