fade to gray on Enter

This commit is contained in:
Gavin McDonald
2018-09-17 21:36:19 -04:00
parent 4f630fb444
commit ad54304c30
2 changed files with 31 additions and 7 deletions

View File

@@ -25,6 +25,7 @@ class Demo {
constructor() { constructor() {
[ [
'setOriginTile', 'setOriginTile',
'setFadeToGray',
'tap', 'tap',
'pressStart', 'pressStart',
'press', 'press',
@@ -41,7 +42,9 @@ class Demo {
this.taps = []; this.taps = [];
this.mines = {}; this.mines = {};
this.ripples = []; this.ripples = [];
this.setOriginTile(); this.setOriginTile();
this.setFadeToGray();
this.tessellate = new Tessellate(Object.assign({ this.tessellate = new Tessellate(Object.assign({
element: '#container', element: '#container',
@@ -90,6 +93,14 @@ class Demo {
}); });
} }
setFadeToGray () {
window.addEventListener('keydown', event => {
if (!event.repeat && event.key === 'Enter') {
this.gray = this.gray ? null : Date.now();
}
});
}
tap(tap) { tap(tap) {
const {x, y, z} = tap.tile.getPoint(); const {x, y, z} = tap.tile.getPoint();
@@ -169,6 +180,21 @@ class Demo {
}); });
} }
fadeToGray (tile, fadeFactor) {
tile.color.grayscale = tile.color.grayscale || Tessellate.utils.grayscale(tile.color);
const grayscale = tile.color.grayscale;
const color = {
red: parseInt(tile.color.red - ((tile.color.red - grayscale) * fadeFactor)),
green: parseInt(tile.color.green - ((tile.color.green - grayscale) * fadeFactor)),
blue: parseInt(tile.color.blue - ((tile.color.blue - grayscale) * fadeFactor)),
};
tile = Tessellate.utils.extend(tile, {color});
return tile;
}
drawTile({x, y, z}, context, scale) { drawTile({x, y, z}, context, scale) {
const key = `${ x },${ z != null ? z : y }`; const key = `${ x },${ z != null ? z : y }`;
@@ -179,9 +205,12 @@ class Demo {
orientation: this.settings.orientation, orientation: this.settings.orientation,
}); });
const tile = this.map[key]; let tile = this.map[key];
const pixelPoint = this.tessellate.tileToPixel(x, y, z); const pixelPoint = this.tessellate.tileToPixel(x, y, z);
const fadeFactor = this.gray ? Math.min((Date.now() - this.gray) / 5000, 1) : null;
tile = this.gray ? this.fadeToGray(tile, fadeFactor) : tile;
Tessellate.TILES[tile.tileStyle][tile.drawStyle](context, scale, pixelPoint.getX(), pixelPoint.getY(), tile); Tessellate.TILES[tile.tileStyle][tile.drawStyle](context, scale, pixelPoint.getX(), pixelPoint.getY(), tile);
Tessellate.Shapes.pips(context, scale, pixelPoint.getX(), pixelPoint.getY(), tile); Tessellate.Shapes.pips(context, scale, pixelPoint.getX(), pixelPoint.getY(), tile);
} }
@@ -216,11 +245,6 @@ class Demo {
const pixelPoint = this.tessellate.tileToPixel(cell.x, cell.y); const pixelPoint = this.tessellate.tileToPixel(cell.x, cell.y);
Tessellate.Shapes.mine(context, scale, pixelPoint.getX(), pixelPoint.getY()); Tessellate.Shapes.mine(context, scale, pixelPoint.getX(), pixelPoint.getY());
}); });
// if (!this.notFirstTime) {
// this.notFirstTime = true;
// console.log(tilePoints);
// }
} }
} }

View File

@@ -150,7 +150,7 @@ export function extend (obj, ...sources) {
forEach(src, (value, key) => { forEach(src, (value, key) => {
if (has(src, key)) { if (has(src, key)) {
if (isObject(value) && isObject(extended[key])) { if (isObject(value) && isObject(extended[key])) {
extended[key] = extendDeep(extended[key], value); extended[key] = extend(extended[key], value);
} }
else { else {
extended[key] = value; extended[key] = value;