From 99e49d5abbce55d2a98e2a2a0b6caea726c756bb Mon Sep 17 00:00:00 2001 From: tobspr Date: Fri, 14 Jan 2022 17:03:03 +0100 Subject: [PATCH] Add support for loading atlases via mods --- src/js/mods/demo_mod.nobuild/index.js | 9 +++++++ src/js/mods/mod_interface.js | 35 +++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/src/js/mods/demo_mod.nobuild/index.js b/src/js/mods/demo_mod.nobuild/index.js index 99ea39b7..083d9ca6 100644 --- a/src/js/mods/demo_mod.nobuild/index.js +++ b/src/js/mods/demo_mod.nobuild/index.js @@ -112,6 +112,9 @@ registerMod(shapez => { ); }); + // Add an atlas + this.modInterface.registerAtlas(RESOURCES["demoAtlas.png"], RESOURCES["demoAtlas.json"]); + // Add a new type of sub shape ("Line", short code "L") this.modInterface.registerSubShapeType({ id: "line", @@ -224,4 +227,10 @@ const RESOURCES = { "demoBuildingBlueprint.png": "data:image/png;base64,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", + + "demoAtlas.png": + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAIACAMAAAArE+6LAAAA0lBMVEVHcEz/BmtnyPpdt+1Wp9kAAAAAAABs0v8DAwNBaIxVptcD2zEFWuMAAAACAgJZrN9XqtxSVVxnaaVYq9xXp9mAVmxs0f9iqdVfuO1trtRs0P8AAABjZW1Nk70fICJYq95jZW1jZG1WqNnMy8cAAABMlL9UpNNWp9ht0v8CSPz/AW3/Am0BSP0AAAADAwMzMzhetuwBSPwCR/wCR/wBR/0AAABUpNRWqNv/AG4AAAAASP8A/wBkZm6RlJ6PSm7uC254nkK1N3LXHnB3eYIzNDiHipTGdO/OAAAAOHRSTlMA4/uZmMi8mRQKs/784kLsyFIZ/KE9wC76ROG/l44q2+XGrOxvV3Wpqt9krX3UnNqrMr5VoMWwqhyqZQ8AAB8RSURBVHja7N1rc9NWHsBhLsW1smv5kotjyMgJiMAkY5c3DNUspAtsv/9XWssOl4Q6di7ykXWe35vO1JhhWv8fnXOkmEePJElSpLXv9bKkbS6bZvd4WdJWz/8f//ujnyx7NUlnLxNAajAAMwGWvZqWrwJAampJ/4YZX+iQ+K8kNXwNkNzSBknNqL9kF9C/cXcgqcm7AOt/KdpdgPW/FPEuwPpfincXYP0vRbsLsP6XIiv9ac1v/S/Ftgv48dSf9b8U7S7A+l+KeBdg/S9FvAuw/pci3gVY/0tx7wL8d5Bi3QVY/0sR7wKs/yVJkiQtK0kG+2dn5+ePI+v8/Oxsf5A4LREAACDF2GAwH/0/I22mwPnZYOBzoCiv/ftnEQ//dwQen5/tWwcosuGfrfujn/2fFCh3Az4VimXlX177jf3V3cDMAJ8MxXD1N/3LDLAKUNOz9L95K+ATIuMfNQGWAWrs4t/4r7ETIIAaefRn/G0EFO/4nxvt9QlwR0DN2vw7+b/dPsAiQFb/MWcRoMac/Vn93yGPBagh8+/yf8eTAAJo63P5v88iwOdHWz7/Lv/3WgT4BMnpnxuC0ha2b/l/fwLcEJT5j/kggAAy/wSQtmv+bf/tAmT+RQCZfxFA8cy/oX3YCCDXf2sAyfwTQDL/BJDqOP/u/3seQOZfBFB8mf/qBPDpUt07M6fV5aeDVff5dwBY5UEgAeQGgFsBUi1LHABUfQzgewJV3/l3AFD9MQABZANgEyDVrYENwCY2Ab4lUDW9A2A63QtUvAsAG4DNbAIsAVTHbAA8EKiINwAWAB4HkhNAOQeUE0BZAiiePAPoeUBZAMitQDkBkFMAuQUgpwCyAJAlgCwAZAmgZmYB4HFARbwDMI+bzx5AtdkBGEd3AuUIUI4B5QhQjgEVT54C9jyw7ABkDyBHgHIMqKiyAPAogCI+AnAEGOoY0CGAwrdvEkPlrwiQIwCHAFLAHYAjADcCFfEOwBFAuEMAewAF3wEAwMOAcgQghwCK7wTAEUDYQwCnAArZwHPAQQEYeBxYQY8AnQGGPQV0DKigJwCOAMIeAjgFEAAAIAEAANJmO3cGGPYU0E8ECgAAkIL02E2AsLcBHvsMKmBGMHQ+gwJA5ACseBzQ04ICQIMBGL4a3vT/aMXLEgC2GYDhq1evRsv/F41mLxNAAGgqAOWELxfg5lclAGz7FmA+48Nl63/zLwA0+xBw+ZTfZIMEgGbcBly2zrf+FwBieA7gn6/01v8CQBwPAv3TrFv/CwCxPAn462rf+l8AiAaAX6731v8CQEQAXJt4638BICoArqz5rf8FgMgA+Omqb/0vAEQHwPe5t/4XACIE4HLlb/0vAEQJwEIA8y8AxAnAYhdg/S8AxAmA838BIGYASgHMvwAQKwCPhtb/AkC8AEgAAIAEAABUWZJddv2bx5O8VYPy3IQCAAAAEAAA8LC101n5s8m8Vnb91WdFDWq1TCgAAPDQpfmsaafsctI6KQAAoMYD0M6yvPWi88ukAQAAajoAWZpOJ5POP00aAACgRgMwW/a/6HSWTRoAAKCmApBk6fRF58ZJAwAA1EwA2mn+frJq0gAAADURgLQ87V89aQAAgBoGwBorfwAAQA0FIFtj5Q8AAKiRALTzdS/+AACAmgVAluWT200aAACghgDQzluTTgEAASBCANr5tHP7SQMAANQAALL8WecukwYAAGjrAZgt/jt3mzQAAEBbDkByp8U/AACgBgCQZHnn7pMGAABomwHI8vf3mH8AAEBbDMAtH/sBgADQHACSdHrfSQMAALSdACTpbR/7A4AA0BQAknTyAJMGAABoGwFIW50CAAJAnACkrYeZNAAAQFsHQDt/XwBAAIgTgGz6YJMGgFj7rwJ358t/+nDzD4Bo+48Cd+flf6cAgAAQJQD3e/IfAALANgOQpO8fdP4BAABtEQAP8vAPAASAbQQgSTsFAASAOAHI8kkBAAEgTgCyFxVMGgAAoK0AIH1fAEAAiBSAh3r4HwACwPYBkL0vACAARApAWtH8AwAAqj0A7bxVAEAAiBOA9rRTAEAAiBOA9rTCSQMAAFRvANIOAASAWAGo6vwfAABQ/QFIK51/AABAdQYgbRUAEAAiBaDa9T8AAKA6A5BWPf8AAIBqC0DV638AAED1BSCpfv4BAADVFICk0gcAAAAA1RmAJJ0UABAAIgVgI/MPAAColgBsaBABAADVEICH/ft/ACAAbBMAyYbmHwAAUA0BSDc0/wAAgOoHQKVfAQAAAaDWAGxu/gEAANUOgE0dAAAAAKofABv4EQAAAEA1BaDyHwEGgABQWwCSaQEAAAAgUgA28yMAAACAagnARjcAAACA6gXABu8AAAAAqhkA7UkBAAAAIFIA2tMCAAAAQKwAbHgDAAAAqEYAZK0CAAAAQKwAbHwBAAAAqDYABBg+AABANQGgvfkFAAAAoLoAkG5+/gEAANUEgI3fAgQAAFQfAEIsAAAAANUDgKRVAAAAAIgVgCALAAAAQLUAIMgJAAAAoHoAEGYBAAAAqA4ABFoAAAAAqgMAgRYAAACA6gBAqwAAAAAQKwDBxg4AAFB4APIOAAAAgFgBCHUECAAAqAYABFsAAAAACg5A1ioAAAAAxApAuAUAAACg4ACEWwAAAAAKDcCm/y4AAAgANQIgLwAAAADECkAyBQAAABAtAOkEAAAAQLwAdAAAAADECkA75A4AAABQWACyCQAAAIBoAcg7AAAAAKIFoFUAAAAAiBWA9gQAAABAtADkBQAAAIBYAQj6FBAAAKCwAKQTAAAAAPEC0AEAAAAQLQA5AAAAgGgByFoFAAAAgGgBmAAAAACIFoAUAAAAQLwATAsAAAAA0QLQAgAAABAtAOGnDQAAUDAA8gIAAAAAAAAAAABEB0AyBQAAABAtAMFvAgIAAAoIQAcAAAAAAAAAAAAAAAAAAAAAAAAAADS/djv8TQAAAECByrIJAAAAAAAAAAAAAAAAAAAAAAAAAACIoDzvAAAAAIi1VqsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAACAAAAIAA0LTnAJ6Fb5pd+1wk0xr8qZ7luQkFQMNLknYN+uWDUYs/VZKYUAA0PJ9BAQAAEgAAIAEAABIAACABAAC6e8lwdHp6+no0cEMBAAAAQMA/yX7/6PjkqD8AgACwoYavT3+bdzpKAAAAAEQ2/5fjXwMBsqPjj/NO+gAQADbRYDH/e3t75T+CCrB/8vFbx0cAEAA2df1/2RuPxzuB1wCD448/dZQAQACoeuh+K8d+p3s4q9ubLQJOh8H+KEfzwf/69etiDdAHgABw5+O0wXBlo9HotBz6l7uHvadP3x3u9so1wOvRaOU7K7hfkFzO/9+fPv09J+B4AAAB4E4X0+Ho9emPs72lLTb+e+Ny/mcCdLtv5v925fvKe4bDwdoUZftr1J9vAGbj/+mbAEdrvCvbxK1LA7gVAFT+w7nJtlz7R+sM/496h+On83q7472133V6us5zA4P9/tHJ8ZXN/U19/bTo7zV//XF5z3B/AAAAPHpU+ZeGTK9/3rM0fNm17wNIBq9vNf3l/HefXjbe7e3d4p2nr1cQMOifrD3739b/i77e4l3HJxU/N2AAtwGA5EXVX7717NpXgrSnnfC1sitfVPT94r/3cqe3qp35BqB7+O4bAE+73Z3FTYEVb9z5sHf54MDwplO9W03/9w3ArQUo7xoOAACATQNQh+8EnFwBIBkvFvEfet3Dwyer6vZ+HAAserfbnb1/Z9VbDw+748u1Qm+ZAEn/2139i9Vd3QD8OAb4uO5bP570EwAAIHIAhuPyIH9vZzyf4Ocrmp/6fz8A+OkYYAbAireWCOz2XpYAjJc8OXB5+b/4/PnLXyv7fH3+L48BLla+98vnzxdVPzpkAAGwFQAMe+VIvynH//nBwdu3v9/U28Pd8ZvfXv68ASiXACUhe73DJwc3vvftwcyAxYMD4/Fo+U392QD/uU4X1zYA3zcBX9Z4819fFgRUtg34lwIHgHUAGMyv/x+6s8vzwc3DXzZbALwpDwB6T6/07rC7M/vXT56v+h3eHswImBGyNx4Pl8z/xef1xn+xALg2/wsBLr6s9xtcVCnAvxU4AKwBwGi8WNI/ufnqfdnB4e5O+auvzX95DPB/9u6/t01djQM4ymVbQWoghPxcAglKIJPWat3WnXOvelqlV/f9v6VrG5KAYxIni4Hh7/PH0dFUSNfu+WA/fmzIJCDpd6Znb7GZdqgWdBZwNP5/kX1803g/ngAcJgEX3OJF0SzgP4iaAwCcB8CKwzT/pzL5v+mkk33nGw/Av3aOSNxmSARIyBfHlqCp71U2/9/Y4/uff8QCbCUFeFW3gQAJCAAaC8CHHQBeTJt6yfN/I5H/ZAJAMjfhCgDZEICuBfrheLqREoDMAsy4OPZmTX2Sw/+SAsClk4BsHqFmAwESEAA0FYD7VdYIZK1Nk2R0ZyqZ/3QCEB5PALIyAK0OdmQFIPCs809ej63/Sed/yQTgMAmQvNMbWw30AAAA0AmA3QsL6bZ+Pyyf/29oDHexWwH8JgLgsBaYfjG7tFwASklhCDC7ZPyfjt3F+X/ZJCC90wwAAAAdAZiYrIFnKKzXD9nS/fgQNMMj4QQgWwtk44NdpD0FQ/HSAplMkCHAhNvWL5u0WQHgfyUApGuBsjfbKtpDiAQEAE0HgJ3rQwYAogV7ku80nFy4fkkBIF8GcPdfTi9nEEyPuws2nbFbGAL0ZIbtb+9ZnM7/rCFwS7/y7U0Kkx4AAAD6AUAP9kn4AQDJfpr8ThiGtH/fjqLIT4NqUWwBFKwF0t3CPrmGXGm79MgghyhADRAMAQ7niLAKgHgCQFv+shDuASydBOx6irOLaXtgaTlBQRUACQgAmgrA491hBuByZTuS/iT7XTtK/OM9fpFoBZBbC+TODkgi2yUG8HWGTYc2A+znAIOFeADw9r49dO6X7AEsnQQUg9xnK2wxpEOAxQAAAABtAFgZ+zUA3ylk5oakvxMmu/TNZzLdLXRiApBOAvp2Mf2z/0mIARw0U7qJeL8O0BNO2t+24uQ/PQE4tS+QGCCuAvQAAADQDQBaAogKMwCa/+yYT5r78ZxEHK9Z2Da/B7CkDJCwLf/rOCaXM0GShP7XDjkBhnQlcFcEYE1AW3Gr7v4UDxrLZXZWwH9P5/9uX2B6VWGD8fFSw1ZJMxASEAA0HABaArDH+R4gutfPT0/uIUlMj/HLYk1ZsE8VAHZrgXRjoZ9eR64ndMz9X5QU3+4Xqo1D2jewKwLQEgCfmO+v+6M7ZrNZj8YgIDGTyf+sDLDoDQbsSnKHHR3Hmw3oHOD2RQAkIABoOgB8CSBd6Tfn8ZpksJWPed83/f7JAsCuDECHCpPcpZ43mf+ip4jYha0Cm44TmWYGQHBcAnjPduzPSNrnj1gLlhITgP0koJe7MOjtDhvgBGAABAAAAGgCwH4RIAWAa/U35yT9rWJ4875p/nV+AEBXAuje4gl3+Xoe2vx+YdYLNCmrAaYr/cve0RmLrGP4/AAgGwLMuKsH6YED2wqqgEhAANBQAD4bYgDIqDyi+c+nP8lgM6TlAlcSADO/1TcTxGUFx2kRgGSdAXDUBfDKTusI7sQASAwA0iHA4vB32F2/PKoDMGwAAADQBYCPYgA2U5q8cTH/jUO5gEwB3G/ngk0B1scVtdG3kCs4UAB+zUsAeGf5XzxeOf1uLgNgyf++rfTQsa36ViAkIABoJgD3KzEAQ3rYh7kecbl/6Bl0nUJjoCj6rIgoOu1nTUYXfj83B6AA2HNLDAAtzC/zyW/kOwbONAHkpwCC74QR8gYAAICmADwEZQCQh7S5GwBwP6gJK+S7UmcGz0UAWK5L246nUgCkKSl8tUK6a5C+C+xMsC8TpTVbc3w/AsACAABAawA6bAYwEqV/tnFY9uT/kSiZYodtFpQCgC4BLkverNK74OBvcW2/xy0EAAAAoBMAu0ZgDoANzUg/9oT5T568E8lXh7BFBMENRuT2Ua4IcAIAdkxHNgAoPTlYJv97whczWVwZMBtvAAAAoAMA+73AHACsM8dcWyUA0JeH0f6+2Ezs0vhFXwDIFhEF19OTg3ONx6cAoOtyvbI3qx3eHXDu3T8DISCGsRQCYAEAAKA1ALQ3d12W/4cVvfWp2HcQHV/tuvTwER4AqwSAZVD6ZkXLY68OPB3LWa/0DlzjMQAAABoB8DkQAzClXUDx5BQAWfpZMnF8oUnuXyg5lALANugG59+sKvV21pIiAOcNAAAAmgCwMsoAIE/o+ehc/mfjgMvz31j3I0kAtrsePkMNAAMAAAAAwLUAGNflvzEhANiHY4MlADhL0ZWvZ+c6jwEAANAHgEMJoAgAWwQw554lkQdX5X8GQOeGAFxLUQAAAICuAHw2TgEQSwFwXVwEAFsEUPWdsN3HAAAA6AjAYxkA7IVdSgFwonwjwHkALACAAAA3bgPslgMQpY3AigEYAgAEAKgrnoMSAIY7AIz6AXgFAAgAoGYnoFUOQKIegMSRAIC+rmsxUFcCSN9DvgUAAEA/ALpGOQC+egB8GQDYYQABAEAAAGUbgZoOwFIlABYAAAB6ArAyagQgTC4CwAIACACgbgYAAAAAANALgM/GHwPAHQBAAAB1XUBiACYAAAAAgLYC8NAFAAAAAGgLwHNwHgADAAAAANBKAApdQM0HwAAACACg5CwgAAAAAIB2AKwMAAAAAICuADzcAQAAAAB0BeCeHwAAAAAAAPQB4CEAAAAAAGgLwEcAAAAAgLYAHM8AAAAAAADaAPB4VzsAF20HBgAIAKB0AAAAAAAA0AWAD3cAAAAAAF0BEA0AAAAAAACaAHC8BAAAFAPw5QtSsM748gUAnB4AAAClAHz/jiSsM75/BwCnlgAAgGIAfv5EEtYZP38CgNMDAACgFICvX5GEdcbXrwCg5BwAAAAAAIBGADwHBgAAAABAUwDKBgAAQCkAT09YBqhzEeDpCQCIDwICAJUA4HlYBqhzEcDzAID4ICAAAAAAgD4APN4BgDoAsCysA9ZZArAsAMDOAekaAKAOAAzjB4oA9ZUAfkj+U2g9ACsLANQEAKqAddYAAcC5AQAAUAwAigB1lgAAAFsC7FoAoC4ADHQC1FcCMAAA2wV46l81jgRTDMAPJGJd8QMAsPzvGgCgPgBQBGh6CaDlADyfzH8AoBoAAwuBNcVPAwCcagECANUAgCJAw0sA7Qbg8Q4A1AsA5gANnwG0GoDHwAAA9QLgYQ5QzwzAAwD/vu8aAKBmANAM2Og2wFYDcL+6AwC1A4A5QLNnAO0FQCL/RQCsAcBtPwllwDpKgBYAeA4MAFA/AMYT0rH6eDK0B+ChazUOgJGrIQAW9gNUHt8t7QG4l8l/jAAqAACtAA1uAmgtAA9duUcyAFAPwBOGAFUPAJ60B2Bl/fkABC0BAGXABpcAWwrA58AAAE0BAEOAJg8AWgnAs2T+A4BKAMAQoMEDgDYC8LFrNBQAR0sA0AzU1CagdgLwLJ3/RwBEqgG44ESgRXsAwEJAU5cA2giA9Pi/wQC8UQAG7QEAVYCmVgDaB4D8+F8MQKwYgERHAFAFaGoFoHUA3K+MawHYjB1bPQDRWAKAv7cEgJ5CALxqATDwipCq4uelv8SWAfB4dz0AHY0AWJLPe68OANQBm1kBbBsA95flPw8ASUhzrhKAfmTa486mGQDkPk49ABgCNHQA0CoAnrsX5gwPgGv68xEAQB1QlwpguwC4pP4vAODTlAJgKgdgKgfAi0oAgsoBwNFAVUwAfhgaA3BR/b8UAF8hAGsCAPk4SQBmCgEYLCoHAKcDVjABuGb+uvqsOPiNOYoAeL48/3kAxiFtBVSXA7ET5T7uPABWmwDAiwLVTwCuq19ZioP/PDUAXD7+PwJgqBqAkNw/bAYAL9UDgJWAxq0A1BNKALhi/C8AgPbqx+raYegUI9yvAp4CgGbkMlCXkL06AEA7ULNagFoEwP11+c8BwNYBk7myH6NHAMg1Ap4DYDFQ9wst9gFVBAAEQP6rAUDq/L/zAHxi64C+p+oHGZOEjw6rgOcAeOmp+43SRYD3ygHA+YAqCwB/Sv7fHoCr858HYDoOTfPXRNFP0nND+mmdTxIApEUAdWORl3oAwFpgo1YA2wHA/Yer858HYDju+6YfK1oIjGmnsXP4tJMAvNM5gLJ1QG4GUB0AFgRQlf+WpgDIvP9DFoC0GThSUwachI5pJoedAKcBSFNS1QCguBOgQgAgAPL/tgD8Vv7zAJA5gEOGAO5awU9z4vYjky4CbqQAYHOApZp9CWwv8MtbLQCgEKh3AfDWADx2f+tvzgMwpGVAM3Hj0Y1/oKPYoYMLOz8AYAD8KgOA5eTMU5b/+RlAlQBgDKD58/+WAFy6+e8sAHQIkJBJgOv6NyPAsqyJHfZpASBx8gMAMuGI6KqjGAA2BFAggDVg+V/8rCoBIAIgZW8bf1b+3w6Aj6u7334wm/ndOfSpzAQwo7DfD814sovRISaXxDp2nX6/74Q2vanT6eQ+apOeQJQBsBAm5ctyNrhx+i9euCWAXdtBVQBgFqDz+P+GADx3f/tb8RgA+awcdti5QOSPXTskuevQCMPQ3Ue4D6cY/J/0aTiuTa7xyQ19d9zJTwBo5zGxZp0CEBwB8PcbGwNQA3qDwcCjcXEbtpdFQO7Q682W6R35T8r6jqoCALMAjcf/NwPg4TG4wb/EtWn+5RTTsjPus4QlKRtlkYgjKsbxn0SRHZlp+LbD5f+naT/0ySAjBcBbHj2WszEAi8ViuVzOrooli8Xi5RD8B2Wdx5UBgFmAzvl/EwDun7s3+XtPTDO/PYeNzKedzjh0o8Q3bxK+n9huSLK/+DHkc2jBcT5KAbD4pfl0DPD6cvt4feee/7u9R9UBQGYBGAPcJv+//nH5fwsAHlY32igzOpoDkMwcUgLGDh322zZ5jPuXRjoSsEmwGcOYZn9nWnj8Hw4hzrZL/r+9e91pW4nCAGpVpzSulEBMyyXiWgGlEiAFUNUfiCPy/g91PLYDIZdDSeIJ4LVeILHi/c2e8YzTnRIAeQQMHu6XGAL39/eDwZ9J0QPALKCx4/8SAmDhxf/niwDfdj6N1WYRAcFOsD6HndKnod7W+Zcxvc3yj4iqAJhcBXzMgMF9YYGqLz0MBoNpnzBcA4wZAHkCOBfQzPpfNADaiy/+j80BNsZagCoEtnq93qfF9IKtyeIvtx2HdxBvD1+YMLE7b7RAC4OHuQz+HfozS/VPZFEDIEn7XhG0oOt3Wf+LBUD788nBMr9MaAF+rI9Nz59S4DzPgTmdF77MUiwBPjUAE0f0I6p2AUQOAI8Dm/b4bxkB0D5Z8gGZ8BwgtABbX+LqjTUAeRQdTV0FiOCh/CfC6AFgKbBpy3+LBkD7qrP0A3LFKsBh7ATIJwDhEUBoAB5/xr1pD+giGNyXS4DxA8A0YH63/fda/3MHQHutU8P52DSsAvxcj5sAW+Veg6IBePwdi1WAu+iTgH/vqhWAFQRAftGagPmG/yxJmhUA7atOPffn9kY+Fn+NmgB5/x8WAPZ3s2cvTe0Wk4DICVDsNwyPAHIruR00AfMM/0nSrACoo/l/TIDwst4f+Sygdx5n+K/qv1gBHH1pcnlML+4soOj/ywlAa0U9pSagScP/PAHQ/rzWqXN02j08DOsAmzEi4DyUf7nXuKz/Z1VXJMBdxAQY3D3V/6oCIEn7IuA15f9+Z/9zBUD76qTm3jTdPdwIh3XWd3bCjp3zulIgPFMM5V+eNqrq/9mPmZU9QKxpQLXVeO+gtboZQLUr6FYE/F3539688/J/ZQAsd9vP7FnARnFeb31zc2T73tLthOpf/xqG//1p9T9MgGnb9Wso/7L9f6z/ld5YmY2Bf7f1J0uSBgXA5dpyt/3MngWcnZVn9jYOq3O8dVg/PNwoy/9sev2HWUB5bO9+dAtfDQYP1UGjo6r/b616YEn7uoCXRv9+miSNCYD25dVJvK40zU7PqrN7xSmeOvwYnjA8O92eVf9J2j0e38Nfi+pDjrutNxIAJgIfv/n/+wDIq7/TiXu9aVa1AXV7Kv906hVme0d3kRwN2/+3UP/h0nUBs0f/LEmaEgCh81/FklS2vXv2z7efv+tpAH7/zIt//6XyL75H9zhCBhwddx/Lv/VmBpf05loGjFf/9U0/TZJGBEA7buc/WXu7p/u1OTvd3R55r9f/fY3v3b3nb/FZbu0fHe91R8q/9ZZur6x/IQNGq//i4wz+LwTAZT70x+78J4egWF76Hq3v3dp8Hyn+N1b/xWwszwClXyz759WfJkkTAuDz2lXn4OBt3ICrL/8yAuJ4kzdY2r/JG4EGdwK/8qH/Q3X+swKg3S7a/lX2/bEz4BXfoqHlP5wM3FzcXjdvPvDr+vo2L/4s+ZgeA6B9mbvqBGnCCjLgNWG0qhDIQgxcFEHw6yN3BOHqQuFfhNLPso98S5+slU4Oci01jgAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAhP8AqZJVhbC18q4AAAAASUVORK5CYII=", + + "demoAtlas.json": + '{"frames":{"enum_selector.png":{"frame":{"x":1,"y":1,"w":38,"h":23},"rotated":false,"trimmed":true,"spriteSourceSize":{"x":5,"y":12,"w":38,"h":23},"sourceSize":{"w":48,"h":48}},"enum_selector_white.png":{"frame":{"x":387,"y":101,"w":38,"h":23},"rotated":false,"trimmed":true,"spriteSourceSize":{"x":5,"y":12,"w":38,"h":23},"sourceSize":{"w":48,"h":48}},"icon.png":{"frame":{"x":387,"y":126,"w":284,"h":284},"rotated":false,"trimmed":true,"spriteSourceSize":{"x":0,"y":0,"w":284,"h":284},"sourceSize":{"w":284,"h":284}},"sprites/blueprints/miner-chainable.png":{"frame":{"x":673,"y":267,"w":137,"h":143},"rotated":false,"trimmed":true,"spriteSourceSize":{"x":4,"y":0,"w":137,"h":143},"sourceSize":{"w":144,"h":144}},"sprites/buildings/miner-chainable.png":{"frame":{"x":812,"y":268,"w":136,"h":142},"rotated":false,"trimmed":true,"spriteSourceSize":{"x":5,"y":0,"w":136,"h":142},"sourceSize":{"w":144,"h":144}},"test.png":{"frame":{"x":1,"y":26,"w":384,"h":384},"rotated":false,"trimmed":true,"spriteSourceSize":{"x":0,"y":0,"w":384,"h":384},"sourceSize":{"w":384,"h":384}}},"meta":{"image":"atlas0_hq.png","format":"RGBA8888","size":{"w":1024,"h":512},"scale":"0.75"}}', }; diff --git a/src/js/mods/mod_interface.js b/src/js/mods/mod_interface.js index ae091e31..3ab05af3 100644 --- a/src/js/mods/mod_interface.js +++ b/src/js/mods/mod_interface.js @@ -81,6 +81,41 @@ export class ModInterface { Loader.sprites.set(spriteId, sprite); } + /** + * + * @param {string} imageBase64 + * @param {string} jsonTextData + */ + registerAtlas(imageBase64, jsonTextData) { + const atlasData = JSON.parse(jsonTextData); + const img = new Image(); + img.src = imageBase64; + + const sourceData = atlasData.frames; + for (const spriteName in sourceData) { + const { frame, sourceSize, spriteSourceSize } = sourceData[spriteName]; + + const sprite = new AtlasSprite(spriteName); + Loader.sprites.set(spriteName, sprite); + sprite.frozen = true; + + const link = new SpriteAtlasLink({ + packedX: frame.x, + packedY: frame.y, + packedW: frame.w, + packedH: frame.h, + packOffsetX: spriteSourceSize.x, + packOffsetY: spriteSourceSize.y, + atlas: img, + w: sourceSize.w, + h: sourceSize.h, + }); + sprite.linksByResolution["0.25"] = link; + sprite.linksByResolution["0.5"] = link; + sprite.linksByResolution["0.75"] = link; + } + } + /** * * @param {object} param0