adds support for new "allAllowed" and "showResults" options in chat overlay
This commit is contained in:
parent
18bb994a0f
commit
b41d423837
@ -21,14 +21,16 @@ class ChatOverlayResource {
|
||||
@QueryParam("modsAllowed") modsAllowed: Boolean = false,
|
||||
@QueryParam("vipAllowed") vipAllowed: Boolean = false,
|
||||
@QueryParam("subsAllowed") subsAllowed: Boolean = false,
|
||||
@QueryParam("allAllowed") allAllowed: Boolean = false,
|
||||
@QueryParam("cmd") cmd: String? = "roll",
|
||||
@QueryParam("theme") theme: String? = "default",
|
||||
@QueryParam("faceColor") faceColor: String? = "#ff0202",
|
||||
@QueryParam("numberColor") numberColor: String? = "#ffffff",
|
||||
@QueryParam("clearAfter") clearAfter: Long? = -1,
|
||||
@QueryParam("timeout") timeout: Long? = -1
|
||||
@QueryParam("timeout") timeout: Long? = -1,
|
||||
@QueryParam("showResults") showResults: Boolean = true
|
||||
): TemplateInstance {
|
||||
return Templates.chatoverlay(channel, scale ?: 7, maxDice ?: 20, modsAllowed, vipAllowed, subsAllowed, cmd ?: "roll", theme ?: "default", faceColor ?: "#ff0202", numberColor ?: "#ffffff", clearAfter ?: 10, timeout ?: 60)
|
||||
return Templates.chatoverlay(channel, scale ?: 7, maxDice ?: 20, modsAllowed, vipAllowed, subsAllowed, allAllowed, cmd ?: "roll", theme ?: "default", faceColor ?: "#ff0202", numberColor ?: "#ffffff", clearAfter ?: 10, timeout ?: 60, showResults)
|
||||
}
|
||||
|
||||
@GET
|
||||
|
||||
@ -25,11 +25,13 @@ object Templates {
|
||||
modsAllowed: Boolean,
|
||||
vipAllowed: Boolean,
|
||||
subsAllowed: Boolean,
|
||||
allAllowed: Boolean,
|
||||
cmd: String?,
|
||||
theme: String?,
|
||||
faceColor: String?,
|
||||
numberColor: String?,
|
||||
clearAfter: Long?,
|
||||
timeout: Long?
|
||||
timeout: Long?,
|
||||
showResults: Boolean?
|
||||
): TemplateInstance
|
||||
}
|
||||
|
||||
@ -123,15 +123,15 @@ class ColorPicker extends HTMLElement {
|
||||
<div class="bg-cover" id="controls">
|
||||
<label for="hue">
|
||||
<abbr title="Hue: The color tint.">H</abbr>
|
||||
<input type="range" id="hue" min="0" max="360" value="0">
|
||||
<input type="range" id="hue" min="0" max="360" value="0" step="0.01">
|
||||
</label>
|
||||
<label for="saturation">
|
||||
<abbr title="Saturation: The amount of gray in the color.">S</abbr>
|
||||
<input type="range" id="saturation" min="0" max="100" value="0">
|
||||
<input type="range" id="saturation" min="0" max="100" value="0" step="0.01">
|
||||
</label>
|
||||
<label for="lightness">
|
||||
<abbr title="Lightness: How light or dark the color is.">L</abbr>
|
||||
<input type="range" id="lightness" min="0" max="100" value="0">
|
||||
<input type="range" id="lightness" min="0" max="100" value="0" step="0.01">
|
||||
</label>
|
||||
</div>
|
||||
</div>`;
|
||||
@ -251,9 +251,9 @@ class ColorPicker extends HTMLElement {
|
||||
*/
|
||||
updateColor() {
|
||||
|
||||
const hue = Math.round( this.hueInput.value );
|
||||
const saturation = Math.round( this.saturationInput.value );
|
||||
const lightness = Math.round( this.lightnessInput.value );
|
||||
const hue = parseFloat( this.hueInput.value );
|
||||
const saturation = parseFloat( this.saturationInput.value );
|
||||
const lightness = parseFloat( this.lightnessInput.value );
|
||||
const hsla = [ hue, saturation, lightness ];
|
||||
|
||||
const rgba = this.HSLAToRGBA( hsla );
|
||||
@ -324,6 +324,10 @@ class ColorPicker extends HTMLElement {
|
||||
*/
|
||||
setColor( color = 'hsla(60, 100%, 50%, 0.5)' ) {
|
||||
|
||||
if ( /^[0-9A-F]{3,6}$/i.test( color ) ) {
|
||||
color = '#' + color;
|
||||
}
|
||||
|
||||
const rgba = this.colorToRGBA( color );
|
||||
const hsla = this.rgbToHSLA( rgba );
|
||||
|
||||
@ -484,13 +488,15 @@ class ColorPicker extends HTMLElement {
|
||||
}
|
||||
|
||||
// Calculate hue
|
||||
let hue;
|
||||
if ( max === normalizedR ) {
|
||||
hue = ( ( normalizedG - normalizedB ) / ( max - min ) ) % 6;
|
||||
} else if ( max === normalizedG ) {
|
||||
hue = ( ( normalizedB - normalizedR ) / ( max - min ) + 2 );
|
||||
} else {
|
||||
hue = ( ( normalizedR - normalizedG ) / ( max - min ) + 4 );
|
||||
let hue = 0;
|
||||
if ( max !== min ) {
|
||||
if ( max === normalizedR ) {
|
||||
hue = ( ( normalizedG - normalizedB ) / ( max - min ) ) % 6;
|
||||
} else if ( max === normalizedG ) {
|
||||
hue = ( ( normalizedB - normalizedR ) / ( max - min ) + 2 );
|
||||
} else {
|
||||
hue = ( ( normalizedR - normalizedG ) / ( max - min ) + 4 );
|
||||
}
|
||||
}
|
||||
|
||||
// Convert hue to degrees
|
||||
@ -500,7 +506,7 @@ class ColorPicker extends HTMLElement {
|
||||
hue += 360;
|
||||
}
|
||||
|
||||
return [ Math.round( hue ), Math.round( saturation * 100 ), Math.round( lightness * 100 ), a ];
|
||||
return [ parseFloat(hue.toFixed(2)), parseFloat((saturation * 100).toFixed(2)), parseFloat((lightness * 100).toFixed(2)), a ];
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -31,9 +31,7 @@
|
||||
//maxDice
|
||||
|
||||
ComfyJS.onCommand = async (user, command, message, flags) => {
|
||||
if ((
|
||||
flags.broadcaster || ({modsAllowed} && flags.mod) || ({vipAllowed} && flags.vip) || ({subsAllowed} && flags.subscriber
|
||||
)) && '{cmd}' === command && !shouldWait() && message.match(/^\d+d(4|6|8|10|12|20|100)$/) && (+message.split('d')[0] <= {maxDice})
|
||||
if ((flags.broadcaster || {allAllowed} || ({modsAllowed} && flags.mod) || ({vipAllowed} && flags.vip) || ({subsAllowed} && flags.subscriber)) && '{cmd}' === command && !shouldWait() && message.match(/^\d+d(4|6|8|10|12|20|100)$/) && (+message.split('d')[0] <= {maxDice})
|
||||
) {
|
||||
toggleWait(true);
|
||||
|
||||
@ -45,7 +43,9 @@
|
||||
})
|
||||
document.getElementById('results').innerHTML = '<strong>' + user + '</strong> rolls <strong>' + message + '</strong>:<br/> [' + values.map(value => value === 1 ? '<strong style="text-shadow: 2px 2px 10px red">' + value + '</strong>' : value === result.sides ? '<strong style="text-shadow: 2px 2px 10px green">' + value + '</strong>' : value).join(' + ') + '] = <strong>' + result.total + '</strong> '
|
||||
})
|
||||
document.getElementById('results').showPopover()
|
||||
if({showResults}) {
|
||||
document.getElementById('results').showPopover()
|
||||
}
|
||||
setTimeout(() => {
|
||||
diceBox.clearDice();
|
||||
document.getElementById('results').hidePopover()
|
||||
|
||||
@ -52,6 +52,10 @@
|
||||
<input type="checkbox" id="subsAllowed">
|
||||
<span class="checkmark"></span>
|
||||
</label>
|
||||
<label class="checkbox" id="allAllowed-container">Allow everyone to roll (yes, everyone!!)
|
||||
<input type="checkbox" id="allAllowed">
|
||||
<span class="checkmark"></span>
|
||||
</label>
|
||||
</div>
|
||||
<div>
|
||||
<label for="scale">Dice-Scale </label>
|
||||
@ -64,6 +68,10 @@
|
||||
<input type="number" id="clearAfter" style="width: 50px; margin-top: 20px" value="10"/>
|
||||
<label for="timeout">Command-timeout (in seconds)</label>
|
||||
<input type="number" id="timeout" style="width: 50px; margin-top: 20px" value="60"/>
|
||||
<label class="checkbox" id="showResults-container">Show Results Overlay
|
||||
<input type="checkbox" id="showResults" checked>
|
||||
<span class="checkmark"></span>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div id="dice-box" style="width: 850px; height: 400px">
|
||||
@ -244,7 +252,9 @@
|
||||
"&timeout=" + document.getElementById('timeout').value +
|
||||
"&modsAllowed=" + document.getElementById('modsAllowed').checked +
|
||||
"&vipAllowed=" + document.getElementById('vipAllowed').checked +
|
||||
"&subsAllowed=" + document.getElementById('subsAllowed').checked
|
||||
"&subsAllowed=" + document.getElementById('subsAllowed').checked +
|
||||
"&allAllowed=" + document.getElementById('allAllowed').checked +
|
||||
"&showResults=" + document.getElementById('showResults').checked
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user