38 lines
940 B
TypeScript
Executable File
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);
|
|
}
|