mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-24 08:08:15 -05:00
41 lines
1.3 KiB
CoffeeScript
41 lines
1.3 KiB
CoffeeScript
ScriptModule = require './ScriptModule'
|
|
|
|
module.exports = class PlaybackScriptModule extends ScriptModule
|
|
@neededFor: (noteGroup) ->
|
|
return noteGroup.playback?
|
|
|
|
startNotes: ->
|
|
notes = []
|
|
notes.push(@playingNote()) if @noteGroup.playback.playing?
|
|
notes.push(@scrubNote()) if @noteGroup.playback.scrub?
|
|
return notes
|
|
|
|
endNotes: ->
|
|
notes = []
|
|
# TODO: Want scripts to end where the scrub should go, but this doesn't work
|
|
# when scripts go somewhere then do something else. Figure out a different technique?
|
|
# notes.push(@scrubNote(true)) if @noteGroup.playback.scrub?
|
|
return notes
|
|
|
|
skipNotes: ->
|
|
notes = []
|
|
notes.push(@playingNote()) if @noteGroup.playback.playing?
|
|
notes.push(@scrubNote(true)) if @noteGroup.playback.scrub?
|
|
return notes
|
|
|
|
playingNote: ->
|
|
note =
|
|
channel: 'level:set-playing'
|
|
event: {playing: @noteGroup.playback.playing}
|
|
return note
|
|
|
|
scrubNote: (instant=false) ->
|
|
scrub = @noteGroup.playback.scrub
|
|
note =
|
|
channel: 'level:set-time'
|
|
event:
|
|
frameOffset: scrub.frameOffset or 2
|
|
scrubDuration: if instant then 0 else scrub.duration
|
|
note.event.time = scrub.toTime if scrub.toTime?
|
|
note.event.ratio = scrub.toRatio if scrub.toRatio?
|
|
return note
|