Using language choice from ChooseHeroView.
This commit is contained in:
parent
ae14bd1ced
commit
9f6e1e081c
4 changed files with 28 additions and 10 deletions
app
templates/game-menu
views
|
@ -38,8 +38,8 @@
|
||||||
.form-group.select-group
|
.form-group.select-group
|
||||||
label.control-label(for="option-code-language", data-i18n="choose_hero.programming_language") Programming Language
|
label.control-label(for="option-code-language", data-i18n="choose_hero.programming_language") Programming Language
|
||||||
select#option-code-language(name="code-language")
|
select#option-code-language(name="code-language")
|
||||||
for option in languages
|
for option in codeLanguages
|
||||||
option(value=option.id, selected=(me.get('aceConfig', true).language === option.id))= option.name
|
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?
|
span.help-block(data-i18n="choose_hero.programming_language_description") Which programming language do you want to use?
|
||||||
|
|
||||||
if level
|
if level
|
||||||
|
|
|
@ -13,6 +13,7 @@ module.exports = class ChooseHeroView extends CocoView
|
||||||
events:
|
events:
|
||||||
'click #restart-level-confirm-button': -> Backbone.Mediator.publish 'level:restart', {}
|
'click #restart-level-confirm-button': -> Backbone.Mediator.publish 'level:restart', {}
|
||||||
'slide.bs.carousel #hero-carousel': 'onHeroChanged'
|
'slide.bs.carousel #hero-carousel': 'onHeroChanged'
|
||||||
|
'change #option-code-language': 'onCodeLanguageChanged'
|
||||||
|
|
||||||
shortcuts:
|
shortcuts:
|
||||||
'left': -> @$el.find('#hero-carousel').carousel('prev')
|
'left': -> @$el.find('#hero-carousel').carousel('prev')
|
||||||
|
@ -36,7 +37,7 @@ module.exports = class ChooseHeroView extends CocoView
|
||||||
context = super(context)
|
context = super(context)
|
||||||
context.heroes = @heroes.models
|
context.heroes = @heroes.models
|
||||||
context.level = @options.level
|
context.level = @options.level
|
||||||
context.languages = [
|
context.codeLanguages = [
|
||||||
{id: 'python', name: 'Python'}
|
{id: 'python', name: 'Python'}
|
||||||
{id: 'javascript', name: 'JavaScript'}
|
{id: 'javascript', name: 'JavaScript'}
|
||||||
{id: 'coffeescript', name: 'CoffeeScript'}
|
{id: 'coffeescript', name: 'CoffeeScript'}
|
||||||
|
@ -44,6 +45,7 @@ module.exports = class ChooseHeroView extends CocoView
|
||||||
{id: 'lua', name: 'Lua (Experimental)'}
|
{id: 'lua', name: 'Lua (Experimental)'}
|
||||||
{id: 'io', name: 'Io (Experimental)'}
|
{id: 'io', name: 'Io (Experimental)'}
|
||||||
]
|
]
|
||||||
|
context.codeLanguage = @codeLanguage = @options.session.get('codeLanguage') ? me.get('aceConfig')?.language ? 'python'
|
||||||
context.heroInfo = temporaryHeroInfo
|
context.heroInfo = temporaryHeroInfo
|
||||||
context
|
context
|
||||||
|
|
||||||
|
@ -110,7 +112,9 @@ module.exports = class ChooseHeroView extends CocoView
|
||||||
|
|
||||||
onHidden: ->
|
onHidden: ->
|
||||||
|
|
||||||
|
onCodeLanguageChanged: (e) ->
|
||||||
|
@codeLanguage = @$el.find('#option-code-language').val()
|
||||||
|
@codeLanguageChanged = true
|
||||||
|
|
||||||
temporaryHeroInfo =
|
temporaryHeroInfo =
|
||||||
captain:
|
captain:
|
||||||
|
|
|
@ -43,11 +43,11 @@ module.exports = class GameMenuModal extends ModalView
|
||||||
onHidden: ->
|
onHidden: ->
|
||||||
super()
|
super()
|
||||||
subview.onHidden?() for subviewKey, subview of @subviews
|
subview.onHidden?() for subviewKey, subview of @subviews
|
||||||
patchingMe = @updateHeroConfig()
|
patchingMe = @updateConfig()
|
||||||
me.patch() unless patchingMe # Might need to patch for options menu
|
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
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-close', volume: 1
|
||||||
|
|
||||||
updateHeroConfig: ->
|
updateConfig: ->
|
||||||
sessionHeroConfig = @options.session.get('heroConfig') ? {}
|
sessionHeroConfig = @options.session.get('heroConfig') ? {}
|
||||||
lastHeroConfig = me.get('heroConfig') ? {}
|
lastHeroConfig = me.get('heroConfig') ? {}
|
||||||
thangType = @subviews.choose_hero_view.selectedHero.get 'original'
|
thangType = @subviews.choose_hero_view.selectedHero.get 'original'
|
||||||
|
@ -59,6 +59,13 @@ module.exports = class GameMenuModal extends ModalView
|
||||||
patchMe ||= not _.isEqual val, lastHeroConfig[key]
|
patchMe ||= not _.isEqual val, lastHeroConfig[key]
|
||||||
sessionHeroConfig[key] = val
|
sessionHeroConfig[key] = val
|
||||||
lastHeroConfig[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
|
if patchSession
|
||||||
@options.session.set 'heroConfig', sessionHeroConfig
|
@options.session.set 'heroConfig', sessionHeroConfig
|
||||||
@options.session.patch success: ->
|
@options.session.patch success: ->
|
||||||
|
|
|
@ -46,11 +46,11 @@ module.exports = class PlayLevelModal extends ModalView
|
||||||
onHidden: ->
|
onHidden: ->
|
||||||
unless @navigatingToPlay
|
unless @navigatingToPlay
|
||||||
skipSessionSave = not @options.session.get('levelName')? # Has to have been already started.
|
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
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-close', volume: 1
|
||||||
super()
|
super()
|
||||||
|
|
||||||
updateHeroConfig: (callback, skipSessionSave) ->
|
updateConfig: (callback, skipSessionSave) ->
|
||||||
sessionHeroConfig = @options.session.get('heroConfig') ? {}
|
sessionHeroConfig = @options.session.get('heroConfig') ? {}
|
||||||
lastHeroConfig = me.get('heroConfig') ? {}
|
lastHeroConfig = me.get('heroConfig') ? {}
|
||||||
thangType = @subviews.choose_hero_view.selectedHero.get 'original'
|
thangType = @subviews.choose_hero_view.selectedHero.get 'original'
|
||||||
|
@ -62,6 +62,13 @@ module.exports = class PlayLevelModal extends ModalView
|
||||||
patchMe ||= not _.isEqual val, lastHeroConfig[key]
|
patchMe ||= not _.isEqual val, lastHeroConfig[key]
|
||||||
sessionHeroConfig[key] = val
|
sessionHeroConfig[key] = val
|
||||||
lastHeroConfig[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
|
if patchMe
|
||||||
me.set 'heroConfig', lastHeroConfig
|
me.set 'heroConfig', lastHeroConfig
|
||||||
me.patch()
|
me.patch()
|
||||||
|
@ -81,7 +88,7 @@ module.exports = class PlayLevelModal extends ModalView
|
||||||
|
|
||||||
onClickPlayLevel: (e) ->
|
onClickPlayLevel: (e) ->
|
||||||
@showLoading()
|
@showLoading()
|
||||||
@updateHeroConfig =>
|
@updateConfig =>
|
||||||
@navigatingToPlay = true
|
@navigatingToPlay = true
|
||||||
Backbone.Mediator.publish 'router:navigate', {
|
Backbone.Mediator.publish 'router:navigate', {
|
||||||
route: "/play/#{@options.levelPath || 'level'}/#{@options.levelID}",
|
route: "/play/#{@options.levelPath || 'level'}/#{@options.levelID}",
|
||||||
|
|
Reference in a new issue