Files
foundryvtt-smart-doors/src/features/locked_door_alert.js
2022-10-15 22:29:25 +02:00

55 lines
1.9 KiB
JavaScript

import {settingsKey} from "../settings.js";
// Tint the source door red when a locked alert is hovered
export function onRenderChatMessage(message, html, data) {
// Tint the door that generated this message
const source = message.flags.smartdoors?.source;
if (!source) return;
// Tint on mouse enter
const mouseEnter = function () {
const sourceDoor = canvas.controls.doors.children.find(
door => door.wall.id === source.wall && door.wall.scene.id === source.scene,
);
if (sourceDoor) sourceDoor.icon.tint = 0xff0000;
};
html.on("mouseenter", mouseEnter);
// Remove tint on mouse leave
const mouseLeave = function () {
const sourceDoor = canvas.controls.doors.children.find(
door => door.wall.id === source.wall && door.wall.scene.id === source.scene,
);
if (sourceDoor) sourceDoor.icon.tint = 0xffffff;
};
html.on("mouseleave", mouseLeave);
// Localize the message
html.find(".message-content")[0].innerText = game.i18n.localize("smart-doors.ui.lockedDoorAlert");
}
// Creates a chat message stating that a player tried to open a locked door
export function onDoorLeftClick() {
// Check if this feature is enabled
if (!game.settings.get(settingsKey, "lockedDoorAlert")) return false;
const state = this.wall.document.ds;
const states = CONST.WALL_DOOR_STATES;
// Only create messages when the door is locked.
if (state !== states.LOCKED) return false;
// Generate no message if the gm attempts to open the door
if (game.user.isGM) return false;
// Create and send the chat message
const message = {};
message.user = game.user.id;
if (game.user.character) message.speaker = {actor: game.user.character};
message.content = game.i18n.localize("smart-doors.ui.lockedDoorAlert");
message.sound = CONFIG.sounds.lock;
message.flags = {smartdoors: {source: {wall: this.wall.id, scene: this.wall.scene.id}}};
ChatMessage.create(message);
return true;
}