diff --git a/apps/2047pp/2047pp.app.js b/apps/2047pp/2047pp.app.js
index 9163aaf3a..ac7fe6391 100644
--- a/apps/2047pp/2047pp.app.js
+++ b/apps/2047pp/2047pp.app.js
@@ -1,140 +1,142 @@
-class TwoK {
- constructor() {
- this.b = Array(4).fill().map(() => Array(4).fill(0));
- this.score = 0;
- this.cmap = {0: "#caa", 2:"#ccc", 4: "#bcc", 8: "#ba6", 16: "#e61", 32: "#d20", 64: "#d00", 128: "#da0", 256: "#ec0", 512: "#dd0"};
- }
- drawBRect(x1, y1, x2, y2, th, c, cf, fill) {
- g.setColor(c);
- for (i=0; i
4) g.setColor(1, 1, 1);
- else g.setColor(0, 0, 0);
- g.setFont("Vector", bh*(b>8 ? (b>64 ? (b>512 ? 0.32 : 0.4) : 0.6) : 0.7));
- if (b>0) g.drawString(b.toString(), xo+(x+0.5)*bw+1, yo+(y+0.5)*bh);
- }
- }
- shift(d) { // +/-1: shift x, +/- 2: shift y
- var crc = E.CRC32(this.b.toString());
- if (d==-1) { // shift x left
- for (y=0; y<4; ++y) {
- for (x=2; x>=0; x--)
- if (this.b[y][x]==0) {
- for (i=x; i<3; i++) this.b[y][i] = this.b[y][i+1];
- this.b[y][3] = 0;
- }
- for (x=0; x<3; ++x)
- if (this.b[y][x]==this.b[y][x+1]) {
- this.score += 2*this.b[y][x];
- this.b[y][x] += this.b[y][x+1];
- for (j=x+1; j<3; ++j) this.b[y][j] = this.b[y][j+1];
+{ // wrap app in scope to prevent minifier from removing the class definition completely
+ class TwoK {
+ constructor() {
+ this.b = Array(4).fill().map(() => Array(4).fill(0));
+ this.score = 0;
+ this.cmap = {0: "#caa", 2:"#ccc", 4: "#bcc", 8: "#ba6", 16: "#e61", 32: "#d20", 64: "#d00", 128: "#da0", 256: "#ec0", 512: "#dd0"};
+ }
+ drawBRect(x1, y1, x2, y2, th, c, cf, fill) {
+ g.setColor(c);
+ for (i=0; i | 4) g.setColor(1, 1, 1);
+ else g.setColor(0, 0, 0);
+ g.setFont("Vector", bh*(b>8 ? (b>64 ? (b>512 ? 0.32 : 0.4) : 0.6) : 0.7));
+ if (b>0) g.drawString(b.toString(), xo+(x+0.5)*bw+1, yo+(y+0.5)*bh);
+ }
+ }
+ shift(d) { // +/-1: shift x, +/- 2: shift y
+ var crc = E.CRC32(this.b.toString());
+ if (d==-1) { // shift x left
+ for (y=0; y<4; ++y) {
+ for (x=2; x>=0; x--)
+ if (this.b[y][x]==0) {
+ for (i=x; i<3; i++) this.b[y][i] = this.b[y][i+1];
this.b[y][3] = 0;
- }
+ }
+ for (x=0; x<3; ++x)
+ if (this.b[y][x]==this.b[y][x+1]) {
+ this.score += 2*this.b[y][x];
+ this.b[y][x] += this.b[y][x+1];
+ for (j=x+1; j<3; ++j) this.b[y][j] = this.b[y][j+1];
+ this.b[y][3] = 0;
+ }
+ }
}
- }
- else if (d==1) { // shift x right
- for (y=0; y<4; ++y) {
- for (x=1; x<4; x++)
- if (this.b[y][x]==0) {
- for (i=x; i>0; i--) this.b[y][i] = this.b[y][i-1];
- this.b[y][0] = 0;
- }
- for (x=3; x>0; --x)
- if (this.b[y][x]==this.b[y][x-1]) {
- this.score += 2*this.b[y][x];
- this.b[y][x] += this.b[y][x-1] ;
- for (j=x-1; j>0; j--) this.b[y][j] = this.b[y][j-1];
- this.b[y][0] = 0;
- }
+ else if (d==1) { // shift x right
+ for (y=0; y<4; ++y) {
+ for (x=1; x<4; x++)
+ if (this.b[y][x]==0) {
+ for (i=x; i>0; i--) this.b[y][i] = this.b[y][i-1];
+ this.b[y][0] = 0;
+ }
+ for (x=3; x>0; --x)
+ if (this.b[y][x]==this.b[y][x-1]) {
+ this.score += 2*this.b[y][x];
+ this.b[y][x] += this.b[y][x-1] ;
+ for (j=x-1; j>0; j--) this.b[y][j] = this.b[y][j-1];
+ this.b[y][0] = 0;
+ }
+ }
}
- }
- else if (d==-2) { // shift y down
- for (x=0; x<4; ++x) {
- for (y=1; y<4; y++)
- if (this.b[y][x]==0) {
- for (i=y; i>0; i--) this.b[i][x] = this.b[i-1][x];
- this.b[0][x] = 0;
- }
- for (y=3; y>0; y--)
- if (this.b[y][x]==this.b[y-1][x] || this.b[y][x]==0) {
- this.score += 2*this.b[y][x];
- this.b[y][x] += this.b[y-1][x];
- for (j=y-1; j>0; j--) this.b[j][x] = this.b[j-1][x];
- this.b[0][x] = 0;
- }
+ else if (d==-2) { // shift y down
+ for (x=0; x<4; ++x) {
+ for (y=1; y<4; y++)
+ if (this.b[y][x]==0) {
+ for (i=y; i>0; i--) this.b[i][x] = this.b[i-1][x];
+ this.b[0][x] = 0;
+ }
+ for (y=3; y>0; y--)
+ if (this.b[y][x]==this.b[y-1][x] || this.b[y][x]==0) {
+ this.score += 2*this.b[y][x];
+ this.b[y][x] += this.b[y-1][x];
+ for (j=y-1; j>0; j--) this.b[j][x] = this.b[j-1][x];
+ this.b[0][x] = 0;
+ }
+ }
}
- }
- else if (d==2) { // shift y up
- for (x=0; x<4; ++x) {
- for (y=2; y>=0; y--)
- if (this.b[y][x]==0) {
- for (i=y; i<3; i++) this.b[i][x] = this.b[i+1][x];
- this.b[3][x] = 0;
- }
- for (y=0; y<3; ++y)
- if (this.b[y][x]==this.b[y+1][x] || this.b[y][x]==0) {
- this.score += 2*this.b[y][x];
- this.b[y][x] += this.b[y+1][x];
- for (j=y+1; j<3; ++j) this.b[j][x] = this.b[j+1][x];
- this.b[3][x] = 0;
- }
+ else if (d==2) { // shift y up
+ for (x=0; x<4; ++x) {
+ for (y=2; y>=0; y--)
+ if (this.b[y][x]==0) {
+ for (i=y; i<3; i++) this.b[i][x] = this.b[i+1][x];
+ this.b[3][x] = 0;
+ }
+ for (y=0; y<3; ++y)
+ if (this.b[y][x]==this.b[y+1][x] || this.b[y][x]==0) {
+ this.score += 2*this.b[y][x];
+ this.b[y][x] += this.b[y+1][x];
+ for (j=y+1; j<3; ++j) this.b[j][x] = this.b[j+1][x];
+ this.b[3][x] = 0;
+ }
+ }
}
+ return (E.CRC32(this.b.toString())!=crc);
+ }
+ addDigit() {
+ var d = Math.random()>0.9 ? 4 : 2;
+ var id = Math.floor(Math.random()*16);
+ while (this.b[Math.floor(id/4)][id%4] > 0) id = Math.floor(Math.random()*16);
+ this.b[Math.floor(id/4)][id%4] = d;
}
- return (E.CRC32(this.b.toString())!=crc);
}
- addDigit() {
- var d = Math.random()>0.9 ? 4 : 2;
- var id = Math.floor(Math.random()*16);
- while (this.b[Math.floor(id/4)][id%4] > 0) id = Math.floor(Math.random()*16);
- this.b[Math.floor(id/4)][id%4] = d;
- }
-}
-function dragHandler(e) {
- if (e.b && (Math.abs(e.dx)>7 || Math.abs(e.dy)>7)) {
- var res = false;
- if (Math.abs(e.dx)>Math.abs(e.dy)) {
- if (e.dx>0) res = twok.shift(1);
- if (e.dx<0) res = twok.shift(-1);
+ function dragHandler(e) {
+ if (e.b && (Math.abs(e.dx)>7 || Math.abs(e.dy)>7)) {
+ var res = false;
+ if (Math.abs(e.dx)>Math.abs(e.dy)) {
+ if (e.dx>0) res = twok.shift(1);
+ if (e.dx<0) res = twok.shift(-1);
+ }
+ else {
+ if (e.dy>0) res = twok.shift(-2);
+ if (e.dy<0) res = twok.shift(2);
+ }
+ if (res) twok.addDigit();
+ twok.render();
}
- else {
- if (e.dy>0) res = twok.shift(-2);
- if (e.dy<0) res = twok.shift(2);
- }
- if (res) twok.addDigit();
- twok.render();
}
-}
-function swipeHandler() {
-
-}
+ function swipeHandler() {
+
+ }
-function buttonHandler() {
-
-}
+ function buttonHandler() {
+
+ }
-var twok = new TwoK();
-twok.addDigit(); twok.addDigit();
-twok.render();
-if (process.env.HWVERSION==2) Bangle.on("drag", dragHandler);
-if (process.env.HWVERSION==1) {
- Bangle.on("swipe", (e) => { res = twok.shift(e); if (res) twok.addDigit(); twok.render(); });
- setWatch(() => { res = twok.shift(2); if (res) twok.addDigit(); twok.render(); }, BTN1, {repeat: true});
- setWatch(() => { res = twok.shift(-2); if (res) twok.addDigit(); twok.render(); }, BTN3, {repeat: true});
-}
+ var twok = new TwoK();
+ twok.addDigit(); twok.addDigit();
+ twok.render();
+ if (process.env.HWVERSION==2) Bangle.on("drag", dragHandler);
+ if (process.env.HWVERSION==1) {
+ Bangle.on("swipe", (e) => { res = twok.shift(e); if (res) twok.addDigit(); twok.render(); });
+ setWatch(() => { res = twok.shift(2); if (res) twok.addDigit(); twok.render(); }, BTN1, {repeat: true});
+ setWatch(() => { res = twok.shift(-2); if (res) twok.addDigit(); twok.render(); }, BTN3, {repeat: true});
+ }
+}
\ No newline at end of file
diff --git a/apps/2047pp/ChangeLog b/apps/2047pp/ChangeLog
index a1f88e5ec..9436289ae 100644
--- a/apps/2047pp/ChangeLog
+++ b/apps/2047pp/ChangeLog
@@ -1,2 +1,3 @@
0.01: New app!
0.02: Better support for watch themes
+0.03: Workaround minifier bug
\ No newline at end of file
diff --git a/apps/2047pp/metadata.json b/apps/2047pp/metadata.json
index 033354ac6..ac4dc70bd 100644
--- a/apps/2047pp/metadata.json
+++ b/apps/2047pp/metadata.json
@@ -2,7 +2,7 @@
"name": "2047pp",
"shortName":"2047pp",
"icon": "app.png",
- "version":"0.02",
+ "version":"0.03",
"description": "Bangle version of a tile shifting game",
"supports" : ["BANGLEJS","BANGLEJS2"],
"allow_emulator": true,
|