add app notice
This commit is contained in:
+1
-1
@@ -3,7 +3,7 @@ CACHE MANIFEST
|
||||
# Adds the ability to play the game online.
|
||||
# The following comment needs to be updated whenever a change is made.
|
||||
# Run `rake appcache:update` to do so
|
||||
# Updated: 2014-03-27T17:09:22+01:00
|
||||
# Updated: 2014-04-28T12:49:34+02:00
|
||||
|
||||
# Main page
|
||||
index.html
|
||||
|
||||
@@ -35,6 +35,11 @@
|
||||
<a class="restart-button">New Game</a>
|
||||
</div>
|
||||
|
||||
<div class="app-notice">
|
||||
<span class="notice-close-button">x</span>
|
||||
<p><strong class="important">New:</strong> Get the new 2048 app for <a href="https://itunes.apple.com/us/app/2048-by-gabriele-cirulli/id868076805" target="_blank">iOS</a> and <a href="https://play.google.com/store/apps/details?id=com.gabrielecirulli.app2048" target="_blank">Android!</a></p>
|
||||
</div>
|
||||
|
||||
<div class="game-container">
|
||||
<div class="game-message">
|
||||
<p></p>
|
||||
|
||||
@@ -1,4 +1,18 @@
|
||||
// Wait till the browser is ready to render the game (avoids glitches)
|
||||
window.requestAnimationFrame(function () {
|
||||
new GameManager(4, KeyboardInputManager, HTMLActuator, LocalStorageManager);
|
||||
|
||||
// TODO: This code is in need of a refactor (along with the rest)
|
||||
var storage = new LocalStorageManager;
|
||||
var noticeClose = document.querySelector(".notice-close-button");
|
||||
var notice = document.querySelector(".app-notice");
|
||||
if (storage.getNoticeClosed()) {
|
||||
notice.parentNode.removeChild(notice);
|
||||
} else {
|
||||
noticeClose.addEventListener("click", function () {
|
||||
notice.parentNode.removeChild(notice);
|
||||
storage.setNoticeClosed(true);
|
||||
ga("send", "event", "notice", "closed");
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -21,6 +21,7 @@ window.fakeStorage = {
|
||||
function LocalStorageManager() {
|
||||
this.bestScoreKey = "bestScore";
|
||||
this.gameStateKey = "gameState";
|
||||
this.noticeClosedKey = "noticeClosed";
|
||||
|
||||
var supported = this.localStorageSupported();
|
||||
this.storage = supported ? window.localStorage : window.fakeStorage;
|
||||
@@ -61,3 +62,11 @@ LocalStorageManager.prototype.setGameState = function (gameState) {
|
||||
LocalStorageManager.prototype.clearGameState = function () {
|
||||
this.storage.removeItem(this.gameStateKey);
|
||||
};
|
||||
|
||||
LocalStorageManager.prototype.setNoticeClosed = function (noticeClosed) {
|
||||
this.storage.setItem(this.noticeClosedKey, JSON.stringify(noticeClosed));
|
||||
};
|
||||
|
||||
LocalStorageManager.prototype.getNoticeClosed = function () {
|
||||
return JSON.parse(this.storage.getItem(this.noticeClosedKey) || "false");
|
||||
};
|
||||
|
||||
+121
-1
@@ -919,7 +919,7 @@ hr {
|
||||
opacity: 1;
|
||||
top: -45px;
|
||||
pointer-events: auto; }
|
||||
@media screen and (max-width: 480px) {
|
||||
@media screen and (max-width: 520px) {
|
||||
.btc-donate {
|
||||
width: 120px; }
|
||||
.btc-donate .address {
|
||||
@@ -930,3 +930,123 @@ hr {
|
||||
.btc-donate .address:after {
|
||||
left: 50%;
|
||||
bottom: 2px; } }
|
||||
|
||||
@-webkit-keyframes pop-in-big {
|
||||
0% {
|
||||
-webkit-transform: scale(0) translateZ(0);
|
||||
-moz-transform: scale(0) translateZ(0);
|
||||
transform: scale(0) translateZ(0);
|
||||
opacity: 0;
|
||||
margin-top: -56px; }
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1) translateZ(0);
|
||||
-moz-transform: scale(1) translateZ(0);
|
||||
transform: scale(1) translateZ(0);
|
||||
opacity: 1;
|
||||
margin-top: 30px; } }
|
||||
@-moz-keyframes pop-in-big {
|
||||
0% {
|
||||
-webkit-transform: scale(0) translateZ(0);
|
||||
-moz-transform: scale(0) translateZ(0);
|
||||
transform: scale(0) translateZ(0);
|
||||
opacity: 0;
|
||||
margin-top: -56px; }
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1) translateZ(0);
|
||||
-moz-transform: scale(1) translateZ(0);
|
||||
transform: scale(1) translateZ(0);
|
||||
opacity: 1;
|
||||
margin-top: 30px; } }
|
||||
@keyframes pop-in-big {
|
||||
0% {
|
||||
-webkit-transform: scale(0) translateZ(0);
|
||||
-moz-transform: scale(0) translateZ(0);
|
||||
transform: scale(0) translateZ(0);
|
||||
opacity: 0;
|
||||
margin-top: -56px; }
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1) translateZ(0);
|
||||
-moz-transform: scale(1) translateZ(0);
|
||||
transform: scale(1) translateZ(0);
|
||||
opacity: 1;
|
||||
margin-top: 30px; } }
|
||||
@-webkit-keyframes pop-in-small {
|
||||
0% {
|
||||
-webkit-transform: scale(0) translateZ(0);
|
||||
-moz-transform: scale(0) translateZ(0);
|
||||
transform: scale(0) translateZ(0);
|
||||
opacity: 0;
|
||||
margin-top: -76px; }
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1) translateZ(0);
|
||||
-moz-transform: scale(1) translateZ(0);
|
||||
transform: scale(1) translateZ(0);
|
||||
opacity: 1;
|
||||
margin-top: 10px; } }
|
||||
@-moz-keyframes pop-in-small {
|
||||
0% {
|
||||
-webkit-transform: scale(0) translateZ(0);
|
||||
-moz-transform: scale(0) translateZ(0);
|
||||
transform: scale(0) translateZ(0);
|
||||
opacity: 0;
|
||||
margin-top: -76px; }
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1) translateZ(0);
|
||||
-moz-transform: scale(1) translateZ(0);
|
||||
transform: scale(1) translateZ(0);
|
||||
opacity: 1;
|
||||
margin-top: 10px; } }
|
||||
@keyframes pop-in-small {
|
||||
0% {
|
||||
-webkit-transform: scale(0) translateZ(0);
|
||||
-moz-transform: scale(0) translateZ(0);
|
||||
transform: scale(0) translateZ(0);
|
||||
opacity: 0;
|
||||
margin-top: -76px; }
|
||||
|
||||
100% {
|
||||
-webkit-transform: scale(1) translateZ(0);
|
||||
-moz-transform: scale(1) translateZ(0);
|
||||
transform: scale(1) translateZ(0);
|
||||
opacity: 1;
|
||||
margin-top: 10px; } }
|
||||
.app-notice {
|
||||
position: relative;
|
||||
-webkit-animation: pop-in-big 700ms ease 2s both;
|
||||
-moz-animation: pop-in-big 700ms ease 2s both;
|
||||
animation: pop-in-big 700ms ease 2s both;
|
||||
background: #edc53f;
|
||||
color: white;
|
||||
padding: 18px;
|
||||
margin-top: 30px;
|
||||
height: 56px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 3px; }
|
||||
.app-notice:after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both; }
|
||||
.app-notice .notice-close-button {
|
||||
float: right;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
margin-left: 10px;
|
||||
opacity: 0.7; }
|
||||
.app-notice p {
|
||||
margin-bottom: 0; }
|
||||
.app-notice, .app-notice p {
|
||||
line-height: 20px; }
|
||||
.app-notice a {
|
||||
color: white; }
|
||||
@media screen and (max-width: 520px) {
|
||||
.app-notice {
|
||||
-webkit-animation: pop-in-small 700ms ease 2s both;
|
||||
-moz-animation: pop-in-small 700ms ease 2s both;
|
||||
animation: pop-in-small 700ms ease 2s both;
|
||||
margin-top: 10px;
|
||||
height: 76px; } }
|
||||
|
||||
+74
-1
@@ -752,7 +752,7 @@ hr {
|
||||
}
|
||||
|
||||
// Styles for small screens
|
||||
@include smaller(480px) {
|
||||
@include smaller($mobile-threshold) {
|
||||
width: 120px;
|
||||
|
||||
.address {
|
||||
@@ -771,3 +771,76 @@ hr {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include keyframes(pop-in-big) {
|
||||
0% {
|
||||
@include transform(scale(0) translateZ(0));
|
||||
opacity: 0;
|
||||
margin-top: -56px;
|
||||
}
|
||||
|
||||
100% {
|
||||
@include transform(scale(1) translateZ(0));
|
||||
opacity: 1;
|
||||
margin-top: 30px;
|
||||
}
|
||||
}
|
||||
|
||||
@include keyframes(pop-in-small) {
|
||||
0% {
|
||||
@include transform(scale(0) translateZ(0));
|
||||
opacity: 0;
|
||||
margin-top: -76px;
|
||||
}
|
||||
|
||||
100% {
|
||||
@include transform(scale(1) translateZ(0));
|
||||
opacity: 1;
|
||||
margin-top: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.app-notice {
|
||||
position: relative;
|
||||
@include animation(pop-in-big 700ms ease 2s both);
|
||||
background: #edc53f;
|
||||
color: white;
|
||||
padding: 18px;
|
||||
margin-top: 30px;
|
||||
height: 56px;
|
||||
box-sizing: border-box;
|
||||
border-radius: $tile-border-radius;
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
display: block;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.notice-close-button {
|
||||
float: right;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
margin-left: 10px;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 0;
|
||||
// float: left;
|
||||
}
|
||||
|
||||
&, p {
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: white;
|
||||
}
|
||||
|
||||
@include smaller($mobile-threshold) {
|
||||
@include animation(pop-in-small 700ms ease 2s both);
|
||||
margin-top: 10px;
|
||||
height: 76px;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user