Send animation triggers on win/loss/draw
This commit is contained in:
parent
e7221390f3
commit
f6b64fc569
|
@ -1,6 +1,6 @@
|
||||||
const animations = {};
|
const animations = {};
|
||||||
// animations['victory'] = TODO: implement victory animation
|
// animations['black-victory'] = TODO: implement black victory animation
|
||||||
// animations['defeat'] = TODO: implement defeat animation
|
// animations['white-victory'] = TODO: implement white victory animation
|
||||||
// animations['draw'] = TODO: implement draw animation
|
// animations['draw'] = TODO: implement draw animation
|
||||||
|
|
||||||
document.addEventListener('htmx:wsAfterMessage', function (e) {
|
document.addEventListener('htmx:wsAfterMessage', function (e) {
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { PlayerConnection } from '../player-connection';
|
||||||
import { broadcastBoard } from '../view/board-renderer';
|
import { broadcastBoard } from '../view/board-renderer';
|
||||||
import { broadcastButtons } from '../view/button-renderer';
|
import { broadcastButtons } from '../view/button-renderer';
|
||||||
import { broadcastSound } from '../view/sound-renderer';
|
import { broadcastSound } from '../view/sound-renderer';
|
||||||
|
import { broadcastAnimation } from '../view/animation-renderer';
|
||||||
import { broadcastTitle } from '../view/title-renderer';
|
import { broadcastTitle } from '../view/title-renderer';
|
||||||
import { GameServer } from '../game-server';
|
import { GameServer } from '../game-server';
|
||||||
import { ActionType, Message } from './messages';
|
import { ActionType, Message } from './messages';
|
||||||
|
@ -67,6 +68,7 @@ function handleAcceptDraw(server: GameServer): void {
|
||||||
broadcastButtons(server);
|
broadcastButtons(server);
|
||||||
broadcastTitle(server);
|
broadcastTitle(server);
|
||||||
broadcastSound(server, 'draw');
|
broadcastSound(server, 'draw');
|
||||||
|
broadcastAnimation(server, 'draw');
|
||||||
}
|
}
|
||||||
|
|
||||||
function handleDeclineDraw(server: GameServer): void {
|
function handleDeclineDraw(server: GameServer): void {
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { PlayerConnection } from '../player-connection';
|
||||||
import { broadcastBoard } from '../view/board-renderer';
|
import { broadcastBoard } from '../view/board-renderer';
|
||||||
import { broadcastButtons } from '../view/button-renderer';
|
import { broadcastButtons } from '../view/button-renderer';
|
||||||
import { broadcastSound, broadcastSoundToPlayer } from '../view/sound-renderer';
|
import { broadcastSound, broadcastSoundToPlayer } from '../view/sound-renderer';
|
||||||
|
import { broadcastAnimation } from '../view/animation-renderer';
|
||||||
import { broadcastTitle } from '../view/title-renderer';
|
import { broadcastTitle } from '../view/title-renderer';
|
||||||
import { GameServer } from '../game-server';
|
import { GameServer } from '../game-server';
|
||||||
import { Message } from './messages';
|
import { Message } from './messages';
|
||||||
|
@ -72,6 +73,8 @@ export function handleMakeMove(
|
||||||
switch (server.gomoku.winnerColor) {
|
switch (server.gomoku.winnerColor) {
|
||||||
case 'draw':
|
case 'draw':
|
||||||
broadcastSound(server, 'draw');
|
broadcastSound(server, 'draw');
|
||||||
|
broadcastAnimation(server, 'draw');
|
||||||
|
break;
|
||||||
case 'white':
|
case 'white':
|
||||||
if (whiteConn) {
|
if (whiteConn) {
|
||||||
broadcastSoundToPlayer(whiteConn, 'victory');
|
broadcastSoundToPlayer(whiteConn, 'victory');
|
||||||
|
@ -79,6 +82,7 @@ export function handleMakeMove(
|
||||||
if (blackConn) {
|
if (blackConn) {
|
||||||
broadcastSoundToPlayer(blackConn, 'defeat');
|
broadcastSoundToPlayer(blackConn, 'defeat');
|
||||||
}
|
}
|
||||||
|
broadcastAnimation(server, 'white-victory');
|
||||||
break;
|
break;
|
||||||
case 'black':
|
case 'black':
|
||||||
if (whiteConn) {
|
if (whiteConn) {
|
||||||
|
@ -87,6 +91,7 @@ export function handleMakeMove(
|
||||||
if (blackConn) {
|
if (blackConn) {
|
||||||
broadcastSoundToPlayer(blackConn, 'victory');
|
broadcastSoundToPlayer(blackConn, 'victory');
|
||||||
}
|
}
|
||||||
|
broadcastAnimation(server, 'black-victory');
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ import { PlayerConnection } from '../player-connection';
|
||||||
import { broadcastBoard } from '../view/board-renderer';
|
import { broadcastBoard } from '../view/board-renderer';
|
||||||
import { broadcastButtons } from '../view/button-renderer';
|
import { broadcastButtons } from '../view/button-renderer';
|
||||||
import { broadcastSoundToPlayer } from '../view/sound-renderer';
|
import { broadcastSoundToPlayer } from '../view/sound-renderer';
|
||||||
|
import { broadcastAnimation } from '../view/animation-renderer';
|
||||||
import { broadcastTitle } from '../view/title-renderer';
|
import { broadcastTitle } from '../view/title-renderer';
|
||||||
import { GameServer } from '../game-server';
|
import { GameServer } from '../game-server';
|
||||||
import { Message } from './messages';
|
import { Message } from './messages';
|
||||||
|
@ -41,6 +42,12 @@ export function handleResignation(
|
||||||
const otherPlayer = server.connections.get(otherPlayerId);
|
const otherPlayer = server.connections.get(otherPlayerId);
|
||||||
if (otherPlayer) {
|
if (otherPlayer) {
|
||||||
broadcastSoundToPlayer(otherPlayer, 'victory');
|
broadcastSoundToPlayer(otherPlayer, 'victory');
|
||||||
|
// Broadcast animation for the winning player's color
|
||||||
|
if (resigningPlayerColor === 'white') {
|
||||||
|
broadcastAnimation(server, 'black-victory');
|
||||||
|
} else {
|
||||||
|
broadcastAnimation(server, 'white-victory');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue