Using language choice from ChooseHeroView.

This commit is contained in:
Nick Winter 2014-09-20 16:04:13 -07:00
parent ae14bd1ced
commit 9f6e1e081c
4 changed files with 28 additions and 10 deletions

View file

@ -38,8 +38,8 @@
.form-group.select-group
label.control-label(for="option-code-language", data-i18n="choose_hero.programming_language") Programming Language
select#option-code-language(name="code-language")
for option in languages
option(value=option.id, selected=(me.get('aceConfig', true).language === option.id))= option.name
for option in codeLanguages
option(value=option.id, selected=codeLanguage === option.id)= option.name
span.help-block(data-i18n="choose_hero.programming_language_description") Which programming language do you want to use?
if level

View file

@ -13,6 +13,7 @@ module.exports = class ChooseHeroView extends CocoView
events:
'click #restart-level-confirm-button': -> Backbone.Mediator.publish 'level:restart', {}
'slide.bs.carousel #hero-carousel': 'onHeroChanged'
'change #option-code-language': 'onCodeLanguageChanged'
shortcuts:
'left': -> @$el.find('#hero-carousel').carousel('prev')
@ -36,7 +37,7 @@ module.exports = class ChooseHeroView extends CocoView
context = super(context)
context.heroes = @heroes.models
context.level = @options.level
context.languages = [
context.codeLanguages = [
{id: 'python', name: 'Python'}
{id: 'javascript', name: 'JavaScript'}
{id: 'coffeescript', name: 'CoffeeScript'}
@ -44,6 +45,7 @@ module.exports = class ChooseHeroView extends CocoView
{id: 'lua', name: 'Lua (Experimental)'}
{id: 'io', name: 'Io (Experimental)'}
]
context.codeLanguage = @codeLanguage = @options.session.get('codeLanguage') ? me.get('aceConfig')?.language ? 'python'
context.heroInfo = temporaryHeroInfo
context
@ -110,7 +112,9 @@ module.exports = class ChooseHeroView extends CocoView
onHidden: ->
onCodeLanguageChanged: (e) ->
@codeLanguage = @$el.find('#option-code-language').val()
@codeLanguageChanged = true
temporaryHeroInfo =
captain:

View file

@ -43,11 +43,11 @@ module.exports = class GameMenuModal extends ModalView
onHidden: ->
super()
subview.onHidden?() for subviewKey, subview of @subviews
patchingMe = @updateHeroConfig()
me.patch() unless patchingMe # Might need to patch for options menu
patchingMe = @updateConfig()
me.patch() unless patchingMe # Might need to patch for options menu, too
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-close', volume: 1
updateHeroConfig: ->
updateConfig: ->
sessionHeroConfig = @options.session.get('heroConfig') ? {}
lastHeroConfig = me.get('heroConfig') ? {}
thangType = @subviews.choose_hero_view.selectedHero.get 'original'
@ -59,6 +59,13 @@ module.exports = class GameMenuModal extends ModalView
patchMe ||= not _.isEqual val, lastHeroConfig[key]
sessionHeroConfig[key] = val
lastHeroConfig[key] = val
if (codeLanguage = @subviews.choose_hero_view.codeLanguage) and @subviews.choose_hero_view.codeLanguageChanged
patchSession ||= codeLanguage isnt @options.session.get('codeLanguage')
patchMe ||= codeLanguage isnt me.get('aceConfig')?.language
@options.session.set 'codeLanguage', codeLanguage
aceConfig = me.get('aceConfig', true) ? {}
aceConfig.language = codeLanguage
me.set 'aceConfig', aceConfig
if patchSession
@options.session.set 'heroConfig', sessionHeroConfig
@options.session.patch success: ->

View file

@ -46,11 +46,11 @@ module.exports = class PlayLevelModal extends ModalView
onHidden: ->
unless @navigatingToPlay
skipSessionSave = not @options.session.get('levelName')? # Has to have been already started.
@updateHeroConfig null, skipSessionSave
@updateConfig null, skipSessionSave
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-close', volume: 1
super()
updateHeroConfig: (callback, skipSessionSave) ->
updateConfig: (callback, skipSessionSave) ->
sessionHeroConfig = @options.session.get('heroConfig') ? {}
lastHeroConfig = me.get('heroConfig') ? {}
thangType = @subviews.choose_hero_view.selectedHero.get 'original'
@ -62,6 +62,13 @@ module.exports = class PlayLevelModal extends ModalView
patchMe ||= not _.isEqual val, lastHeroConfig[key]
sessionHeroConfig[key] = val
lastHeroConfig[key] = val
if (codeLanguage = @subviews.choose_hero_view.codeLanguage) and @subviews.choose_hero_view.codeLanguageChanged
patchSession ||= codeLanguage isnt @options.session.get('codeLanguage')
patchMe ||= codeLanguage isnt me.get('aceConfig')?.language
@options.session.set 'codeLanguage', codeLanguage
aceConfig = me.get('aceConfig', true) ? {}
aceConfig.language = codeLanguage
me.set 'aceConfig', aceConfig
if patchMe
me.set 'heroConfig', lastHeroConfig
me.patch()
@ -81,7 +88,7 @@ module.exports = class PlayLevelModal extends ModalView
onClickPlayLevel: (e) ->
@showLoading()
@updateHeroConfig =>
@updateConfig =>
@navigatingToPlay = true
Backbone.Mediator.publish 'router:navigate', {
route: "/play/#{@options.levelPath || 'level'}/#{@options.levelID}",