Fixed some i18n on the PlayHeroesModal, and started showing special hero skills.

This commit is contained in:
Nick Winter 2014-11-15 07:40:10 -08:00
parent 7bbc270f26
commit b7c2a33ddc
5 changed files with 18 additions and 10 deletions

View file

@ -314,7 +314,7 @@
restricted: "(restricted in this level)" restricted: "(restricted in this level)"
equip: "Equip" equip: "Equip"
unequip: "Unequip" unequip: "Unequip"
buy_gems: buy_gems:
few_gems: 'A few gems' few_gems: 'A few gems'
pile_gems: 'Pile of gems' pile_gems: 'Pile of gems'
@ -324,6 +324,8 @@
choose_hero: "Choose Your Hero" choose_hero: "Choose Your Hero"
programming_language: "Programming Language" programming_language: "Programming Language"
programming_language_description: "Which programming language do you want to use?" programming_language_description: "Which programming language do you want to use?"
default: "Default"
experimental: "Experimental"
python_blurb: "Simple yet powerful, great for beginners and experts." python_blurb: "Simple yet powerful, great for beginners and experts."
javascript_blurb: "The language of the web. (Not the same as Java.)" javascript_blurb: "The language of the web. (Not the same as Java.)"
coffeescript_blurb: "Nicer JavaScript syntax." coffeescript_blurb: "Nicer JavaScript syntax."

View file

@ -260,7 +260,7 @@ module.exports = class ThangType extends CocoModel
createjs.Ticker.removeEventListener 'tick', @tick createjs.Ticker.removeEventListener 'tick', @tick
@tick = null @tick = null
stage stage
getVectorPortraitStage: (size=100) -> getVectorPortraitStage: (size=100) ->
return unless @actions return unless @actions
canvas = $("<canvas width='#{size}' height='#{size}'></canvas>") canvas = $("<canvas width='#{size}' height='#{size}'></canvas>")
@ -336,10 +336,12 @@ module.exports = class ThangType extends CocoModel
return console.warn @get('name'), 'is not an equipping hero, but you are asking for its hero stats. (Did you project away components?)' return console.warn @get('name'), 'is not an equipping hero, but you are asking for its hero stats. (Did you project away components?)'
unless movesConfig = _.find(components, original: LevelComponent.MovesID)?.config unless movesConfig = _.find(components, original: LevelComponent.MovesID)?.config
return console.warn @get('name'), 'is not a moving hero, but you are asking for its hero stats.' return console.warn @get('name'), 'is not a moving hero, but you are asking for its hero stats.'
unless programmableConfig = _.find(components, original: LevelComponent.ProgrammableID)?.config
return console.warn @get('name'), 'is not a Programmable hero, but you are asking for its hero stats.'
@classStatAverages ?= @classStatAverages ?=
attack: {Warrior: 7.5, Ranger: 5, Wizard: 2.5} attack: {Warrior: 7.5, Ranger: 5, Wizard: 2.5}
health: {Warrior: 7.5, Ranger: 5, Wizard: 3.5} health: {Warrior: 7.5, Ranger: 5, Wizard: 3.5}
stats = {skills: []} # TODO: find skills stats = {}
rawNumbers = attack: equipsConfig.attackDamageFactor ? 1, health: equipsConfig.maxHealthFactor ? 1, speed: movesConfig.maxSpeed rawNumbers = attack: equipsConfig.attackDamageFactor ? 1, health: equipsConfig.maxHealthFactor ? 1, speed: movesConfig.maxSpeed
for prop in ['attack', 'health'] for prop in ['attack', 'health']
stat = rawNumbers[prop] stat = rawNumbers[prop]
@ -349,11 +351,15 @@ module.exports = class ThangType extends CocoModel
classSpecificScore = stat * 5 classSpecificScore = stat * 5
classAverage = @classStatAverages[prop][@get('heroClass')] classAverage = @classStatAverages[prop][@get('heroClass')]
stats[prop] = Math.round(2 * ((classAverage - 2.5) + classSpecificScore / 2)) / 2 / 10 stats[prop] = Math.round(2 * ((classAverage - 2.5) + classSpecificScore / 2)) / 2 / 10
minSpeed = 4 minSpeed = 4
maxSpeed = 16 maxSpeed = 16
speedRange = maxSpeed - minSpeed speedRange = maxSpeed - minSpeed
speedPoints = rawNumbers.speed - minSpeed speedPoints = rawNumbers.speed - minSpeed
stats.speed = Math.round(20 * speedPoints / speedRange) / 2 / 10 stats.speed = Math.round(20 * speedPoints / speedRange) / 2 / 10
stats.skills = (_.string.titleize(_.string.humanize(skill)) for skill in programmableConfig.programmableProperties when skill isnt 'say')
stats stats
getFrontFacingStats: -> getFrontFacingStats: ->

