gomoku/src/messages/update-display-name.ts

38 lines
940 B
TypeScript
Executable File

import { PlayerConnection } from '../player-connection';
import { broadcastTitle } from '../view/title-renderer';
import { GameServer } from '../game-server';
import { Message } from './messages';
export interface UpdateDisplayNameMessage extends Message {
displayName: string;
}
export function handleUpdateDisplayName(
server: GameServer,
conn: PlayerConnection,
message: UpdateDisplayNameMessage,
): void {
const newDisplayName = message.displayName.trim();
if (!newDisplayName) {
conn.sendMessage('error', 'Display name cannot be empty.');
return;
}
if (newDisplayName.length > 20) {
conn.sendMessage(
'error',
'Display name cannot be longer than 20 characters.',
);
return;
}
if (newDisplayName === conn.name) {
return; // No change, do nothing
}
conn.name = newDisplayName;
server.webSocketHandler.setPlayerName(conn.id, newDisplayName);
broadcastTitle(server);
}