mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-26 05:53:39 -04:00
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
|
||||
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
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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: ->
|
||||
|
|
|
@ -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}",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue