Implemented placeholders for a bunch of sound triggers.

This commit is contained in:
Nick Winter 2014-09-05 12:39:30 -07:00
parent 9b8b30f3c5
commit 8de75024fc
10 changed files with 36 additions and 11 deletions

View file

@ -34,6 +34,7 @@ module.exports = class GameMenuModal extends ModalView
@$el.toggleClas
@insertSubView new submenuView @options for submenuView in submenuViews
(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: ->
subview.onHidden?() for subviewKey, subview of @subviews

View file

@ -14,3 +14,4 @@ module.exports = class GuideView extends CocoView
afterRender: ->
super()
#Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'guide-open', volume: 1 # no, only when the tab is activated

View file

@ -134,6 +134,7 @@ module.exports = class RootView extends CocoView
d.msRequestFullscreen or
(if d.webkitRequestFullscreen then -> d.webkitRequestFullscreen Element.ALLOW_KEYBOARD_INPUT else null)
req?.call d
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'full-screen-start', volume: 1 if req
else
nah = document.exitFullscreen or
document.mozCancelFullScreen or
@ -141,4 +142,5 @@ module.exports = class RootView extends CocoView
document.msExitFullscreen or
document.webkitExitFullscreen
nah?.call document
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'full-screen-end', volume: 1 if nah
return

View file

@ -27,10 +27,9 @@ module.exports = class LevelGoalsView extends CocoView
@mouseEntered = false
@updatePlacement()
toggleCollapse: (e) ->
@$el.toggleClass('expanded').toggleClass('collapsed')
onNewGoalStates: (e) ->
firstRun = @previousGoalStatus?
@previousGoalStatus ?= {}
@$el.find('.goal-status').addClass 'secret'
classToShow = null
classToShow = 'success' if e.overallStatus is 'success'
@ -38,7 +37,6 @@ module.exports = class LevelGoalsView extends CocoView
classToShow ?= 'timed-out' if e.timedOut
classToShow ?= 'incomplete'
@$el.find('.goal-status.'+classToShow).removeClass 'secret'
list = $('#primary-goals-list', @$el)
list.empty()
goals = []
@ -63,6 +61,10 @@ module.exports = class LevelGoalsView extends CocoView
li.prepend($('<i></i>').addClass(stateIconMap[state.status]))
list.append(li)
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
onSurfacePlaybackRestarted: ->
@ -84,12 +86,13 @@ module.exports = class LevelGoalsView extends CocoView
@updatePlacement()
updatePlacement: ->
if @playbackEnded or @mouseEntered
# expand
@$el.css('top', -10)
else
# collapse
@$el.css('top', 26 - @$el.outerHeight())
expand = @playbackEnded or @mouseEntered
return if expand is @expanded
sound = if expand then 'goals-expand' else 'goals-collapse'
top = if expand then -10 else 26 - @$el.outerHeight()
@$el.css 'top', top
Backbone.Mediator.publish 'audio-player:play-sound', trigger: sound, volume: 1 if @expanded?
@expanded = expand
onSetLetterbox: (e) ->
@$el.toggle not e.on

View file

@ -31,6 +31,7 @@ module.exports = class LevelLoadingView extends CocoView
loadingDetails.css 'top', -loadingDetails.outerHeight(true)
@$el.find('.left-wing').css left: '-100%', backgroundPosition: 'right -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
onUnveilEnded: =>

View file

@ -165,6 +165,7 @@ module.exports = class LevelPlaybackView extends CocoView
@realTime = true
@togglePlaybackControls false
Backbone.Mediator.publish 'playback:real-time-playback-started', {}
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'real-time-playback-start', volume: 1
onRealTimeMultiplayerCast: (e) ->
@realTime = true
@ -226,7 +227,9 @@ module.exports = class LevelPlaybackView extends CocoView
@playing = (e ? {}).playing ? true
button = @$el.find '#play-button'
ended = button.hasClass 'ended'
changed = button.hasClass('playing') isnt @playing
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
bar = @$el.find '.scrubber .progress'
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
@realTime = false
@togglePlaybackControls true
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'real-time-playback-end', volume: 1
onStopRealTimePlayback: (e) ->
Backbone.Mediator.publish 'playback:real-time-playback-ended', {}
@ -323,14 +327,19 @@ module.exports = class LevelPlaybackView extends CocoView
animate: 'slow'
slide: (event, ui) =>
return if @shouldIgnore()
++@slideCount
oldRatio = @getScrubRatio()
@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) =>
return if @shouldIgnore()
@slideCount = 0
@wasPlaying = @playing
Backbone.Mediator.publish 'level:set-playing', {playing: false}
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'playback-scrub-start', volume: 1
stop: (event, ui) =>
return if @shouldIgnore()
@ -341,6 +350,8 @@ module.exports = class LevelPlaybackView extends CocoView
@wasPlaying = false
Backbone.Mediator.publish 'level:set-playing', {playing: false}
@$el.find('.scrubber-handle').effect('bounce', {times: 2})
else
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'playback-scrub-end', volume: 1
)
getScrubRatio: ->

View file

@ -46,9 +46,11 @@ module.exports = class LevelGuideModal extends ModalView
@$el.find('.nav-tabs li:first').addClass('active')
@$el.find('.tab-content .tab-pane:first').addClass('active')
@$el.find('.nav-tabs a').click(@clickTab)
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'guide-open', volume: 1
clickTab: (e) =>
@$el.find('li.active').removeClass('active')
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'guide-tab-switch', volume: 1
afterInsert: ->
super()

View file

@ -89,6 +89,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
onDropdownClick: (e) ->
return unless @controlsEnabled
Backbone.Mediator.publish 'tome:toggle-spell-list', {}
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'spell-list-open', volume: 1
onCodeReload: (e) ->
return unless @controlsEnabled

View file

@ -48,6 +48,7 @@ module.exports = class SpellPaletteEntryView extends CocoView
window.element = @$el
@$el.on 'show.bs.popover', =>
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) ->
# 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>')
$('.spell-palette-popover.popover').append x
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
onClick: (e) =>

View file

@ -348,6 +348,7 @@ module.exports = class SpellView extends CocoView
]
@onCodeChangeMetaHandler = =>
return if @eventsSuppressed
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'code-change', volume: 0.5
@spell.hasChangedSignificantly @getSource(), @spellThang.aether.raw, (hasChanged) =>
if not @spellThang or hasChanged
callback() for callback in onSignificantChange # Do these first