Add directing room join buttons (v1.3.0)
Add 6 draggable purple buttons for quickly joining Directing Rooms 1-6, stacked vertically to the right of the MaxDockedCams button. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
56
cams.user.js
56
cams.user.js
@@ -1,7 +1,7 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name cams
|
// @name cams
|
||||||
// @namespace http://tampermonkey.net/
|
// @namespace http://tampermonkey.net/
|
||||||
// @version 1.2.7
|
// @version 1.3.0
|
||||||
// @description Set maxDockedCamsForUser, keep-alive, and multi-poke
|
// @description Set maxDockedCamsForUser, keep-alive, and multi-poke
|
||||||
// @author You
|
// @author You
|
||||||
// @match https://chat.fabswingers.com/*
|
// @match https://chat.fabswingers.com/*
|
||||||
@@ -18,6 +18,16 @@
|
|||||||
const KEEPALIVE_BUTTON_ID = 'keepAliveButton_SINGLETON';
|
const KEEPALIVE_BUTTON_ID = 'keepAliveButton_SINGLETON';
|
||||||
const MULTIPOKE_BUTTON_ID = 'multiPokeButton_SINGLETON';
|
const MULTIPOKE_BUTTON_ID = 'multiPokeButton_SINGLETON';
|
||||||
const RESET_BUTTON_ID = 'resetPositionsButton_SINGLETON';
|
const RESET_BUTTON_ID = 'resetPositionsButton_SINGLETON';
|
||||||
|
const ROOM_BUTTON_PREFIX = 'roomJoinButton_';
|
||||||
|
|
||||||
|
const CHAT_ROOMS = [
|
||||||
|
{ id: 'c4c53fde-7697-490b-9217-4522012d96ed', name: 'Directing Room' },
|
||||||
|
{ id: '68fbfee8-9f16-4add-b5ff-1937444b444d', name: 'Directing Room #2' },
|
||||||
|
{ id: '5ec55d32-d09b-4636-b624-4c2256710137', name: 'Directing Room #3' },
|
||||||
|
{ id: 'a57172a0-551c-4dc4-a392-f3393a1f0830', name: 'Directing Room #4' },
|
||||||
|
{ id: '8cb23926-283d-417d-8a6d-fa6221d0ca89', name: 'Directing Room #5' },
|
||||||
|
{ id: '33f1c6b5-7d04-40a4-89ae-7a8e4f06e3f4', name: 'Directing Room #6' }
|
||||||
|
];
|
||||||
const LOCK_KEY = 'maxDockedCams_scriptLock';
|
const LOCK_KEY = 'maxDockedCams_scriptLock';
|
||||||
const KEEPALIVE_SETTINGS_KEY = 'keepAlive_settings';
|
const KEEPALIVE_SETTINGS_KEY = 'keepAlive_settings';
|
||||||
const MULTIPOKE_SETTINGS_KEY = 'multiPoke_settings';
|
const MULTIPOKE_SETTINGS_KEY = 'multiPoke_settings';
|
||||||
@@ -73,6 +83,15 @@
|
|||||||
multiPokeBtn.style.top = DEFAULT_POSITIONS[MULTIPOKE_BUTTON_ID].top;
|
multiPokeBtn.style.top = DEFAULT_POSITIONS[MULTIPOKE_BUTTON_ID].top;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CHAT_ROOMS.forEach((room, index) => {
|
||||||
|
const roomBtn = document.getElementById(ROOM_BUTTON_PREFIX + index);
|
||||||
|
if (roomBtn) {
|
||||||
|
roomBtn.style.right = 'auto';
|
||||||
|
roomBtn.style.left = 'calc(50% + 230px)';
|
||||||
|
roomBtn.style.top = (10 + index * 36) + 'px';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
console.log('Button positions reset to defaults');
|
console.log('Button positions reset to defaults');
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -879,6 +898,32 @@
|
|||||||
document.body.appendChild(resetButton);
|
document.body.appendChild(resetButton);
|
||||||
console.log('Reset button created');
|
console.log('Reset button created');
|
||||||
|
|
||||||
|
// Room join buttons (stacked vertically to the right of MaxDockedCams)
|
||||||
|
document.querySelectorAll(`[id^="${ROOM_BUTTON_PREFIX}"]`).forEach(btn => btn.remove());
|
||||||
|
CHAT_ROOMS.forEach((room, index) => {
|
||||||
|
const roomBtnId = ROOM_BUTTON_PREFIX + index;
|
||||||
|
const roomButton = document.createElement('button');
|
||||||
|
roomButton.id = roomBtnId;
|
||||||
|
roomButton.textContent = room.name;
|
||||||
|
roomButton.type = 'button';
|
||||||
|
roomButton.title = `Join ${room.name}`;
|
||||||
|
roomButton.style.cssText = `position: fixed; top: ${10 + index * 36}px; left: calc(50% + 230px); z-index: 999999; padding: 6px 10px; background-color: #9C27B0; color: white; border: none; border-radius: 4px; cursor: pointer; font-weight: bold; font-size: 12px; box-shadow: 0 2px 5px rgba(0,0,0,0.3); white-space: nowrap;`;
|
||||||
|
|
||||||
|
roomButton.addEventListener('click', function(e) {
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
if (typeof createRoomJoinWindow === 'function') {
|
||||||
|
createRoomJoinWindow(room.id, room.name);
|
||||||
|
} else {
|
||||||
|
console.log(`Room join: createRoomJoinWindow not available`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
document.body.appendChild(roomButton);
|
||||||
|
makeDraggable(roomButton);
|
||||||
|
console.log(`Room button created: ${room.name}`);
|
||||||
|
});
|
||||||
|
|
||||||
// Initialize multi-poke if enabled
|
// Initialize multi-poke if enabled
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
if (multiPokeEnabled) {
|
if (multiPokeEnabled) {
|
||||||
@@ -916,6 +961,15 @@
|
|||||||
multiPokeButtons[i].remove();
|
multiPokeButtons[i].remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CHAT_ROOMS.forEach((room, index) => {
|
||||||
|
const roomBtns = document.querySelectorAll(`#${ROOM_BUTTON_PREFIX}${index}`);
|
||||||
|
if (roomBtns.length > 1) {
|
||||||
|
for (let i = 1; i < roomBtns.length; i++) {
|
||||||
|
roomBtns[i].remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}, 500);
|
}, 500);
|
||||||
|
|
||||||
}, 100);
|
}, 100);
|
||||||
|
|||||||
2
meta.js
2
meta.js
@@ -1,7 +1,7 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name cams
|
// @name cams
|
||||||
// @namespace http://tampermonkey.net/
|
// @namespace http://tampermonkey.net/
|
||||||
// @version 1.2.7
|
// @version 1.3.0
|
||||||
// @description Set maxDockedCamsForUser, keep-alive, and multi-poke
|
// @description Set maxDockedCamsForUser, keep-alive, and multi-poke
|
||||||
// @author You
|
// @author You
|
||||||
// @match https://chat.fabswingers.com/*
|
// @match https://chat.fabswingers.com/*
|
||||||
|
|||||||
Reference in New Issue
Block a user