2014-09-19 14:03:38 -04:00
|
|
|
@import "app/styles/mixins"
|
2014-09-30 19:17:54 -04:00
|
|
|
@import "app/styles/bootstrap/variables"
|
2014-09-17 21:56:08 -04:00
|
|
|
|
2014-10-01 21:17:21 -04:00
|
|
|
$mapHeight: 1536
|
2014-09-17 21:56:08 -04:00
|
|
|
$forestMapWidth: 2500
|
2014-10-01 21:17:21 -04:00
|
|
|
$dungeonMapWidth: 2350
|
2014-11-30 17:35:13 -05:00
|
|
|
$forestMapSeaBackground: rgba(113, 186, 208, 1)
|
|
|
|
$forestMapSeaBackgroundTransparent: rgba(113, 186, 208, 0)
|
2014-10-02 17:05:18 -04:00
|
|
|
$dungeonMapCaveBackground: rgba(68, 54, 45, 1)
|
|
|
|
$dungeonMapCaveBackgroundTransparent: rgba(68, 54, 45, 0)
|
2014-09-17 21:56:08 -04:00
|
|
|
$levelDotWidth: 2%
|
2014-10-01 21:17:21 -04:00
|
|
|
$levelDotHeight: $levelDotWidth * $forestMapWidth / $mapHeight
|
2014-09-17 21:56:08 -04:00
|
|
|
$levelDotZ: $levelDotHeight * 0.25
|
|
|
|
$levelDotHoverZ: $levelDotZ * 2
|
|
|
|
$levelDotShadowWidth: 0.8 * $levelDotWidth
|
|
|
|
$levelDotShadowHeight: 0.8 * $levelDotHeight
|
|
|
|
$levelClickRadius: 40px
|
|
|
|
$gameControlSize: 80px
|
2014-09-20 01:15:58 -04:00
|
|
|
$gameControlMargin: 30px
|
2014-09-17 21:56:08 -04:00
|
|
|
|
2014-09-19 14:03:38 -04:00
|
|
|
+keyframes(levelStartedPulse)
|
|
|
|
from
|
|
|
|
@include box-shadow(0px 0px 4px #333)
|
|
|
|
margin-bottom: -$levelDotHeight / 3 + $levelDotZ
|
|
|
|
50%
|
|
|
|
@include box-shadow(0px 0px 22px skyblue)
|
|
|
|
margin-bottom: -$levelDotHeight / 3 + ($levelDotHoverZ + $levelDotZ) / 2
|
|
|
|
to
|
|
|
|
@include box-shadow(0px 0px 4px #333)
|
|
|
|
margin-bottom: -$levelDotHeight / 3 + $levelDotZ
|
|
|
|
|
2014-09-17 21:56:08 -04:00
|
|
|
#world-map-view
|
|
|
|
width: 100%
|
|
|
|
height: 100%
|
2014-10-02 17:05:18 -04:00
|
|
|
position: absolute
|
2014-10-01 21:17:21 -04:00
|
|
|
|
2014-11-30 17:35:13 -05:00
|
|
|
.gradient
|
|
|
|
position: absolute
|
|
|
|
z-index: 0
|
|
|
|
|
|
|
|
&.horizontal-gradient
|
|
|
|
left: 0
|
|
|
|
right: 0
|
|
|
|
height: 3%
|
|
|
|
|
|
|
|
&.vertical-gradient
|
|
|
|
top: 0
|
|
|
|
bottom: 0
|
|
|
|
width: 3%
|
|
|
|
|
|
|
|
&.top-gradient
|
|
|
|
top: 0
|
|
|
|
|
|
|
|
&.right-gradient
|
|
|
|
right: 0
|
|
|
|
|
|
|
|
&.bottom-gradient
|
|
|
|
bottom: 0
|
|
|
|
|
|
|
|
&.left-gradient
|
|
|
|
left: 0
|
|
|
|
|
2014-10-01 21:17:21 -04:00
|
|
|
&.forest
|
|
|
|
background-color: $forestMapSeaBackground
|
|
|
|
|
2014-11-30 17:35:13 -05:00
|
|
|
.top-gradient
|
|
|
|
background: linear-gradient(to bottom, $forestMapSeaBackground 0%, $forestMapSeaBackgroundTransparent 100%)
|
|
|
|
|
|
|
|
.right-gradient
|
|
|
|
background: linear-gradient(to left, $forestMapSeaBackground 0%, $forestMapSeaBackgroundTransparent 100%)
|
|
|
|
|
|
|
|
.bottom-gradient
|
|
|
|
background: linear-gradient(to top, $forestMapSeaBackground 0%, $forestMapSeaBackgroundTransparent 100%)
|
|
|
|
|
|
|
|
.left-gradient
|
|
|
|
background: linear-gradient(to right, $forestMapSeaBackground 0%, $forestMapSeaBackgroundTransparent 100%)
|
|
|
|
|
2014-10-01 21:17:21 -04:00
|
|
|
&.dungeon
|
|
|
|
background-color: $dungeonMapCaveBackground
|
2014-09-17 21:56:08 -04:00
|
|
|
|
2014-11-30 17:35:13 -05:00
|
|
|
.top-gradient
|
|
|
|
background: linear-gradient(to bottom, $dungeonMapCaveBackground 0%, $dungeonMapCaveBackgroundTransparent 100%)
|
|
|
|
|
|
|
|
.right-gradient
|
|
|
|
background: linear-gradient(to left, $dungeonMapCaveBackground 0%, $dungeonMapCaveBackgroundTransparent 100%)
|
|
|
|
|
|
|
|
.bottom-gradient
|
|
|
|
background: linear-gradient(to top, $dungeonMapCaveBackground 0%, $dungeonMapCaveBackgroundTransparent 100%)
|
|
|
|
|
|
|
|
.left-gradient
|
|
|
|
background: linear-gradient(to right, $dungeonMapCaveBackground 0%, $dungeonMapCaveBackgroundTransparent 100%)
|
2014-10-02 17:05:18 -04:00
|
|
|
|
2014-09-17 21:56:08 -04:00
|
|
|
.map
|
|
|
|
position: relative
|
|
|
|
|
|
|
|
.map-background
|
|
|
|
width: 100%
|
|
|
|
height: 100%
|
|
|
|
|
|
|
|
.level, .level-shadow
|
|
|
|
position: absolute
|
|
|
|
border-radius: 100%
|
2014-10-02 01:02:52 -04:00
|
|
|
-webkit-transform: scaleY(0.75)
|
2014-09-17 21:56:08 -04:00
|
|
|
transform: scaleY(0.75)
|
|
|
|
|
|
|
|
.level
|
|
|
|
z-index: 2
|
|
|
|
width: $levelDotWidth
|
|
|
|
height: $levelDotHeight
|
|
|
|
margin-left: -0.5 * $levelDotWidth
|
|
|
|
margin-bottom: -$levelDotHeight / 3 + $levelDotZ
|
|
|
|
border: 2px groove white
|
|
|
|
@include transition(margin-bottom 0.5s ease)
|
|
|
|
|
2014-09-26 05:28:54 -04:00
|
|
|
&.disabled, &.locked
|
|
|
|
background-image: url(/images/pages/game-menu/lock.png)
|
|
|
|
background-size: 75%
|
|
|
|
background-repeat: no-repeat
|
|
|
|
background-position: 50% 50%
|
2014-09-17 21:56:08 -04:00
|
|
|
opacity: 0.7
|
|
|
|
|
2014-09-26 05:28:54 -04:00
|
|
|
a
|
|
|
|
cursor: default
|
|
|
|
|
2014-09-19 14:03:38 -04:00
|
|
|
&.next
|
2014-09-17 21:56:08 -04:00
|
|
|
width: 2 * $levelDotWidth
|
|
|
|
height: 2 * $levelDotHeight
|
|
|
|
margin-left: -0.5 * 2 * $levelDotWidth
|
|
|
|
margin-bottom: -2 * $levelDotHeight / 3 + 2 * $levelDotZ
|
|
|
|
|
2014-09-19 14:03:38 -04:00
|
|
|
&.started, &.next
|
|
|
|
border: 3px solid lightgreen
|
|
|
|
@include box-shadow(0px 0px 35px skyblue)
|
|
|
|
|
|
|
|
// Would be cool, but kills performance, since we have to re-render all the time.
|
|
|
|
//&:not(:hover)
|
|
|
|
// -webkit-animation-name: levelStartedPulse
|
|
|
|
// -webkit-animation-duration: 3s
|
|
|
|
// -webkit-animation-iteration-count: infinite
|
|
|
|
|
|
|
|
&.complete
|
|
|
|
border: 3px solid gold
|
|
|
|
@include box-shadow(0px 0px 35px skyblue)
|
2014-12-07 16:28:32 -05:00
|
|
|
|
|
|
|
img.banner
|
|
|
|
position: absolute
|
|
|
|
bottom: 38%
|
|
|
|
left: -50%
|
|
|
|
width: 200%
|
|
|
|
pointer-events: none
|
|
|
|
|
|
|
|
img.star
|
|
|
|
width: 100%
|
|
|
|
bottom: 7%
|
|
|
|
position: absolute
|
|
|
|
pointer-events: none
|
|
|
|
|
|
|
|
.glyphicon-star
|
|
|
|
position: absolute
|
|
|
|
color: lightblue
|
|
|
|
font-size: 21px
|
|
|
|
left: 1.5px
|
|
|
|
|
|
|
|
&.started .glyphicon-star
|
|
|
|
left: 0.5px
|
|
|
|
|
2014-09-19 14:03:38 -04:00
|
|
|
|
2014-09-17 21:56:08 -04:00
|
|
|
.level-shadow
|
|
|
|
z-index: 1
|
|
|
|
width: $levelDotShadowWidth
|
|
|
|
height: $levelDotShadowHeight
|
|
|
|
margin-left: -0.5 * $levelDotShadowWidth
|
|
|
|
margin-bottom: -$levelDotShadowHeight / 3
|
|
|
|
background-color: black
|
2014-09-19 14:03:38 -04:00
|
|
|
@include box-shadow(0px 0px 10px black)
|
2014-09-17 21:56:08 -04:00
|
|
|
@include opacity(0.75)
|
|
|
|
|
2014-09-19 14:03:38 -04:00
|
|
|
&.next
|
2014-09-17 21:56:08 -04:00
|
|
|
width: 2 * $levelDotShadowWidth
|
|
|
|
height: 2 * $levelDotShadowHeight
|
|
|
|
margin-left: -0.5 * 2 * $levelDotShadowWidth
|
|
|
|
margin-bottom: -2 * $levelDotShadowHeight / 3
|
|
|
|
|
|
|
|
.level:hover
|
2014-12-01 20:12:00 -05:00
|
|
|
// TODO: This rotate stops Firefox from flickering, but also disables the scaleY(0.75)
|
|
|
|
// TODO: The dot looks like it's jumping.
|
|
|
|
// TODO: -moz-transform: scaleY(0.75) didn't do anything
|
|
|
|
// TODO: Does not break Chrome's oval.
|
|
|
|
-moz-transform: rotate(0)
|
2014-09-17 21:56:08 -04:00
|
|
|
margin-bottom: -$levelDotHeight / 3 + $levelDotHoverZ
|
2014-09-19 14:03:38 -04:00
|
|
|
@include box-shadow(0px 0px 35px skyblue)
|
|
|
|
|
|
|
|
&.next
|
|
|
|
margin-bottom: -2 * $levelDotHeight / 3 + 2 * $levelDotHoverZ
|
2014-09-17 21:56:08 -04:00
|
|
|
|
|
|
|
.level
|
|
|
|
a
|
|
|
|
display: block
|
|
|
|
padding: $levelClickRadius
|
|
|
|
margin-left: -0.5 * $levelClickRadius
|
|
|
|
margin-top: -0.5 * $levelClickRadius
|
|
|
|
border-radius: $levelClickRadius
|
|
|
|
|
2014-09-19 14:03:38 -04:00
|
|
|
&.next a
|
2014-09-17 21:56:08 -04:00
|
|
|
padding: 2 * $levelClickRadius
|
|
|
|
margin-left: 2 * -0.5 * $levelClickRadius
|
|
|
|
margin-top: 2 * -0.5 * $levelClickRadius
|
|
|
|
border-radius: 2 * $levelClickRadius
|
|
|
|
|
2014-11-30 17:00:29 -05:00
|
|
|
.tooltip
|
|
|
|
z-index: 2
|
|
|
|
|
2014-09-17 21:56:08 -04:00
|
|
|
.level-info-container
|
|
|
|
display: none
|
|
|
|
position: absolute
|
|
|
|
z-index: 3
|
2014-09-23 22:12:05 -04:00
|
|
|
padding: 10px
|
2014-09-17 21:56:08 -04:00
|
|
|
border-width: 15px
|
2014-10-03 18:24:40 -04:00
|
|
|
// Using modernizr-mixin for compat detection
|
|
|
|
@include yep(borderimage)
|
2014-12-07 18:51:32 -05:00
|
|
|
border-style: solid
|
2014-10-03 18:24:40 -04:00
|
|
|
border-image: url(/images/level/popover_background.png) 18 fill round
|
|
|
|
@include nope(borderimage)
|
|
|
|
background-color: rgb(247, 242, 218)
|
2014-09-17 21:56:08 -04:00
|
|
|
|
|
|
|
.level-info.complete h3:after
|
|
|
|
content: " - Complete!"
|
|
|
|
color: green
|
|
|
|
|
|
|
|
.level-info.started h3:after
|
|
|
|
content: " - Started"
|
|
|
|
color: desaturate(green, 50%)
|
|
|
|
|
|
|
|
.level-info
|
|
|
|
h3
|
|
|
|
margin-top: 0
|
|
|
|
margin-bottom: 0px
|
|
|
|
|
|
|
|
.level-description
|
|
|
|
color: black
|
|
|
|
text-shadow: 0 1px 0 white
|
|
|
|
|
|
|
|
.campaign-label
|
|
|
|
text-shadow: 0 1px 0 white
|
2014-09-23 22:12:05 -04:00
|
|
|
|
|
|
|
.start-level
|
|
|
|
display: block
|
|
|
|
margin: 10px auto 0 auto
|
|
|
|
width: 200px
|
2014-11-12 19:26:30 -05:00
|
|
|
|
|
|
|
.campaign-switch
|
|
|
|
color: purple
|
|
|
|
position: absolute
|
|
|
|
z-index: 1
|
|
|
|
font-size: 2vw
|
|
|
|
text-shadow: 0 0 0.3vw white, 0 0 0.3vw white
|
|
|
|
|
2014-12-05 18:44:49 -05:00
|
|
|
&:hover
|
2014-11-12 19:26:30 -05:00
|
|
|
text-decoration: none
|
|
|
|
|
|
|
|
&#forest-link
|
|
|
|
left: 94.5%
|
|
|
|
top: 7%
|
|
|
|
transform: rotate(-35deg)
|
|
|
|
|
|
|
|
&#dungeon-link
|
2014-12-05 18:44:49 -05:00
|
|
|
left: 9%
|
|
|
|
top: 54.5%
|
2014-11-12 19:26:30 -05:00
|
|
|
transform: rotate(180deg)
|
2014-12-05 18:44:49 -05:00
|
|
|
color: fuchsia
|
2014-09-17 21:56:08 -04:00
|
|
|
|
|
|
|
.game-controls
|
|
|
|
position: absolute
|
|
|
|
right: 1%
|
|
|
|
bottom: 1%
|
2014-09-18 21:25:33 -04:00
|
|
|
z-index: 3
|
2014-09-17 21:56:08 -04:00
|
|
|
|
2014-09-25 18:58:25 -04:00
|
|
|
.btn
|
2014-09-17 21:56:08 -04:00
|
|
|
&:not(:first-child)
|
|
|
|
margin-left: $gameControlMargin
|
|
|
|
width: $gameControlSize
|
|
|
|
height: $gameControlSize
|
2014-10-29 12:47:00 -04:00
|
|
|
|
2014-09-17 21:56:08 -04:00
|
|
|
background: url(/images/pages/play/menu_icons.png) no-repeat
|
2014-10-29 12:47:00 -04:00
|
|
|
|
|
|
|
position: relative
|
|
|
|
img
|
|
|
|
position: absolute
|
|
|
|
left: 0
|
|
|
|
top: 0
|
|
|
|
width: 100%
|
|
|
|
height: 100%
|
|
|
|
|
2014-09-17 21:56:08 -04:00
|
|
|
background-size: cover
|
|
|
|
@include transition(0.5s ease)
|
2014-09-19 14:03:38 -04:00
|
|
|
@include box-shadow(2px 2px 4px black)
|
2014-09-17 21:56:08 -04:00
|
|
|
border: 0
|
|
|
|
border-radius: 12px
|
2014-10-03 18:39:33 -04:00
|
|
|
// IE9 shows a blank white button with this MS gradient filter in place
|
|
|
|
filter: none
|
2014-09-17 21:56:08 -04:00
|
|
|
|
|
|
|
&:hover
|
2014-09-19 14:03:38 -04:00
|
|
|
@include box-shadow(0 0 12px #bbf)
|
2014-09-17 21:56:08 -04:00
|
|
|
|
|
|
|
&:active
|
2014-09-19 14:03:38 -04:00
|
|
|
@include box-shadow(0 0 20px white)
|
2014-09-17 21:56:08 -04:00
|
|
|
|
|
|
|
&.heroes
|
2014-10-03 19:02:50 -04:00
|
|
|
background-position: (-1 * $gameControlSize) 0px
|
2014-09-17 21:56:08 -04:00
|
|
|
&.achievements
|
2014-10-03 19:02:50 -04:00
|
|
|
background-position: (-2 * $gameControlSize) 0px
|
2014-09-17 21:56:08 -04:00
|
|
|
&.account
|
2014-10-03 19:02:50 -04:00
|
|
|
background-position: (-3 * $gameControlSize) 0px
|
2014-09-17 21:56:08 -04:00
|
|
|
&.settings
|
2014-10-03 19:02:50 -04:00
|
|
|
background-position: (-4 * $gameControlSize) 0px
|
2014-11-12 20:19:56 -05:00
|
|
|
&.gems
|
|
|
|
background-position: (-5 * $gameControlSize) 0px
|
2014-09-20 01:15:58 -04:00
|
|
|
|
|
|
|
.tooltip
|
|
|
|
font-size: 24px
|
2014-09-25 18:32:33 -04:00
|
|
|
|
2014-12-07 21:05:12 -05:00
|
|
|
.tooltip-arrow
|
|
|
|
display: none
|
|
|
|
|
2014-09-25 18:58:25 -04:00
|
|
|
.user-status
|
|
|
|
position: absolute
|
2014-12-07 19:55:08 -05:00
|
|
|
bottom: 16px
|
|
|
|
left: 8px
|
2014-09-25 18:58:25 -04:00
|
|
|
text-align: center
|
|
|
|
font-size: 24px
|
|
|
|
color: white
|
2014-12-07 19:55:08 -05:00
|
|
|
text-shadow: 0px 2px 1px black, 0px -2px 1px black, -2px 0px 1px black, 2px 0px 1px black
|
|
|
|
height: 32px
|
|
|
|
line-height: 32px
|
2014-09-25 18:58:25 -04:00
|
|
|
|
2014-12-07 19:55:08 -05:00
|
|
|
.user-status-line
|
|
|
|
position: relative
|
|
|
|
|
|
|
|
button.btn.btn-illustrated
|
|
|
|
margin-left: 10px
|
|
|
|
min-width: 90px
|
|
|
|
height: 32px
|
|
|
|
color: white
|
|
|
|
|
|
|
|
.gem, .player-level-icon, .player-hero-icon
|
|
|
|
position: absolute
|
|
|
|
top: 1px
|
|
|
|
|
|
|
|
#gems-count
|
|
|
|
margin-left: 40px
|
|
|
|
|
|
|
|
.player-level
|
|
|
|
margin-left: 34px
|
|
|
|
|
|
|
|
.player-name
|
|
|
|
margin-left: 45px
|
|
|
|
|
|
|
|
$spriteSheetSize: 30px
|
|
|
|
|
|
|
|
.player-level-icon, .player-hero-icon
|
|
|
|
background: transparent url(/images/pages/play/play-spritesheet.png)
|
|
|
|
background-size: cover
|
|
|
|
background-position: (-2 * $spriteSheetSize) 0
|
|
|
|
display: inline-block
|
|
|
|
width: 30px
|
|
|
|
height: 30px
|
|
|
|
margin: 0px 2px
|
|
|
|
|
|
|
|
.player-hero-icon
|
|
|
|
margin-left: 10px
|
|
|
|
background-position: (-4 * $spriteSheetSize) 0
|
|
|
|
|
|
|
|
&.knight
|
|
|
|
background-position: (-5 * $spriteSheetSize) 0
|
|
|
|
&.librarian
|
|
|
|
background-position: (-6 * $spriteSheetSize) 0
|
|
|
|
&.ninja
|
|
|
|
background-position: (-7 * $spriteSheetSize) 0
|
|
|
|
&.potion-master
|
|
|
|
background-position: (-8 * $spriteSheetSize) 0
|
|
|
|
&.samurai
|
|
|
|
background-position: (-9 * $spriteSheetSize) 0
|
|
|
|
&.trapper
|
|
|
|
background-position: (-10 * $spriteSheetSize) 0
|
|
|
|
&.forest-archer
|
|
|
|
background-position: (-11 * $spriteSheetSize) 0
|
|
|
|
&.sorcerer
|
|
|
|
background-position: (-12 * $spriteSheetSize) 0
|
|
|
|
|
2014-10-06 13:17:40 -04:00
|
|
|
|
|
|
|
#volume-button
|
|
|
|
position: absolute
|
|
|
|
left: 1%
|
|
|
|
top: 1%
|
|
|
|
padding: 3px 8px
|
|
|
|
@include opacity(0.75)
|
|
|
|
|
|
|
|
&:hover
|
|
|
|
@include opacity(1.0)
|
|
|
|
|
|
|
|
.glyphicon
|
|
|
|
display: none
|
|
|
|
font-size: 32px
|
|
|
|
|
|
|
|
&.vol-up .glyphicon.glyphicon-volume-up
|
|
|
|
display: inline-block
|
|
|
|
|
|
|
|
&.vol-off .glyphicon.glyphicon-volume-off
|
|
|
|
display: inline-block
|
|
|
|
@include opacity(0.50)
|
|
|
|
&:hover
|
|
|
|
@include opacity(0.75)
|
|
|
|
|
|
|
|
&.vol-down .glyphicon.glyphicon-volume-down
|
|
|
|
display: inline-block
|
2014-10-20 16:57:32 -04:00
|
|
|
|
2014-12-03 14:19:10 -05:00
|
|
|
#campaign-status
|
|
|
|
position: absolute
|
|
|
|
left: 0
|
|
|
|
top: 15px
|
|
|
|
width: 100%
|
|
|
|
margin: 0
|
|
|
|
text-align: center
|
|
|
|
color: rgb(254,188,68)
|
|
|
|
font-size: 30px
|
|
|
|
text-shadow: black 2px 2px 0, black -2px -2px 0, black 2px -2px 0, black -2px 2px 0, black 2px 0px 0, black 0px -2px 0, black -2px 0px 0, black 0px 2px 0
|
|
|
|
|
|
|
|
|
2014-10-20 16:57:32 -04:00
|
|
|
body:not(.ipad) #world-map-view
|
|
|
|
.level-info-container
|
|
|
|
pointer-events: none
|
2014-10-25 19:26:03 -04:00
|
|
|
|
2014-11-22 21:45:11 -05:00
|
|
|
|
|
|
|
|
2014-11-02 17:51:01 -05:00
|
|
|
body.ipad #world-map-view
|
|
|
|
// iPad only supports up to Kithgard Gates for now.
|
|
|
|
.campaign-switch
|
|
|
|
display: none
|
2014-11-02 21:36:43 -05:00
|
|
|
|
|
|
|
.old-levels
|
|
|
|
display: none
|