From e20340c03cd287f5ca0478bc57f212f015efd5ab Mon Sep 17 00:00:00 2001 From: tonykakuuu Date: Sun, 9 Mar 2025 23:56:04 +0100 Subject: [PATCH] Dejivice --- apps/dejivaisu/ChangeLog | 1 + apps/dejivaisu/app-icon.js | 1 + apps/dejivaisu/app.js | 192 ++++++++++++++++++++++++++++++++++ apps/dejivaisu/app.png | Bin 0 -> 23401 bytes apps/dejivaisu/metadata.json | 27 +++++ apps/dejivaisu/screenshot.png | Bin 0 -> 2334 bytes apps/dejivaisu/settings.js | 28 +++++ apps/dejivaisu/settings.json | 4 + 8 files changed, 253 insertions(+) create mode 100644 apps/dejivaisu/ChangeLog create mode 100644 apps/dejivaisu/app-icon.js create mode 100644 apps/dejivaisu/app.js create mode 100644 apps/dejivaisu/app.png create mode 100644 apps/dejivaisu/metadata.json create mode 100644 apps/dejivaisu/screenshot.png create mode 100644 apps/dejivaisu/settings.js create mode 100644 apps/dejivaisu/settings.json diff --git a/apps/dejivaisu/ChangeLog b/apps/dejivaisu/ChangeLog new file mode 100644 index 000000000..62e2d0c20 --- /dev/null +++ b/apps/dejivaisu/ChangeLog @@ -0,0 +1 @@ +0.1: New App! \ No newline at end of file diff --git a/apps/dejivaisu/app-icon.js b/apps/dejivaisu/app-icon.js new file mode 100644 index 000000000..aa3f5f2b1 --- /dev/null +++ b/apps/dejivaisu/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEw4cBnnH///BIO6q2+++GoUwwmYmUkyVJAWspBhcSAgVKqOggEBA4VAwEAgnb9IRDqeQk3bvtAPAWbtv0gEP0QRCzmAFgQRDGoQEBugEB0nkUJkOxMk1IYCAAJWD7ASECIsDpILDyVgAgUB6MlhMkyEAjQxFpgEDnUoFoOQg2QgcAm3AhkAhMwCQdCNoU0kmbeYMYgKPBkwRDiQ1ByOhCIQABhuA4EELgsEwMJjmSnxrBuEGSQcgCQcNpHjxsl2XZkm44EAHAJDBtgRBtEBjlrsuS5dly4uBaoMEydtCwNog8Drcs21Zlmy8Eg3//0zdB2j0Bg3aOAQCCrgRDzFtl//pEAi1W7dt23btXIug1BmvAtf+y/9QQIRGnwyB0mSr+l/VdgPWCItIm/SQYMArt+y/r0GyCIvZg3brh6Brt1/QRIrIRBoARGywRF5IRJEYwRBI4IRCI4eSGo7FDNYdw2wRGgrFDhaPCgPSR40oYocNWYNLwCzG5TFDwEB+jOBYo/KYokAm//OIMCdItR3zFDNoMD9ADBrNlyXLsuywO1YoYACtACBhcs23LluUhuk6/8CAcAjomBgMk2Vbkmgts2ydgCIkNCIIIBI4MAjdN027CIQCCgeggFJ2AGBm3TpO17YGBg7+CgF0gUJPYNt03atOu7AMB/UpLgUOydp2matt07VtuyMBgPRkmuEgU6pk06VtmnbpM2BQMGxMkyoXBAAPpky0CyXtJoU+CIOS3YRCgbLBpMl7dsBAMB2i7CqdgggOBEYgMBRIP0CIVSpp0BNAIRC3dt2kbtsiCIVKcwoCFpAKJAVoA==")) \ No newline at end of file diff --git a/apps/dejivaisu/app.js b/apps/dejivaisu/app.js new file mode 100644 index 000000000..d67f45aee --- /dev/null +++ b/apps/dejivaisu/app.js @@ -0,0 +1,192 @@ +/* eslint-disable no-unused-vars */ +/* eslint-disable no-undef */ + +const storage = require('Storage'); ++require("Font8x16").add(Graphics); + +let appsettings = storage.readJSON('setting.json'); + +//MASCOT +if (appsettings.showMascot) { + var L1 = { + width : 16, height : 16, bpp : 1, + transparent : 0, + palette : new Uint16Array([65535,0]), + buffer : atob("AAAH4AgQcMiAaIDohgh4CEAQP4gpLylFGM40YlPVfn8=") + }; + var L2 = { + width : 16, height : 16, bpp : 1, + transparent : 0, + palette : new Uint16Array([65535,0]), + buffer : atob("B+AIEHDIgGiA6IYIeAhA0D8QGMgpGDnHDF0zxlKqfv4=") + }; + var R1 = { + width : 16, height : 16, bpp : 1, + transparent : 0, + palette : new Uint16Array([65535,0]), + buffer : atob("B+AIEBMOFgEXARBhEB4LAgj8ExgYlOOcujBjzFVKf34=") + }; + var R2 = { + width : 16, height : 16, bpp : 1, + transparent : 0, + palette : new Uint16Array([65535,0]), + buffer : atob("AAAH4AgQEw4WARcBEGEQHggCEfz0lKKUcxhGLKvK/n4=") + }; + + // Initial position and direction + var x = 40; + var y = 25; + var direction = 1; // 1 for right, -1 for left + var currentFrame = 0; // 0 for L1/R1, 1 for L2/R2 + var prevX = x; // Track the previous position of the sprite + + function drawSprite() { + g.clearRect(prevX, y, prevX + 32, y + 32); + if (direction === 1) { + g.drawImage(currentFrame === 0 ? R1 : R2, x, y, {scale:2}); + } else { + g.drawImage(currentFrame === 0 ? L1 : L2, x, y, {scale:2}); + } + prevX = x; + } + + function updatePosition() { + if (Math.random() < 0.3) { + direction = Math.random() < 0.5 ? -1 : 1; + } + + x += direction * 2; + + if (x > g.getWidth() - 70) { + x = g.getWidth() - 70; + direction = -1; + } else if (x < 0) { + x = 0; + direction = 1; + } + } + + function alternateFrame() { + currentFrame = 1 - currentFrame; + } +} + +//BARS + +if (appsettings.showDJSeconds) { + let barCount = 0; + let increasing = true; + + function drawBars() { + const barWidth = 5; + const barSpacing = 3; + const barHeight = 15; + const startX = (g.getWidth() - (5 * barWidth + 4 * barSpacing)) / 2 -60; + const startY = g.getHeight() / 2 + 30; + + for (let i = 0; i < barCount; i++) { + g.fillRect( + startX + i * (barWidth + barSpacing), + startY - barHeight / 2, + startX + i * (barWidth + barSpacing) + barWidth, + startY + barHeight / 2 + ); + } + } + + function updateBars() { + if (increasing) { + barCount++; + if (barCount >= 5) { + increasing = false; + } + } else { + barCount--; + if (barCount <= 0) { + increasing = true; + } + } + } +} + + +//ACTUAL WATCH + +{ +let drawTimeout; +let queueMillis = 1000; +let queueDraw = function() { + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = setTimeout(function() { + drawTimeout = undefined; + drawWatchface(); + }, queueMillis - (Date.now() % queueMillis)); +}; +let updateState = function() { + if (Bangle.isLCDOn()) { + if (Bangle.isLocked()){ + queueMillis = 60000; + } else { + queueMillis = 1000; + } + drawWatchface(); // draw immediately, queue redraw + } else { // stop draw timer + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } +}; + +function drawWatchface() { + var date = new Date(); + var day = date.getDate(); + var month = date.getMonth() + 1; // Months are 0-indexed + var year = date.getFullYear(); + var seconds = date.getSeconds(); + + g.reset().clearRect(Bangle.appRect); + g.setFontAlign(0, 0); + g.setFontVector(60); + var timeString = require("locale").time(date, 1); + var AMPM = require("locale").meridian(new Date()).toUpperCase(); + var timeWidth = g.stringWidth(timeString)/2; + var jpclX = (g.getWidth() - timeWidth ); + var jpclY = g.getHeight() / 2; + g.drawString(timeString, jpclX, jpclY); + if (!Bangle.isLocked()) { + if (appsettings.showMascot) { + updatePosition(); + alternateFrame(); + drawSprite(); + } + if (appsettings.showDJSeconds) { + g.setFontVector(20); + g.drawString(seconds.toString().padStart(2, '0'), jpclX + timeWidth / 2+25, jpclY + 33); + updateBars(); + drawBars(); + } + g.drawString(AMPM, jpclX+60, jpclY-38); + } + queueDraw(); +} + +// Clear the screen once, at startup +g.clear(); +// Set dynamic state and perform initial drawing +updateState(); +// Register hooks for LCD on/off event and screen lock on/off event +Bangle.on('lcdPower', updateState); +Bangle.on('lock', updateState); +Bangle.setUI({ + mode: "clock", + remove: function() { + // Called to unload all of the clock app + Bangle.removeListener('lcdPower', updateState); + Bangle.removeListener('lock', updateState); + if (drawTimeout) clearTimeout(drawTimeout); + drawTimeout = undefined; + } +}); +// Load widgets +Bangle.loadWidgets(); +Bangle.drawWidgets(); +} \ No newline at end of file diff --git a/apps/dejivaisu/app.png b/apps/dejivaisu/app.png new file mode 100644 index 0000000000000000000000000000000000000000..c9bc5cbc2cc8f8fb4ab21f7a31aaf4db7092a0ee GIT binary patch literal 23401 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 RZ9Y8Uxcw=+Qd@k&KLM-#K(7D* literal 0 HcmV?d00001 diff --git a/apps/dejivaisu/settings.js b/apps/dejivaisu/settings.js new file mode 100644 index 000000000..b808e47bd --- /dev/null +++ b/apps/dejivaisu/settings.js @@ -0,0 +1,28 @@ +(function back() { + const storage = require('Storage'); + // Load existing settings or initialize defaults + let settings = storage.readJSON('setting.json') || {}; + + function saveSettings() { + storage.write('setting.json', settings); + } + + E.showMenu({ + '': { 'title': 'Dejivaisu Settings' }, + 'Show Mascot': { + value: settings.showMascot, + onchange: v => { + settings.showMascot = v; + saveSettings(); + } + }, + 'Show Seconds': { + value: settings.showDJSeconds, + onchange: v => { + settings.showDJSeconds = v; + saveSettings(); + } + }, + '< Back': () => load() + }); +}) \ No newline at end of file diff --git a/apps/dejivaisu/settings.json b/apps/dejivaisu/settings.json new file mode 100644 index 000000000..09c433461 --- /dev/null +++ b/apps/dejivaisu/settings.json @@ -0,0 +1,4 @@ +{ + "showMascot": true, + "showDJSeconds": true +}