This commit is contained in:
Arjun S
2025-08-04 08:56:13 +00:00
parent 5898f04950
commit 79c38efc94
4 changed files with 137 additions and 5 deletions

View File

@@ -74,7 +74,14 @@ interface UserJoinMessage extends AuthenticatedMessage {
type: 'user-join';
}
type Message = ClickMessage | PurchaseUpgradeMessage | ApplyMultiplierBonusMessage | UserJoinMessage | AdminBroadcastMessage; // Updated Message type
interface EditUserMessage extends AuthenticatedMessage {
type: 'edit-user';
targetUserId: string;
clicks: number;
upgrades: Record<string, { owned: number; cost: number }>;
}
type Message = ClickMessage | PurchaseUpgradeMessage | ApplyMultiplierBonusMessage | UserJoinMessage | AdminBroadcastMessage | EditUserMessage; // Updated Message type
const UPGRADES: Upgrade[] = [
{
@@ -369,11 +376,29 @@ export default class GameServer implements Party.Server {
console.warn(`Unauthorized admin broadcast attempt from ${currentUserId}.`);
}
break;
case 'edit-user':
if (isAuthenticated && currentUserId === this.party.env.CLERK_ADMIN_USERID) {
this.handleEditUser(data);
} else {
console.warn(`Unauthorized edit user attempt from ${currentUserId}.`);
}
break;
}
this.broadcast();
}
handleEditUser(data: EditUserMessage) {
const { targetUserId, clicks, upgrades } = data;
const userState = this.gameState.users[targetUserId];
if (userState) {
userState.clicks = clicks;
userState.upgrades = upgrades;
this.updateGameMultipliers(targetUserId);
}
}
// handleUserJoin is now fully integrated into onMessage and can be removed or simplified.
// Removing it as its logic is now directly in onMessage.
// handleUserJoin(data: UserJoinMessage) {
@@ -475,7 +500,7 @@ export default class GameServer implements Party.Server {
}
}
updateGameMultipliers(userId: string) {
updateGameMultipliers(userId: string, autoClickRateOverride?: number) {
const userState = this.gameState.users[userId];
if (!userState) return;
@@ -494,6 +519,10 @@ export default class GameServer implements Party.Server {
}
});
if (autoClickRateOverride !== undefined) {
userState.autoClickRate = autoClickRateOverride;
}
this.setupAutoClicker();
}