Compare commits
16 Commits
05f5f0d28e
...
1.2.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
717d337535 | ||
| c79cce8651 | |||
| fc82d0397f | |||
|
|
cd9942068f | ||
|
|
fb4c0e7b92 | ||
| 1a0528933b | |||
|
|
0d324239bf | ||
|
|
10eedc06f7 | ||
| fe856aa7c8 | |||
| 8524a8674d | |||
|
|
5d15976c9f | ||
|
|
d0a6a9ce3f | ||
| 87f4d71cc9 | |||
|
|
53a047217a | ||
|
|
3dbd19ee3b | ||
| c0415561ee |
@@ -16,6 +16,7 @@
|
||||
<p align="center">
|
||||
<img src=".github/media/preview.gif" />
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## Key Features
|
||||
@@ -27,6 +28,7 @@
|
||||
* Watch roll results (also available as Browser Source in OBS)
|
||||
|
||||
---
|
||||
|
||||
## Start Container
|
||||
|
||||
You can start dice-tower with docker compose
|
||||
|
||||
2
pom.xml
2
pom.xml
@@ -4,7 +4,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>de.arindy</groupId>
|
||||
<artifactId>dice-tower</artifactId>
|
||||
<version>1.2.0-SNAPSHOT</version>
|
||||
<version>1.2.2</version>
|
||||
|
||||
<properties>
|
||||
<compiler-plugin.version>3.13.0</compiler-plugin.version>
|
||||
|
||||
@@ -24,7 +24,7 @@ class ChatOverlayResource {
|
||||
@QueryParam("cmd") cmd: String? = "roll",
|
||||
@QueryParam("theme") theme: String? = "default",
|
||||
@QueryParam("faceColor") faceColor: String? = "#ff0202",
|
||||
@QueryParam("faceColor") numberColor: String? = "#ffffff",
|
||||
@QueryParam("numberColor") numberColor: String? = "#ffffff",
|
||||
@QueryParam("clearAfter") clearAfter: Long? = -1,
|
||||
@QueryParam("timeout") timeout: Long? = -1
|
||||
): TemplateInstance {
|
||||
|
||||
BIN
src/main/resources/META-INF/resources/192.png
Normal file
BIN
src/main/resources/META-INF/resources/192.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 26 KiB |
BIN
src/main/resources/META-INF/resources/512.png
Normal file
BIN
src/main/resources/META-INF/resources/512.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 76 KiB |
@@ -219,6 +219,3 @@ document.addEventListener("DOMContentLoaded", async () => {
|
||||
configurePopover();
|
||||
})
|
||||
|
||||
if (!localStorage.getItem("userId")) {
|
||||
localStorage.setItem("userId", self.crypto.randomUUID());
|
||||
}
|
||||
|
||||
18
src/main/resources/META-INF/resources/manifest.json
Normal file
18
src/main/resources/META-INF/resources/manifest.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"name": "Dice-Tower",
|
||||
"icons": [
|
||||
{
|
||||
"src": "192.png",
|
||||
"type": "image/png",
|
||||
"sizes": "192x192"
|
||||
},
|
||||
{
|
||||
"src": "512.png",
|
||||
"type": "image/png",
|
||||
"sizes": "512x512"
|
||||
}
|
||||
],
|
||||
"start_url": "/",
|
||||
"display_override": ["window-controls-overlay", "minimal-ui"],
|
||||
"display": "standalone"
|
||||
}
|
||||
@@ -32,6 +32,22 @@ button:active {
|
||||
background: #222222;
|
||||
}
|
||||
|
||||
#install {
|
||||
padding: 10px;
|
||||
border: #666666 3px solid;
|
||||
border-radius: 10px;
|
||||
background: #666666;
|
||||
color: #fff
|
||||
}
|
||||
|
||||
#install:hover {
|
||||
background: #444444;
|
||||
}
|
||||
|
||||
#install:active {
|
||||
background: #222222;
|
||||
}
|
||||
|
||||
input {
|
||||
margin: 10px;
|
||||
}
|
||||
|
||||
@@ -12,15 +12,20 @@
|
||||
<div popover id="results" class="tooltip">
|
||||
</div>
|
||||
<script type="module">
|
||||
import DiceBox from "/vendor/dice-box/dice-box.es.js";
|
||||
|
||||
import DiceBox from "/vendor/dice-box/dice-box-threejs.es.js";
|
||||
const diceBox = new DiceBox("#dice-box", {
|
||||
assetPath: "/vendor/assets/",
|
||||
theme: '{theme}',
|
||||
faceColor: '{faceColor}',
|
||||
scale: {scale}
|
||||
assetPath: "/vendor/dice-box/",
|
||||
light_intensity: 2,
|
||||
gravity_multiplier: 600,
|
||||
baseScale: {scale} * 10,
|
||||
strength: Math.floor(Math.random() * 4),
|
||||
theme_customColorset: {
|
||||
texture: '{theme}',
|
||||
background: '{faceColor}',
|
||||
foreground: '{numberColor}'
|
||||
}
|
||||
});
|
||||
diceBox.init()
|
||||
diceBox.initialize();
|
||||
ComfyJS.Init('{channel}');
|
||||
|
||||
//maxDice
|
||||
@@ -33,16 +38,16 @@
|
||||
toggleWait(true);
|
||||
|
||||
diceBox.onRollComplete = (rollResult) => {
|
||||
rollResult.forEach(result => {
|
||||
rollResult.sets.forEach(result => {
|
||||
let values = []
|
||||
result.rolls.forEach(roll => {
|
||||
values.push(roll.value);
|
||||
})
|
||||
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(' + ') + (result.modifier > 0 ? ' <a style="text-decoration: underline">+' + result.modifier + '</a>' : result.modifier < 0 ? ' <a style="text-decoration: underline">' + result.modifier + '</a>' : '') + '] = <strong>' + result.value + '</strong> '
|
||||
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()
|
||||
setTimeout(() => {
|
||||
diceBox.clear();
|
||||
diceBox.clearDice();
|
||||
document.getElementById('results').hidePopover()
|
||||
}, {clearAfter} * 1000)
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
<div class="w3-panel w3-theme-l4 w3-card w3-display-container"
|
||||
style="padding: 25px; text-align: center; margin-bottom: auto;">
|
||||
<label for="theme">Theme </label>
|
||||
<select name="theme" id="theme" style="margin: 25px"></select>
|
||||
<select name="theme" id="theme" style="margin: 0 25px"></select>
|
||||
|
||||
<div style="display: flex; flex-direction: row; justify-content: space-between; align-items: baseline">
|
||||
<div style="flex-grow: 1; padding: 0 10px">
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8">
|
||||
<title>Dice-Tower</title>
|
||||
<meta name="version" content="{version}">
|
||||
|
||||
<link rel="manifest" href="manifest.json" />
|
||||
<link rel="stylesheet" href="/vendor/w3css/4/w3.css">
|
||||
<link rel="stylesheet" href="/vendor/font-awesome/css/fontawesome.css">
|
||||
<link rel="stylesheet" href="/vendor/font-awesome/css/all.css">
|
||||
@@ -29,6 +29,22 @@
|
||||
<meta property="twitter:domain" content="{http:request.authority}">
|
||||
</head>
|
||||
<body class="w3-theme-l1">
|
||||
<script>
|
||||
if (!localStorage.getItem("userId")) {
|
||||
localStorage.setItem("userId", self.crypto.randomUUID());
|
||||
}
|
||||
addEventListener("beforeinstallprompt", (event) => {
|
||||
event.preventDefault()
|
||||
let install = document.createElement('button');
|
||||
install.id = 'install'
|
||||
install.style.position = 'absolute'
|
||||
install.style.top = '25px'
|
||||
install.style.right = '25px'
|
||||
install.innerHTML = 'Install Dice-Tower'
|
||||
install.onclick = () => event.prompt()
|
||||
document.body.appendChild(install)
|
||||
});
|
||||
</script>
|
||||
<div class="w3-container w3-content"
|
||||
style="height: 95vh; display: flex; flex-direction: column; justify-content: space-between; padding: 25px">
|
||||
<h1 style="text-align: center"><i class="fa-solid fa-dice-d20"></i> Dice-Tower <i class="fa-solid fa-dice-d20"></i>
|
||||
@@ -73,6 +89,7 @@
|
||||
<button style="border: transparent; border-radius: 100%; font-size: large; font-weight: bold; height: 50px; width: 50px"
|
||||
onclick="addDice()">+
|
||||
</button>
|
||||
<button style="font-size: large; font-weight: bold;" onclick="rollEasy('d2')">D2</button>
|
||||
<button style="font-size: large; font-weight: bold;" onclick="rollEasy('d4')">D4</button>
|
||||
<button style="font-size: large; font-weight: bold;" onclick="rollEasy('d6')">D6</button>
|
||||
<button style="font-size: large; font-weight: bold;" onclick="rollEasy('d8')">D8</button>
|
||||
@@ -133,10 +150,10 @@
|
||||
</div>
|
||||
<div style="display: flex; flex-direction: row; justify-content: space-between; align-items: baseline">
|
||||
<div style="flex-grow: 1; padding: 0 10px">
|
||||
<color-picker id="faceColor" name="Face"></color-picker>
|
||||
<color-picker id="faceColor" name="Face" value="#8d8981"></color-picker>
|
||||
</div>
|
||||
<div style="flex-grow: 1; padding: 10px 0">
|
||||
<color-picker id="numberColor" name="Numbers"></color-picker>
|
||||
<color-picker id="numberColor" name="Numbers" value="black"></color-picker>
|
||||
</div>
|
||||
</div>
|
||||
<div id="dice-box">
|
||||
|
||||
Reference in New Issue
Block a user