View file

@ -12,7 +12,7 @@
.carousel-indicator-container .carousel-indicator-container
ol.carousel-indicators ol.carousel-indicators
for hero, index in heroes for hero, index in heroes
li(data-hero-id=hero.get('original'), title=hero.get('name'), data-slide-to=index, data-target="#hero-carousel", class="hero-indicator hero-index-" + index + (hero.locked ? " locked" : "")) li(data-hero-id=hero.get('original'), title=hero.name, data-slide-to=index, data-target="#hero-carousel", class="hero-indicator hero-index-" + index + (hero.locked ? " locked" : ""))
.hero-avatar .hero-avatar
if hero.locked if hero.locked
img.lock-indicator(src="/images/pages/game-menu/lock.png") img.lock-indicator(src="/images/pages/game-menu/lock.png")

View file

@ -83,7 +83,7 @@ module.exports = class InventoryModal extends ModalView
# sort into one of the four groups # sort into one of the four groups
locked = not (item.get('original') in me.items()) locked = not (item.get('original') in me.items())
locked = false if me.get('slug') is 'nick' #locked = false if me.get('slug') is 'nick'
if locked and item.get('slug') isnt 'simple-boots' if locked and item.get('slug') isnt 'simple-boots'
@itemGroups.lockedItems.add(item) @itemGroups.lockedItems.add(item)

View file

@ -28,7 +28,7 @@ module.exports = class PlayHeroesModal extends ModalView
@confirmButtonI18N = options.confirmButtonI18N ? "common.save" @confirmButtonI18N = options.confirmButtonI18N ? "common.save"
@heroes = new CocoCollection([], {model: ThangType}) @heroes = new CocoCollection([], {model: ThangType})
@heroes.url = '/db/thang.type?view=heroes' @heroes.url = '/db/thang.type?view=heroes'
@heroes.setProjection ['original','name','slug','soundTriggers','featureImage','gems','heroClass','description','components','extendedName'] @heroes.setProjection ['original','name','slug','soundTriggers','featureImage','gems','heroClass','description','components','extendedName','i18n']
@heroes.comparator = 'gems' @heroes.comparator = 'gems'
@listenToOnce @heroes, 'sync', @onHeroesLoaded @listenToOnce @heroes, 'sync', @onHeroesLoaded
@supermodel.loadCollection(@heroes, 'heroes') @supermodel.loadCollection(@heroes, 'heroes')
@ -75,7 +75,7 @@ module.exports = class PlayHeroesModal extends ModalView
initCodeLanguageList: (hadEverChosenHero) -> initCodeLanguageList: (hadEverChosenHero) ->
@codeLanguageList = [ @codeLanguageList = [
{id: 'python', name: 'Python (Default)'} {id: 'python', name: "Python (#{$.i18n.t('choose_hero.default')})"}
{id: 'javascript', name: 'JavaScript'} {id: 'javascript', name: 'JavaScript'}
{id: 'coffeescript', name: 'CoffeeScript'} {id: 'coffeescript', name: 'CoffeeScript'}
] ]
@ -86,9 +86,9 @@ module.exports = class PlayHeroesModal extends ModalView
# Group 1 isn't shown experimental languages in hero modal when launching beginner campaign level # Group 1 isn't shown experimental languages in hero modal when launching beginner campaign level
testGroup = me.getExperimentalLangGroup() testGroup = me.getExperimentalLangGroup()
if hadEverChosenHero? or testGroup isnt 1 if hadEverChosenHero? or testGroup isnt 1
@codeLanguageList.push id: 'clojure', name: 'Clojure (Experimental)' @codeLanguageList.push id: 'clojure', name: "Clojure (#{$.i18n.t('choose_hero.experimental')})"
@codeLanguageList.push id: 'lua', name: 'Lua (Experimental)' @codeLanguageList.push id: 'lua', name: "Lua (#{$.i18n.t('choose_hero.experimental')})"
@codeLanguageList.push id: 'io', name: 'Io (Experimental)' @codeLanguageList.push id: 'io', name: "Io (#{$.i18n.t('choose_hero.experimental')})"
unless hadEverChosenHero? or testGroup is -1 unless hadEverChosenHero? or testGroup is -1
window.tracker?.trackEvent 'Heroes Modal', experimentalLangGroup: testGroup window.tracker?.trackEvent 'Heroes Modal', experimentalLangGroup: testGroup