From 070d3ec6c21be922e34db98c88e6a74b4d61945e Mon Sep 17 00:00:00 2001 From: Matt Lott Date: Sun, 30 Nov 2014 14:42:48 -0800 Subject: [PATCH 1/7] Fix Firefox code area border --- app/styles/play/level/tome/spell.sass | 1 + 1 file changed, 1 insertion(+) diff --git a/app/styles/play/level/tome/spell.sass b/app/styles/play/level/tome/spell.sass index 39f65f6d4..b330d848e 100644 --- a/app/styles/play/level/tome/spell.sass +++ b/app/styles/play/level/tome/spell.sass @@ -25,6 +25,7 @@ left: 0px height: 100% right: -10px + border: 1px solid transparent span.code-background border-width: 124px 76px 64px 40px From 44282cb94639929b5c8823008fdd9c4b257debe9 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Sun, 30 Nov 2014 14:57:34 -0800 Subject: [PATCH 2/7] Hooked up new menu music loop. --- app/lib/surface/MusicPlayer.coffee | 3 +-- app/views/play/WorldMapView.coffee | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/app/lib/surface/MusicPlayer.coffee b/app/lib/surface/MusicPlayer.coffee index 2f2b84eb1..383f7f79b 100644 --- a/app/lib/surface/MusicPlayer.coffee +++ b/app/lib/surface/MusicPlayer.coffee @@ -86,8 +86,7 @@ module.exports = class MusicPlayer extends CocoClass return if @inMenu @inMenu = true @previousMusic = @currentMusic - terrain = (e.terrain ? 'Dungeon').toLowerCase() - file = "/music/music-menu-#{terrain}" + file = "/music/music-menu" Backbone.Mediator.publish 'music-player:play-music', file: file, play: true, delay: 1000 onExitMenu: (e) -> diff --git a/app/views/play/WorldMapView.coffee b/app/views/play/WorldMapView.coffee index 75e93cc58..c53acde7e 100644 --- a/app/views/play/WorldMapView.coffee +++ b/app/views/play/WorldMapView.coffee @@ -63,7 +63,7 @@ module.exports = class WorldMapView extends RootView @getLevelPlayCounts() $(window).on 'resize', @onWindowResize @playAmbientSound() - @probablyCachedMusic = storage.load("loaded-menu-music-#{@terrain}") + @probablyCachedMusic = storage.load("loaded-menu-music") musicDelay = if @probablyCachedMusic then 1000 else 10000 @playMusicTimeout = _.delay (=> @playMusic() unless @destroyed), musicDelay @hadEverChosenHero = me.get('heroConfig')?.thangType @@ -280,9 +280,9 @@ module.exports = class WorldMapView extends RootView playMusic: -> @musicPlayer = new MusicPlayer() - musicFile = {dungeon: '/music/music-menu-dungeon', forest: '/music/music-menu-grass'}[@terrain] + musicFile = '/music/music-menu' Backbone.Mediator.publish 'music-player:play-music', play: true, file: musicFile - storage.save("loaded-menu-music-#{@terrain}", true) unless @probablyCachedMusic + storage.save("loaded-menu-music", true) unless @probablyCachedMusic preloadTopHeroes: -> for heroID in ['captain', 'knight'] From 2ecda7dbbff5de8364e95d8bf45a3884b0205d69 Mon Sep 17 00:00:00 2001 From: Matt Lott Date: Sun, 30 Nov 2014 15:27:12 -0800 Subject: [PATCH 3/7] Fix trackPageView options initialization --- app/core/Tracker.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/core/Tracker.coffee b/app/core/Tracker.coffee index 0c4d6d0a7..3d490de0e 100644 --- a/app/core/Tracker.coffee +++ b/app/core/Tracker.coffee @@ -28,7 +28,7 @@ module.exports = class Tracker console.log "Would track analytics pageview: /#{name}" if debugAnalytics return unless @isProduction and analytics? and not me.isAdmin() if includeIntegrations - options.integrations = {'All': false} + options = integrations: {'All': false} for integration in includeIntegrations options.integrations[integration] = true analytics.page null, "/#{name}", null, options From 153c39b30bdbbb70a8b39bc1a387a1c1b09601ca Mon Sep 17 00:00:00 2001 From: Matt Lott Date: Sun, 30 Nov 2014 16:03:23 -0800 Subject: [PATCH 4/7] Reverting larger currently-executing-line pointer Not compatible with Firefox, and not clear how to make it work in both browsers. --- app/styles/play/level/tome/spell.sass | 42 ++++++++++++++++----------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/app/styles/play/level/tome/spell.sass b/app/styles/play/level/tome/spell.sass index b330d848e..b7d2b3169 100644 --- a/app/styles/play/level/tome/spell.sass +++ b/app/styles/play/level/tome/spell.sass @@ -26,7 +26,7 @@ height: 100% right: -10px border: 1px solid transparent - + span.code-background border-width: 124px 76px 64px 40px border-image: url(/images/level/code_editor_background_border.png) 124 76 64 40 fill round @@ -132,23 +132,31 @@ @include animation(progress-bar-stripes 0.5s linear infinite) &:not(.user-code-problem) - .ace_gutter-cell.executing:not(.ace_error):not(.ace_warning):not(.ace_info):after + .ace_gutter-cell.executing:not(.ace_error):not(.ace_warning):not(.ace_info) + margin-left: 1px + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2hpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMjgwMTE3NDA3MjA2ODExOEE2REU4Q0M1MTM1MkIxRiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBQjVEQUNDMzQ4RUIxMUUxOEVGRUUyNzFENDM3RDVFMCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBQjVEQUNDMjQ4RUIxMUUxOEVGRUUyNzFENDM3RDVFMCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1LjEgTWFjaW50b3NoIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTU1MjE3RDIzMTIwNjgxMThEQkI4NTlBMjQ1QTEwOTUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6MDI4MDExNzQwNzIwNjgxMThBNkRFOENDNTEzNTJCMUYiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz7SazaGAAAAiElEQVR42mL8//8/AzUBEwOVweA3kAWboI2jCyhgDwBx4ZH9ey5Qy4UOQHweaHg/EAtQ08sFUIMDqBmGCkC8HmgoCCtQM1ICoK5toGYsg8KzHmjo+UGbDj8AcSMwORkSnQ7xgA3QtPmApISNBTyAGrSBGl6eAMSGxBhGyIVkZT3G0fKQYgAQYACL+C2ZM6PC7AAAAABJRU5ErkJggg==) + background-position: 0px center - // Experimenting with a larger executing-line-pointer - content: "\e072" - position: relative - top: -31px - left: -39px - display: inline-block - font-family: 'Glyphicons Halflings' - font-style: normal - font-weight: normal - line-height: 1 - color: white - text-shadow: 0 0 5px black, 0 0 5px black, 0 0 5px black - font-size: 39px - -webkit-font-smoothing: antialiased - -moz-osx-font-smoothing: grayscale + // .ace_gutter-cell.executing:not(.ace_error):not(.ace_warning):not(.ace_info):after + // + // // Experimenting with a larger executing-line-pointer + // content: "\e072" + // position: relative + // left: -39px + // font-family: 'Glyphicons Halflings' + // font-style: normal + // font-weight: normal + // color: white + // text-shadow: 0 0 5px black, 0 0 5px black, 0 0 5px black + // -webkit-font-smoothing: antialiased + // -moz-osx-font-smoothing: grayscale + // + // // Chrome likes these, but Firefox does not + // // TODO: Figure out how to make the executing gutter arrow big, and compatible + // display: inline-block + // top: -31px + // line-height: 1 + // font-size: 39px .ace_gutter-cell.executed:not(.ace_error):not(.ace_warning):not(.ace_info) margin-left: 1px From d007f5337ee234fc10b251f6ab6acac4c036df49 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Sun, 30 Nov 2014 16:13:39 -0800 Subject: [PATCH 5/7] Fixed up inventory slot images for minions and wrists, and added Wizard/Ranger placeholder images. --- app/styles/game-menu/inventory-modal.sass | 36 ++++++++++++++--------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/app/styles/game-menu/inventory-modal.sass b/app/styles/game-menu/inventory-modal.sass index 6fe6618fb..f71d36640 100644 --- a/app/styles/game-menu/inventory-modal.sass +++ b/app/styles/game-menu/inventory-modal.sass @@ -163,8 +163,8 @@ $itemSlotGridHeight: 51px background-position: (-4 * $itemSlotInnerWidth) 0px &[data-slot="minion"] - left: 10px + ($itemSlotGridWidth * 0) - top: 15px + ($itemSlotGridHeight * 0) + left: 10px + ($itemSlotGridWidth * 5) + top: 15px + ($itemSlotGridHeight * 1) .placeholder background-position: (-1 * $itemSlotInnerWidth) 0px @@ -172,15 +172,11 @@ $itemSlotGridHeight: 51px left: 10px + ($itemSlotGridWidth * 0) top: 15px + ($itemSlotGridHeight * 0) .placeholder - background-position: (-3 * $itemSlotInnerWidth) 0px - - // Only for wizards... - //&[data-slot="spellbook"] .placeholder - // background-position: (-2 * $itemSlotInnerWidth) 0px + background-position: (-2 * $itemSlotInnerWidth) 0px &[data-slot="wrists"] left: 10px + ($itemSlotGridWidth * 0) - top: 15px + ($itemSlotGridHeight * 0) + top: 15px + ($itemSlotGridHeight * 2) .placeholder background-position: (-5 * $itemSlotInnerWidth) 0px @@ -198,7 +194,7 @@ $itemSlotGridHeight: 51px &[data-slot="torso"] left: 10px + ($itemSlotGridWidth * 5) - top: 15px + ($itemSlotGridHeight * 2) + top: 15px + ($itemSlotGridHeight * 3) .placeholder background-position: (-8 * $itemSlotInnerWidth) 0px @@ -228,7 +224,7 @@ $itemSlotGridHeight: 51px &[data-slot="head"] left: 10px + ($itemSlotGridWidth * 5) - top: 15px + ($itemSlotGridHeight * 1) + top: 15px + ($itemSlotGridHeight * 2) .placeholder background-position: (-13 * $itemSlotInnerWidth) 0px @@ -240,19 +236,19 @@ $itemSlotGridHeight: 51px &[data-slot="gloves"] left: 10px + ($itemSlotGridWidth * 0) - top: 15px + ($itemSlotGridHeight * 2) + top: 15px + ($itemSlotGridHeight * 3) .placeholder background-position: (-15 * $itemSlotInnerWidth) 0px &[data-slot="left-hand"] left: 10px + ($itemSlotGridWidth * 5) - top: 15px + ($itemSlotGridHeight * 3) + top: 15px + ($itemSlotGridHeight * 4) .placeholder background-position: (-16 * $itemSlotInnerWidth) 0px - + &[data-slot="right-hand"] left: 10px + ($itemSlotGridWidth * 0) - top: 15px + ($itemSlotGridHeight * 3) + top: 15px + ($itemSlotGridHeight * 4) .placeholder background-position: (-17 * $itemSlotInnerWidth) 0px @@ -272,6 +268,18 @@ $itemSlotGridHeight: 51px border: 2px solid black background-color: white + &.Wizard #equipped .item-slot + &[data-slot="right-hand"] .placeholder + background-position: (-20 * $itemSlotInnerWidth) 0px + &[data-slot="left-hand"] .placeholder + background-position: (-3 * $itemSlotInnerWidth) 0px + + &.Ranger #equipped .item-slot + &[data-slot="right-hand"] .placeholder + background-position: (-18 * $itemSlotInnerWidth) 0px + &[data-slot="left-hand"] .placeholder + background-position: (-19 * $itemSlotInnerWidth) 0px + //- dragging styling From 1cada9dd773d494ee42da831419d5972c456b889 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Sun, 30 Nov 2014 17:06:21 -0800 Subject: [PATCH 6/7] Hack to fix source map URLs in production brunch. --- config.coffee | 48 ++++++++++++++++++++++++++++-------------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/config.coffee b/config.coffee index f62dc9aef..961c32246 100644 --- a/config.coffee +++ b/config.coffee @@ -13,25 +13,34 @@ regJoin = (s) -> new RegExp(s.replace(/\//, '[\\\/\\\\]')) #- Build the config exports.config = - + paths: public: 'public' watched: [ - 'app', - 'vendor', - 'test/app', + 'app', + 'vendor', + 'test/app', 'test/demo' ] - + conventions: ignored: (path) -> _.str.startsWith(sysPath.basename(path), '_') - + sourceMaps: 'absoluteUrl' - + overrides: production: sourceMaps: 'absoluteUrl' - + onCompile: (files) -> + # For some reason, production brunch produces two entries, the first of which is wrong: + # //# sourceMappingURL=public/javascripts/app.js.map + # //# sourceMappingURL=/javascripts/app.js.map + # So we remove the ones that have public in them. + exec = require('child_process').exec + for file in files + exec "perl -pi -e 's/\\/\\/# sourceMappingURL=public.*//g' #{file.path}" + exec c + files: javascripts: defaultExtension: 'coffee' @@ -50,12 +59,12 @@ exports.config = 'app/locale/locale.coffee' 'app/lib/sprites/SpriteBuilder.coffee' # loaded by ThangType ] - + #- Wads. Groups of modules by folder which are loaded as a group when needed. 'javascripts/app/lib.js': regJoin('^app/lib') 'javascripts/app/views/play.js': regJoin('^app/views/play') 'javascripts/app/views/editor.js': regJoin('^app/views/editor') - + #- world.js, used by the worker to generate the world in game 'javascripts/world.js': [ regJoin('^app/lib/world(?!/test)') @@ -72,7 +81,7 @@ exports.config = regJoin('^bower_components/(?!(aether|d3|treema))') 'bower_components/treema/treema-utils.js' ] - + #- Other vendor libraries in separate bunches # Include box2dweb for profiling and IE9 @@ -81,18 +90,18 @@ exports.config = 'javascripts/box2d.js': regJoin('^vendor/scripts/Box2dWeb-2.1.a.3') 'javascripts/lodash.js': regJoin('^bower_components/lodash/dist/lodash.js') 'javascripts/aether.js': regJoin('^bower_components/aether/build/aether.js') - + # Any vendor libraries we don't want the client to load immediately 'javascripts/app/vendor/d3.js': regJoin('^bower_components/d3') 'javascripts/app/vendor/coffeescript.js': 'vendor/scripts/coffeescript.js' 'javascripts/app/vendor/difflib.js': 'vendor/scripts/difflib.js' 'javascripts/app/vendor/diffview.js': 'vendor/scripts/diffview.js' 'javascripts/app/vendor/treema.js': 'bower_components/treema/treema.js' - + #- test, demo libraries 'javascripts/test-app.js': regJoin('^test/app/') 'javascripts/demo-app.js': regJoin('^test/demo/') - + #- More output files are generated at the below order: @@ -117,7 +126,7 @@ exports.config = 'vendor/scripts/async.js' 'vendor/scripts/jquery-ui-1.11.1.js.custom.js' ] - + stylesheets: defaultExtension: 'sass' joinTo: @@ -127,7 +136,7 @@ exports.config = 'app/styles/bootstrap/*' 'vendor/styles/nanoscroller.scss' ] - + templates: defaultExtension: 'jade' joinTo: @@ -172,7 +181,6 @@ exports.config = defn = if path in needHeaders then commonjsHeader else '' return defn - #- Find all .coffee and .jade files in /app dirStack = ['./app'] @@ -197,9 +205,9 @@ for file in coffeeFiles inputFile = file.replace('./app', 'app') outputFile = file.replace('.coffee', '.js').replace('./app', 'javascripts/app') exports.config.files.javascripts.joinTo[outputFile] = inputFile - + numBundles = 0 - + for file in jadeFiles inputFile = file.replace('./app', 'app') outputFile = file.replace('.jade', '.js').replace('./app', 'javascripts/app') @@ -213,4 +221,4 @@ for file in jadeFiles exports.config.files.templates.joinTo[possibleViewFilePath] = inputFile numBundles += 1 -console.log "Got #{coffeeFiles.length} coffee files and #{jadeFiles.length} jade files (bundled #{numBundles} of them together)." \ No newline at end of file +console.log "Got #{coffeeFiles.length} coffee files and #{jadeFiles.length} jade files (bundled #{numBundles} of them together)." From 35f1ed1e824e8d397f1da33240505f0682ea7e68 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Sun, 30 Nov 2014 18:02:45 -0800 Subject: [PATCH 7/7] Implemented George's new level loading view design. --- app/assets/images/level/loading_bar_fill.png | Bin 0 -> 6145 bytes app/assets/images/level/loading_bar_rim.png | Bin 0 -> 2443 bytes app/styles/play/level/loading.sass | 104 ++++++++++++------- app/templates/play/level/level_loading.jade | 24 +++-- app/views/play/level/LevelLoadingView.coffee | 6 +- 5 files changed, 80 insertions(+), 54 deletions(-) create mode 100644 app/assets/images/level/loading_bar_fill.png create mode 100644 app/assets/images/level/loading_bar_rim.png diff --git a/app/assets/images/level/loading_bar_fill.png b/app/assets/images/level/loading_bar_fill.png new file mode 100644 index 0000000000000000000000000000000000000000..456bad0f591ca9bfe782c470b7e1c34bbebd55e1 GIT binary patch literal 6145 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�Tr4dxge-+x z*0=JY8@qfHw{T=d`7p_lJc>)@zM*Nwn(~=`AQufm3|xR+Vtcfhv31V>nEc*}faaDw zzOhbX^Us6mDgtL|@*%Ni25jJzQ!2Hy>1Uy-Fqi5vm$KP$r}cJ&bWtG%f;=Ovvdd}j z)vmW9Ug61ayCp%z5uX%riul6D!qUutsU>3!zh(w3bVYb5QZEQi*G=s)RtNFe@SLy( ze`MmWrg?g}+MH5PJCVgdX7i?=&r`G?-MyVj0cQzS4~4`%&ixqpJb##@ z4$rYHC^q7b1Yp?sC&@`-TWWl=S`fyY&VzdARYwg}HgjWV9WNb^DvGqc>{H&>3nHyh z-ZfJ|`M?$7Q5sI|k0o~bRir6FzrJ}%Tv4uGEU>^SAVrClXoBP>JD=9d4Agxp>`@bcII}OoEN7g#mZ|0EZMKg z^NV3WG{U4rzS?G#%ix;~!#Hk~sXfU-d3T|8hfHCmJ2WQtZf`p6k}L|2>4X){R;+2n zQ)%Z54Y*2zN=MvRRQBwH3j?VM09p(1m^MgYnJA<j_eCiu%S4CjQI;b%*xw1TC*bgLixWkuK(C5pXxbb-L=<-0=~S!uCcZIo3Q=V7 zUn-4{V%PW8sRBE@UK26NcK>pr+MAUuqa^~x+J?LeO`qf3KXDjcC$V-(ju%mU3%0#f z3RzYOr*UUbMmU=X)vx+u&rH73OH?Tm*L)dkyk(rc3Rr=M40SMQ80lEP$)Gnmdz@JA z6&Sf%yi#uyX|BmPF-h`Z>Yhm`)rHZNbCO&%&&>UIRZTwfu}b$}^Or?LLj8Fjd1O(y z{y4Rdi&!!u@3iP7-|LPlGQBVsX;McqVi(_4CpU`gy{~CI(CX}QuiA&oVj->YkE5_A z_J;+ZIG`7P>5Cv97mL32c|pHE{PIAu#^}5CFLMUV>H^5jbL^s15NlT56oSCd?Enl*?ZFH`>Zc0o0s+nyO%}rMy;hK5G3O-;#o-h-OXl5c-@E0i+qrmmG&RLJyrU zG$aS-3sw}Z^EX_^P?js*Nq0{ZQIWF*MTkDmytyVQJ*C8(@-aNRiDE+CVq_y!k7+0KzLWt#G;vhM*{0>kC6-dw$y=rEi}(rU5W9k<zeVh|aK8p$QlZ{Rt0DRGKLix3IF^+HA zObH`Sf`fZA--(_Aq>50nQ{D*y=324Zk3e(IoU_bgtHhGH50$C$q2G9pPB3*xb!~JE zp)NfJ#%^H(o1QZG+BFhQ*@XuH`StB10)9^KW16?$R4O)JPDtC09rqmp&Z}$fE!1g+ zeG?)S|b#Xgq}d2KcB+3{-Ktq4hPq=~V=Y69+X7En_Yj$%Xb&55$c zBiQ`v3v1r$tD;4|r}=Mv!GZa{3Vx=chRkJfO7E$2F#Ve!)emf;7U4ah3uxgbn zC?4_UL-f<;FJiiV;Z`V*5IRfGKTbCqx<41WM{vHEdoeEYSrQbnk)}SSm#7NQmV4?j zo_J{fHDB%7Q#pw6ST%p<8}z&@JMWYri#R42gu$ATXzy9`&P#y{o(M}|Kj7r#^#6bj z+*F&3q}AY`>%0GTgy@-e`s2o!C^KzKLFf<8OI6)z*WeFM;#|?(O_gl3l(fWzq1zi} z#Ha^7j#v57wU%1EXpie_l6eQe2@@Ai119b+WwBkUW<_OWb;oOhJ<&s_!s`jCeIh!r zK&u>f{Bg#x+?oS!lwKQ(QeKqH65O zhDzY3@>Z&EBxb0~9t6irfJ?sT7lhQCY{(!t^-<44^##>C}6dG$<_Y%ixh+GiT6%Y~| z@q?*5-BLpVOwX3=wd;}(%}qL|RvY=b>IEcEgp|Vl`k0FYtFl6%zSO5ns#kFOe2vGm zjpj63$!h@umsAwvQ{rR!!p*yds3H}8Gl!={%F&cb8_;BH?K7Vl@jE|HhMpJ_J+s<- ck4KMHr#Qv1AHq=l`=`8`vbIvCqIK~90P{acasU7T literal 0 HcmV?d00001 diff --git a/app/assets/images/level/loading_bar_rim.png b/app/assets/images/level/loading_bar_rim.png new file mode 100644 index 0000000000000000000000000000000000000000..4e43f3ec77bcd8aa4c6adc80fec7a86d639af136 GIT binary patch literal 2443 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 XX}UQjFC=^Beve!k9`tJ3uD$;SxGdyM literal 0 HcmV?d00001 diff --git a/app/styles/play/level/loading.sass b/app/styles/play/level/loading.sass index 6f0fe1137..5337d40d9 100644 --- a/app/styles/play/level/loading.sass +++ b/app/styles/play/level/loading.sass @@ -9,7 +9,6 @@ background-size: contain #level-loading-view - color: blue width: 100% height: 100% position: absolute @@ -21,60 +20,85 @@ .loading-details position: absolute - top: 20px + top: 86px left: 50% - $WIDTH: 1000px + $WIDTH: 450px width: $WIDTH - min-height: 60px + height: 450px margin-left: (-$WIDTH / 2) z-index: 100 - background-color: rgba(220, 255, 230, 0.6) + background: transparent url(/images/level/code_editor_background.png) no-repeat + background-size: 100% 100% color: darkslategray font-size: 15px - border-radius: 30px - padding: 10px + padding: 80px 80px 40px 80px text-align: center // http://matthewlein.com/ceaser/ Bounce down a bit, then snap up. @include transition(top $UNVEIL_TIME cubic-bezier(0.285, -0.595, 0.670, -0.600)) - - .load-progress - position: absolute - left: 2% - top: 0px - opacity: 0.6 - width: 96% - height: 40px - margin: 10px auto 0 - - .progress - height: 100% - - .progress-bar - width: 1% - height: 100% - transition-duration: 0 - - &.active .progress-bar - transition-duration: 1.2s - - #tip-wrapper - position: relative - z-index: 2 - top: 10px + font-family: 'Open Sans Condensed' .level-loading-goals - margin: 30px auto 10px - width: 400px + text-align: left - .panel-heading - font-size: 24px + .goals-title + font-size: 32px + color: black + font-weight: bold - .list-group-item + li font-size: 20px + color: black - .start-level-button - font-size: 40px - font-variant: small-caps + .progress-or-start-container + position: absolute + bottom: 95px + width: 261px + height: 80px + left: 80px + + .load-progress + width: 100% + height: 36px + margin: 20px auto 0 auto + + .progress + height: 100% + position: relative + background-color: transparent + + .progress-bar + width: 1% + height: 100% + transition-duration: 0 + border-radius: 9px + background: transparent url(/images/level/loading_bar_fill.png) no-repeat + + &.active .progress-bar + transition-duration: 1.2s + + .rim + position: absolute + left: 0 + top: 0 + width: 100% + height: 100% + background: transparent url(/images/level/loading_bar_rim.png) no-repeat + background-size: 100% 100% + + .start-level-button + display: none + width: 100% + margin: 0px auto + font-size: 40px + font-variant: small-caps + + #tip-wrapper + position: absolute + z-index: 2 + bottom: 40px + left: 25px + width: 401px + color: #666 .left-wing, .right-wing width: 100% diff --git a/app/templates/play/level/level_loading.jade b/app/templates/play/level/level_loading.jade index ecae6f30c..794757bd1 100644 --- a/app/templates/play/level/level_loading.jade +++ b/app/templates/play/level/level_loading.jade @@ -4,9 +4,19 @@ .loading-details.loading-container - .load-progress - .progress - .progress-bar.progress-bar-success + .level-loading-goals.secret + .goals-title(data-i18n="play_level.goals") Goals + ul.list-unstyled + + .errors + + .progress-or-start-container + button.start-level-button.btn.btn-lg.btn-success.header-fontneedsclick(data-i18n="play_level.loading_start") Start Level + + .load-progress + .progress + .progress-bar.progress-bar-success + .rim #tip-wrapper strong.tip(data-i18n='play_level.tip_toggle_play') Toggle play/paused with Ctrl+P. @@ -41,11 +51,3 @@ strong.tip.rare span(data-i18n='play_level.tip_harry') Yer a Wizard, span= me.get('name', true) - - .errors - - .panel.panel-default.level-loading-goals.secret - .panel-heading.header-font(data-i18n="play_level.goals") Goals - ul.list-group - - button.start-level-button.btn.btn-lg.btn-success.header-font.secret.needsclick(data-i18n="play_level.loading_start") Start Level diff --git a/app/views/play/level/LevelLoadingView.coffee b/app/views/play/level/LevelLoadingView.coffee index dc9b72e86..cd99c498a 100644 --- a/app/views/play/level/LevelLoadingView.coffee +++ b/app/views/play/level/LevelLoadingView.coffee @@ -44,7 +44,7 @@ module.exports = class LevelLoadingView extends CocoView goalCount = 0 for goalID, goal of @level.get('goals') when (not goal.team or goal.team is e.team) and not goal.hiddenGoal name = utils.i18n goal, 'name' - goalList.append $('
  • ' + name + '
  • ') + goalList.append $('
  • ' + name + '
  • ') ++goalCount if goalCount goalContainer.removeClass('secret') @@ -68,8 +68,8 @@ module.exports = class LevelLoadingView extends CocoView @unveil() else Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'level_loaded', volume: 0.75 # old: loading_ready - @$el.find('.progress').addClass 'active progress-striped' - @$el.find('.start-level-button').removeClass 'secret' + @$el.find('.progress').hide() + @$el.find('.start-level-button').show() startUnveiling: (e) -> @playSound 'menu-button-click'