Implemented placeholders for a bunch of sound triggers.
This commit is contained in:
parent
9b8b30f3c5
commit
8de75024fc
10 changed files with 36 additions and 11 deletions
|
@ -34,6 +34,7 @@ module.exports = class GameMenuModal extends ModalView
|
||||||
@$el.toggleClas
|
@$el.toggleClas
|
||||||
@insertSubView new submenuView @options for submenuView in submenuViews
|
@insertSubView new submenuView @options for submenuView in submenuViews
|
||||||
(if @options.showInventory then @subviews.inventory_view else @subviews.choose_hero_view).$el.addClass 'active'
|
(if @options.showInventory then @subviews.inventory_view else @subviews.choose_hero_view).$el.addClass 'active'
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-open', volume: 1
|
||||||
|
|
||||||
onHidden: ->
|
onHidden: ->
|
||||||
subview.onHidden?() for subviewKey, subview of @subviews
|
subview.onHidden?() for subviewKey, subview of @subviews
|
||||||
|
|
|
@ -14,3 +14,4 @@ module.exports = class GuideView extends CocoView
|
||||||
|
|
||||||
afterRender: ->
|
afterRender: ->
|
||||||
super()
|
super()
|
||||||
|
#Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'guide-open', volume: 1 # no, only when the tab is activated
|
||||||
|
|
|
@ -134,6 +134,7 @@ module.exports = class RootView extends CocoView
|
||||||
d.msRequestFullscreen or
|
d.msRequestFullscreen or
|
||||||
(if d.webkitRequestFullscreen then -> d.webkitRequestFullscreen Element.ALLOW_KEYBOARD_INPUT else null)
|
(if d.webkitRequestFullscreen then -> d.webkitRequestFullscreen Element.ALLOW_KEYBOARD_INPUT else null)
|
||||||
req?.call d
|
req?.call d
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'full-screen-start', volume: 1 if req
|
||||||
else
|
else
|
||||||
nah = document.exitFullscreen or
|
nah = document.exitFullscreen or
|
||||||
document.mozCancelFullScreen or
|
document.mozCancelFullScreen or
|
||||||
|
@ -141,4 +142,5 @@ module.exports = class RootView extends CocoView
|
||||||
document.msExitFullscreen or
|
document.msExitFullscreen or
|
||||||
document.webkitExitFullscreen
|
document.webkitExitFullscreen
|
||||||
nah?.call document
|
nah?.call document
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'full-screen-end', volume: 1 if nah
|
||||||
return
|
return
|
||||||
|
|
|
@ -27,10 +27,9 @@ module.exports = class LevelGoalsView extends CocoView
|
||||||
@mouseEntered = false
|
@mouseEntered = false
|
||||||
@updatePlacement()
|
@updatePlacement()
|
||||||
|
|
||||||
toggleCollapse: (e) ->
|
|
||||||
@$el.toggleClass('expanded').toggleClass('collapsed')
|
|
||||||
|
|
||||||
onNewGoalStates: (e) ->
|
onNewGoalStates: (e) ->
|
||||||
|
firstRun = @previousGoalStatus?
|
||||||
|
@previousGoalStatus ?= {}
|
||||||
@$el.find('.goal-status').addClass 'secret'
|
@$el.find('.goal-status').addClass 'secret'
|
||||||
classToShow = null
|
classToShow = null
|
||||||
classToShow = 'success' if e.overallStatus is 'success'
|
classToShow = 'success' if e.overallStatus is 'success'
|
||||||
|
@ -38,7 +37,6 @@ module.exports = class LevelGoalsView extends CocoView
|
||||||
classToShow ?= 'timed-out' if e.timedOut
|
classToShow ?= 'timed-out' if e.timedOut
|
||||||
classToShow ?= 'incomplete'
|
classToShow ?= 'incomplete'
|
||||||
@$el.find('.goal-status.'+classToShow).removeClass 'secret'
|
@$el.find('.goal-status.'+classToShow).removeClass 'secret'
|
||||||
|
|
||||||
list = $('#primary-goals-list', @$el)
|
list = $('#primary-goals-list', @$el)
|
||||||
list.empty()
|
list.empty()
|
||||||
goals = []
|
goals = []
|
||||||
|
@ -63,6 +61,10 @@ module.exports = class LevelGoalsView extends CocoView
|
||||||
li.prepend($('<i></i>').addClass(stateIconMap[state.status]))
|
li.prepend($('<i></i>').addClass(stateIconMap[state.status]))
|
||||||
list.append(li)
|
list.append(li)
|
||||||
goals.push goal
|
goals.push goal
|
||||||
|
if not firstRun and state.status is 'success' and @previousGoalStatus[goal.id] isnt 'success'
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'goal-success', volume: 1
|
||||||
|
else if not firstRun and state.status is 'incomplete' and @previousGoalStatus[goal.id] is 'success'
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'goal-incomplete-again', volume: 1
|
||||||
@$el.removeClass('secret') if goals.length > 0
|
@$el.removeClass('secret') if goals.length > 0
|
||||||
|
|
||||||
onSurfacePlaybackRestarted: ->
|
onSurfacePlaybackRestarted: ->
|
||||||
|
@ -84,12 +86,13 @@ module.exports = class LevelGoalsView extends CocoView
|
||||||
@updatePlacement()
|
@updatePlacement()
|
||||||
|
|
||||||
updatePlacement: ->
|
updatePlacement: ->
|
||||||
if @playbackEnded or @mouseEntered
|
expand = @playbackEnded or @mouseEntered
|
||||||
# expand
|
return if expand is @expanded
|
||||||
@$el.css('top', -10)
|
sound = if expand then 'goals-expand' else 'goals-collapse'
|
||||||
else
|
top = if expand then -10 else 26 - @$el.outerHeight()
|
||||||
# collapse
|
@$el.css 'top', top
|
||||||
@$el.css('top', 26 - @$el.outerHeight())
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: sound, volume: 1 if @expanded?
|
||||||
|
@expanded = expand
|
||||||
|
|
||||||
onSetLetterbox: (e) ->
|
onSetLetterbox: (e) ->
|
||||||
@$el.toggle not e.on
|
@$el.toggle not e.on
|
||||||
|
|
|
@ -31,6 +31,7 @@ module.exports = class LevelLoadingView extends CocoView
|
||||||
loadingDetails.css 'top', -loadingDetails.outerHeight(true)
|
loadingDetails.css 'top', -loadingDetails.outerHeight(true)
|
||||||
@$el.find('.left-wing').css left: '-100%', backgroundPosition: 'right -400px top 0'
|
@$el.find('.left-wing').css left: '-100%', backgroundPosition: 'right -400px top 0'
|
||||||
@$el.find('.right-wing').css right: '-100%', backgroundPosition: 'left -400px top 0'
|
@$el.find('.right-wing').css right: '-100%', backgroundPosition: 'left -400px top 0'
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'loading-view-unveil', volume: 1
|
||||||
_.delay @onUnveilEnded, duration * 1000
|
_.delay @onUnveilEnded, duration * 1000
|
||||||
|
|
||||||
onUnveilEnded: =>
|
onUnveilEnded: =>
|
||||||
|
|
|
@ -165,6 +165,7 @@ module.exports = class LevelPlaybackView extends CocoView
|
||||||
@realTime = true
|
@realTime = true
|
||||||
@togglePlaybackControls false
|
@togglePlaybackControls false
|
||||||
Backbone.Mediator.publish 'playback:real-time-playback-started', {}
|
Backbone.Mediator.publish 'playback:real-time-playback-started', {}
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'real-time-playback-start', volume: 1
|
||||||
|
|
||||||
onRealTimeMultiplayerCast: (e) ->
|
onRealTimeMultiplayerCast: (e) ->
|
||||||
@realTime = true
|
@realTime = true
|
||||||
|
@ -226,7 +227,9 @@ module.exports = class LevelPlaybackView extends CocoView
|
||||||
@playing = (e ? {}).playing ? true
|
@playing = (e ? {}).playing ? true
|
||||||
button = @$el.find '#play-button'
|
button = @$el.find '#play-button'
|
||||||
ended = button.hasClass 'ended'
|
ended = button.hasClass 'ended'
|
||||||
|
changed = button.hasClass('playing') isnt @playing
|
||||||
button.toggleClass('playing', @playing and not ended).toggleClass('paused', not @playing and not ended)
|
button.toggleClass('playing', @playing and not ended).toggleClass('paused', not @playing and not ended)
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: (if @playing then 'playback-play' else 'playback-pause'), volume: 1
|
||||||
return # don't stripe the bar
|
return # don't stripe the bar
|
||||||
bar = @$el.find '.scrubber .progress'
|
bar = @$el.find '.scrubber .progress'
|
||||||
bar.toggleClass('progress-striped', @playing and not ended).toggleClass('active', @playing and not ended)
|
bar.toggleClass('progress-striped', @playing and not ended).toggleClass('active', @playing and not ended)
|
||||||
|
@ -306,6 +309,7 @@ module.exports = class LevelPlaybackView extends CocoView
|
||||||
return unless @realTime
|
return unless @realTime
|
||||||
@realTime = false
|
@realTime = false
|
||||||
@togglePlaybackControls true
|
@togglePlaybackControls true
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'real-time-playback-end', volume: 1
|
||||||
|
|
||||||
onStopRealTimePlayback: (e) ->
|
onStopRealTimePlayback: (e) ->
|
||||||
Backbone.Mediator.publish 'playback:real-time-playback-ended', {}
|
Backbone.Mediator.publish 'playback:real-time-playback-ended', {}
|
||||||
|
@ -323,14 +327,19 @@ module.exports = class LevelPlaybackView extends CocoView
|
||||||
animate: 'slow'
|
animate: 'slow'
|
||||||
slide: (event, ui) =>
|
slide: (event, ui) =>
|
||||||
return if @shouldIgnore()
|
return if @shouldIgnore()
|
||||||
|
++@slideCount
|
||||||
|
oldRatio = @getScrubRatio()
|
||||||
@scrubTo ui.value / @sliderIncrements
|
@scrubTo ui.value / @sliderIncrements
|
||||||
@slideCount += 1
|
if ratioChange = @getScrubRatio() - oldRatio
|
||||||
|
sound = "playback-scrub-slide-#{if ratioChange > 0 then 'forward' else 'back'}-#{@slideCount % 3}"
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: sound, volume: Math.min 1, Math.abs ratioChange * 50
|
||||||
|
|
||||||
start: (event, ui) =>
|
start: (event, ui) =>
|
||||||
return if @shouldIgnore()
|
return if @shouldIgnore()
|
||||||
@slideCount = 0
|
@slideCount = 0
|
||||||
@wasPlaying = @playing
|
@wasPlaying = @playing
|
||||||
Backbone.Mediator.publish 'level:set-playing', {playing: false}
|
Backbone.Mediator.publish 'level:set-playing', {playing: false}
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'playback-scrub-start', volume: 1
|
||||||
|
|
||||||
stop: (event, ui) =>
|
stop: (event, ui) =>
|
||||||
return if @shouldIgnore()
|
return if @shouldIgnore()
|
||||||
|
@ -341,6 +350,8 @@ module.exports = class LevelPlaybackView extends CocoView
|
||||||
@wasPlaying = false
|
@wasPlaying = false
|
||||||
Backbone.Mediator.publish 'level:set-playing', {playing: false}
|
Backbone.Mediator.publish 'level:set-playing', {playing: false}
|
||||||
@$el.find('.scrubber-handle').effect('bounce', {times: 2})
|
@$el.find('.scrubber-handle').effect('bounce', {times: 2})
|
||||||
|
else
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'playback-scrub-end', volume: 1
|
||||||
)
|
)
|
||||||
|
|
||||||
getScrubRatio: ->
|
getScrubRatio: ->
|
||||||
|
|
|
@ -46,9 +46,11 @@ module.exports = class LevelGuideModal extends ModalView
|
||||||
@$el.find('.nav-tabs li:first').addClass('active')
|
@$el.find('.nav-tabs li:first').addClass('active')
|
||||||
@$el.find('.tab-content .tab-pane:first').addClass('active')
|
@$el.find('.tab-content .tab-pane:first').addClass('active')
|
||||||
@$el.find('.nav-tabs a').click(@clickTab)
|
@$el.find('.nav-tabs a').click(@clickTab)
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'guide-open', volume: 1
|
||||||
|
|
||||||
clickTab: (e) =>
|
clickTab: (e) =>
|
||||||
@$el.find('li.active').removeClass('active')
|
@$el.find('li.active').removeClass('active')
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'guide-tab-switch', volume: 1
|
||||||
|
|
||||||
afterInsert: ->
|
afterInsert: ->
|
||||||
super()
|
super()
|
||||||
|
|
|
@ -89,6 +89,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
|
||||||
onDropdownClick: (e) ->
|
onDropdownClick: (e) ->
|
||||||
return unless @controlsEnabled
|
return unless @controlsEnabled
|
||||||
Backbone.Mediator.publish 'tome:toggle-spell-list', {}
|
Backbone.Mediator.publish 'tome:toggle-spell-list', {}
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'spell-list-open', volume: 1
|
||||||
|
|
||||||
onCodeReload: (e) ->
|
onCodeReload: (e) ->
|
||||||
return unless @controlsEnabled
|
return unless @controlsEnabled
|
||||||
|
|
|
@ -48,6 +48,7 @@ module.exports = class SpellPaletteEntryView extends CocoView
|
||||||
window.element = @$el
|
window.element = @$el
|
||||||
@$el.on 'show.bs.popover', =>
|
@$el.on 'show.bs.popover', =>
|
||||||
Backbone.Mediator.publish 'tome:palette-hovered', thang: @thang, prop: @doc.name, entry: @
|
Backbone.Mediator.publish 'tome:palette-hovered', thang: @thang, prop: @doc.name, entry: @
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'spell-palette-entry-open', volume: 1
|
||||||
|
|
||||||
onMouseEnter: (e) ->
|
onMouseEnter: (e) ->
|
||||||
# Make sure the doc has the updated Thang so it can regenerate its prop value
|
# Make sure the doc has the updated Thang so it can regenerate its prop value
|
||||||
|
@ -71,6 +72,7 @@ module.exports = class SpellPaletteEntryView extends CocoView
|
||||||
x = $('<button type="button" data-dismiss="modal" aria-hidden="true" class="close">×</button>')
|
x = $('<button type="button" data-dismiss="modal" aria-hidden="true" class="close">×</button>')
|
||||||
$('.spell-palette-popover.popover').append x
|
$('.spell-palette-popover.popover').append x
|
||||||
x.on 'click', @onClick
|
x.on 'click', @onClick
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'spell-palette-entry-pin', volume: 1
|
||||||
Backbone.Mediator.publish 'tome:palette-pin-toggled', entry: @, pinned: @popoverPinned
|
Backbone.Mediator.publish 'tome:palette-pin-toggled', entry: @, pinned: @popoverPinned
|
||||||
|
|
||||||
onClick: (e) =>
|
onClick: (e) =>
|
||||||
|
|
|
@ -348,6 +348,7 @@ module.exports = class SpellView extends CocoView
|
||||||
]
|
]
|
||||||
@onCodeChangeMetaHandler = =>
|
@onCodeChangeMetaHandler = =>
|
||||||
return if @eventsSuppressed
|
return if @eventsSuppressed
|
||||||
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'code-change', volume: 0.5
|
||||||
@spell.hasChangedSignificantly @getSource(), @spellThang.aether.raw, (hasChanged) =>
|
@spell.hasChangedSignificantly @getSource(), @spellThang.aether.raw, (hasChanged) =>
|
||||||
if not @spellThang or hasChanged
|
if not @spellThang or hasChanged
|
||||||
callback() for callback in onSignificantChange # Do these first
|
callback() for callback in onSignificantChange # Do these first
|
||||||
|
|
Reference in a new issue