fix token preview, copy; bump to v0.2.1
PGP Signature
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEkFh6dA+k/6CXFXU4O3+8IhROY5gFAmS2FHcACgkQO3+8IhRO Y5j5oQ/+LzccOPtr42b3916pTwOGX4FFRUkxmpldJGjnzjcjffWMsXpJQDSyjViI 6RDhB+bTac1n57IfjBcmzO947gfKf0bEW1mGnjXMLBvhHoMAFHLAjL8JFOsLetgS R6wsrGlZBixEY9qGz5bSDZBVy0MAeHLT5BPzC+BNGzlPqNVqxwllDzIp6ODUGRPN qBgDULIFDPtmMg6Xp4JToj3+piHq+kcNuZ3vaUfj5jB6xpNAqQmB/R0mteaNXN4w tqoU8CWmm1TrrkTQagxMUWxsjr0WZuQlto/KWmPblNKgsXnZZlS7awYnc9k1rdcy 9AkmHR6tgKZu0/Aq+Kcl0AeyLouAGu6IsYPqeU8V3ztHBoXKUmIvgvFTrrb/f5PU tUiwBPDDlBHSjsHn54jjyrSSg3fAsAC1jR3S/KcIMirgrXBkUUwwtDfUlmmBC+rn IRLxsKytffOnX2hUMIbOdiVnka3sJPu0OExTihJsmIa9g7psuAgh/WUmUbx2jJTE /3x5a0f7VIfKCq8wEl4oDBKVwoneRHrjECbOMgAL+mvFkeEVUiHh/To5TjeoeJ3w OAG6XTOPmbExiCyrGBHvhw0m0SILJinmG9Cr/Npe2kr3YqhJ5E46VAsM3EKD7pmM ekWZUdubZIvh86bniFs+j8iaCgcMFFUo3svWrzu2IxH9GmfjVwc= =Ooj8 -----END PGP SIGNATURE-----
@@ -153,8 +153,11 @@ tokenWidth.value = Math.floor(currentAspect * Number(tokenHeight.value));
break; } } - tokenCX.value = Number(tokenWidth.value)/2; - tokenCY.value = Number(tokenHeight.value)/2; + if (!tokenCX.value || source) { + tokenCX.value = Number(tokenWidth.value)/2; + } if (!tokenCY.value || source) { + tokenCY.value = Number(tokenHeight.value)/2; + } drawTokenOrigin(); } }@@ -187,20 +190,26 @@ }
} } -function reinitializeSpritePreview() { +function reinitializeSpritePreview(existing = false) { const img = document.createElement("img"); img.src = tokenSpriteDropdown[tokenSpriteDropdown.selectedIndex].value; - const tokenNameParts = tokenSpriteDropdown[tokenSpriteDropdown.selectedIndex].text.split("."); - tokenNameParts.pop(); - tokenName.value = tokenNameParts.join("."); + if (!existing) { + const tokenNameParts = tokenSpriteDropdown[tokenSpriteDropdown.selectedIndex].text.split("."); + tokenNameParts.pop(); + tokenName.value = tokenNameParts.join("."); + } img.onload = () => { const w = img.naturalWidth; const h = img.naturalHeight; + if (!existing) { tokenWidth.value = w; tokenHeight.value = h; + tokenCX.value = "" + tokenCY.value = "" + } scaleSpritePreview(); }@@ -261,7 +270,7 @@ tokenSpriteDropdown.selectedIndex = i;
break; } } - reinitializeSpritePreview(); + reinitializeSpritePreview(true); } }@@ -500,7 +509,7 @@ tokenSpriteDropdown.selectedIndex = 0;
} createTokenForm.style.display = v ? "block" : "none"; tokenZone.style.display = v ? "none" : "block"; - reinitializeSpritePreview(); + previewZone.innerHTML = ""; } }
@@ -146,13 +146,13 @@ <button onclick="setTheme()">Apply</button><button onclick="resetTheme(defaultTheme)">Reset</button>
</form> </details> <div id="lag" style="display:none;">lag...</div> - <div class="ui_win" id="felt_info"><a href="https://hacklab.nilfm.cc/felt">felt v0.2.0</a> (<a href="https://hacklab.nilfm.cc/felt/raw/main/LICENSE">license</a>) | built with <a href="https://leafletjs.com">leaflet</a> (<a href="https://hacklab.nilfm.cc/felt/raw/main/LEAFLET_LICENSE">license</a>) </div> + <div class="ui_win" id="felt_info"><a href="https://hacklab.nilfm.cc/felt">felt v0.2.1</a> (<a href="https://hacklab.nilfm.cc/felt/raw/main/LICENSE">license</a>) | built with <a href="https://leafletjs.com">leaflet</a> (<a href="https://hacklab.nilfm.cc/felt/raw/main/LEAFLET_LICENSE">license</a>) </div> </nav> </body> <script src="./leaflet.js?v=1.9.4" type="text/javascript"></script> - <script src="./util.js?v=0.2.0" type="text/javascript"></script> - <script src="./map.js?v=0.2.0" type="text/javascript"></script> - <script src="./socket.js?v=0.2.0" type="text/javascript"></script> - <script src="./dice.js?v=0.2.0" type="text/javascript"></script> - <script src="./admin.js?v=0.2.0" type="text/javascript"></script> + <script src="./util.js?v=0.2.1" type="text/javascript"></script> + <script src="./map.js?v=0.2.1" type="text/javascript"></script> + <script src="./socket.js?v=0.2.1" type="text/javascript"></script> + <script src="./dice.js?v=0.2.1" type="text/javascript"></script> + <script src="./admin.js?v=0.2.1" type="text/javascript"></script> </html>
@@ -20,6 +20,7 @@ map.setMaxBounds(cameraBounds);
if (init) { map.setView([0,0], 2); } + resizeMarkers(); } // this works but assumes the map is square (reasonable limitation I think)
@@ -88,10 +88,12 @@
// the following few functions aren't socket related but they directly relate to the previous function function initSpritePreviewById(id) { - const img = document.createElement("img"); const token = tokens.find(t=>t.t.id == id); + let img = null; if (token && id) { + + img = document.createElement("img"); img.src = token.t.sprite; secondaryPreviewIdInput.value = id;@@ -102,7 +104,9 @@ }
} dismissPreviewBtn.style.display = (token && id) ? "block" : "none"; secondaryPreviewZone.innerHTML = ""; - secondaryPreviewZone.appendChild(img); + if (img) { + secondaryPreviewZone.appendChild(img); + } } function dismissPreview() {
@@ -15,6 +15,6 @@ <p class="error">{{ $params.ErrorMessage }}</p>
<p><a href="/table">Get back to gaming...</a></p> </main> </body> -<script src="./util.js?v=0.2.0" type="text/javascript"></script> +<script src="./util.js?v=0.2.1" type="text/javascript"></script> </html> <html>
@@ -23,5 +23,5 @@ <span class="error">The registration token you provided is invalid;<br/> obtain a new one.</span>
{{end}} </main> </body> -<script src="/table/util.js?v=0.2.0" type="text/javascript"></script> +<script src="/table/util.js?v=0.2.1" type="text/javascript"></script> </html>
@@ -19,5 +19,5 @@ <span class="error">Something went wrong; please try a different username or obtain a new registration code.</span>
{{end}} </main> </body> -<script src="/table/util.js?v=0.2.0" type="text/javascript"></script> +<script src="/table/util.js?v=0.2.1" type="text/javascript"></script> </html>