Index: components/neterror/resources/offline.js |
diff --git a/components/neterror/resources/offline.js b/components/neterror/resources/offline.js |
index ed3582f278dc2c95983dc03cb8070ae23cba0f60..b4edc9cba0d10eb6396dfd2ee0d0c0e756be56df 100644 |
--- a/components/neterror/resources/offline.js |
+++ b/components/neterror/resources/offline.js |
@@ -96,6 +96,9 @@ var IS_MOBILE = /Android/.test(window.navigator.userAgent) || IS_IOS; |
/** @const */ |
var IS_TOUCH_ENABLED = 'ontouchstart' in window; |
+/** @const */ |
+var ARCADE_MODE_URL = 'chrome://dino/'; |
+ |
/** |
* Default game configuration. |
* @enum {number} |
@@ -121,7 +124,9 @@ Runner.config = { |
MOBILE_SPEED_COEFFICIENT: 1.2, |
RESOURCE_TEMPLATE_ID: 'audio-resources', |
SPEED: 6, |
- SPEED_DROP_COEFFICIENT: 3 |
+ SPEED_DROP_COEFFICIENT: 3, |
+ TOP_MARGIN: 35, |
+ TOP_POSITION_WEIGHT: 10 |
mmenke
2017/07/05 18:51:29
Should document these, and name them so it's clear
edwardjung
2017/07/06 19:33:19
Done.
|
}; |
@@ -140,6 +145,7 @@ Runner.defaultDimensions = { |
* @enum {string} |
*/ |
Runner.classes = { |
+ ARCADE_MODE: 'arcade-mode', |
CANVAS: 'runner-canvas', |
CONTAINER: 'runner-container', |
CRASHED: 'crashed', |
@@ -225,7 +231,6 @@ Runner.events = { |
LOAD: 'load' |
}; |
- |
Runner.prototype = { |
/** |
* Whether the easter egg has been disabled. CrOS enterprise enrolled devices. |
@@ -418,6 +423,12 @@ Runner.prototype = { |
boxStyles.paddingLeft.length - 2)); |
this.dimensions.WIDTH = this.outerContainerEl.offsetWidth - padding * 2; |
+ if (this.isArcadeMode()) { |
+ this.dimensions.WIDTH = Math.min(DEFAULT_WIDTH, this.dimensions.WIDTH); |
+ if (this.activated) { |
+ this.setContainerScale(); |
+ } |
+ } |
// Redraw the elements back onto the canvas. |
if (this.canvas) { |
@@ -486,6 +497,7 @@ Runner.prototype = { |
* Update the game status to started. |
*/ |
startGame: function() { |
+ this.setArcadeMode(); |
this.runningTime = 0; |
this.playingIntro = false; |
this.tRex.playingIntro = false; |
@@ -825,6 +837,38 @@ Runner.prototype = { |
} |
}, |
+ /** |
+ * Whether the game should go into arcade mode. |
+ * @return {boolean} |
+ */ |
+ isArcadeMode: function() { |
+ return document.title == ARCADE_MODE_URL; |
+ }, |
+ |
+ /** |
+ * Hides offline messaging for a fullscreen game only experience. |
+ */ |
+ setArcadeMode: function() { |
+ if (this.isArcadeMode()) { |
mmenke
2017/07/05 18:51:29
I'd suggest moving this to the callsite, to make i
edwardjung
2017/07/06 19:33:20
Done.
|
+ document.body.classList.add(Runner.classes.ARCADE_MODE); |
+ this.setContainerScale(); |
+ } |
+ }, |
+ |
+ /** |
+ * Sets the scaling for arcade mode. |
+ */ |
+ setContainerScale: function() { |
mmenke
2017/07/05 18:51:29
setContainerScaleForArcadeMode?
edwardjung
2017/07/06 19:33:19
Changed to: setArcadeModeContainerScale
|
+ var windowHeight = window.innerHeight; |
+ var scaleHeight = windowHeight / this.dimensions.HEIGHT; |
+ var scaleWidth = window.innerWidth / this.dimensions.WIDTH; |
+ var scale = Math.max(1, Math.min(scaleHeight, scaleWidth)); |
mmenke
2017/07/05 18:51:29
So does this mean you can see farther if you make
edwardjung
2017/07/06 19:33:19
No, this just scales up the game container in the
|
+ var position = Math.max(-Runner.config.TOP_MARGIN, (windowHeight - |
+ (this.dimensions.HEIGHT * scale)) / Runner.config.TOP_POSITION_WEIGHT); |
mmenke
2017/07/05 18:51:29
So I guess this is figuring out how much extra hei
edwardjung
2017/07/06 19:33:20
Did you mean"
Math.max(-Runner.config.TOP_MARGI
mmenke
2017/07/07 16:28:10
No, I did not - dividing by percents generally mea
edwardjung
2017/07/10 15:17:11
Aaah, got it. Switched to to 0.1.
|
+ this.containerEl.style.transform = 'scale(' + scale + ') translateY(' + |
+ position + 'px)'; |
+ }, |
+ |
/** |
* Pause the game if the tab is not in focus. |
*/ |