mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-27 06:23:41 -04:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
384bd4291e
102 changed files with 891 additions and 765 deletions
app
assets
lib
locale
ar.coffeebg.coffeeca.coffeecs.coffeeda.coffeede-AT.coffeede-CH.coffeede-DE.coffeeel.coffeeen-AU.coffeeen-GB.coffeeen-US.coffeeen.coffeees-419.coffeees-ES.coffeefa.coffeefi.coffeefr.coffeehe.coffeehi.coffeehu.coffeeid.coffeeit.coffeeja.coffeeko.coffeelt.coffeems.coffeenb.coffeenl-BE.coffeenl-NL.coffeenn.coffeeno.coffeepl.coffeept-BR.coffeept-PT.coffeero.coffeeru.coffeesk.coffeesl.coffeesr.coffeesv.coffeeth.coffeetr.coffeeuk.coffeeur.coffeevi.coffeezh-HANS.coffeezh-HANT.coffeezh-WUU-HANS.coffeezh-WUU-HANT.coffee
models
schemas
styles
templates
treema-ext.coffeeviews
HomeView.coffee
common
docs
game-menu
play
BIN
app/assets/images/pages/game-menu/lock.png
Normal file
BIN
app/assets/images/pages/game-menu/lock.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 5.4 KiB |
BIN
app/assets/images/pages/home/play_img.png
Normal file
BIN
app/assets/images/pages/home/play_img.png
Normal file
Binary file not shown.
After ![]() (image error) Size: 217 KiB |
|
@ -65,19 +65,19 @@ self.console = console;
|
|||
|
||||
self.importScripts('/javascripts/lodash.js', '/javascripts/world.js', '/javascripts/aether.js');
|
||||
|
||||
// TODO: setting these in a loop in IE11 throws an error
|
||||
Object.defineProperty(self, XMLHttpRequest, {
|
||||
get: function() { throw new Error("Access to XMLHttpRequest is forbidden."); },
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(self, importScripts, {
|
||||
get: function() { throw new Error("Access to importScripts is forbidden."); },
|
||||
configurable: false
|
||||
});
|
||||
Object.defineProperty(self, Worker, {
|
||||
get: function() { throw new Error("Access to Worker is forbidden."); },
|
||||
configurable: false
|
||||
});
|
||||
var restricted = ["XMLHttpRequest", "Worker"];
|
||||
if (!self.navigator || !(self.navigator.userAgent.indexOf('MSIE') > 0) &&
|
||||
!self.navigator.userAgent.match(/Trident.*rv\:11\./)) {
|
||||
// Can't restrict 'importScripts' in IE11, skip for all IE versions
|
||||
restricted.push("importScripts");
|
||||
}
|
||||
for(var i = 0; i < restricted.length; ++i) {
|
||||
// We could do way more from this: http://stackoverflow.com/questions/10653809/making-webworkers-a-safe-environment
|
||||
Object.defineProperty(self, restricted[i], {
|
||||
get: function() { throw new Error("Access to that global property is forbidden."); },
|
||||
configurable: false
|
||||
});
|
||||
}
|
||||
|
||||
self.transferableSupported = function transferableSupported() {
|
||||
if (typeof self._transferableSupported !== 'undefined') return self._transferableSupported;
|
||||
|
|
|
@ -12,6 +12,8 @@ module.exports = class MusicPlayer extends CocoClass
|
|||
subscriptions:
|
||||
'music-player:play-music': 'onPlayMusic'
|
||||
'audio-player:loaded': 'onAudioLoaded'
|
||||
'playback:real-time-playback-started': 'onRealTimePlaybackStarted'
|
||||
'playback:real-time-playback-ended': 'onRealTimePlaybackEnded'
|
||||
|
||||
constructor: ->
|
||||
super arguments...
|
||||
|
@ -62,6 +64,17 @@ module.exports = class MusicPlayer extends CocoClass
|
|||
createjs.Tween.removeTweens(@currentMusic)
|
||||
@currentMusic.volume = if me.get('music') then MUSIC_VOLUME else 0.0
|
||||
|
||||
onRealTimePlaybackStarted: (e) ->
|
||||
@previousMusic = @currentMusic
|
||||
trackNumber = _.random 0, 2
|
||||
Backbone.Mediator.publish 'music-player:play-music', file: "/music/music_real_time_#{trackNumber}", play: true
|
||||
|
||||
onRealTimePlaybackEnded: (e) ->
|
||||
@fadeOutCurrentMusic()
|
||||
if @previousMusic
|
||||
@currentMusic = @previousMusic
|
||||
@restartCurrentMusic()
|
||||
|
||||
destroy: ->
|
||||
me.off 'change:music', @onMusicSettingChanged, @
|
||||
super()
|
||||
|
|
|
@ -19,6 +19,8 @@ PointChooser = require './PointChooser'
|
|||
RegionChooser = require './RegionChooser'
|
||||
MusicPlayer = require './MusicPlayer'
|
||||
|
||||
resizeDelay = 500 # At least as much as $level-resize-transition-time.
|
||||
|
||||
module.exports = Surface = class Surface extends CocoClass
|
||||
stage: null
|
||||
|
||||
|
@ -88,7 +90,7 @@ module.exports = Surface = class Surface extends CocoClass
|
|||
@options = _.extend(@options, givenOptions) if givenOptions
|
||||
@initEasel()
|
||||
@initAudio()
|
||||
@onResize = _.debounce @onResize, 500 # At least as much as $level-resize-transition-time.
|
||||
@onResize = _.debounce @onResize, resizeDelay
|
||||
$(window).on 'resize', @onResize
|
||||
if @world.ended
|
||||
_.defer => @setWorld @world
|
||||
|
@ -249,7 +251,7 @@ module.exports = Surface = class Surface extends CocoClass
|
|||
createjs.Tween.removeTweens(@)
|
||||
@currentFrame = @scrubbingTo
|
||||
|
||||
@scrubbingTo = Math.min(Math.round(progress * @world.frames.length), @world.frames.length)
|
||||
@scrubbingTo = Math.min(Math.round(progress * (@world.frames.length - 1)), @world.frames.length - 1)
|
||||
@scrubbingPlaybackSpeed = Math.sqrt(Math.abs(@scrubbingTo - @currentFrame) * @world.dt / (scrubDuration or 0.5))
|
||||
if scrubDuration
|
||||
t = createjs.Tween
|
||||
|
@ -314,7 +316,7 @@ module.exports = Surface = class Surface extends CocoClass
|
|||
#- Changes and events that only need to happen when the frame has changed
|
||||
|
||||
onFrameChanged: (force) ->
|
||||
@currentFrame = Math.min(@currentFrame, @world.frames.length)
|
||||
@currentFrame = Math.min(@currentFrame, @world.frames.length - 1)
|
||||
@debugDisplay?.updateFrame @currentFrame
|
||||
return if @currentFrame is @lastFrame and not force
|
||||
progress = @getProgress()
|
||||
|
@ -336,7 +338,7 @@ module.exports = Surface = class Surface extends CocoClass
|
|||
|
||||
@lastFrame = @currentFrame
|
||||
|
||||
getProgress: -> @currentFrame / @world.frames.length
|
||||
getProgress: -> @currentFrame / Math.max(1, @world.frames.length - 1)
|
||||
|
||||
|
||||
|
||||
|
@ -416,7 +418,8 @@ module.exports = Surface = class Surface extends CocoClass
|
|||
@casting = true
|
||||
@setPlayingCalled = false # Don't overwrite playing settings if they changed by, say, scripts.
|
||||
@frameBeforeCast = @currentFrame
|
||||
@setProgress 0
|
||||
# This is where I wanted to trigger a rewind, but it turned out to be pretty complicated, since the new world gets updated everywhere, and you don't want to rewind through that.
|
||||
@setProgress 0, 0
|
||||
|
||||
onNewWorld: (event) ->
|
||||
return unless event.world.name is @world.name
|
||||
|
@ -433,9 +436,9 @@ module.exports = Surface = class Surface extends CocoClass
|
|||
@setWorld event.world
|
||||
@onFrameChanged(true)
|
||||
fastForwardBuffer = 2
|
||||
if @playing and not @realTime and (ffToFrame = Math.min(event.firstChangedFrame, @frameBeforeCast, @world.frames.length)) and ffToFrame > @currentFrame + fastForwardBuffer * @world.frameRate
|
||||
if @playing and not @realTime and (ffToFrame = Math.min(event.firstChangedFrame, @frameBeforeCast, @world.frames.length - 1)) and ffToFrame > @currentFrame + fastForwardBuffer * @world.frameRate
|
||||
@fastForwardingToFrame = ffToFrame
|
||||
@fastForwardingSpeed = Math.max 4, 4 * 90 / (@world.maxTotalFrames * @world.dt)
|
||||
@fastForwardingSpeed = Math.max 3, 3 * (@world.maxTotalFrames * @world.dt) / 60
|
||||
else if @realTime
|
||||
lag = (@world.frames.length - 1) * @world.dt - @world.age
|
||||
intendedLag = @world.realTimeBufferMax + @world.dt
|
||||
|
@ -544,6 +547,7 @@ module.exports = Surface = class Surface extends CocoClass
|
|||
return unless @realTime
|
||||
@realTime = false
|
||||
@onResize()
|
||||
_.delay @onResize, resizeDelay + 100 # Do it again just to be double sure that we don't stay zoomed in due to timing problems.
|
||||
@spriteBoss.selfWizardSprite?.toggle true
|
||||
@canvas.removeClass 'flag-color-selected'
|
||||
if @previousCameraZoom
|
||||
|
|
|
@ -98,6 +98,10 @@ module.exports = class World
|
|||
continueLaterFn = =>
|
||||
@loadFrames(loadedCallback, errorCallback, loadProgressCallback, preloadedCallback, skipDeferredLoading, loadUntilFrame) unless @destroyed
|
||||
if @realTime and not @countdownFinished
|
||||
if @levelID in ['the-first-kithmaze', 'the-second-kithmaze', 'the-final-kithmaze']
|
||||
@realTimeSpeedFactor = 3
|
||||
else
|
||||
@realTimeSpeedFactor = 1
|
||||
return setTimeout @finishCountdown(continueLaterFn), REAL_TIME_COUNTDOWN_DELAY
|
||||
t1 = now()
|
||||
@t0 ?= t1
|
||||
|
@ -136,18 +140,18 @@ module.exports = class World
|
|||
|
||||
shouldDelayRealTimeSimulation: (t) ->
|
||||
return false unless @realTime
|
||||
timeSinceStart = t - @worldLoadStartTime
|
||||
timeSinceStart = (t - @worldLoadStartTime) * @realTimeSpeedFactor
|
||||
timeLoaded = @frames.length * @dt * 1000
|
||||
timeBuffered = timeLoaded - timeSinceStart
|
||||
timeBuffered > REAL_TIME_BUFFER_MAX
|
||||
timeBuffered > REAL_TIME_BUFFER_MAX * @realTimeSpeedFactor
|
||||
|
||||
shouldUpdateRealTimePlayback: (t) ->
|
||||
return false unless @realTime
|
||||
return false if @frames.length * @dt is @lastRealTimeUpdate
|
||||
timeLoaded = @frames.length * @dt * 1000
|
||||
timeSinceStart = t - @worldLoadStartTime
|
||||
timeSinceStart = (t - @worldLoadStartTime) * @realTimeSpeedFactor
|
||||
remainingBuffer = @lastRealTimeUpdate * 1000 - timeSinceStart
|
||||
remainingBuffer < REAL_TIME_BUFFER_MIN
|
||||
remainingBuffer < REAL_TIME_BUFFER_MIN * @realTimeSpeedFactor
|
||||
|
||||
shouldContinueLoading: (t1, loadProgressCallback, skipDeferredLoading, continueLaterFn) ->
|
||||
t2 = now()
|
||||
|
@ -192,6 +196,7 @@ module.exports = class World
|
|||
@flagHistory.push flagEvent
|
||||
|
||||
loadFromLevel: (level, willSimulate=true) ->
|
||||
@levelID = level.slug
|
||||
@levelComponents = level.levelComponents
|
||||
@thangTypes = level.thangTypes
|
||||
@loadSystemsFromLevel level
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "български език", englishDescri
|
|||
done: "Готово"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "български език", englishDescri
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "български език", englishDescri
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -6,7 +6,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
send: "Enviat"
|
||||
cancel: "Cancel·lant"
|
||||
save: "Guardar"
|
||||
# publish: "Publish"
|
||||
publish: "Publica"
|
||||
create: "Crear"
|
||||
delay_1_sec: "1 segon"
|
||||
delay_3_sec: "3 segons"
|
||||
|
@ -14,7 +14,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
manual: "Manual"
|
||||
fork: "Fork"
|
||||
play: "Jugar" # When used as an action verb, like "Play next level"
|
||||
# retry: "Retry"
|
||||
retry: "Tornar a intentar"
|
||||
# watch: "Watch"
|
||||
# unwatch: "Unwatch"
|
||||
# submit_patch: "Submit Patch"
|
||||
|
@ -39,8 +39,8 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
close: "Tancar"
|
||||
okay: "Okey"
|
||||
|
||||
# not_found:
|
||||
# page_not_found: "Page not found"
|
||||
not_found:
|
||||
page_not_found: "Pagina no trobada"
|
||||
|
||||
nav:
|
||||
play: "Nivells" # The top nav bar entry where players choose which levels to play
|
||||
|
@ -50,7 +50,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
forum: "Fòrum"
|
||||
account: "Compte"
|
||||
profile: "Perfil"
|
||||
# stats: "Stats"
|
||||
stats: "Estats"
|
||||
# code: "Code"
|
||||
admin: "Admin"
|
||||
home: "Inici"
|
||||
|
@ -104,12 +104,12 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
for_beginners: "Per a principiants"
|
||||
multiplayer: "Multijugador"
|
||||
for_developers: "Per a Desenvolupadors"
|
||||
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
|
||||
javascript_blurb: "El llenguatge de les webs. Útil per escriure pagines web, aplicacions web, jocs en HTML5 i servidors."
|
||||
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
|
||||
# coffeescript_blurb: "Nicer JavaScript syntax."
|
||||
# clojure_blurb: "A modern Lisp."
|
||||
# lua_blurb: "Game scripting language."
|
||||
# io_blurb: "Simple but obscure."
|
||||
io_blurb: "Senzill però obscur."
|
||||
|
||||
play:
|
||||
choose_your_level: "Escull el teu nivell"
|
||||
|
@ -130,15 +130,15 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
play_as: "Jugar com"
|
||||
spectate: "Spectate"
|
||||
players: "jugadors"
|
||||
# hours_played: "hours played"
|
||||
# items: "Items"
|
||||
hours_played: "hores de joc"
|
||||
items: "Objectes"
|
||||
heroes: "Herois"
|
||||
# achievements: "Achievements"
|
||||
achievements: "Assoliments"
|
||||
account: "Conta"
|
||||
# settings: "Settings"
|
||||
settings: "Configuració"
|
||||
next: "Següent"
|
||||
previous: "Anterior"
|
||||
# choose_inventory: "Equip Items"
|
||||
choose_inventory: "Equipar objectes"
|
||||
|
||||
items:
|
||||
armor: "Armadura"
|
||||
|
@ -162,25 +162,25 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns."
|
||||
|
||||
diplomat_suggestion:
|
||||
title: "Ajudaa traduir CodeCombat!"
|
||||
# sub_heading: "We need your language skills."
|
||||
pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Catalan, but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Catalan."
|
||||
missing_translations: "Until we can translate everything into Catalan, you'll see English when Catalan isn't available."
|
||||
# learn_more: "Learn more about being a Diplomat"
|
||||
# subscribe_as_diplomat: "Subscribe as a Diplomat"
|
||||
title: "Ajuda a traduir CodeCombat!"
|
||||
sub_heading: "Neccesitem les teves habilitats lingüístiques."
|
||||
pitch_body: "Hem desembolupat CodeCombat en Anglès, peró tenim jugadors per tot el món. Molts d'ells volen jugar en Català, però no parlen anglès, per tant si pots parlar ambdós llengües, siusplau considereu iniciar sesió per a ser Diplomàtic i ajudar a traduir la web de CodeCombat i tots els seus nivell en Català."
|
||||
missing_translations: "Fins que puguem traduir-ho tot en Català, veuràs en anglès quant sigui possible."
|
||||
learn_more: "Apren més sobre seru un diplomàtic"
|
||||
subscribe_as_diplomat: "Subscriute com a diplomàtic"
|
||||
|
||||
wizard_settings:
|
||||
# title: "Wizard Settings"
|
||||
# customize_avatar: "Customize Your Avatar"
|
||||
# active: "Active"
|
||||
title: "Configuració del bruixot"
|
||||
customize_avatar: "Personalitza el teu avatar"
|
||||
active: "Actiu"
|
||||
color: "Color"
|
||||
group: "Grup"
|
||||
# clothes: "Clothes"
|
||||
clothes: "Roba"
|
||||
# trim: "Trim"
|
||||
# cloud: "Cloud"
|
||||
team: "Equip"
|
||||
# spell: "Spell"
|
||||
# boots: "Boots"
|
||||
boots: "Botes"
|
||||
# hue: "Hue"
|
||||
# saturation: "Saturation"
|
||||
# lightness: "Lightness"
|
||||
|
@ -198,7 +198,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
admin: "Administrador"
|
||||
wizard_color: "Color de la roba"
|
||||
new_password: "Contrasenya nova"
|
||||
# new_password_verify: "Verify"
|
||||
new_password_verify: "Verifica"
|
||||
# email_subscriptions: "Email Subscriptions"
|
||||
# email_subscriptions_none: "No Email Subscriptions."
|
||||
# email_announcements: "Announcements"
|
||||
|
@ -219,10 +219,10 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
saved: "Canvis desats"
|
||||
password_mismatch: "Les contrasenyes no coincideixen."
|
||||
password_repeat: "Siusplau, repetiu la contrasenya."
|
||||
# job_profile: "Job Profile"
|
||||
job_profile: "Perfil professional"
|
||||
# job_profile_approved: "Your job profile has been approved by CodeCombat. Employers will be able to see it until you either mark it inactive or it has not been changed for four weeks."
|
||||
# job_profile_explanation: "Hi! Fill this out, and we will get in touch about finding you a software developer job."
|
||||
# sample_profile: "See a sample profile"
|
||||
sample_profile: "Mira un perfil de mostra"
|
||||
view_profile: "Mira el teu perfil"
|
||||
|
||||
account_profile:
|
||||
|
@ -233,17 +233,17 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# profile_for_suffix: ""
|
||||
# featured: "Featured"
|
||||
# not_featured: "Not Featured"
|
||||
# looking_for: "Looking for:"
|
||||
looking_for: "Buscant:"
|
||||
# last_updated: "Last updated:"
|
||||
contact: "Contacta"
|
||||
# active: "Looking for interview offers now"
|
||||
# inactive: "Not looking for offers right now"
|
||||
# complete: "complete"
|
||||
complete: "complet"
|
||||
next: "Seguent"
|
||||
# next_city: "city?"
|
||||
# next_country: "pick your country."
|
||||
# next_name: "name?"
|
||||
# next_short_description: "write a short description."
|
||||
next_city: "ciutat?"
|
||||
next_country: "escull el teu país."
|
||||
next_name: "nom?"
|
||||
next_short_description: "escriu una breu descripció."
|
||||
# next_long_description: "describe your desired position."
|
||||
# next_skills: "list at least five skills."
|
||||
# next_work: "chronicle your work history."
|
||||
|
@ -252,7 +252,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# next_links: "add any personal or social links."
|
||||
# next_photo: "add an optional professional photo."
|
||||
# next_active: "mark yourself open to offers to show up in searches."
|
||||
# example_blog: "Blog"
|
||||
example_blog: "Blog"
|
||||
# example_personal_site: "Personal Site"
|
||||
# links_header: "Personal Links"
|
||||
# links_blurb: "Link any other sites or profiles you want to highlight, like your GitHub, your LinkedIn, or your blog."
|
||||
|
@ -260,20 +260,20 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# links_name_help: "What are you linking to?"
|
||||
# links_link_blurb: "Link URL"
|
||||
# basics_header: "Update basic info"
|
||||
# basics_active: "Open to Offers"
|
||||
basics_active: "Obert a ofertes"
|
||||
# basics_active_help: "Want interview offers right now?"
|
||||
# basics_job_title: "Desired Job Title"
|
||||
# basics_job_title_help: "What role are you looking for?"
|
||||
# basics_city: "City"
|
||||
# basics_city_help: "City you want to work in (or live in now)."
|
||||
# basics_country: "Country"
|
||||
basics_city: "Ciutat"
|
||||
basics_city_help: "En quina ciutat t'agradaria treballar (o viure ara)."
|
||||
basics_country: "País"
|
||||
# basics_country_help: "Country you want to work in (or live in now)."
|
||||
# basics_visa: "US Work Status"
|
||||
# basics_visa_help: "Are you authorized to work in the US, or do you need visa sponsorship? (If you live in Canada or Australia, mark authorized.)"
|
||||
# basics_looking_for: "Looking For"
|
||||
# basics_looking_for_full_time: "Full-time"
|
||||
# basics_looking_for_part_time: "Part-time"
|
||||
# basics_looking_for_remote: "Remote"
|
||||
basics_looking_for_full_time: "Temps complet"
|
||||
basics_looking_for_part_time: "Temporal"
|
||||
basics_looking_for_remote: "A distancia"
|
||||
# basics_looking_for_contracting: "Contracting"
|
||||
# basics_looking_for_internship: "Internship"
|
||||
# basics_looking_for_help: "What kind of developer position do you want?"
|
||||
|
@ -284,13 +284,13 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# short_description_blurb: "Add a tagline to help an employer quickly learn more about you."
|
||||
# short_description: "Tagline"
|
||||
# short_description_help: "Who are you, and what are you looking for? 140 characters max."
|
||||
# skills_header: "Skills"
|
||||
skills_header: "Habilitats"
|
||||
# skills_help: "Tag relevant developer skills in order of proficiency."
|
||||
# long_description_header: "Describe your desired position"
|
||||
# long_description_blurb: "Tell employers how awesome you are and what role you want."
|
||||
# long_description: "Self Description"
|
||||
# long_description_help: "Describe yourself to potential employers. Keep it short and to the point. We recommend outlining the position that would most interest you. Tasteful markdown okay; 600 characters max."
|
||||
# work_experience: "Work Experience"
|
||||
work_experience: "Experiència laboral"
|
||||
# work_header: "Chronicle your work history"
|
||||
# work_years: "Years of Experience"
|
||||
# work_years_help: "How many years of professional experience (getting paid) developing software do you have?"
|
||||
|
@ -301,12 +301,12 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# work_role_help: "What was your job title or role?"
|
||||
# work_duration: "Duration"
|
||||
# work_duration_help: "When did you hold this gig?"
|
||||
# work_description: "Description"
|
||||
work_description: "Descripció"
|
||||
# work_description_help: "What did you do there? (140 chars; optional)"
|
||||
# education: "Education"
|
||||
education: "Educació"
|
||||
# education_header: "Recount your academic ordeals"
|
||||
# education_blurb: "List your academic ordeals."
|
||||
# education_school: "School"
|
||||
education_school: "Escola"
|
||||
# education_school_help: "Name of your school."
|
||||
# education_degree: "Degree"
|
||||
# education_degree_help: "What was your degree and field of study?"
|
||||
|
@ -316,21 +316,21 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# education_description_help: "Highlight anything about this educational experience. (140 chars; optional)"
|
||||
# our_notes: "CodeCombat's Notes"
|
||||
# remarks: "Remarks"
|
||||
# projects: "Projects"
|
||||
projects: "Projectes"
|
||||
# projects_header: "Add 3 projects"
|
||||
# projects_header_2: "Projects (Top 3)"
|
||||
# projects_blurb: "Highlight your projects to amaze employers."
|
||||
# project_name: "Project Name"
|
||||
project_name: "Nom del projecte"
|
||||
# project_name_help: "What was the project called?"
|
||||
# project_description: "Description"
|
||||
project_description: "Descripció"
|
||||
# project_description_help: "Briefly describe the project."
|
||||
# project_picture: "Picture"
|
||||
project_picture: "Imatge"
|
||||
# project_picture_help: "Upload a 230x115px or larger image showing off the project."
|
||||
# project_link: "Link"
|
||||
# project_link_help: "Link to the project."
|
||||
# player_code: "Player Code"
|
||||
|
||||
# employers:
|
||||
employers:
|
||||
# hire_developers_not_credentials: "Hire developers, not credentials."
|
||||
# get_started: "Get Started"
|
||||
# already_screened: "We've already technically screened all our candidates"
|
||||
|
@ -362,7 +362,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# what_blurb: "CodeCombat is a multiplayer browser programming game. Players write code to control their forces in battle against other developers. Our players have experience with all major tech stacks."
|
||||
# cost: "How much do we charge?"
|
||||
# cost_blurb: "We charge 15% of first year's salary and offer a 100% money back guarantee for 90 days. We don't charge for candidates who are already actively being interviewed at your company."
|
||||
# candidate_name: "Name"
|
||||
candidate_name: "Nom"
|
||||
# candidate_location: "Location"
|
||||
# candidate_looking_for: "Looking For"
|
||||
# candidate_role: "Role"
|
||||
|
@ -374,17 +374,17 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# other_developers: "Other Developers"
|
||||
# inactive_developers: "Inactive Developers"
|
||||
|
||||
# play_level:
|
||||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
play_level:
|
||||
done: "Fet"
|
||||
customize_wizard: "Personalitza el teu bruixot"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# skip: "Skip"
|
||||
game_menu: "Menu de joc"
|
||||
guide: "Guia"
|
||||
# restart: "Restart"
|
||||
# goals: "Goals"
|
||||
# goal: "Goal"
|
||||
# success: "Success!"
|
||||
goals: "Objectius"
|
||||
goal: "Objectiu"
|
||||
success: "Exit!"
|
||||
# incomplete: "Incomplete"
|
||||
# timed_out: "Ran out of time"
|
||||
# failing: "Failing"
|
||||
|
@ -394,17 +394,18 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# reload_really: "Are you sure you want to reload this level back to the beginning?"
|
||||
# reload_confirm: "Reload All"
|
||||
# victory_title_prefix: ""
|
||||
# victory_title_suffix: " Complete"
|
||||
# victory_sign_up: "Sign Up to Save Progress"
|
||||
victory_title_suffix: " Complet"
|
||||
victory_sign_up: "Inicia sessió per a desar el progressos"
|
||||
# victory_sign_up_poke: "Want to save your code? Create a free account!"
|
||||
# victory_rate_the_level: "Rate the level: "
|
||||
victory_rate_the_level: "Valora el nivell: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
victory_play_next_level: "Jugar el següent nivell"
|
||||
victory_play_continue: "Continuar"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
# victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code™!"
|
||||
# guide_title: "Guide"
|
||||
guide_title: "Guia"
|
||||
# tome_minion_spells: "Your Minions' Spells"
|
||||
# tome_read_only_spells: "Read-Only Spells"
|
||||
# tome_other_units: "Other Units"
|
||||
|
@ -418,12 +419,13 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
# keyboard_shortcuts: "Key Shortcuts"
|
||||
# loading_ready: "Ready!"
|
||||
# loading_start: "Start Level"
|
||||
loading_start: "Comença el nivell"
|
||||
# tip_insert_positions: "Shift+Click a point on the map to insert it into the spell editor."
|
||||
# tip_toggle_play: "Toggle play/paused with Ctrl+P."
|
||||
# tip_scrub_shortcut: "Ctrl+[ and Ctrl+] rewind and fast-forward."
|
||||
|
@ -458,44 +460,44 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# time_current: "Now:"
|
||||
# time_total: "Max:"
|
||||
# time_goto: "Go to:"
|
||||
# infinite_loop_try_again: "Try Again"
|
||||
# infinite_loop_reset_level: "Reset Level"
|
||||
infinite_loop_try_again: "Tornar a intentar"
|
||||
infinite_loop_reset_level: "Reiniciar nivell"
|
||||
# infinite_loop_comment_out: "Comment Out My Code"
|
||||
|
||||
# game_menu:
|
||||
game_menu:
|
||||
# inventory_tab: "Inventory"
|
||||
# choose_hero_tab: "Restart Level"
|
||||
# save_load_tab: "Save/Load"
|
||||
# options_tab: "Options"
|
||||
# guide_tab: "Guide"
|
||||
# multiplayer_tab: "Multiplayer"
|
||||
# inventory_caption: "Equip your hero"
|
||||
choose_hero_tab: "Recomençar nivell"
|
||||
save_load_tab: "Desa/Carrega"
|
||||
options_tab: "Opcions"
|
||||
guide_tab: "Gui"
|
||||
multiplayer_tab: "Multijugador"
|
||||
inventory_caption: "Equipa el teu heroi"
|
||||
# choose_hero_caption: "Choose hero, language"
|
||||
# save_load_caption: "... and view history"
|
||||
# options_caption: "Configure settings"
|
||||
options_caption: "Edita la configuració"
|
||||
# guide_caption: "Docs and tips"
|
||||
# multiplayer_caption: "Play with friends!"
|
||||
multiplayer_caption: "Juga amb amics!"
|
||||
|
||||
# inventory:
|
||||
# choose_inventory: "Equip Items"
|
||||
inventory:
|
||||
choose_inventory: "Equipar objectes"
|
||||
|
||||
# choose_hero:
|
||||
# choose_hero: "Choose Your Hero"
|
||||
# programming_language: "Programming Language"
|
||||
choose_hero:
|
||||
choose_hero: "Escull el teu heroi"
|
||||
programming_language: "Llenguatge de programació"
|
||||
# programming_language_description: "Which programming language do you want to use?"
|
||||
# status: "Status"
|
||||
# weapons: "Weapons"
|
||||
# health: "Health"
|
||||
# speed: "Speed"
|
||||
status: "Estat"
|
||||
weapons: "Armes"
|
||||
health: "Salut"
|
||||
speed: "Velocitat"
|
||||
|
||||
# save_load:
|
||||
# granularity_saved_games: "Saved"
|
||||
save_load:
|
||||
granularity_saved_games: "Desats"
|
||||
# granularity_change_history: "History"
|
||||
|
||||
# options:
|
||||
# general_options: "General Options"
|
||||
# volume_label: "Volume"
|
||||
# music_label: "Music"
|
||||
options:
|
||||
general_options: "Opcions generals"
|
||||
volume_label: "Volum"
|
||||
music_label: "Musica"
|
||||
# music_description: "Turn background music on/off."
|
||||
# autorun_label: "Autorun"
|
||||
# autorun_description: "Control automatic code execution."
|
||||
|
@ -520,22 +522,22 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# guide:
|
||||
# temp: "Temp"
|
||||
|
||||
# multiplayer:
|
||||
multiplayer:
|
||||
# multiplayer_title: "Multiplayer Settings"
|
||||
# multiplayer_toggle: "Enable multiplayer"
|
||||
multiplayer_toggle: "Activar multijugador"
|
||||
# multiplayer_toggle_description: "Allow others to join your game."
|
||||
# multiplayer_link_description: "Give this link to anyone to have them join you."
|
||||
# multiplayer_hint_label: "Hint:"
|
||||
multiplayer_hint_label: "Pista:"
|
||||
# multiplayer_hint: " Click the link to select all, then press ⌘-C or Ctrl-C to copy the link."
|
||||
# multiplayer_coming_soon: "More multiplayer features to come!"
|
||||
# multiplayer_sign_in_leaderboard: "Sign in or create an account and get your solution on the leaderboard."
|
||||
|
||||
# keyboard_shortcuts:
|
||||
# keyboard_shortcuts: "Keyboard Shortcuts"
|
||||
# space: "Space"
|
||||
# enter: "Enter"
|
||||
# escape: "Escape"
|
||||
# shift: "Shift"
|
||||
keyboard_shortcuts:
|
||||
keyboard_shortcuts: "Dreceres del teclat"
|
||||
space: "Espai"
|
||||
enter: "Enter"
|
||||
escape: "Escape"
|
||||
shift: "Shift"
|
||||
# cast_spell: "Cast current spell."
|
||||
# run_real_time: "Run in real time."
|
||||
# continue_script: "Continue past current script."
|
||||
|
@ -549,27 +551,27 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# toggle_pathfinding: "Toggle pathfinding overlay."
|
||||
# beautify: "Beautify your code by standardizing its formatting."
|
||||
# maximize_editor: "Maximize/minimize code editor."
|
||||
# move_wizard: "Move your Wizard around the level."
|
||||
move_wizard: "Mou el teu bruixot pel nivell."
|
||||
|
||||
# admin:
|
||||
admin:
|
||||
# av_espionage: "Espionage"
|
||||
# av_espionage_placeholder: "Email or username"
|
||||
# av_usersearch: "User Search"
|
||||
# av_usersearch_placeholder: "Email, username, name, whatever"
|
||||
# av_usersearch_search: "Search"
|
||||
av_usersearch_search: "Buscar"
|
||||
# av_title: "Admin Views"
|
||||
# av_entities_sub_title: "Entities"
|
||||
# av_entities_users_url: "Users"
|
||||
av_entities_users_url: "Usuaris"
|
||||
# av_entities_active_instances_url: "Active Instances"
|
||||
# av_entities_employer_list_url: "Employer List"
|
||||
# av_entities_candidates_list_url: "Candidate List"
|
||||
# av_other_sub_title: "Other"
|
||||
av_other_sub_title: "Altres"
|
||||
# av_other_debug_base_url: "Base (for debugging base.jade)"
|
||||
# u_title: "User List"
|
||||
# lg_title: "Latest Games"
|
||||
# clas: "CLAs"
|
||||
|
||||
# community:
|
||||
community:
|
||||
# main_title: "CodeCombat Community"
|
||||
# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!"
|
||||
# level_editor_prefix: "Use the CodeCombat"
|
||||
|
@ -582,16 +584,16 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# social_blog: "Read the CodeCombat blog on Sett"
|
||||
# social_discource: "Join the discussion on our Discourse forum"
|
||||
# social_facebook: "Like CodeCombat on Facebook"
|
||||
# social_twitter: "Follow CodeCombat on Twitter"
|
||||
social_twitter: "Segueix CodeCombat al Twitter"
|
||||
# social_gplus: "Join CodeCombat on Google+"
|
||||
# social_hipchat: "Chat with us in the public CodeCombat HipChat room"
|
||||
# contribute_to_the_project: "Contribute to the project"
|
||||
|
||||
# editor:
|
||||
editor:
|
||||
# main_title: "CodeCombat Editors"
|
||||
# article_title: "Article Editor"
|
||||
# thang_title: "Thang Editor"
|
||||
# level_title: "Level Editor"
|
||||
level_title: "Editor de nivells"
|
||||
# achievement_title: "Achievement Editor"
|
||||
# back: "Back"
|
||||
# revert: "Revert"
|
||||
|
@ -602,13 +604,13 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# fork_title: "Fork New Version"
|
||||
# fork_creating: "Creating Fork..."
|
||||
# generate_terrain: "Generate Terrain"
|
||||
# more: "More"
|
||||
# wiki: "Wiki"
|
||||
more: "Més"
|
||||
wiki: "Wiki"
|
||||
# live_chat: "Live Chat"
|
||||
# level_some_options: "Some Options?"
|
||||
# level_tab_thangs: "Thangs"
|
||||
# level_tab_scripts: "Scripts"
|
||||
# level_tab_settings: "Settings"
|
||||
level_tab_settings: "Configuració"
|
||||
# level_tab_components: "Components"
|
||||
# level_tab_systems: "Systems"
|
||||
# level_tab_docs: "Documentation"
|
||||
|
@ -616,8 +618,8 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# level_tab_thangs_all: "All"
|
||||
# level_tab_thangs_conditions: "Starting Conditions"
|
||||
# level_tab_thangs_add: "Add Thangs"
|
||||
# delete: "Delete"
|
||||
# duplicate: "Duplicate"
|
||||
delete: "Esborrar"
|
||||
duplicate: "Duplicar"
|
||||
# level_settings_title: "Settings"
|
||||
# level_component_tab_title: "Current Components"
|
||||
# level_component_btn_new: "Create New Component"
|
||||
|
@ -655,38 +657,38 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# edit_btn_preview: "Preview"
|
||||
# edit_article_title: "Edit Article"
|
||||
|
||||
# general:
|
||||
general:
|
||||
# and: "and"
|
||||
# name: "Name"
|
||||
name: "Nom"
|
||||
# date: "Date"
|
||||
# body: "Body"
|
||||
# version: "Version"
|
||||
version: "Versió"
|
||||
# commit_msg: "Commit Message"
|
||||
# version_history: "Version History"
|
||||
# version_history_for: "Version History for: "
|
||||
# result: "Result"
|
||||
# results: "Results"
|
||||
result: "Resultat"
|
||||
results: "Resultats"
|
||||
# description: "Description"
|
||||
# or: "or"
|
||||
# subject: "Subject"
|
||||
# email: "Email"
|
||||
# password: "Password"
|
||||
password: "Contrasenya"
|
||||
# message: "Message"
|
||||
# code: "Code"
|
||||
# ladder: "Ladder"
|
||||
# when: "When"
|
||||
# opponent: "Opponent"
|
||||
# rank: "Rank"
|
||||
# score: "Score"
|
||||
score: "Puntuació"
|
||||
# win: "Win"
|
||||
# loss: "Loss"
|
||||
# tie: "Tie"
|
||||
# easy: "Easy"
|
||||
# medium: "Medium"
|
||||
# hard: "Hard"
|
||||
# player: "Player"
|
||||
easy: "Fàcil"
|
||||
medium: "Intermedi"
|
||||
hard: "Difícil"
|
||||
player: "Jugador"
|
||||
|
||||
# about:
|
||||
about:
|
||||
# why_codecombat: "Why CodeCombat?"
|
||||
# why_paragraph_1: "If you want to learn to program, you don't need lessons. You need to write a lot of code and have a great time doing it."
|
||||
# why_paragraph_2_prefix: "That's what programming is about. It's gotta be fun. Not fun like"
|
||||
|
@ -699,16 +701,16 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# press_paragraph_1_prefix: "Want to write about us? Feel free to download and use all of the resources included in our"
|
||||
# press_paragraph_1_link: "press packet"
|
||||
# press_paragraph_1_suffix: ". All logos and images may be used without contacting us directly."
|
||||
# team: "Team"
|
||||
team: "Equip"
|
||||
# george_title: "CEO"
|
||||
# george_blurb: "Businesser"
|
||||
# scott_title: "Programmer"
|
||||
scott_title: "Programador"
|
||||
# scott_blurb: "Reasonable One"
|
||||
# nick_title: "Programmer"
|
||||
nick_title: "Programador"
|
||||
# nick_blurb: "Motivation Guru"
|
||||
# michael_title: "Programmer"
|
||||
michael_title: "Programador"
|
||||
# michael_blurb: "Sys Admin"
|
||||
# matt_title: "Programmer"
|
||||
matt_title: "Programador"
|
||||
# matt_blurb: "Bicyclist"
|
||||
|
||||
# legal:
|
||||
|
@ -857,38 +859,38 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# translating_diplomats: "Our Translating Diplomats:"
|
||||
# helpful_ambassadors: "Our Helpful Ambassadors:"
|
||||
|
||||
# classes:
|
||||
classes:
|
||||
# archmage_title: "Archmage"
|
||||
# archmage_title_description: "(Coder)"
|
||||
# artisan_title: "Artisan"
|
||||
# artisan_title_description: "(Level Builder)"
|
||||
# adventurer_title: "Adventurer"
|
||||
# adventurer_title_description: "(Level Playtester)"
|
||||
# scribe_title: "Scribe"
|
||||
artisan_title: "Artesà"
|
||||
artisan_title_description: "(Creador de nivells)"
|
||||
adventurer_title: "Aventurer"
|
||||
adventurer_title_description: "(Provador de nivells)"
|
||||
scribe_title: "Escriba"
|
||||
# scribe_title_description: "(Article Editor)"
|
||||
# diplomat_title: "Diplomat"
|
||||
# diplomat_title_description: "(Translator)"
|
||||
diplomat_title: "Diplomàtic"
|
||||
diplomat_title_description: "(Traductor)"
|
||||
# ambassador_title: "Ambassador"
|
||||
# ambassador_title_description: "(Support)"
|
||||
|
||||
# ladder:
|
||||
ladder:
|
||||
# please_login: "Please log in first before playing a ladder game."
|
||||
# my_matches: "My Matches"
|
||||
# simulate: "Simulate"
|
||||
simulate: "Simula"
|
||||
# simulation_explanation: "By simulating games you can get your game ranked faster!"
|
||||
# simulate_games: "Simulate Games!"
|
||||
# simulate_all: "RESET AND SIMULATE GAMES"
|
||||
# games_simulated_by: "Games simulated by you:"
|
||||
# games_simulated_for: "Games simulated for you:"
|
||||
# games_simulated: "Games simulated"
|
||||
# games_played: "Games played"
|
||||
games_played: "Partides guanyades"
|
||||
# ratio: "Ratio"
|
||||
# leaderboard: "Leaderboard"
|
||||
# battle_as: "Battle as "
|
||||
# summary_your: "Your "
|
||||
# summary_matches: "Matches - "
|
||||
# summary_wins: " Wins, "
|
||||
# summary_losses: " Losses"
|
||||
summary_wins: " Victories, "
|
||||
summary_losses: " Derrotes"
|
||||
# rank_no_code: "No New Code to Rank"
|
||||
# rank_my_game: "Rank My Game!"
|
||||
# rank_submitting: "Submitting..."
|
||||
|
@ -900,9 +902,9 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# code_being_simulated: "Your new code is being simulated by other players for ranking. This will refresh as new matches come in."
|
||||
# no_ranked_matches_pre: "No ranked matches for the "
|
||||
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
|
||||
# choose_opponent: "Choose an Opponent"
|
||||
# select_your_language: "Select your language!"
|
||||
# tutorial_play: "Play Tutorial"
|
||||
choose_opponent: "Escull adversari"
|
||||
select_your_language: "Escull el teu idioma!"
|
||||
tutorial_play: "Juga el tutorial"
|
||||
# tutorial_recommended: "Recommended if you've never played before"
|
||||
# tutorial_skip: "Skip Tutorial"
|
||||
# tutorial_not_sure: "Not sure what's going on?"
|
||||
|
@ -922,8 +924,8 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# tournament_blurb: "Write code, collect gold, build armies, crush foes, win prizes, and upgrade your career in our $40,000 Greed tournament! Check out the details"
|
||||
# tournament_blurb_criss_cross: "Win bids, construct paths, outwit opponents, grab gems, and upgrade your career in our Criss-Cross tournament! Check out the details"
|
||||
# tournament_blurb_blog: "on our blog"
|
||||
# rules: "Rules"
|
||||
# winners: "Winners"
|
||||
rules: "Normes"
|
||||
winners: "Guanyadors"
|
||||
|
||||
# ladder_prizes:
|
||||
# title: "Tournament Prizes"
|
||||
|
@ -945,26 +947,26 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# license: "license"
|
||||
# oreilly: "ebook of your choice"
|
||||
|
||||
# loading_error:
|
||||
loading_error:
|
||||
# could_not_load: "Error loading from server"
|
||||
# connection_failure: "Connection failed."
|
||||
connection_failure: "Connexió fallida."
|
||||
# unauthorized: "You need to be signed in. Do you have cookies disabled?"
|
||||
# forbidden: "You do not have the permissions."
|
||||
# not_found: "Not found."
|
||||
not_found: "No trobat."
|
||||
# not_allowed: "Method not allowed."
|
||||
# timeout: "Server timeout."
|
||||
# conflict: "Resource conflict."
|
||||
# bad_input: "Bad input."
|
||||
# server_error: "Server error."
|
||||
# unknown: "Unknown error."
|
||||
server_error: "Error del servidor."
|
||||
unknown: "Error desconegut."
|
||||
|
||||
# resources:
|
||||
resources:
|
||||
# sessions: "Sessions"
|
||||
# your_sessions: "Your Sessions"
|
||||
# level: "Level"
|
||||
level: "Nivell"
|
||||
# social_network_apis: "Social Network APIs"
|
||||
# facebook_status: "Facebook Status"
|
||||
# facebook_friends: "Facebook Friends"
|
||||
facebook_friends: "Amics de Facebook"
|
||||
# facebook_friend_sessions: "Facebook Friend Sessions"
|
||||
# gplus_friends: "G+ Friends"
|
||||
# gplus_friend_sessions: "G+ Friend Sessions"
|
||||
|
@ -995,55 +997,55 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
|
|||
# candidate_sessions: "Candidate Sessions"
|
||||
# user_remark: "User Remark"
|
||||
# user_remarks: "User Remarks"
|
||||
# versions: "Versions"
|
||||
# items: "Items"
|
||||
# heroes: "Heroes"
|
||||
# wizard: "Wizard"
|
||||
versions: "Versions"
|
||||
items: "Objectes"
|
||||
heroes: "Herois"
|
||||
wizard: "Bruixot"
|
||||
# achievement: "Achievement"
|
||||
# clas: "CLAs"
|
||||
# play_counts: "Play Counts"
|
||||
# feedback: "Feedback"
|
||||
|
||||
# delta:
|
||||
# added: "Added"
|
||||
# modified: "Modified"
|
||||
# deleted: "Deleted"
|
||||
delta:
|
||||
added: "Afegit"
|
||||
modified: "Modificat"
|
||||
deleted: "Eliminat"
|
||||
# moved_index: "Moved Index"
|
||||
# text_diff: "Text Diff"
|
||||
# merge_conflict_with: "MERGE CONFLICT WITH"
|
||||
# no_changes: "No Changes"
|
||||
|
||||
# user:
|
||||
user:
|
||||
# stats: "Stats"
|
||||
# singleplayer_title: "Singleplayer Levels"
|
||||
# multiplayer_title: "Multiplayer Levels"
|
||||
singleplayer_title: "Nivell d'un sol jugador"
|
||||
multiplayer_title: "Nivells multijugador"
|
||||
# achievements_title: "Achievements"
|
||||
# last_played: "Last Played"
|
||||
# status: "Status"
|
||||
# status_completed: "Completed"
|
||||
# status_unfinished: "Unfinished"
|
||||
# no_singleplayer: "No Singleplayer games played yet."
|
||||
last_played: "Ultim jugat"
|
||||
status: "Estat"
|
||||
status_completed: "Complet"
|
||||
status_unfinished: "Inacabat"
|
||||
no_singleplayer: "Encara no s'han jugat nivells individuals."
|
||||
# no_multiplayer: "No Multiplayer games played yet."
|
||||
# no_achievements: "No Achievements earned yet."
|
||||
# favorite_prefix: "Favorite language is "
|
||||
# favorite_postfix: "."
|
||||
|
||||
# achievements:
|
||||
achievements:
|
||||
# last_earned: "Last Earned"
|
||||
# amount_achieved: "Amount"
|
||||
# achievement: "Achievement"
|
||||
# category_contributor: "Contributor"
|
||||
# category_miscellaneous: "Miscellaneous"
|
||||
# category_levels: "Levels"
|
||||
category_levels: "Nivells"
|
||||
# category_undefined: "Uncategorized"
|
||||
# current_xp_prefix: ""
|
||||
# current_xp_postfix: " in total"
|
||||
current_xp_postfix: " en total"
|
||||
# new_xp_prefix: ""
|
||||
# new_xp_postfix: " earned"
|
||||
new_xp_postfix: " guanyat"
|
||||
# left_xp_prefix: ""
|
||||
# left_xp_infix: " until level "
|
||||
# left_xp_postfix: ""
|
||||
|
||||
# account:
|
||||
# recently_played: "Recently Played"
|
||||
# no_recent_games: "No games played during the past two weeks."
|
||||
account:
|
||||
recently_played: "Ultimanent jugat"
|
||||
no_recent_games: "No s'ha jugat en les ultimes setmanes."
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
|
|||
done: "Hotovo"
|
||||
customize_wizard: "Upravit Kouzelníka"
|
||||
home: "Domů"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Průvodce"
|
||||
restart: "Restartovat"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
|
|||
victory_rate_the_level: "Ohodnoťte tuto úroveň: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Hrát další úroveň"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Přejít domů"
|
||||
victory_review: "Připomínky!"
|
||||
victory_hour_of_code_done: "Skončili jste?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
|
|||
tome_select_spell: "Zvolte Kouzlo"
|
||||
tome_select_a_thang: "Zvolte někoho pro "
|
||||
tome_available_spells: "Dostupná kouzla"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Pokračovat (stiskněte shift-mezera)"
|
||||
spell_saved: "Kouzlo uloženo"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
|
|||
done: "Færdig"
|
||||
customize_wizard: "Tilpas troldmand"
|
||||
home: "Hjem"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Guide"
|
||||
restart: "Start forfra"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
|
|||
victory_rate_the_level: "Bedøm denne bane: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Spil næste bane"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Gå hjem"
|
||||
victory_review: "Fortæl os mere!"
|
||||
victory_hour_of_code_done: "Er du færdig?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
|
|||
tome_select_spell: "Vælg en trylleformular"
|
||||
tome_select_a_thang: "Vælg nogen til at "
|
||||
tome_available_spells: "Tilgængelige trylleformularer"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Fortsæt (tryk skift-mellemrum)"
|
||||
spell_saved: "Trylleformularen er gemt"
|
||||
skip_tutorial: "Spring over (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
done: "Fertig"
|
||||
customize_wizard: "Bearbeite den Zauberer"
|
||||
home: "Startseite"
|
||||
stop: "Stopp"
|
||||
# skip: "Skip"
|
||||
game_menu: "Spielmenü"
|
||||
guide: "Hilfe"
|
||||
restart: "Neustart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
victory_rate_the_level: "Bewerte das Level: "
|
||||
victory_return_to_ladder: "Zurück zur Rangliste"
|
||||
victory_play_next_level: "Spiel das nächste Level"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Geh auf die Startseite"
|
||||
victory_review: "Erzähl uns davon!"
|
||||
victory_hour_of_code_done: "Bist Du fertig?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
tome_select_spell: "Wähle einen Zauber"
|
||||
tome_select_a_thang: "Wähle jemanden aus, um "
|
||||
tome_available_spells: "Verfügbare Zauber"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Weiter (drücke Shift + Leertaste)"
|
||||
spell_saved: "Zauber gespeichert"
|
||||
skip_tutorial: "Überspringen (Esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
|
|||
done: "Fertig"
|
||||
customize_wizard: "Zauberer apasse"
|
||||
home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Aleitig"
|
||||
restart: "Neu starte"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
|
|||
victory_rate_the_level: "Bewerte das Level: "
|
||||
victory_return_to_ladder: "Zrugg zum letzte Level"
|
||||
victory_play_next_level: "Spiel s nögste Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
victory_review: "Verzell üs meh!"
|
||||
victory_hour_of_code_done: "Bisch fertig?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
|
|||
tome_select_spell: "Wähl en Zauberspruch us"
|
||||
tome_select_a_thang: "Wähl öpper us für"
|
||||
tome_available_spells: "Verfüegbari Zaubersprüch"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Wiiter (shift+space)"
|
||||
spell_saved: "Zauberspruch gspeicheret"
|
||||
skip_tutorial: "Überspringe (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
done: "Fertig"
|
||||
customize_wizard: "Bearbeite den Zauberer"
|
||||
home: "Startseite"
|
||||
stop: "Stopp"
|
||||
# skip: "Skip"
|
||||
game_menu: "Spielmenü"
|
||||
guide: "Hilfe"
|
||||
restart: "Neustart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
victory_rate_the_level: "Bewerte das Level: "
|
||||
victory_return_to_ladder: "Zurück zur Rangliste"
|
||||
victory_play_next_level: "Spiel das nächste Level"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Geh auf die Startseite"
|
||||
victory_review: "Erzähl uns davon!"
|
||||
victory_hour_of_code_done: "Bist Du fertig?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
tome_select_spell: "Wähle einen Zauber"
|
||||
tome_select_a_thang: "Wähle jemanden aus, um "
|
||||
tome_available_spells: "Verfügbare Zauber"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Weiter (drücke Shift + Leertaste)"
|
||||
spell_saved: "Zauber gespeichert"
|
||||
skip_tutorial: "Überspringen (Esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
|
|||
done: "Έτοιμο"
|
||||
customize_wizard: "Προσαρμόστε τον Μάγο"
|
||||
home: "Αρχική"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Οδηγός"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
|
|||
victory_rate_the_level: "Βαθμολογήστε το επίπεδο: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Παίξε το επόμενο επίπεδο"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Πηγαίνετε στην Αρχική"
|
||||
victory_review: "Πείτε μας περισσότερα!"
|
||||
victory_hour_of_code_done: "Τελείωσες;"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
|
|||
# done: "Done"
|
||||
customize_wizard: "Customise Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,6 @@
|
|||
done: "Done"
|
||||
customize_wizard: "Customize Wizard"
|
||||
home: "Home"
|
||||
stop: "Stop"
|
||||
skip: "Skip"
|
||||
game_menu: "Game Menu"
|
||||
guide: "Guide"
|
||||
|
@ -417,9 +416,12 @@
|
|||
tome_cast_button_running: "Running"
|
||||
tome_cast_button_ran: "Ran"
|
||||
tome_submit_button: "Submit"
|
||||
tome_select_spell: "Select a Spell"
|
||||
tome_reload_method: "Reload original code for this method" # Title text for individual method reload button.
|
||||
tome_select_method: "Select a Method"
|
||||
tome_see_all_methods: "See all methods you can edit" # Title text for method list selector (shown when there are multiple programmable methdos).
|
||||
tome_select_a_thang: "Select Someone for "
|
||||
tome_available_spells: "Available Spells"
|
||||
tome_your_skills: "Your Skills"
|
||||
hud_continue: "Continue (shift+space)"
|
||||
spell_saved: "Spell Saved"
|
||||
skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -15,9 +15,9 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
fork: "Bifurcar"
|
||||
play: "Jugar" # When used as an action verb, like "Play next level"
|
||||
retry: "Reintentar"
|
||||
# watch: "Watch"
|
||||
# unwatch: "Unwatch"
|
||||
# submit_patch: "Submit Patch"
|
||||
watch: "Seguir"
|
||||
unwatch: "No seguir"
|
||||
submit_patch: "Enviar Parche"
|
||||
|
||||
units:
|
||||
second: "segundo"
|
||||
|
@ -26,14 +26,14 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
minutes: "minutos"
|
||||
hour: "hora"
|
||||
hours: "horas"
|
||||
# day: "day"
|
||||
# days: "days"
|
||||
# week: "week"
|
||||
# weeks: "weeks"
|
||||
# month: "month"
|
||||
# months: "months"
|
||||
# year: "year"
|
||||
# years: "years"
|
||||
day: "día"
|
||||
days: "días"
|
||||
week: "semana"
|
||||
weeks: "semanas"
|
||||
month: "mes"
|
||||
months: "meses"
|
||||
year: "año"
|
||||
years: "años"
|
||||
|
||||
modal:
|
||||
close: "Cerrar"
|
||||
|
@ -44,14 +44,14 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
|
||||
nav:
|
||||
play: "Jugar" # The top nav bar entry where players choose which levels to play
|
||||
# community: "Community"
|
||||
community: "Comunidad"
|
||||
editor: "Editor"
|
||||
blog: "Blog"
|
||||
forum: "Foro"
|
||||
# account: "Account"
|
||||
# profile: "Profile"
|
||||
# stats: "Stats"
|
||||
# code: "Code"
|
||||
account: "Cuenta"
|
||||
profile: "Perfil"
|
||||
stats: "Stadísticas"
|
||||
code: "Cógigo"
|
||||
admin: "Admin"
|
||||
home: "Inicio"
|
||||
contribute: "Contribuir"
|
||||
|
@ -79,7 +79,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
recover:
|
||||
recover_account_title: "recuperar cuenta"
|
||||
send_password: "Enviar Contraseña de Recuperación"
|
||||
# recovery_sent: "Recovery email sent."
|
||||
recovery_sent: "Correo de recuperación enviado."
|
||||
|
||||
signup:
|
||||
create_account_title: "Crear Cuenta para Guardar el Progreso"
|
||||
|
@ -91,7 +91,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
sign_up: "Registrarse"
|
||||
log_in: "Inicia sesión con tu contraseña"
|
||||
social_signup: "O, puedes conectarte a través de Facebook o G+:"
|
||||
# required: "You need to log in before you can go that way."
|
||||
required: "Necesitas entrar a tu cuenta antes de continuar."
|
||||
|
||||
home:
|
||||
slogan: "Aprende a programar jugando"
|
||||
|
@ -104,12 +104,12 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
for_beginners: "Para Principiantes"
|
||||
multiplayer: "Multijugador"
|
||||
for_developers: "Para Desarrolladores"
|
||||
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers."
|
||||
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language."
|
||||
# coffeescript_blurb: "Nicer JavaScript syntax."
|
||||
# clojure_blurb: "A modern Lisp."
|
||||
# lua_blurb: "Game scripting language."
|
||||
# io_blurb: "Simple but obscure."
|
||||
javascript_blurb: "El lenguaje de la web. Usado en sitios y aplicaciones web, juegos en HTML5, y servidores."
|
||||
python_blurb: "Simple pero poderoso, Python es un grandioso lenguaje de programación de uso general."
|
||||
coffeescript_blurb: "Mejor JavaScript."
|
||||
clojure_blurb: "Un Lisp moderno."
|
||||
lua_blurb: "Para Juegos."
|
||||
io_blurb: "Simple pero oscuro."
|
||||
|
||||
play:
|
||||
choose_your_level: "Elige tu nivel"
|
||||
|
@ -124,29 +124,29 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
campaign_multiplayer_description: "... en las que programas cara-a-cara contra otros jugadores."
|
||||
campaign_player_created: "Creados-Por-Jugadores"
|
||||
campaign_player_created_description: "... en los que luchas contra la creatividad de tus compañeros <a href=\"/contribute#artisan\">Hechiceros Artesanales</a>."
|
||||
# campaign_classic_algorithms: "Classic Algorithms"
|
||||
# campaign_classic_algorithms_description: "... in which you learn the most popular algorithms in Computer Science."
|
||||
campaign_classic_algorithms: "Algorítmos Clásicos"
|
||||
campaign_classic_algorithms_description: "... en la cual aprendes los algorítmos más populares en las Ciencias de la Computación."
|
||||
level_difficulty: "Dificultad: "
|
||||
play_as: "Jugar Como "
|
||||
spectate: "Observar"
|
||||
# players: "players"
|
||||
# hours_played: "hours played"
|
||||
# items: "Items"
|
||||
# heroes: "Heroes"
|
||||
# achievements: "Achievements"
|
||||
# account: "Account"
|
||||
# settings: "Settings"
|
||||
# next: "Next"
|
||||
# previous: "Previous"
|
||||
# choose_inventory: "Equip Items"
|
||||
players: "jugadores"
|
||||
hours_played: "horas jugadas"
|
||||
items: "Objetos"
|
||||
heroes: "Héroes"
|
||||
achievements: "Logros"
|
||||
account: "Cuenta"
|
||||
settings: "Configuración"
|
||||
next: "Próximo"
|
||||
previous: "Previo"
|
||||
choose_inventory: "Equipar objetos"
|
||||
|
||||
# items:
|
||||
# armor: "Armor"
|
||||
# hands: "Hands"
|
||||
# accessories: "Accessories"
|
||||
# books: "Books"
|
||||
# minions: "Minions"
|
||||
# misc: "Misc"
|
||||
items:
|
||||
armor: "Armadura"
|
||||
hands: "Manos"
|
||||
accessories: "Accesorios"
|
||||
books: "Libros"
|
||||
minions: "Seguidores"
|
||||
misc: "Misc"
|
||||
|
||||
contact:
|
||||
contact_us: "Contacta a CodeCombat"
|
||||
|
@ -191,7 +191,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
autosave: "Cambios Guardados Automáticamente"
|
||||
me_tab: "Yo"
|
||||
picture_tab: "Imagen"
|
||||
# upload_picture: "Upload a picture"
|
||||
upload_picture: "Sube una imagen"
|
||||
wizard_tab: "Hechicero"
|
||||
password_tab: "Contraseña"
|
||||
emails_tab: "Correos"
|
||||
|
@ -200,16 +200,16 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
new_password: "Nueva Contraseña"
|
||||
new_password_verify: "Verificar"
|
||||
email_subscriptions: "Suscripciones de Email"
|
||||
# email_subscriptions_none: "No Email Subscriptions."
|
||||
email_subscriptions_none: "No tienes subcripciones."
|
||||
email_announcements: "Noticias"
|
||||
email_announcements_description: "Recibe correos electrónicos con las últimas noticias y desarrollos de CodeCombat."
|
||||
email_notifications: "Notificaciones"
|
||||
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
||||
# email_any_notes: "Any Notifications"
|
||||
# email_any_notes_description: "Disable to stop all activity notification emails."
|
||||
# email_news: "News"
|
||||
# email_recruit_notes: "Job Opportunities"
|
||||
# email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job."
|
||||
email_notifications_summary: "Controles para tus notificaciones por correo electrónico automáticas y personalizadas relativas a tu actividad en CodeCombat."
|
||||
email_any_notes: "Algunas notificaciones"
|
||||
email_any_notes_description: "Desactiva para detener toda la actividad de correos de notificaciones."
|
||||
email_news: "Noticias"
|
||||
email_recruit_notes: "Oportunidades Laborales"
|
||||
email_recruit_notes_description: "Si juegas realmente bien podríamos contactarte para ofrecerte un (mejor) trabajo."
|
||||
contributor_emails: "Emails Clase Contribuyente"
|
||||
contribute_prefix: "¡Estamos buscando gente que se una a nuestro grupo! Echa un vistazo a la "
|
||||
contribute_page: "página de contribución"
|
||||
|
@ -218,150 +218,150 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
error_saving: "Error al Guardar"
|
||||
saved: "Cambios Guardados"
|
||||
password_mismatch: "La contraseña no coincide."
|
||||
# password_repeat: "Please repeat your password."
|
||||
password_repeat: "Por favor repita su contraseña."
|
||||
job_profile: "Perfil de Trabajo"
|
||||
job_profile_approved: "Tu perfil de trabajo ha sido aprobado por CodeCombat. Los empleadores podrán verlo hasta que lo marques como inactivo o permanezca sin cambios por cuatro semanas."
|
||||
job_profile_explanation: "¡Hola! Llena esto, y te contactaremos acerca de encontrar un trabajo como desarrollador de software."
|
||||
# sample_profile: "See a sample profile"
|
||||
# view_profile: "View Your Profile"
|
||||
sample_profile: "Mira un perfil de ejemplo"
|
||||
view_profile: "Ver tu perfil"
|
||||
|
||||
account_profile:
|
||||
# settings: "Settings"
|
||||
# edit_profile: "Edit Profile"
|
||||
# done_editing: "Done Editing"
|
||||
settings: "Configuración"
|
||||
edit_profile: "Editar Perfil"
|
||||
done_editing: "Terminar Edición"
|
||||
profile_for_prefix: "Perfil para "
|
||||
profile_for_suffix: ""
|
||||
# featured: "Featured"
|
||||
# not_featured: "Not Featured"
|
||||
featured: "Soportado"
|
||||
not_featured: "No Soportado"
|
||||
looking_for: "Buscando:"
|
||||
last_updated: "Última Actualización:"
|
||||
contact: "Contacto"
|
||||
# active: "Looking for interview offers now"
|
||||
# inactive: "Not looking for offers right now"
|
||||
# complete: "complete"
|
||||
# next: "Next"
|
||||
# next_city: "city?"
|
||||
# next_country: "pick your country."
|
||||
# next_name: "name?"
|
||||
# next_short_description: "write a short description."
|
||||
# next_long_description: "describe your desired position."
|
||||
# next_skills: "list at least five skills."
|
||||
# next_work: "chronicle your work history."
|
||||
# next_education: "recount your educational ordeals."
|
||||
# next_projects: "show off up to three projects you've worked on."
|
||||
# next_links: "add any personal or social links."
|
||||
# next_photo: "add an optional professional photo."
|
||||
# next_active: "mark yourself open to offers to show up in searches."
|
||||
# example_blog: "Blog"
|
||||
# example_personal_site: "Personal Site"
|
||||
# links_header: "Personal Links"
|
||||
# links_blurb: "Link any other sites or profiles you want to highlight, like your GitHub, your LinkedIn, or your blog."
|
||||
# links_name: "Link Name"
|
||||
# links_name_help: "What are you linking to?"
|
||||
# links_link_blurb: "Link URL"
|
||||
# basics_header: "Update basic info"
|
||||
# basics_active: "Open to Offers"
|
||||
# basics_active_help: "Want interview offers right now?"
|
||||
# basics_job_title: "Desired Job Title"
|
||||
# basics_job_title_help: "What role are you looking for?"
|
||||
# basics_city: "City"
|
||||
# basics_city_help: "City you want to work in (or live in now)."
|
||||
# basics_country: "Country"
|
||||
# basics_country_help: "Country you want to work in (or live in now)."
|
||||
# basics_visa: "US Work Status"
|
||||
# basics_visa_help: "Are you authorized to work in the US, or do you need visa sponsorship? (If you live in Canada or Australia, mark authorized.)"
|
||||
# basics_looking_for: "Looking For"
|
||||
# basics_looking_for_full_time: "Full-time"
|
||||
# basics_looking_for_part_time: "Part-time"
|
||||
# basics_looking_for_remote: "Remote"
|
||||
# basics_looking_for_contracting: "Contracting"
|
||||
# basics_looking_for_internship: "Internship"
|
||||
# basics_looking_for_help: "What kind of developer position do you want?"
|
||||
# name_header: "Fill in your name"
|
||||
# name_anonymous: "Anonymous Developer"
|
||||
# name_help: "Name you want employers to see, like 'Nick Winter'."
|
||||
# short_description_header: "Write a short description of yourself"
|
||||
# short_description_blurb: "Add a tagline to help an employer quickly learn more about you."
|
||||
# short_description: "Tagline"
|
||||
# short_description_help: "Who are you, and what are you looking for? 140 characters max."
|
||||
# skills_header: "Skills"
|
||||
# skills_help: "Tag relevant developer skills in order of proficiency."
|
||||
# long_description_header: "Describe your desired position"
|
||||
# long_description_blurb: "Tell employers how awesome you are and what role you want."
|
||||
# long_description: "Self Description"
|
||||
# long_description_help: "Describe yourself to potential employers. Keep it short and to the point. We recommend outlining the position that would most interest you. Tasteful markdown okay; 600 characters max."
|
||||
active: "En busca de entrevistas ahora mismo"
|
||||
inactive: "No busco entrevistas por ahora"
|
||||
complete: "completado"
|
||||
next: "Siguiente"
|
||||
next_city: "¿Ciudad?"
|
||||
next_country: "selecciona tu país"
|
||||
next_name: "¿Nombre?"
|
||||
next_short_description: "escribe una breve descripción."
|
||||
next_long_description: "describe a que posción aspiras."
|
||||
next_skills: "nombra al menos cinco de tus cualidades."
|
||||
next_work: "detalla tu historial laboral."
|
||||
next_education: "realiza un recuento de tus méritos academicos."
|
||||
next_projects: "exhibe un máximo de tres proyectos en los que hayas participado."
|
||||
next_links: "añade cualquier enlace personal o social"
|
||||
next_photo: "añade una foto profesional (opcional)."
|
||||
next_active: "etiquetate como abierto a ofertas, para aparecer en las busquedas."
|
||||
example_blog: "Blog"
|
||||
example_personal_site: "Sitio Personal"
|
||||
links_header: "Enlaces Personale"
|
||||
links_blurb: "Añade enlaces a cualquier otro sitio o perfil que desees destacar, como tu GitHub, LinkedIn, o blog."
|
||||
links_name: "Nombre del enlace"
|
||||
links_name_help: "¿A que estas enlazando?"
|
||||
links_link_blurb: "URL del enlace"
|
||||
basics_header: "Actualizar información básica"
|
||||
basics_active: "Abierto a ofertas"
|
||||
basics_active_help: "¿Quieres ofertas para entrevistarte ahora mismo?"
|
||||
basics_job_title: "Posición Laboral deseada"
|
||||
basics_job_title_help: "¿Qué posición laboral estas buscando?"
|
||||
basics_city: "Ciudad"
|
||||
basics_city_help: "Ciudad en la que deseas trabajar (o en la que vives ahora)."
|
||||
basics_country: "País"
|
||||
basics_country_help: "País en el que deseas trabajar (o en el que vives ahora)."
|
||||
basics_visa: "Estatus laboral en EEUU"
|
||||
basics_visa_help: "¿Te encuentras autorizado para trabajar en los EEUU, o necesitas un patrocinador de visa? (Si vives en Canada o australia, selecciona autorizado.)"
|
||||
basics_looking_for: "Buscando"
|
||||
basics_looking_for_full_time: "Tiempo completo"
|
||||
basics_looking_for_part_time: "Tiempo parcial"
|
||||
basics_looking_for_remote: "A distacia"
|
||||
basics_looking_for_contracting: "Contratación"
|
||||
basics_looking_for_internship: "Pasantía"
|
||||
basics_looking_for_help: "¿Qué tipo de posición estas buscando como desarrollador?"
|
||||
name_header: "Escribe tu nombre"
|
||||
name_anonymous: "Desarrollador anónimo"
|
||||
name_help: "El nombre que los empleadores verán, por ejemplo 'Max Power'."
|
||||
short_description_header: "Descríbete en pocas palabras"
|
||||
short_description_blurb: "Añade un lema, para que un empleador pueda conocerte mejor facilmente."
|
||||
short_description: "Lema"
|
||||
short_description_help: "¿Quién eres, y que estas buscando? 140 caractéres máximo."
|
||||
skills_header: "Cualidades"
|
||||
skills_help: "Etiqueta tus cualidades más relevantes como desarrollador, en orden de competencia."
|
||||
long_description_header: "Describe tu posición laboral deseada"
|
||||
long_description_blurb: "Dile a los empleadores lo genial que eres, y que rol estas buscando."
|
||||
long_description: "Auto Descripción"
|
||||
long_description_help: "Describete a ti mismo para tus potenciales empleadores. Mantenlo corto y ve al grano. Te recomendamos destacar la posición laboral de mayor interes para ti. Un enfoque reduccionista, de buen gusto, es bienvenido; 600 caracteres mmáximo."
|
||||
work_experience: "Experiencia de Trabajo"
|
||||
# work_header: "Chronicle your work history"
|
||||
# work_years: "Years of Experience"
|
||||
# work_years_help: "How many years of professional experience (getting paid) developing software do you have?"
|
||||
# work_blurb: "List your relevant work experience, most recent first."
|
||||
# work_employer: "Employer"
|
||||
# work_employer_help: "Name of your employer."
|
||||
# work_role: "Job Title"
|
||||
# work_role_help: "What was your job title or role?"
|
||||
# work_duration: "Duration"
|
||||
# work_duration_help: "When did you hold this gig?"
|
||||
# work_description: "Description"
|
||||
# work_description_help: "What did you do there? (140 chars; optional)"
|
||||
work_header: "Detalla tu historial laboral"
|
||||
work_years: "Años de Experiencia"
|
||||
work_years_help: "Cuántos años de experiencia profesional (pagos) desarrollando software tienes?"
|
||||
work_blurb: "Realiza una lista con lo que consideres es tu experiencia laboral relevante, comenzando por la más reciente."
|
||||
work_employer: "Empleador"
|
||||
work_employer_help: "Nombre de tu empleador."
|
||||
work_role: "Nombre de la posición laboral"
|
||||
work_role_help: "¿Cuál era tu posición laboral o rol?"
|
||||
work_duration: "Duración"
|
||||
work_duration_help: "¿Cuál fue la duración de esa experiencia?"
|
||||
work_description: "Descripción"
|
||||
work_description_help: "¿Qué actividades realizabas allí? (140 caracteres; opcional)"
|
||||
education: "Educación"
|
||||
# education_header: "Recount your academic ordeals"
|
||||
# education_blurb: "List your academic ordeals."
|
||||
# education_school: "School"
|
||||
# education_school_help: "Name of your school."
|
||||
# education_degree: "Degree"
|
||||
# education_degree_help: "What was your degree and field of study?"
|
||||
# education_duration: "Dates"
|
||||
# education_duration_help: "When?"
|
||||
# education_description: "Description"
|
||||
# education_description_help: "Highlight anything about this educational experience. (140 chars; optional)"
|
||||
education_header: "Realiza un recuento de tus méritos academicos"
|
||||
education_blurb: "Escribe un recuento de tus méritos academicos."
|
||||
education_school: "Escuela"
|
||||
education_school_help: "Nombre de tu escuela."
|
||||
education_degree: "Título"
|
||||
education_degree_help: "¿Cuál fue tu título y área de estudio"
|
||||
education_duration: "Fechas"
|
||||
education_duration_help: "¿Cuándo?"
|
||||
education_description: "Descripción"
|
||||
education_description_help: "Destaca cualquier cosa acerca de esta experiencia educacional. (140 caracteres; opcional)"
|
||||
our_notes: "Nuestras Notas"
|
||||
# remarks: "Remarks"
|
||||
remarks: "Observaciones"
|
||||
projects: "Proyectos"
|
||||
# projects_header: "Add 3 projects"
|
||||
# projects_header_2: "Projects (Top 3)"
|
||||
# projects_blurb: "Highlight your projects to amaze employers."
|
||||
# project_name: "Project Name"
|
||||
# project_name_help: "What was the project called?"
|
||||
# project_description: "Description"
|
||||
# project_description_help: "Briefly describe the project."
|
||||
# project_picture: "Picture"
|
||||
# project_picture_help: "Upload a 230x115px or larger image showing off the project."
|
||||
# project_link: "Link"
|
||||
# project_link_help: "Link to the project."
|
||||
# player_code: "Player Code"
|
||||
projects_header: "Añade 3 proyectos"
|
||||
projects_header_2: "Proyectos (Top 3)"
|
||||
projects_blurb: "Destaca tus proyectos para sorprender a los empleadores."
|
||||
project_name: "Nombre del Proyecto"
|
||||
project_name_help: "¿Cómo se llamaba el proyecto?"
|
||||
project_description: "Descripción"
|
||||
project_description_help: "Describe el proyecto brevemente.."
|
||||
project_picture: "Foto"
|
||||
project_picture_help: "Sube una imagen de 230x115px (o mayor) mostrando el proyecto"
|
||||
project_link: "Enlace"
|
||||
project_link_help: "Enlace al proyecto."
|
||||
player_code: "Código de Jugador"
|
||||
|
||||
employers:
|
||||
# hire_developers_not_credentials: "Hire developers, not credentials."
|
||||
# get_started: "Get Started"
|
||||
# already_screened: "We've already technically screened all our candidates"
|
||||
# filter_further: ", but you can also filter further:"
|
||||
# filter_visa: "Visa"
|
||||
# filter_visa_yes: "US Authorized"
|
||||
# filter_visa_no: "Not Authorized"
|
||||
# filter_education_top: "Top School"
|
||||
# filter_education_other: "Other"
|
||||
# filter_role_web_developer: "Web Developer"
|
||||
# filter_role_software_developer: "Software Developer"
|
||||
# filter_role_mobile_developer: "Mobile Developer"
|
||||
# filter_experience: "Experience"
|
||||
# filter_experience_senior: "Senior"
|
||||
# filter_experience_junior: "Junior"
|
||||
# filter_experience_recent_grad: "Recent Grad"
|
||||
# filter_experience_student: "College Student"
|
||||
# filter_results: "results"
|
||||
# start_hiring: "Start hiring."
|
||||
# reasons: "Three reasons you should hire through us:"
|
||||
# everyone_looking: "Everyone here is looking for their next opportunity."
|
||||
# everyone_looking_blurb: "Forget about 20% LinkedIn InMail response rates. Everyone that we list on this site wants to find their next position and will respond to your request for an introduction."
|
||||
# weeding: "Sit back; we've done the weeding for you."
|
||||
# weeding_blurb: "Every player that we list has been screened for technical ability. We also perform phone screens for select candidates and make notes on their profiles to save you time."
|
||||
# pass_screen: "They will pass your technical screen."
|
||||
# pass_screen_blurb: "Review each candidate's code before reaching out. One employer found that 5x as many of our devs passed their technical screen than hiring from Hacker News."
|
||||
# make_hiring_easier: "Make my hiring easier, please."
|
||||
# what: "What is CodeCombat?"
|
||||
# what_blurb: "CodeCombat is a multiplayer browser programming game. Players write code to control their forces in battle against other developers. Our players have experience with all major tech stacks."
|
||||
# cost: "How much do we charge?"
|
||||
# cost_blurb: "We charge 15% of first year's salary and offer a 100% money back guarantee for 90 days. We don't charge for candidates who are already actively being interviewed at your company."
|
||||
hire_developers_not_credentials: "Contrata desarrolladores, no credenciales."
|
||||
get_started: "Comenzar"
|
||||
already_screened: "Ya hemos realizado un monitoreo técnico de todos los candidatos"
|
||||
filter_further: ",pero también puedes hacer un filtrado mas específico:"
|
||||
filter_visa: "Visa"
|
||||
filter_visa_yes: "Autorizado para los EEUU"
|
||||
filter_visa_no: "No autorizado"
|
||||
filter_education_top: "Escuela de elite"
|
||||
filter_education_other: "Otro"
|
||||
filter_role_web_developer: "Desarrollador Web"
|
||||
filter_role_software_developer: "Desarrollador de Software"
|
||||
filter_role_mobile_developer: "Desarrollador Móvil"
|
||||
filter_experience: "Experiencia"
|
||||
filter_experience_senior: "Senior"
|
||||
filter_experience_junior: "Junior"
|
||||
filter_experience_recent_grad: "Grado académico reciente"
|
||||
filter_experience_student: "Estudiante Universitario"
|
||||
filter_results: "resultados"
|
||||
start_hiring: "Comenzar a contratar."
|
||||
reasons: "Tres razones por las cuales deberías contratar a traves de nosotros:"
|
||||
everyone_looking: "Todos aquí estan en busqueda de una oportunidad laboral."
|
||||
everyone_looking_blurb: "Olvidate del 20% de respuestas promedio obtenidas via LinkedIn InMail. Todas las personas listadas en este sitio quieren encontrar su próxima posición laboral y responderan a tu solicitud para concretar una introducción."
|
||||
weeding: "Relajate; ya hemos desmalezado por ti."
|
||||
weeding_blurb: "Todo jugador listado ha sido monitoreado en lo que a su habilidad técnica se refiere. También llevamos a cabo monitoreos telefónicos a los candidatos seleccionados y dejamos notas en sus perfiles para ahorrarte tiempo."
|
||||
pass_screen: "Ell@s superaran tu monitoreo técnico."
|
||||
pass_screen_blurb: "Revisa el código de cada jugador antes de ponerte en contacto. Uno de nuestros empleadores se encontro con una proporción 5 veces mayor de nuestros desarrolladores superando su monitoreo técnico al compararlo con contrataciones realizadas en Hacker News."
|
||||
make_hiring_easier: "Has mi contratación mas simple, por favor."
|
||||
what: "Que es CodeCombat?"
|
||||
what_blurb: "CodeCombat es un juego multijugador de programación para navegadores. Los jugadores escriben un código para medirse en batalla contra otros desarrolladores. Nuestros jugadores cuentan con experiencia en los principales lenguajes técnicos."
|
||||
cost: "¿Cuánto cobramos?"
|
||||
cost_blurb: "Cobramos un 15% del primer salario anual y ofrecemos una garantía de devolución del 100% del dinero por 90 días. No cobramos por candidatos que actualmente se encuentren siendo entrevistados de forma activa por tu compañia."
|
||||
candidate_name: "Nombre"
|
||||
candidate_location: "Ubicación"
|
||||
candidate_looking_for: "Buscando"
|
||||
|
@ -369,25 +369,25 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
candidate_top_skills: "Mejores Habilidades"
|
||||
candidate_years_experience: "Años de Exp"
|
||||
candidate_last_updated: "Última Actualización"
|
||||
# candidate_who: "Who"
|
||||
# featured_developers: "Featured Developers"
|
||||
# other_developers: "Other Developers"
|
||||
# inactive_developers: "Inactive Developers"
|
||||
candidate_who: "Quién"
|
||||
featured_developers: "Desarrolladores Destacados"
|
||||
other_developers: "Otros Desarrolladores"
|
||||
inactive_developers: "Desarrolladores Inactivos"
|
||||
|
||||
play_level:
|
||||
done: "Listo"
|
||||
customize_wizard: "Personalizar Hechicero"
|
||||
home: "Inicio"
|
||||
# stop: "Stop"
|
||||
# game_menu: "Game Menu"
|
||||
# skip: "Skip"
|
||||
game_menu: "Menu del Juego"
|
||||
guide: "Guia"
|
||||
restart: "Reiniciar"
|
||||
goals: "Objetivos"
|
||||
# goal: "Goal"
|
||||
# success: "Success!"
|
||||
# incomplete: "Incomplete"
|
||||
# timed_out: "Ran out of time"
|
||||
# failing: "Failing"
|
||||
success: "¡Éxito!"
|
||||
incomplete: "Incompleto"
|
||||
timed_out: "Se te acabo el tiempo"
|
||||
failing: "Fallando"
|
||||
action_timeline: "Cronologia de Accion"
|
||||
click_to_select: "Has click en una unidad para seleccionarla."
|
||||
reload_title: "¿Recargar Todo el Codigo?"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
victory_rate_the_level: "Valora el nivel: "
|
||||
victory_return_to_ladder: "Volver a la escalera"
|
||||
victory_play_next_level: "Jugar Próximo Nivel"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Ir al Inicio"
|
||||
victory_review: "¡Cuéntanos más!"
|
||||
victory_hour_of_code_done: "¿Has acabado?"
|
||||
|
@ -418,10 +419,11 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
tome_select_spell: "Selecciona un Hechizo"
|
||||
tome_select_a_thang: "Selecciona Alguien para "
|
||||
tome_available_spells: "Hechizos Disponibles"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Continuar (presionar shift+space)"
|
||||
spell_saved: "Hechizo Guardado"
|
||||
skip_tutorial: "Saltar (esc)"
|
||||
# keyboard_shortcuts: "Key Shortcuts"
|
||||
keyboard_shortcuts: "Atajos de teclado"
|
||||
loading_ready: "¡Listo!"
|
||||
# loading_start: "Start Level"
|
||||
tip_insert_positions: "Shift+Clic un punto en el mapa para insertarlo en el editor de hechizos."
|
||||
|
@ -431,7 +433,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
tip_open_source: "¡CodeCombat es 100% código abierto!"
|
||||
tip_beta_launch: "CodeCombat lanzó su beta en Octubre del 2013."
|
||||
tip_js_beginning: "JavaScript es sólo el principio."
|
||||
# tip_think_solution: "Think of the solution, not the problem."
|
||||
tip_think_solution: "Piensa en la solución, no en el problema."
|
||||
tip_theory_practice: "En teoría, no hay diferencia entre la teoría y la práctica. Pero en la práctica, si la hay. - Yogi Berra"
|
||||
tip_error_free: "Hay dos formas de escribir programas libres de errores; sólo la tercera funciona. - Alan Perlis"
|
||||
tip_debugging_program: "Si depurar es el proceso de remover errores, entonces programar debe ser el proceso de colocarlos. - Edsger W. Dijkstra"
|
||||
|
@ -451,7 +453,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
|
|||
tip_impossible: "Siempre parece imposible hasta que se hace. - Nelson Mandela"
|
||||
tip_talk_is_cheap: "Hablar es barato. Muestrame el código. - Linus Torvalds"
|
||||
tip_first_language: "La cosa más desastroza que puedes aprender es tu primer lenguaje de programación. - Alan Kay"
|
||||
# tip_hardware_problem: "Q: How many programmers does it take to change a light bulb? A: None, it's a hardware problem."
|
||||
tip_hardware_problem: "P: ¿Cuántos programadores son necesarios para cambiar una bombilla eléctrica? R: Ninguno, es un problema de hardware."
|
||||
# tip_hofstadters_law: "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law."
|
||||
# tip_premature_optimization: "Premature optimization is the root of all evil. - Donald Knuth"
|
||||
# tip_brute_force: "When in doubt, use brute force. - Ken Thompson"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
done: "Hecho"
|
||||
customize_wizard: "Personalizar Mago"
|
||||
home: "Inicio"
|
||||
stop: "Parar"
|
||||
# skip: "Skip"
|
||||
game_menu: "Menu del Juego"
|
||||
guide: "Guía"
|
||||
restart: "Reiniciar"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
victory_rate_the_level: "Puntúa este nivel: "
|
||||
victory_return_to_ladder: "Volver a Clasificación"
|
||||
victory_play_next_level: "Jugar el siguiente nivel"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Ir a Inicio"
|
||||
victory_review: "¡Cuéntanos más!"
|
||||
victory_hour_of_code_done: "¿Ya terminaste?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
tome_select_spell: "Selecciona un Hechizo"
|
||||
tome_select_a_thang: "Selecciona a alguien para "
|
||||
tome_available_spells: "Hechizos disponibles"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Continuar (pulsa Shift+Space)"
|
||||
spell_saved: "Hechizo guardado"
|
||||
skip_tutorial: "Saltar (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
|||
done: "Fait"
|
||||
customize_wizard: "Personnaliser le magicien"
|
||||
home: "Accueil"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Guide"
|
||||
restart: "Relancer"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
|||
victory_rate_the_level: "Notez ce niveau: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Jouer au prochain niveau"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Retourner à l'accueil"
|
||||
victory_review: "Dites-nous en plus!"
|
||||
victory_hour_of_code_done: "Déjà fini ?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
|||
tome_select_spell: "Choisissez un sort"
|
||||
tome_select_a_thang: "Sélectionnez une unité pour"
|
||||
tome_available_spells: "Sorts diponibles"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Continuer (appuie sur shift ou espace)"
|
||||
spell_saved: "Sort enregistré"
|
||||
skip_tutorial: "Passer (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
done: "Kész"
|
||||
customize_wizard: "Varázsló testreszabása"
|
||||
home: "Kezdőlap"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Segítség"
|
||||
restart: "Előlről"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
victory_rate_the_level: "Értékeld a pályát: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Következő pálya"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Vissza a kezdőoldalra"
|
||||
victory_review: "Mondd el a véleményedet!"
|
||||
victory_hour_of_code_done: "Készen vagy?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
tome_select_spell: "Válassz egy varázslatot"
|
||||
tome_select_a_thang: "Válassz ki valakit "
|
||||
tome_available_spells: "Elérhető varázslatok"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Folytatás (shift+space)"
|
||||
spell_saved: "Varázslat elmentve."
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
done: "Fatto"
|
||||
customize_wizard: "Personalizza stregone"
|
||||
home: "Pagina iniziale"
|
||||
stop: "Stop"
|
||||
# skip: "Skip"
|
||||
game_menu: "Menu"
|
||||
guide: "Guida"
|
||||
restart: "Ricomincia"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
victory_rate_the_level: "Vota il livello: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Gioca il prossimo livello"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Torna alla pagina iniziale"
|
||||
victory_review: "Dicci di più!"
|
||||
victory_hour_of_code_done: "Finito?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
tome_select_spell: "Seleziona un incantesimo"
|
||||
tome_select_a_thang: "Seleziona qualcuno per "
|
||||
tome_available_spells: "Incantesimi disponibili"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Continua (premi Maiusc-Spazio)"
|
||||
spell_saved: "Magia Salvata"
|
||||
skip_tutorial: "Salta (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
done: "完了"
|
||||
customize_wizard: "魔法使いの設定"
|
||||
home: "ホーム"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "ガイド"
|
||||
restart: "再始動"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
victory_rate_the_level: "このレベルの評価: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "次のレベル"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "ホームに戻る"
|
||||
victory_review: "フィードバック"
|
||||
victory_hour_of_code_done: "完了してよろしいですか?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
tome_select_spell: "呪文を選択"
|
||||
tome_select_a_thang: "誰かを選択: "
|
||||
tome_available_spells: "利用できる呪文"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "続く (Shift+Spaceキー)"
|
||||
spell_saved: "呪文を保存しました"
|
||||
skip_tutorial: "スキップ (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
done: "완료"
|
||||
customize_wizard: "사용자 정의 마법사"
|
||||
home: "홈"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "가이드"
|
||||
restart: "재시작"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
victory_rate_the_level: "이번 레벨 평가: "
|
||||
victory_return_to_ladder: "레더로 돌아가기"
|
||||
victory_play_next_level: "다음 레벨 플레이 하기"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "홈으로"
|
||||
victory_review: "리뷰를 남겨주세요"
|
||||
victory_hour_of_code_done: "정말 종료합니까?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
tome_select_spell: "마법을 선택 하세요"
|
||||
tome_select_a_thang: "누군가를 선택하세요. "
|
||||
tome_available_spells: "사용 가능한 마법"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "계속진행 (shift+space)"
|
||||
spell_saved: "마법 저장 완료"
|
||||
skip_tutorial: "넘기기 (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
|
|||
done: "Ferdig"
|
||||
customize_wizard: "Spesiallag Trollmann"
|
||||
home: "Hjem"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Guide"
|
||||
restart: "Start på nytt"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
|
|||
victory_rate_the_level: "Bedøm nivået: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Spill Neste Nivå"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Gå Hjem"
|
||||
victory_review: "Fortell oss mer!"
|
||||
victory_hour_of_code_done: "Er du ferdig?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
|
|||
tome_select_spell: "Velg et Trylleformular"
|
||||
tome_select_a_thang: "Velg Noe for å "
|
||||
tome_available_spells: "Tilgjenglige Trylleformularer"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Fortsett (trykk shift-mellomrom)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
|
|||
done: "Klaar"
|
||||
customize_wizard: "Pas Tovenaar aan"
|
||||
home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Handleiding"
|
||||
restart: "Herstarten"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
|
|||
victory_rate_the_level: "Beoordeel het level: "
|
||||
victory_return_to_ladder: "Keer terug naar de ladder"
|
||||
victory_play_next_level: "Speel Volgend Level"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Ga naar Home"
|
||||
victory_review: "Vertel ons meer!"
|
||||
victory_hour_of_code_done: "Ben Je Klaar?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
|
|||
tome_select_spell: "Selecteer een Spreuk"
|
||||
tome_select_a_thang: "Selecteer Iemand voor "
|
||||
tome_available_spells: "Beschikbare spreuken"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Ga verder (druk shift-space)"
|
||||
spell_saved: "Spreuk Opgeslagen"
|
||||
skip_tutorial: "Overslaan (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
done: "Klaar"
|
||||
customize_wizard: "Pas Tovenaar aan"
|
||||
home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Handleiding"
|
||||
restart: "Herstarten"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
victory_rate_the_level: "Beoordeel het level: "
|
||||
victory_return_to_ladder: "Keer terug naar de ladder"
|
||||
victory_play_next_level: "Speel Volgend Level"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Ga naar Home"
|
||||
victory_review: "Vertel ons meer!"
|
||||
victory_hour_of_code_done: "Ben Je Klaar?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
tome_select_spell: "Selecteer een Spreuk"
|
||||
tome_select_a_thang: "Selecteer Iemand voor "
|
||||
tome_available_spells: "Beschikbare spreuken"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Ga verder (druk shift-spatie)"
|
||||
spell_saved: "Spreuk Opgeslagen"
|
||||
skip_tutorial: "Overslaan (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
|
|||
done: "Ferdig"
|
||||
customize_wizard: "Tilpass trollmann"
|
||||
home: "Hovedside"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Guide"
|
||||
restart: "Start på nytt"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
|
|||
victory_rate_the_level: "Bedøm nivået: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Spill neste nivå"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Gå til Hovedsiden"
|
||||
victory_review: "Fortell oss mer!"
|
||||
victory_hour_of_code_done: "Er du ferdig?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
|
|||
tome_select_spell: "Velg et trylleformular"
|
||||
tome_select_a_thang: "Velg noe for å "
|
||||
tome_available_spells: "Tilgjenglige trylleformularer"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Fortsett (trykk shift+mellomrom)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
done: "Zrobione"
|
||||
customize_wizard: "Spersonalizuj czarodzieja"
|
||||
home: "Strona główna"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
game_menu: "Menu gry"
|
||||
guide: "Przewodnik"
|
||||
restart: "Zacznij od nowa"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
victory_rate_the_level: "Oceń poziom: "
|
||||
victory_return_to_ladder: "Powrót do drabinki"
|
||||
victory_play_next_level: "Przejdź na następny poziom"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Powrót do strony głównej"
|
||||
victory_review: "Powiedz nam coś więcej!"
|
||||
victory_hour_of_code_done: "Skończyłeś już?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
tome_select_spell: "Wybierz czar"
|
||||
tome_select_a_thang: "Wybierz kogoś do "
|
||||
tome_available_spells: "Dostępne czary"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Kontynuuj (Shift + spacja)"
|
||||
spell_saved: "Czar zapisany"
|
||||
skip_tutorial: "Pomiń (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
|
|||
done: "Pronto"
|
||||
customize_wizard: "Personalize o feiticeiro"
|
||||
home: "Início"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Guia"
|
||||
restart: "Reiniciar"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
|
|||
victory_rate_the_level: "Avalie o estágio: "
|
||||
victory_return_to_ladder: "Retornar para a Ladder"
|
||||
victory_play_next_level: "Jogar o próximo estágio"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Ir à página inicial"
|
||||
victory_review: "Diga-nos mais!"
|
||||
victory_hour_of_code_done: "Terminou?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
|
|||
tome_select_spell: "Selecione um Feitiço"
|
||||
tome_select_a_thang: "Selecione alguém para "
|
||||
tome_available_spells: "Feitiços Disponíveis"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Continue (tecle Shift+Space)"
|
||||
spell_saved: "Feitiço Salvo"
|
||||
skip_tutorial: "Pular (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
|
|||
done: "Concluir"
|
||||
customize_wizard: "Personalizar Feiticeiro"
|
||||
home: "Início"
|
||||
stop: "Parar"
|
||||
skip: "Saltar"
|
||||
game_menu: "Menu do Jogo"
|
||||
guide: "Guia"
|
||||
restart: "Reiniciar"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
|
|||
victory_rate_the_level: "Classifica este nível: "
|
||||
victory_return_to_ladder: "Voltar à Classificação"
|
||||
victory_play_next_level: "Jogar Próximo Nível"
|
||||
victory_play_continue: "Continuar"
|
||||
victory_go_home: "Ir para o Início"
|
||||
victory_review: "Conta-nos mais!"
|
||||
victory_hour_of_code_done: "Terminaste?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
|
|||
tome_select_spell: "Seleciona um Feitiço"
|
||||
tome_select_a_thang: "Seleciona Alguém para "
|
||||
tome_available_spells: "Feitiços Disponíveis"
|
||||
tome_your_skills: "As Tuas Habilidades"
|
||||
hud_continue: "Continuar (shift-espaço)"
|
||||
spell_saved: "Feitiço Guardado"
|
||||
skip_tutorial: "Saltar (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
|
|||
done: "Gata"
|
||||
customize_wizard: "Personalizează Wizard-ul"
|
||||
home: "Acasă"
|
||||
stop: "Stop"
|
||||
# skip: "Skip"
|
||||
game_menu: "Meniul Jocului"
|
||||
guide: "Ghid"
|
||||
restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
|
|||
victory_rate_the_level: "Apreciază nivelul: "
|
||||
victory_return_to_ladder: "Înapoi la jocurile de clasament"
|
||||
victory_play_next_level: "Joacă nivelul următor"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Acasă"
|
||||
victory_review: "Spune-ne mai multe!"
|
||||
victory_hour_of_code_done: "Ai terminat?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
|
|||
tome_select_spell: "Alege o vrajă"
|
||||
tome_select_a_thang: "Alege pe cineva pentru "
|
||||
tome_available_spells: "Vrăjile disponibile"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Continuă (apasă shift-space)"
|
||||
spell_saved: "Vrajă salvată"
|
||||
skip_tutorial: "Sari peste (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
done: "Готово"
|
||||
customize_wizard: "Настройки волшебника"
|
||||
home: "На главную"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
game_menu: "Меню игры"
|
||||
guide: "Руководство"
|
||||
restart: "Перезапустить"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
victory_rate_the_level: "Оцените уровень:"
|
||||
victory_return_to_ladder: "Вернуться к ладдеру"
|
||||
victory_play_next_level: "Следующий уровень"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "На главную"
|
||||
victory_review: "Расскажите нам больше!"
|
||||
victory_hour_of_code_done: "Вы закончили?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
tome_select_spell: "Выбрать заклинание"
|
||||
tome_select_a_thang: "Выбрать кого-нибудь для "
|
||||
tome_available_spells: "Доступные заклинания"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Продолжить (Shift+Пробел)"
|
||||
spell_saved: "Заклинание сохранено"
|
||||
skip_tutorial: "Пропуск (Esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
done: "Урађено"
|
||||
customize_wizard: "Прилагоди Чаробњака"
|
||||
home: "Почетна"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Водич"
|
||||
restart: "Поновно учитавање"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
victory_rate_the_level: "Оцени ниво: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Играј следећи ниво"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Иди на почетну"
|
||||
victory_review: "Реци нам више!"
|
||||
victory_hour_of_code_done: "Јеси ли завршио?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
tome_select_spell: "Изабери чин"
|
||||
tome_select_a_thang: "Изабери неког за "
|
||||
tome_available_spells: "Доступне чини"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Настави (притисни ентер)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
|
|||
done: "Klar"
|
||||
customize_wizard: "Skräddarsy trollkarl"
|
||||
home: "Hem"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Guide"
|
||||
restart: "Börja om"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
|
|||
victory_rate_the_level: "Betygsätt nivån: "
|
||||
victory_return_to_ladder: "Gå tillbaka till stegen"
|
||||
victory_play_next_level: "Spela nästa nivå"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Gå hem"
|
||||
victory_review: "Berätta mer!"
|
||||
victory_hour_of_code_done: "Är du klar?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
|
|||
tome_select_spell: "Välj en förmåga"
|
||||
tome_select_a_thang: "Välj någon för "
|
||||
tome_available_spells: "Tillgängliga förmågor"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Fortsätt (skift+mellanslag)"
|
||||
spell_saved: "Besvärjelse sparad"
|
||||
skip_tutorial: "Hoppa över (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
|
|||
done: "เสร็จสิ้น"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
home: "หน้าแรก"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "คู่มือ"
|
||||
restart: "เริ่มเล่นใหม่"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "เล่นด่านถัดไป"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "ไปหน้าแรก"
|
||||
# victory_review: "Tell us more!"
|
||||
victory_hour_of_code_done: "เสร็จหรือยัง?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
|
|||
done: "Tamamdır"
|
||||
customize_wizard: "Sihirbazı Düzenle"
|
||||
home: "Anasayfa"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Rehber"
|
||||
restart: "Yeniden başlat"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
|
|||
victory_rate_the_level: "Seviyeyi oyla:"
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "Sonraki Seviyeyi Oyna: "
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "Anasayfaya Git"
|
||||
victory_review: "Daha detaylı bilgi verebilirsiniz!"
|
||||
victory_hour_of_code_done: "Bitirdiniz mi?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
|
|||
tome_select_spell: "Bir Büyü Seç"
|
||||
tome_select_a_thang: "Birini seç..."
|
||||
tome_available_spells: "Kullanılabilir Büyüler"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Devam (ÜstKarakter+Boşluk)"
|
||||
spell_saved: "Büyü Kaydedildi"
|
||||
skip_tutorial: "Atla (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
|||
done: "Готово"
|
||||
customize_wizard: "Налаштування персонажа"
|
||||
home: "На головну"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Посібник"
|
||||
restart: "Перезавантажити"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
|||
victory_rate_the_level: "Оцінити рівень: "
|
||||
victory_return_to_ladder: "Повернутись до таблиці рівнів"
|
||||
victory_play_next_level: "Наступний рівень"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "На головну"
|
||||
victory_review: "Розкажіть нам більше!"
|
||||
victory_hour_of_code_done: "Ви закінчили?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
|||
tome_select_spell: "Оберіть закляття"
|
||||
tome_select_a_thang: "Оберіть когось для "
|
||||
tome_available_spells: "Доступні закляття"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "Продовжити (натисніть shift-space)"
|
||||
spell_saved: "Закляття збережено"
|
||||
skip_tutorial: "Пропустити (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
|||
done: "Hoàn thành"
|
||||
customize_wizard: "Tùy chỉnh Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "Hướng dẫn"
|
||||
restart: "Khởi động lại"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
|||
done: "完成"
|
||||
customize_wizard: "自定义向导"
|
||||
home: "主页"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "指南"
|
||||
restart: "重新开始"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
|||
victory_rate_the_level: "评估关卡:"
|
||||
victory_return_to_ladder: "返回"
|
||||
victory_play_next_level: "下一关"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "返回主页"
|
||||
victory_review: "给我们反馈!"
|
||||
victory_hour_of_code_done: "你完成了吗?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
|||
tome_select_spell: "选择一个法术"
|
||||
tome_select_a_thang: "选择人物来 "
|
||||
tome_available_spells: "可用的法术"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "继续(按 Shift-空格)"
|
||||
spell_saved: "咒语已保存"
|
||||
skip_tutorial: "跳过(esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
|
|||
done: "完成"
|
||||
customize_wizard: "自定義巫師"
|
||||
home: "首頁"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "指南"
|
||||
restart: "重新開始"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
|
|||
victory_rate_the_level: "評估關卡: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
victory_play_next_level: "下一關"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "返回首頁"
|
||||
victory_review: "給我們回饋!"
|
||||
victory_hour_of_code_done: "你完成了嗎?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
|
|||
tome_select_spell: "選擇一個法術"
|
||||
tome_select_a_thang: "選擇一個人物來施放"
|
||||
tome_available_spells: "可用的法術"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "繼續 (按 shift-空格)"
|
||||
spell_saved: "咒語已儲存"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
|
|||
# done: "Done"
|
||||
# customize_wizard: "Customize Wizard"
|
||||
# home: "Home"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
# guide: "Guide"
|
||||
# restart: "Restart"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
|
|||
# victory_rate_the_level: "Rate the level: "
|
||||
# victory_return_to_ladder: "Return to Ladder"
|
||||
# victory_play_next_level: "Play Next Level"
|
||||
# victory_play_continue: "Continue"
|
||||
# victory_go_home: "Go Home"
|
||||
# victory_review: "Tell us more!"
|
||||
# victory_hour_of_code_done: "Are You Done?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
|
|||
# tome_select_spell: "Select a Spell"
|
||||
# tome_select_a_thang: "Select Someone for "
|
||||
# tome_available_spells: "Available Spells"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# hud_continue: "Continue (shift+space)"
|
||||
# spell_saved: "Spell Saved"
|
||||
# skip_tutorial: "Skip (esc)"
|
||||
|
|
|
@ -378,7 +378,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
|
|||
done: "妝下落"
|
||||
customize_wizard: "自設定獻路人"
|
||||
home: "主頁"
|
||||
# stop: "Stop"
|
||||
# skip: "Skip"
|
||||
# game_menu: "Game Menu"
|
||||
guide: "指南"
|
||||
restart: "轉來"
|
||||
|
@ -400,6 +400,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
|
|||
victory_rate_the_level: "箇關評價:"
|
||||
victory_return_to_ladder: "走轉"
|
||||
victory_play_next_level: "下關"
|
||||
# victory_play_continue: "Continue"
|
||||
victory_go_home: "轉到主頁"
|
||||
victory_review: "搭我裏反應!"
|
||||
victory_hour_of_code_done: "爾妝下落爻噃?"
|
||||
|
@ -418,6 +419,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
|
|||
tome_select_spell: "揀一個法術"
|
||||
tome_select_a_thang: "揀人來 "
|
||||
tome_available_spells: "好用個法術"
|
||||
# tome_your_skills: "Your Skills"
|
||||
hud_continue: "接落去(捺 Shift-空格)"
|
||||
spell_saved: "咒語存起爻"
|
||||
skip_tutorial: "跳過去(Esc)"
|
||||
|
|
|
@ -121,6 +121,7 @@ class CocoModel extends Backbone.Model
|
|||
@markToRevert() if @_revertAttributes
|
||||
@clearBackup()
|
||||
CocoModel.pollAchievements()
|
||||
options.success = options.error = null # So the callbacks can be garbage-collected.
|
||||
options.error = (model, res) =>
|
||||
error(@, res) if error
|
||||
return unless @notyErrors
|
||||
|
@ -131,6 +132,7 @@ class CocoModel extends Backbone.Model
|
|||
noty text: "#{errorMessage}: #{res.status} #{res.statusText}", layout: 'topCenter', type: 'error', killer: false, timeout: 10000
|
||||
catch notyError
|
||||
console.warn "Couldn't even show noty error for", error, "because", notyError
|
||||
options.success = options.error = null # So the callbacks can be garbage-collected.
|
||||
@trigger 'save', @
|
||||
return super attrs, options
|
||||
|
||||
|
|
|
@ -23,8 +23,8 @@ LevelSessionSchema = c.object
|
|||
title: 'Session'
|
||||
description: 'A single session for a given level.'
|
||||
default:
|
||||
codeLanguage: 'javascript'
|
||||
submittedCodeLanguage: 'javascript'
|
||||
codeLanguage: 'python'
|
||||
submittedCodeLanguage: 'python'
|
||||
playtime: 0
|
||||
|
||||
_.extend LevelSessionSchema.properties,
|
||||
|
|
|
@ -106,8 +106,8 @@ _.extend UserSchema.properties,
|
|||
wizard: c.object {},
|
||||
colorConfig: c.object {additionalProperties: c.colorConfig()}
|
||||
|
||||
aceConfig: c.object { default: { language: 'javascript', keyBindings: 'default', invisibles: false, indentGuides: false, behaviors: false, liveCompletion: true }},
|
||||
language: {type: 'string', 'enum': ['javascript', 'coffeescript', 'python', 'clojure', 'lua', 'io']}
|
||||
aceConfig: c.object { default: { language: 'python', keyBindings: 'default', invisibles: false, indentGuides: false, behaviors: false, liveCompletion: true }},
|
||||
language: {type: 'string', 'enum': ['python', 'javascript', 'coffeescript', 'clojure', 'lua', 'io']}
|
||||
keyBindings: {type: 'string', 'enum': ['default', 'vim', 'emacs']}
|
||||
invisibles: {type: 'boolean' }
|
||||
indentGuides: {type: 'boolean' }
|
||||
|
|
|
@ -171,7 +171,7 @@ me.FunctionArgumentSchema = me.object {
|
|||
description: 'Examples by code language.',
|
||||
additionalProperties: me.shortString(description: 'Example value for the argument.')
|
||||
format: 'code-languages-object'
|
||||
default: {javascript: ''}
|
||||
default: {javascript: '', python: ''}
|
||||
}
|
||||
me.shortString(title: 'Example', description: 'Example value for the argument.')
|
||||
]
|
||||
|
@ -183,7 +183,7 @@ me.FunctionArgumentSchema = me.object {
|
|||
description: 'Example argument descriptions by code language.',
|
||||
additionalProperties: {type: 'string', description: 'Description of the argument.', maxLength: 1000}
|
||||
format: 'code-languages-object'
|
||||
default: {javascript: ''}
|
||||
default: {javascript: '', python: ''}
|
||||
}
|
||||
{title: 'Description', type: 'string', description: 'Description of the argument.', maxLength: 1000}
|
||||
]
|
||||
|
|
|
@ -31,10 +31,14 @@ $heroCanvasHeight: 330px
|
|||
width: $maxHeroPortraitSize
|
||||
height: $maxHeroPortraitSize
|
||||
margin: 0px 3px
|
||||
background-size: contain
|
||||
border: 2px solid black
|
||||
border-radius: 2px
|
||||
position: relative
|
||||
|
||||
.hero-avatar
|
||||
width: 100%
|
||||
height: 100%
|
||||
background-size: contain
|
||||
|
||||
&.initialized
|
||||
@include transition(0.5s ease)
|
||||
|
@ -43,7 +47,15 @@ $heroCanvasHeight: 330px
|
|||
border-color: gold
|
||||
|
||||
&.locked
|
||||
@include opacity(0.6)
|
||||
.hero-avatar
|
||||
@include filter(contrast(50%) brightness(65%))
|
||||
|
||||
.lock-indicator
|
||||
position: absolute
|
||||
width: 40%
|
||||
left: 30%
|
||||
top: 30%
|
||||
@include filter(invert(90%))
|
||||
|
||||
.hero-item
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
@import "../bootstrap/mixins"
|
||||
@import "app/styles/mixins"
|
||||
|
||||
$totalWidth: 706px - 2 * 20px
|
||||
// We get 666px to play with from our parent modals.
|
||||
|
@ -134,22 +134,38 @@ $stashWidth: $totalWidth - $equippedWidth - $stashMargin
|
|||
background-color: white
|
||||
|
||||
.list-group-item
|
||||
padding: 8px 0
|
||||
img
|
||||
width: 50px
|
||||
height: 50px
|
||||
margin-right: 5px
|
||||
padding: 4px 0
|
||||
|
||||
&.active
|
||||
background-color: #e0f0f5
|
||||
&.equipped
|
||||
display: none
|
||||
&.restricted
|
||||
@include opacity(0.5)
|
||||
|
||||
.item-info:after
|
||||
content: ' (locked)'
|
||||
content: ' (available)'
|
||||
|
||||
&.equipped
|
||||
background-color: #ff5
|
||||
|
||||
.item-view
|
||||
cursor: default
|
||||
.item-info:after
|
||||
content: ' (equipped)'
|
||||
|
||||
&.locked
|
||||
background-image: url(/images/pages/game-menu/lock.png)
|
||||
background-size: 25px 25px
|
||||
background-repeat: no-repeat
|
||||
background-position: 98% 90%
|
||||
|
||||
.item-view
|
||||
cursor: default
|
||||
|
||||
h4, img
|
||||
//@include filter(contrast(50%) brightness(65%))
|
||||
@include opacity(0.6)
|
||||
|
||||
.item-info:after
|
||||
content: ' (locked)'
|
||||
|
||||
.item-view
|
||||
cursor: pointer
|
||||
|
||||
|
@ -157,8 +173,6 @@ $stashWidth: $totalWidth - $equippedWidth - $stashMargin
|
|||
$selectedItemsContainerMargin: 20px
|
||||
$selectedItemMargin: 10px
|
||||
$selectedItemImageSize: 75px
|
||||
$swapItemHeight: 40px
|
||||
$swapItemWidth: 60px
|
||||
|
||||
position: absolute
|
||||
top: $selectedItemsContainerMargin
|
||||
|
@ -169,37 +183,39 @@ $stashWidth: $totalWidth - $equippedWidth - $stashMargin
|
|||
|
||||
#selected-equipped-item, #selected-available-item
|
||||
text-align: left
|
||||
overflow: scroll
|
||||
overflow-y: scroll
|
||||
margin: 0
|
||||
height: 48.4%
|
||||
height: -webkit-calc(50% - $selectedItemMargin / 2)
|
||||
height: calc(50% - $selectedItemMargin / 2)
|
||||
width: 100%
|
||||
padding: 10px 5px 10px 10px
|
||||
position: relative
|
||||
display: none
|
||||
|
||||
img
|
||||
margin-top: 21px
|
||||
width: $selectedItemImageSize
|
||||
height: $selectedItemImageSize
|
||||
margin-right: 10px
|
||||
|
||||
.item-info
|
||||
margin-left: $selectedItemImageSize + 10px
|
||||
width: 110px
|
||||
width: -webkit-calc(100% - 75px - 10px)
|
||||
width: calc(100% - 75px - 10px)
|
||||
|
||||
> h3
|
||||
position: absolute
|
||||
left: 0px
|
||||
top: 0px
|
||||
padding: 5px
|
||||
|
||||
#selected-equipped-item
|
||||
margin-bottom: $selectedItemMargin
|
||||
padding-bottom: 20px
|
||||
background-color: #ff5
|
||||
|
||||
#selected-available-item
|
||||
padding-top: 15px
|
||||
|
||||
#swap-button
|
||||
position: absolute
|
||||
top: 50%
|
||||
left: 50%
|
||||
margin-top: -($swapItemHeight / 2)
|
||||
margin-left: -($swapItemWidth / 2)
|
||||
width: $swapItemWidth
|
||||
height: $swapItemHeight
|
||||
font-size: 24px
|
||||
line-height: 24px
|
||||
display: inline-block
|
||||
background-color: #e0f0f5
|
||||
bottom: 0
|
||||
|
|
|
@ -3,11 +3,15 @@
|
|||
|
||||
img
|
||||
float: left
|
||||
width: 40px
|
||||
height: 40px
|
||||
width: 50px
|
||||
height: 50px
|
||||
margin-right: 5px
|
||||
|
||||
.item-info
|
||||
margin-left: 45px
|
||||
float: left
|
||||
width: 110px
|
||||
width: -webkit-calc(100% - 50px - 5px)
|
||||
width: calc(100% - 50px - 5px)
|
||||
|
||||
ul
|
||||
margin-top: 5px
|
||||
|
|
|
@ -52,3 +52,8 @@
|
|||
@keyframes #{$name}
|
||||
@content
|
||||
|
||||
@mixin filter($filters)
|
||||
-webkit-filter: $filters
|
||||
-moz-filter: $filters
|
||||
-o-filter: $filters
|
||||
filter: $filters
|
||||
|
|
|
@ -23,12 +23,16 @@ $level-resize-transition-time: 0.5s
|
|||
width: 100%
|
||||
button, h4
|
||||
display: none
|
||||
#playback-view
|
||||
$flags-width: 200px
|
||||
width: 90%
|
||||
width: -webkit-calc(100% - $flags-width)
|
||||
width: calc(100% - $flags-width)
|
||||
left: $flags-width
|
||||
&:not(.flags)
|
||||
#playback-view
|
||||
width: 100%
|
||||
&.flags
|
||||
#playback-view
|
||||
$flags-width: 200px
|
||||
width: 90%
|
||||
width: -webkit-calc(100% - $flags-width)
|
||||
width: calc(100% - $flags-width)
|
||||
left: $flags-width
|
||||
#code-area, #thang-hud, #goals-view
|
||||
display: none
|
||||
visibility: hidden
|
||||
|
@ -123,7 +127,7 @@ $level-resize-transition-time: 0.5s
|
|||
|
||||
.gradient
|
||||
position: absolute
|
||||
z-index: 10
|
||||
z-index: 5
|
||||
|
||||
#code-area-gradient
|
||||
top: 0px
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
float: right
|
||||
margin-left: 10px
|
||||
|
||||
.next-level-button
|
||||
.next-level-button, .world-map-button
|
||||
float: right
|
||||
margin-left: 10px
|
||||
|
||||
|
|
|
@ -100,25 +100,29 @@
|
|||
// Can't do this transition because handle then jitters, but would be good for streaming.
|
||||
//@include transition(width .2s linear)
|
||||
|
||||
&.disabled
|
||||
&.disabled, &.ui-slider-disabled
|
||||
cursor: default
|
||||
|
||||
.progress-bar .scrubber-handle
|
||||
cursor: default
|
||||
|
||||
.progress-bar
|
||||
@include transition(width .0s linear)
|
||||
position: relative
|
||||
pointer-events: none
|
||||
// Remove gradient background in favor of solid fill
|
||||
background-color: #67A4C8
|
||||
//background-image: none // gradient looks kind of cool though; keep it in
|
||||
|
||||
.scrubber-handle
|
||||
cursor: pointer
|
||||
position: absolute
|
||||
pointer-events: none
|
||||
right: -16px
|
||||
top: -9px
|
||||
background: transparent url(/images/level/playback_thumb.png)
|
||||
width: 32px
|
||||
height: 32px
|
||||
// z: above the gradient line bordering the playback bar
|
||||
z-index: 6
|
||||
|
||||
.ui-slider-handle
|
||||
height: 100%
|
||||
|
|
|
@ -1,6 +1,10 @@
|
|||
@import "app/styles/bootstrap/mixins"
|
||||
@import "app/styles/mixins"
|
||||
|
||||
#level-view.hero .spell-palette-entry-view
|
||||
// Not clickable.
|
||||
cursor: default
|
||||
|
||||
.spell-palette-entry-view
|
||||
display: block
|
||||
padding: 0px 4px
|
||||
|
@ -101,4 +105,4 @@ html.fullscreen-editor
|
|||
min-width: 600px
|
||||
bottom: inherit
|
||||
right: 50%
|
||||
margin-right: -300px
|
||||
margin-right: -300px
|
||||
|
|
|
@ -14,10 +14,6 @@ body
|
|||
img(src="/images/pages/base/logo.png", title="CodeCombat - Learn how to code by playing a game", alt="CodeCombat")
|
||||
|
||||
ul(class='navbar-link-text').nav.navbar-nav.navbar-collapse.collapse
|
||||
li.play
|
||||
a.header-font(href='/play', data-i18n="nav.play") Levels
|
||||
li
|
||||
a.header-font(href='/community', data-i18n="nav.community") Community
|
||||
if me.get('anonymous') === false
|
||||
li.dropdown
|
||||
button.btn.btn-primary.navbuttontext.header-font.dropdown-toggle(href="#", data-toggle="dropdown")
|
||||
|
@ -71,6 +67,7 @@ body
|
|||
a(href='/employers', title='Home', tabindex=-1, data-i18n="nav.employers") Employers
|
||||
else
|
||||
a(href='/', title='Home', tabindex=-1, data-i18n="nav.home") Home
|
||||
a(href='/play/ladder', title='Multiplayer', tabindex=-1) Multiplayer
|
||||
a(href='/contribute', title='Contribute', tabindex=-1, data-i18n="nav.contribute") Contribute
|
||||
a(href='/legal', title='Legal', tabindex=-1, data-i18n="nav.legal") Legal
|
||||
a(href='/about', title='About', tabindex=-1, data-i18n="nav.about") About
|
||||
|
|
|
@ -4,6 +4,9 @@
|
|||
for hero, index in heroes
|
||||
- var info = heroInfo[hero.get('slug')]
|
||||
li(data-hero-id=hero.get('original'), title=hero.get('name'), data-slide-to=index, data-target="#hero-carousel", class="hero-indicator" + (info.status == "Locked" ? " locked" : ""))
|
||||
.hero-avatar
|
||||
if info.status == "Locked"
|
||||
img.lock-indicator(src="/images/pages/game-menu/lock.png")
|
||||
|
||||
.carousel-inner
|
||||
for hero in heroes
|
||||
|
|
|
@ -19,11 +19,11 @@
|
|||
canvas.equipped-hero-canvas
|
||||
#selected-items
|
||||
#selected-equipped-item.well
|
||||
h3(data-i18n="inventory.equipped") Equipped
|
||||
.item-view-stub
|
||||
#selected-available-item.well
|
||||
h3(data-i18n="inventory.equipped") Available
|
||||
.item-view-stub
|
||||
button#swap-button.btn.btn-danger
|
||||
span.glyphicon.glyphicon-transfer
|
||||
|
||||
.item-slot-column.pull-right
|
||||
for slot in ['pet', 'waist', 'feet', 'right-hand']
|
||||
|
@ -44,8 +44,12 @@
|
|||
.replace-me(data-item-id=equipment[slot].get('original'))
|
||||
|
||||
#available-equipment
|
||||
h4#stash-description
|
||||
h4#unlocked-description
|
||||
ul.list-group
|
||||
for item in items
|
||||
for item in unlockedItems
|
||||
li.list-group-item(class=item.classes, data-item-id=item.get('original'))
|
||||
h4#locked-description
|
||||
ul.list-group
|
||||
for item in lockedItems
|
||||
li.list-group-item(class=item.classes, data-item-id=item.get('original'))
|
||||
|
||||
|
|
|
@ -4,84 +4,6 @@ block content
|
|||
|
||||
h1#site-slogan(data-i18n="home.slogan") Learn to Code by Playing a Game
|
||||
|
||||
.code-languages
|
||||
.primary-code-languages.row
|
||||
.col-sm-6
|
||||
.code-language#javascript(data-code-language='javascript')
|
||||
.code-wizard
|
||||
h2 JavaScript
|
||||
p(data-i18n="home.javascript_blurb") The language of the web. Great for writing websites, web apps, HTML5 games, and servers.
|
||||
- var playCount = codeLanguageCountMap.javascript
|
||||
if playCount
|
||||
div.language-play-count
|
||||
span.spr= playCount
|
||||
span(data-i18n="resources.sessions") sessions
|
||||
|
||||
.col-sm-6
|
||||
.code-language.beta#python(data-code-language='python')
|
||||
.code-wizard
|
||||
.code-language-beta
|
||||
h2 Python
|
||||
p(data-i18n="home.python_blurb") Simple yet powerful, Python is a great general purpose programming language.
|
||||
- var playCount = codeLanguageCountMap.python
|
||||
if playCount
|
||||
div.language-play-count
|
||||
span.spr= playCount
|
||||
span(data-i18n="resources.sessions") sessions
|
||||
|
||||
.secondary-code-languages.row
|
||||
.col-sm-3
|
||||
.code-language.beta#coffeescript(data-code-language='coffeescript')
|
||||
.code-language-logo
|
||||
.code-wizard
|
||||
.code-language-beta
|
||||
h3 CoffeeScript
|
||||
p(data-i18n="home.coffeescript_blurb") Nicer JavaScript syntax.
|
||||
- var playCount = codeLanguageCountMap.coffeescript
|
||||
if playCount
|
||||
div.language-play-count
|
||||
span.spr= playCount
|
||||
span(data-i18n="resources.sessions") sessions
|
||||
|
||||
.col-sm-3
|
||||
.code-language.beta#clojure(data-code-language='clojure')
|
||||
.code-language-logo
|
||||
.code-wizard
|
||||
.code-language-beta
|
||||
h3 Clojure
|
||||
p(data-i18n="home.clojure_blurb") A modern Lisp.
|
||||
- var playCount = codeLanguageCountMap.clojure
|
||||
if playCount
|
||||
div.language-play-count
|
||||
span.spr= playCount
|
||||
span(data-i18n="resources.sessions") sessions
|
||||
|
||||
.col-sm-3
|
||||
.code-language.beta#lua(data-code-language='lua')
|
||||
.code-language-logo
|
||||
.code-wizard
|
||||
.code-language-beta
|
||||
h3 Lua
|
||||
p(data-i18n="home.lua_blurb") Game scripting language.
|
||||
- var playCount = codeLanguageCountMap.lua
|
||||
if playCount
|
||||
div.language-play-count
|
||||
span.spr= playCount
|
||||
span(data-i18n="resources.sessions") sessions
|
||||
|
||||
.col-sm-3
|
||||
.code-language.beta#io(data-code-language='io', title="Careful: Io is still quite buggy")
|
||||
.code-language-logo
|
||||
.code-wizard
|
||||
.code-language-beta
|
||||
h3 Io
|
||||
p(data-i18n="home.io_blurb") Simple but obscure.
|
||||
- var playCount = codeLanguageCountMap.io
|
||||
if playCount
|
||||
div.language-play-count
|
||||
span.spr= playCount
|
||||
span(data-i18n="resources.sessions") sessions
|
||||
|
||||
.alert.alert-danger.lt-ie10
|
||||
strong(data-i18n="home.no_ie") CodeCombat does not run in Internet Explorer 9 or older. Sorry!
|
||||
|
||||
|
@ -94,26 +16,11 @@ block content
|
|||
br
|
||||
span(data-i18n="home.old_browser_suffix") You can try anyway, but it probably won't work.
|
||||
|
||||
a#beginner-campaign(href="/play/level/rescue-mission")
|
||||
a#beginner-campaign(href="/play")
|
||||
div.game-mode-wrapper
|
||||
if isEnglish
|
||||
img(src="/images/pages/home/campaign.jpg").img-rounded
|
||||
else
|
||||
img(src="/images/pages/home/campaign_notext.jpg").img-rounded
|
||||
h3(data-i18n="home.campaign") Campaign
|
||||
h4(data-i18n="home.for_beginners") For Beginners
|
||||
img(src="/images/pages/home/play_img.png").img-rounded
|
||||
h3(data-i18n="home.campaign") Campaign
|
||||
h4(data-i18n="home.for_beginners") For Beginners
|
||||
.play-text(data-i18n="home.play") Play
|
||||
.code-language-logo
|
||||
|
||||
a#multiplayer(href="/play/ladder")
|
||||
div.game-mode-wrapper
|
||||
if isEnglish
|
||||
img(src="/images/pages/home/multiplayer.jpg").img-rounded
|
||||
else
|
||||
img(src="/images/pages/home/multiplayer_notext.jpg").img-rounded
|
||||
h3(data-i18n="home.multiplayer") Multiplayer
|
||||
h4(data-i18n="home.for_developers") For Developers
|
||||
.play-text(data-i18n="home.play") Play
|
||||
.code-language-logo
|
||||
|
||||
.clearfix
|
||||
|
|
|
@ -16,7 +16,7 @@ block modal-footer-content
|
|||
else if level.get('type') === 'ladder'
|
||||
a.btn.btn-primary(href="/play/ladder/#{level.get('slug')}#my-matches", data-dismiss="modal", data-i18n="play_level.victory_go_ladder") Return to Ladder
|
||||
else if level.get('type', true) === 'hero'
|
||||
a.btn.btn-success(href="/play-hero", data-dismiss="modal", data-i18n="play_level.victory_continue") Continue
|
||||
a.btn.btn-success.world-map-button(href="/play-hero", data-dismiss="modal", data-i18n="play_level.victory_continue") Continue
|
||||
else if hasNextLevel
|
||||
button.btn.btn-success.next-level-button(data-dismiss="modal", data-i18n="play_level.victory_play_next_level") Play Next Level
|
||||
else
|
||||
|
|
|
@ -1 +1 @@
|
|||
h5(data-i18n="play_level.tome_select_spell") Select a Spell
|
||||
h5(data-i18n="play_level.tome_select_method") Select a Method
|
||||
|
|
|
@ -1,20 +1,23 @@
|
|||
img(src="/images/level/code_editor_tab_background.png").spell-tab-image-hidden.hidden
|
||||
|
||||
.btn.btn-small.spell-list-button(title="See all spells you can edit")
|
||||
i.icon-chevron-down
|
||||
if includeSpellList
|
||||
.btn.btn-small.spell-list-button(data-i18n="[title]play_level.tome_see_all_methods", title="See all methods you can edit")
|
||||
i.icon-chevron-down
|
||||
.thang-avatar-placeholder
|
||||
|
||||
code #{methodSignature}
|
||||
|
||||
.spell-tool-buttons
|
||||
.btn.btn-small.fullscreen-code(title=maximizeShortcutVerbose)
|
||||
i.icon-fullscreen
|
||||
i.icon-resize-small
|
||||
if levelType !== 'hero'
|
||||
.btn.btn-small.fullscreen-code(title=maximizeShortcutVerbose)
|
||||
i.icon-fullscreen
|
||||
i.icon-resize-small
|
||||
|
||||
.btn.btn-small.reload-code(title="Reload original code for " + spell.name)
|
||||
.btn.btn-small.reload-code(data-i18n="[title]play_level.tome_reload_method", title="Reload original code for this method")
|
||||
i.icon-repeat
|
||||
|
||||
.btn.btn-small.beautify-code(title=beautifyShortcutVerbose)
|
||||
i.icon-magnet
|
||||
if codeLanguage === 'javascript'
|
||||
.btn.btn-small.beautify-code(title=beautifyShortcutVerbose)
|
||||
i.icon-magnet
|
||||
|
||||
.clearfix
|
|
@ -24,7 +24,8 @@
|
|||
span.spr , #{Math.round(playCount.playtime / 3600)}
|
||||
span(data-i18n="play.hours_played") hours played
|
||||
.campaign-label(style="color: #{campaign.color}")= campaign.name
|
||||
button.btn.btn-success.btn-lg.start-level(data-i18n="common.play") Play
|
||||
if isIPadApp
|
||||
button.btn.btn-success.btn-lg.start-level(data-i18n="common.play") Play
|
||||
|
||||
.game-controls.header-font
|
||||
if me.isAdmin()
|
||||
|
|
|
@ -258,7 +258,7 @@ class JavaScriptTreema extends CodeTreema
|
|||
|
||||
class InternationalizationNode extends TreemaNode.nodeMap.object
|
||||
findLanguageName: (languageCode) ->
|
||||
# to get around mongoose emtpy object bug, there's a prop in the object which needs to be ignored
|
||||
# to get around mongoose empty object bug, there's a prop in the object which needs to be ignored
|
||||
return '' if languageCode is '-'
|
||||
locale[languageCode]?.nativeDescription or "#{languageCode} Not Found"
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ module.exports = class HomeView extends RootView
|
|||
console.warn 'no more jquery browser version...'
|
||||
c.isEnglish = (me.get('preferredLanguage') or 'en').startsWith 'en'
|
||||
c.languageName = me.get('preferredLanguage')
|
||||
c.codeLanguage = (me.get('aceConfig') ? {}).language or 'javascript'
|
||||
c.codeLanguage = (me.get('aceConfig') ? {}).language or 'python'
|
||||
c.codeLanguageCountMap = @codeLanguageCountMap
|
||||
c
|
||||
|
||||
|
@ -48,7 +48,7 @@ module.exports = class HomeView extends RootView
|
|||
href = href.join('/')
|
||||
playLink.attr('href', href)
|
||||
|
||||
codeLanguage = (me.get('aceConfig') ? {}).language or 'javascript'
|
||||
codeLanguage = (me.get('aceConfig') ? {}).language or 'python'
|
||||
@$el.find(".code-language[data-code-language=#{codeLanguage}]").addClass 'selected-language'
|
||||
@updateLanguageLogos codeLanguage
|
||||
|
||||
|
@ -61,7 +61,7 @@ module.exports = class HomeView extends RootView
|
|||
@$el.find('.code-language').removeClass 'selected-language'
|
||||
target.addClass 'selected-language'
|
||||
aceConfig = me.get('aceConfig') ? {}
|
||||
return if (aceConfig.language or 'javascript') is codeLanguage
|
||||
return if (aceConfig.language or 'python') is codeLanguage
|
||||
aceConfig.language = codeLanguage
|
||||
me.set 'aceConfig', aceConfig
|
||||
me.save() # me.patch() doesn't work if aceConfig previously existed and we switched just once
|
||||
|
|
|
@ -23,7 +23,7 @@ module.exports = class LevelSessionCodeView extends CocoView
|
|||
c.levelSpells = @organizeCode()
|
||||
c.sessionLink = "/play/level/" + (@level.get('slug') or @level.id) + "?team=" + (@session.get('team') || 'humans') + "&session=" + @session.id
|
||||
c
|
||||
|
||||
|
||||
afterRender: ->
|
||||
super()
|
||||
editors = []
|
||||
|
@ -34,9 +34,9 @@ module.exports = class LevelSessionCodeView extends CocoView
|
|||
editor.setReadOnly true
|
||||
editors.push editor
|
||||
aceSession = editor.getSession()
|
||||
aceSession.setMode 'ace/mode/javascript'
|
||||
aceSession.setMode 'ace/mode/javascript' # TODO: they're not all JS
|
||||
@editors = editors
|
||||
|
||||
|
||||
organizeCode: ->
|
||||
team = @session.get('team') or 'humans'
|
||||
teamSpells = @session.get('teamSpells')[team] or []
|
||||
|
@ -50,8 +50,8 @@ module.exports = class LevelSessionCodeView extends CocoView
|
|||
name: spell
|
||||
height: height
|
||||
}
|
||||
filteredSpells
|
||||
|
||||
filteredSpells
|
||||
|
||||
destroy: ->
|
||||
for editor in @editors
|
||||
@editors
|
||||
@editors
|
||||
|
|
|
@ -35,7 +35,7 @@ module.exports = class ComponentsDocumentationView extends CocoView
|
|||
c = super()
|
||||
c.components = @componentDocs.models
|
||||
c.marked = marked
|
||||
c.codeLanguage = me.get('aceConfig')?.language ? 'javascript'
|
||||
c.codeLanguage = me.get('aceConfig')?.language ? 'python'
|
||||
c
|
||||
|
||||
onToggleAllCode: (e) ->
|
||||
|
|
|
@ -35,7 +35,7 @@ module.exports = class SystemsDocumentationView extends CocoView
|
|||
c = super()
|
||||
c.systems = @systemDocs.models
|
||||
c.marked = marked
|
||||
c.codeLanguage = me.get('aceConfig')?.language ? 'javascript'
|
||||
c.codeLanguage = me.get('aceConfig')?.language ? 'python'
|
||||
c
|
||||
|
||||
onToggleAllCode: (e) ->
|
||||
|
|
|
@ -17,8 +17,8 @@ module.exports = class ChooseHeroView extends CocoView
|
|||
'change #option-code-language': 'onCodeLanguageChanged'
|
||||
|
||||
shortcuts:
|
||||
'left': -> @$el.find('#hero-carousel').carousel('prev') unless @$el.hasClass 'secret'
|
||||
'right': -> @$el.find('#hero-carousel').carousel('next') unless @$el.hasClass 'secret'
|
||||
'left': -> @$el.find('#hero-carousel').carousel('prev') if @heroes.models.length and not @$el.hasClass 'secret'
|
||||
'right': -> @$el.find('#hero-carousel').carousel('next') if @heroes.models.length and not @$el.hasClass 'secret'
|
||||
|
||||
constructor: (options) ->
|
||||
super options
|
||||
|
@ -56,7 +56,7 @@ module.exports = class ChooseHeroView extends CocoView
|
|||
@$el.find('.hero-indicator').each ->
|
||||
heroID = $(@).data('hero-id')
|
||||
hero = _.find heroes, (hero) -> hero.get('original') is heroID
|
||||
$(@).css('background-image', "url(#{hero.getPortraitURL()})").tooltip()
|
||||
$(@).find('.hero-avatar').css('background-image', "url(#{hero.getPortraitURL()})").tooltip()
|
||||
_.defer => $(@).addClass 'initialized'
|
||||
@canvasWidth = 313 # @$el.find('canvas').width() # unreliable, whatever
|
||||
@canvasHeight = @$el.find('canvas').height()
|
||||
|
@ -69,6 +69,7 @@ module.exports = class ChooseHeroView extends CocoView
|
|||
direction = e.direction # 'left' or 'right'
|
||||
heroItem = $(e.relatedTarget)
|
||||
hero = _.find @heroes.models, (hero) -> hero.get('original') is heroItem.data('hero-id')
|
||||
return console.error "Couldn't find hero from heroItem:", heroItem unless hero
|
||||
heroIndex = heroItem.index()
|
||||
@$el.find('.hero-indicator').each ->
|
||||
distance = Math.min 3, Math.abs $(@).index() - heroIndex
|
||||
|
@ -77,19 +78,34 @@ module.exports = class ChooseHeroView extends CocoView
|
|||
heroInfo = temporaryHeroInfo[hero.get('slug')]
|
||||
locked = heroInfo.status is 'Locked'
|
||||
hero = @loadHero hero, heroIndex
|
||||
@preloadHero heroIndex + 1
|
||||
@preloadHero heroIndex - 1
|
||||
@selectedHero = hero unless locked
|
||||
Backbone.Mediator.publish 'level:hero-selection-updated', hero: @selectedHero
|
||||
$('#choose-inventory-button').prop 'disabled', locked
|
||||
|
||||
loadHero: (hero, heroIndex) ->
|
||||
createjs.Ticker.removeEventListener 'tick', stage for stage in _.values @stages
|
||||
if stage = @stages[heroIndex]
|
||||
createjs.Ticker.addEventListener 'tick', stage
|
||||
@playSelectionSound hero
|
||||
return hero
|
||||
getFullHero: (original) ->
|
||||
url = "/db/thang.type/#{original}/version"
|
||||
if fullHero = @supermodel.getModel url
|
||||
return fullHero
|
||||
fullHero = new ThangType()
|
||||
fullHero.setURL "/db/thang.type/#{hero.get('original')}/version"
|
||||
fullHero.setURL url
|
||||
fullHero = (@supermodel.loadModel fullHero, 'thang').model
|
||||
fullHero
|
||||
|
||||
preloadHero: (heroIndex) ->
|
||||
return unless hero = @heroes.models[heroIndex]
|
||||
@loadHero hero, heroIndex, true
|
||||
|
||||
loadHero: (hero, heroIndex, preloading=false) ->
|
||||
createjs.Ticker.removeEventListener 'tick', stage for stage in _.values @stages
|
||||
createjs.Ticker.setFPS 30 # In case we paused it from being inactive somewhere else
|
||||
if stage = @stages[heroIndex]
|
||||
unless preloading
|
||||
_.defer -> createjs.Ticker.addEventListener 'tick', stage # Deferred, otherwise it won't start updating for some reason.
|
||||
@playSelectionSound hero
|
||||
return hero
|
||||
fullHero = @getFullHero hero.get 'original'
|
||||
onLoaded = =>
|
||||
return unless canvas = $(".hero-item[data-hero-id='#{fullHero.get('original')}'] canvas")
|
||||
canvas.prop width: @canvasWidth, height: @canvasHeight
|
||||
|
@ -104,12 +120,13 @@ module.exports = class ChooseHeroView extends CocoView
|
|||
movieClip.x = canvas.prop('width') * 0.5
|
||||
movieClip.y = canvas.prop('height') * 0.925 # This is where the feet go.
|
||||
stage = new createjs.Stage(canvas[0])
|
||||
@stages[heroIndex] = stage
|
||||
stage.addChild movieClip
|
||||
stage.update()
|
||||
createjs.Ticker.addEventListener 'tick', stage
|
||||
movieClip.gotoAndPlay 0
|
||||
@stages[heroIndex] = stage
|
||||
@playSelectionSound hero
|
||||
unless preloading
|
||||
createjs.Ticker.addEventListener 'tick', stage
|
||||
@playSelectionSound hero
|
||||
if fullHero.loaded
|
||||
_.defer onLoaded
|
||||
else
|
||||
|
|
|
@ -14,10 +14,9 @@ module.exports = class InventoryView extends CocoView
|
|||
|
||||
events:
|
||||
'click .item-slot': 'onItemSlotClick'
|
||||
'click #available-equipment .list-group-item': 'onAvailableItemClick'
|
||||
'dblclick #available-equipment .list-group-item': 'onAvailableItemDoubleClick'
|
||||
'click #available-equipment .list-group-item:not(.equipped)': 'onAvailableItemClick'
|
||||
'dblclick #available-equipment .list-group-item:not(.equipped)': 'onAvailableItemDoubleClick'
|
||||
'dblclick .item-slot .item-view': 'onEquippedItemDoubleClick'
|
||||
'click #swap-button': 'onClickSwapButton'
|
||||
|
||||
subscriptions:
|
||||
'level:hero-selection-updated': 'onHeroSelectionUpdated'
|
||||
|
@ -47,11 +46,15 @@ module.exports = class InventoryView extends CocoView
|
|||
context.equipped = _.values(@equipment)
|
||||
context.items = @items.models
|
||||
|
||||
context.unlockedItems = []
|
||||
context.lockedItems = []
|
||||
for item in @items.models
|
||||
item.classes = item.getAllowedSlots()
|
||||
item.classes.push 'equipped' if item.get('original') in context.equipped
|
||||
item.classes.push 'restricted' if @allowedItems and not (item.get('original') in @allowedItems)
|
||||
@items.models.sort (a, b) -> ('restricted' in a.classes) - ('restricted' in b.classes)
|
||||
locked = @allowedItems and not (item.get('original') in @allowedItems)
|
||||
item.classes.push 'locked' if locked
|
||||
(if locked then context.lockedItems else context.unlockedItems).push item
|
||||
@items.models.sort (a, b) -> ('locked' in a.classes) - ('locked' in b.classes)
|
||||
|
||||
context.slots = @slots
|
||||
context.equipment = _.clone @equipment
|
||||
|
@ -83,7 +86,7 @@ module.exports = class InventoryView extends CocoView
|
|||
itemView.render()
|
||||
$(availableItemEl).append(itemView.$el)
|
||||
@registerSubView(itemView)
|
||||
continue if $(availableItemEl).hasClass 'restricted'
|
||||
continue if $(availableItemEl).hasClass 'locked'
|
||||
dragHelper = itemView.$el.find('img').clone().addClass('draggable-item')
|
||||
do (dragHelper, itemView) =>
|
||||
itemView.$el.draggable
|
||||
|
@ -136,7 +139,7 @@ module.exports = class InventoryView extends CocoView
|
|||
|
||||
onAvailableItemClick: (e) ->
|
||||
itemContainer = $(e.target).closest('.list-group-item')
|
||||
return if itemContainer.hasClass 'restricted'
|
||||
return if itemContainer.hasClass 'locked'
|
||||
wasActive = itemContainer.hasClass 'active'
|
||||
@unselectAllAvailableEquipment()
|
||||
@selectAvailableItem(itemContainer) unless wasActive
|
||||
|
@ -145,7 +148,7 @@ module.exports = class InventoryView extends CocoView
|
|||
onAvailableItemDoubleClick: (e) ->
|
||||
if e
|
||||
itemContainer = $(e.target).closest('.list-group-item')
|
||||
return if itemContainer.hasClass 'restricted'
|
||||
return if itemContainer.hasClass 'locked'
|
||||
@selectAvailableItem itemContainer
|
||||
@onSelectionChanged()
|
||||
slot = @getSelectedSlot()
|
||||
|
@ -160,17 +163,6 @@ module.exports = class InventoryView extends CocoView
|
|||
@selectAvailableItem(@unequipItemFromSlot(slot))
|
||||
@onSelectionChanged()
|
||||
|
||||
onClickSwapButton: ->
|
||||
slot = @getSelectedSlot()
|
||||
selectedItemContainer = @$el.find('#available-equipment .list-group-item.active')
|
||||
return unless slot[0] or selectedItemContainer[0]
|
||||
slot = @$el.find('.item-slot:not(.disabled):first') if not slot.length
|
||||
itemContainer = @unequipItemFromSlot(slot)
|
||||
@equipSelectedItemToSlot(slot)
|
||||
@selectAvailableItem(itemContainer)
|
||||
@selectSlot(slot)
|
||||
@onSelectionChanged()
|
||||
|
||||
getSelectedSlot: ->
|
||||
@$el.find('#equipped .item-slot.selected')
|
||||
|
||||
|
@ -221,35 +213,33 @@ module.exports = class InventoryView extends CocoView
|
|||
|
||||
if selectedSlot.length
|
||||
@$el.find('#available-equipment .list-group-item').hide()
|
||||
count = @$el.find("#available-equipment .list-group-item.#{selectedSlot.data('slot')}").show().length
|
||||
@$el.find('#stash-description').text "#{count} #{selectedSlot.data('slot')} items owned"
|
||||
|
||||
unlockedCount = @$el.find("#available-equipment .list-group-item.#{selectedSlot.data('slot')}:not(.locked)").show().length
|
||||
lockedCount = @$el.find("#available-equipment .list-group-item.#{selectedSlot.data('slot')}.locked").show().length
|
||||
@$el.find('#unlocked-description').text("#{unlockedCount} #{selectedSlot.data('slot')} items owned").toggle unlockedCount > 0
|
||||
@$el.find('#locked-description').text("#{lockedCount} #{selectedSlot.data('slot')} items locked").toggle lockedCount > 0
|
||||
selectedSlotItemID = selectedSlot.find('.item-view').data('item-id')
|
||||
if selectedSlotItemID
|
||||
item = _.find @items.models, {id:selectedSlotItemID}
|
||||
item = _.find @items.models, {id: selectedSlotItemID}
|
||||
@showSelectedSlotItem(item)
|
||||
|
||||
else
|
||||
@hideSelectedSlotItem()
|
||||
|
||||
else
|
||||
count = @$el.find('#available-equipment .list-group-item').show().length
|
||||
@$el.find('#stash-description').text "#{count} items owned"
|
||||
@$el.find('#available-equipment .list-group-item.equipped').hide()
|
||||
unlockedCount = @$el.find('#available-equipment .list-group-item:not(.locked)').show().length
|
||||
lockedCount = @$el.find('#available-equipment .list-group-item.locked').show().length
|
||||
@$el.find('#unlocked-description').text("#{unlockedCount} items owned").toggle unlockedCount > 0
|
||||
@$el.find('#locked-description').text("#{lockedCount} items locked").toggle lockedCount > 0
|
||||
#@$el.find('#available-equipment .list-group-item.equipped').hide()
|
||||
|
||||
@$el.find('.item-slot').removeClass('disabled')
|
||||
if selectedItem.length
|
||||
item = _.find @items.models, {id:selectedItem.find('.item-view').data('item-id')}
|
||||
|
||||
# update which slots are enabled
|
||||
allowedSlots = item.getAllowedSlots()
|
||||
for slotEl in @$el.find('.item-slot')
|
||||
slotName = $(slotEl).data('slot')
|
||||
if slotName not in allowedSlots
|
||||
$(slotEl).addClass('disabled')
|
||||
|
||||
@showSelectedAvailableItem(item)
|
||||
|
||||
else
|
||||
@hideSelectedAvailableItem()
|
||||
|
||||
|
@ -265,9 +255,10 @@ module.exports = class InventoryView extends CocoView
|
|||
@selectedEquippedItemView.item = item
|
||||
@selectedEquippedItemView.render()
|
||||
@$el.find('#selected-items').show()
|
||||
@$el.find('#selected-equipped-item').show()
|
||||
|
||||
hideSelectedSlotItem: ->
|
||||
@selectedEquippedItemView?.$el.hide()
|
||||
@selectedEquippedItemView?.$el.hide().parent().hide()
|
||||
@$el.find('#selected-items').hide() unless @selectedEquippedItemView?.$el?.is(':visible')
|
||||
|
||||
showSelectedAvailableItem: (item) ->
|
||||
|
@ -280,9 +271,10 @@ module.exports = class InventoryView extends CocoView
|
|||
@selectedAvailableItemView.item = item
|
||||
@selectedAvailableItemView.render()
|
||||
@$el.find('#selected-items').show()
|
||||
@$el.find('#selected-available-item').show()
|
||||
|
||||
hideSelectedAvailableItem: ->
|
||||
@selectedAvailableItemView?.$el.hide()
|
||||
@selectedAvailableItemView?.$el.hide().parent().hide()
|
||||
@$el.find('#selected-items').hide() unless @selectedEquippedItemView?.$el?.is(':visible')
|
||||
|
||||
getCurrentEquipmentConfig: ->
|
||||
|
@ -296,7 +288,7 @@ module.exports = class InventoryView extends CocoView
|
|||
config
|
||||
|
||||
assignLevelEquipment: ->
|
||||
# This is temporary, until we have a more general way of awarding items and configuring needed/restricted items per level.
|
||||
# This is temporary, until we have a more general way of awarding items and configuring needed/locked items per level.
|
||||
gear =
|
||||
'simple-boots': '53e237bf53457600003e3f05'
|
||||
'longsword': '53e218d853457600003e3ebe'
|
||||
|
@ -319,7 +311,7 @@ module.exports = class InventoryView extends CocoView
|
|||
'the-final-kithmaze': {feet: 'simple-boots', 'right-hand': 'longsword', torso: 'leather-tunic', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'}
|
||||
'kithgard-gates': {feet: 'simple-boots', 'right-hand': 'builders-hammer', torso: 'leather-tunic', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'}
|
||||
'defence-of-plainswood': {feet: 'simple-boots', 'right-hand': 'builders-hammer', torso: 'leather-tunic', 'programming-book': 'programmaticon-i', eyes: 'crude-glasses'}
|
||||
necessaryGear = gearByLevel[@options.levelID]
|
||||
return unless necessaryGear = gearByLevel[@options.levelID]
|
||||
for slot, item of necessaryGear ? {}
|
||||
@equipment[slot] ?= gear[item]
|
||||
|
||||
|
|
|
@ -40,7 +40,7 @@ module.exports = class SpectateLevelView extends RootView
|
|||
isEditorPreview: false
|
||||
|
||||
subscriptions:
|
||||
'level:set-volume': (e) -> createjs.Sound.setVolume(e.volume)
|
||||
'level:set-volume': (e) -> createjs.Sound.setVolume(if e.volume is 1 then 0.6 else e.volume) # Quieter for now until individual sound FX controls work again.
|
||||
'god:new-world-created': 'onNewWorld'
|
||||
'god:streaming-world-updated': 'onNewWorld'
|
||||
'god:infinite-loop': 'onInfiniteLoop'
|
||||
|
|
|
@ -21,9 +21,9 @@ module.exports = class WorldMapView extends RootView
|
|||
'click .map-background': 'onClickMap'
|
||||
'click .level a': 'onClickLevel'
|
||||
'click .level-info-container .start-level': 'onClickStartLevel'
|
||||
#'mouseenter .level a': 'onMouseEnterLevel'
|
||||
#'mouseleave .level a': 'onMouseLeaveLevel'
|
||||
#'mousemove .map': 'onMouseMoveMap'
|
||||
'mouseenter .level a': 'onMouseEnterLevel'
|
||||
'mouseleave .level a': 'onMouseLeaveLevel'
|
||||
'mousemove .map': 'onMouseMoveMap'
|
||||
|
||||
constructor: (options) ->
|
||||
super options
|
||||
|
@ -33,9 +33,13 @@ module.exports = class WorldMapView extends RootView
|
|||
@listenToOnce @sessions, 'sync', @onSessionsLoaded
|
||||
@getLevelPlayCounts()
|
||||
$(window).on 'resize', @onWindowResize
|
||||
@playAmbientSound()
|
||||
|
||||
destroy: ->
|
||||
$(window).off 'resize', @onWindowResize
|
||||
if ambientSound = @ambientSound
|
||||
# Doesn't seem to work; stops immediately.
|
||||
createjs.Tween.get(ambientSound).to({volume: 0.0}, 1500).call -> ambientSound.stop()
|
||||
super()
|
||||
|
||||
getLevelPlayCounts: ->
|
||||
|
@ -66,13 +70,15 @@ module.exports = class WorldMapView extends RootView
|
|||
level.y ?= 10 + 80 * Math.random()
|
||||
context.levelStatusMap = @levelStatusMap
|
||||
context.levelPlayCountMap = @levelPlayCountMap
|
||||
context.isIPadApp = application.isIPadApp
|
||||
context
|
||||
|
||||
afterRender: ->
|
||||
super()
|
||||
@onWindowResize()
|
||||
_.defer => @$el.find('.game-controls button').tooltip() # Have to defer or i18n doesn't take effect.
|
||||
@$el.find('.level').tooltip()
|
||||
unless application.isIPadApp
|
||||
_.defer => @$el.find('.game-controls button').tooltip() # Have to defer or i18n doesn't take effect.
|
||||
@$el.find('.level').tooltip()
|
||||
|
||||
onSessionsLoaded: (e) ->
|
||||
for session in @sessions.models
|
||||
|
@ -91,27 +97,35 @@ module.exports = class WorldMapView extends RootView
|
|||
e.stopPropagation()
|
||||
@$levelInfo?.hide()
|
||||
return if $(e.target).attr('disabled')
|
||||
if application.isIPadApp
|
||||
levelID = $(e.target).parents('.level').data('level-id')
|
||||
@$levelInfo = @$el.find(".level-info-container[data-level-id=#{levelID}]").show()
|
||||
@adjustLevelInfoPosition e
|
||||
else
|
||||
@startLevel $(e.target).parents('.level')
|
||||
|
||||
onClickStartLevel: (e) ->
|
||||
@startLevel $(e.target).parents('.level-info-container')
|
||||
|
||||
startLevel: (levelElement) ->
|
||||
playLevelModal = new PlayLevelModal supermodel: @supermodel, levelID: levelElement.data('level-id'), levelPath: levelElement.data('level-path'), levelName: levelElement.data('level-name')
|
||||
@openModalView playLevelModal
|
||||
@$levelInfo?.hide()
|
||||
|
||||
onMouseEnterLevel: (e) ->
|
||||
return if application.isIPadApp
|
||||
levelID = $(e.target).parents('.level').data('level-id')
|
||||
@$levelInfo = @$el.find(".level-info-container[data-level-id=#{levelID}]").show()
|
||||
@adjustLevelInfoPosition e
|
||||
|
||||
onClickStartLevel: (e) ->
|
||||
container = $(e.target).parents('.level-info-container')
|
||||
playLevelModal = new PlayLevelModal supermodel: @supermodel, levelID: container.data('level-id'), levelPath: container.data('level-path'), levelName: container.data('level-name')
|
||||
@openModalView playLevelModal
|
||||
@$levelInfo?.hide()
|
||||
onMouseLeaveLevel: (e) ->
|
||||
return if application.isIPadApp
|
||||
levelID = $(e.target).parents('.level').data('level-id')
|
||||
@$el.find(".level-info-container[data-level-id='#{levelID}']").hide()
|
||||
|
||||
#onMouseEnterLevel: (e) ->
|
||||
# levelID = $(e.target).parents('.level').data('level-id')
|
||||
# @$levelInfo = @$el.find(".level-info-container[data-level-id=#{levelID}]").show()
|
||||
# @adjustLevelInfoPosition e
|
||||
#
|
||||
#onMouseLeaveLevel: (e) ->
|
||||
# levelID = $(e.target).parents('.level').data('level-id')
|
||||
# @$el.find(".level-info-container[data-level-id='#{levelID}']").hide()
|
||||
#
|
||||
#onMouseMoveMap: (e) ->
|
||||
# @adjustLevelInfoPosition e
|
||||
onMouseMoveMap: (e) ->
|
||||
return if application.isIPadApp
|
||||
@adjustLevelInfoPosition e
|
||||
|
||||
adjustLevelInfoPosition: (e) ->
|
||||
return unless @$levelInfo
|
||||
|
@ -146,6 +160,19 @@ module.exports = class WorldMapView extends RootView
|
|||
resultingMarginY = (pageHeight - resultingHeight) / 2
|
||||
@$el.find('.map').css(width: resultingWidth, height: resultingHeight, 'margin-left': resultingMarginX, 'margin-top': resultingMarginY)
|
||||
|
||||
playAmbientSound: ->
|
||||
return if @ambientSound
|
||||
terrain = 'Grass'
|
||||
return unless file = {Dungeon: 'ambient-map-dungeon', Grass: 'ambient-map-grass'}[terrain]
|
||||
src = "/file/interface/#{file}#{AudioPlayer.ext}"
|
||||
unless AudioPlayer.getStatus(src)?.loaded
|
||||
AudioPlayer.preloadSound src
|
||||
Backbone.Mediator.subscribeOnce 'audio-player:loaded', @playAmbientSound, @
|
||||
return
|
||||
@ambientSound = createjs.Sound.play src, loop: -1, volume: 0.1
|
||||
createjs.Tween.get(@ambientSound).to({volume: 1.0}, 1000)
|
||||
|
||||
|
||||
tutorials = [
|
||||
{
|
||||
name: 'Rescue Mission'
|
||||
|
@ -590,6 +617,7 @@ hero = [
|
|||
description: 'Escape the Kithgard dungeons and don\'t let the guardians get you.'
|
||||
x: 47.38
|
||||
y: 70.55
|
||||
disabled: true
|
||||
}
|
||||
{
|
||||
name: 'Defence of Plainswood'
|
||||
|
@ -599,6 +627,7 @@ hero = [
|
|||
description: 'Protect the peasants from the pursuing ogres.'
|
||||
x: 52.66
|
||||
y: 69.66
|
||||
disabled: true
|
||||
}
|
||||
#{
|
||||
# name: ''
|
||||
|
|
|
@ -89,9 +89,9 @@ module.exports = class LadderPlayModal extends ModalView
|
|||
ctx.otherTeamID = @otherTeam
|
||||
ctx.tutorialLevelExists = @tutorialLevelExists
|
||||
ctx.languages = [
|
||||
{id: 'python', name: 'Python'}
|
||||
{id: 'javascript', name: 'JavaScript'}
|
||||
{id: 'coffeescript', name: 'CoffeeScript'}
|
||||
{id: 'python', name: 'Python (Experimental)'}
|
||||
{id: 'clojure', name: 'Clojure (Experimental)'}
|
||||
{id: 'lua', name: 'Lua (Experimental)'}
|
||||
{id: 'io', name: 'Io (Experimental)'}
|
||||
|
|
|
@ -26,6 +26,8 @@ module.exports = class ControlBarView extends CocoView
|
|||
|
||||
'click': -> Backbone.Mediator.publish 'tome:focus-editor', {}
|
||||
|
||||
'click .home a': 'onClickHome'
|
||||
|
||||
constructor: (options) ->
|
||||
@worldName = options.worldName
|
||||
@session = options.session
|
||||
|
@ -51,12 +53,18 @@ module.exports = class ControlBarView extends CocoView
|
|||
c.multiplayerEnabled = @session.get('multiplayer')
|
||||
c.ladderGame = @level.get('type') is 'ladder'
|
||||
c.spectateGame = @spectateGame
|
||||
@homeViewArgs = [{supermodel: @supermodel}]
|
||||
if @level.get('type', true) in ['ladder', 'ladder-tutorial']
|
||||
c.homeLink = '/play/ladder/' + @level.get('slug').replace /\-tutorial$/, ''
|
||||
levelID = @level.get('slug').replace /\-tutorial$/, ''
|
||||
@homeLink = c.homeLink = '/play/ladder/' + levelID
|
||||
@homeViewClass = require 'views/play/ladder/LadderView'
|
||||
@homeViewArgs.push levelID
|
||||
else if @level.get('type', true) is 'hero'
|
||||
c.homeLink = '/play-hero'
|
||||
@homeLink = c.homeLink = '/play-hero'
|
||||
@homeViewClass = require 'views/play/WorldMapView'
|
||||
else
|
||||
c.homeLink = '/'
|
||||
@homeLink = c.homeLink = '/'
|
||||
@homeViewClass = require 'views/HomeView'
|
||||
c.editorLink = "/editor/level/#{@level.get('slug')}"
|
||||
c.multiplayerSession = @multiplayerSession if @multiplayerSession
|
||||
c.multiplayerPlayers = @multiplayerPlayers if @multiplayerPlayers
|
||||
|
@ -84,6 +92,11 @@ module.exports = class ControlBarView extends CocoView
|
|||
showGameMenuModal: ->
|
||||
@openModalView new GameMenuModal level: @level, session: @session
|
||||
|
||||
onClickHome: (e) ->
|
||||
e.preventDefault()
|
||||
e.stopImmediatePropagation()
|
||||
Backbone.Mediator.publish 'router:navigate', route: @homeLink, viewClass: @homeViewClass, viewArgs: @homeViewArgs
|
||||
|
||||
onJoinedRealTimeMultiplayerGame: (e) ->
|
||||
@multiplayerSession = e.session
|
||||
@multiplayerPlayers = new RealTimeCollection('multiplayer_level_sessions/' + @multiplayerSession.id + '/players')
|
||||
|
|
|
@ -166,6 +166,7 @@ module.exports = class LevelPlaybackView extends CocoView
|
|||
@togglePlaybackControls false
|
||||
Backbone.Mediator.publish 'playback:real-time-playback-started', {}
|
||||
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'real-time-playback-start', volume: 1
|
||||
Backbone.Mediator.publish 'level:set-letterbox', on: true
|
||||
|
||||
onRealTimeMultiplayerCast: (e) ->
|
||||
@realTime = true
|
||||
|
@ -179,8 +180,8 @@ module.exports = class LevelPlaybackView extends CocoView
|
|||
@updateBarWidth e.world.frames.length, e.world.maxTotalFrames, e.world.dt
|
||||
|
||||
updateBarWidth: (loadedFrameCount, maxTotalFrames, dt) ->
|
||||
@totalTime = loadedFrameCount * dt
|
||||
pct = parseInt(100 * loadedFrameCount / maxTotalFrames) + '%'
|
||||
@totalTime = (loadedFrameCount - 1) * dt
|
||||
pct = parseInt(100 * loadedFrameCount / (maxTotalFrames - 1)) + '%'
|
||||
@barWidth = $('.progress', @$el).css('width', pct).show().width()
|
||||
$('.scrubber .progress', @$el).slider('enable', true)
|
||||
@newTime = 0
|
||||
|
@ -262,10 +263,7 @@ module.exports = class LevelPlaybackView extends CocoView
|
|||
onFrameChanged: (e) ->
|
||||
if e.progress isnt @lastProgress
|
||||
@currentTime = e.frame / e.world.frameRate
|
||||
# Game will sometimes stop at 29.97, but with only one digit, this is unnecesary.
|
||||
# @currentTime = @totalTime if Math.abs(@totalTime - @currentTime) < 0.04
|
||||
@updatePopupContent() if @timePopup?.shown
|
||||
|
||||
@updateProgress(e.progress, e.world)
|
||||
@updatePlayButton(e.progress)
|
||||
@lastProgress = e.progress
|
||||
|
@ -295,11 +293,13 @@ module.exports = class LevelPlaybackView extends CocoView
|
|||
@worldCompletelyLoaded = world.frames.length is world.totalFrames
|
||||
if @realTime and @worldCompletelyLoaded and not wasLoaded
|
||||
Backbone.Mediator.publish 'playback:real-time-playback-ended', {}
|
||||
Backbone.Mediator.publish 'level:set-letterbox', on: false
|
||||
$('.scrubber .progress-bar', @$el).css('width', "#{progress * 100}%")
|
||||
|
||||
updatePlayButton: (progress) ->
|
||||
if @worldCompletelyLoaded and progress >= 0.99 and @lastProgress < 0.99
|
||||
$('#play-button').removeClass('playing').removeClass('paused').addClass('ended')
|
||||
Backbone.Mediator.publish 'level:set-letterbox', on: false if @realTime
|
||||
Backbone.Mediator.publish 'playback:real-time-playback-ended', {} if @realTime
|
||||
if progress < 0.99 and @lastProgress >= 0.99
|
||||
b = $('#play-button').removeClass('ended')
|
||||
|
@ -312,6 +312,7 @@ module.exports = class LevelPlaybackView extends CocoView
|
|||
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'real-time-playback-end', volume: 1
|
||||
|
||||
onStopRealTimePlayback: (e) ->
|
||||
Backbone.Mediator.publish 'level:set-letterbox', on: false
|
||||
Backbone.Mediator.publish 'playback:real-time-playback-ended', {}
|
||||
|
||||
onSetDebug: (e) ->
|
||||
|
@ -337,7 +338,7 @@ module.exports = class LevelPlaybackView extends CocoView
|
|||
start: (event, ui) =>
|
||||
return if @shouldIgnore()
|
||||
@slideCount = 0
|
||||
@wasPlaying = @playing
|
||||
@wasPlaying = @playing and not $('#play-button').hasClass('ended')
|
||||
Backbone.Mediator.publish 'level:set-playing', {playing: false}
|
||||
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'playback-scrub-start', volume: 0.5
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ module.exports = class PlayLevelView extends RootView
|
|||
isEditorPreview: false
|
||||
|
||||
subscriptions:
|
||||
'level:set-volume': (e) -> createjs.Sound.setVolume(e.volume)
|
||||
'level:set-volume': (e) -> createjs.Sound.setVolume(if e.volume is 1 then 0.6 else e.volume) # Quieter for now until individual sound FX controls work again.
|
||||
'level:show-victory': 'onShowVictory'
|
||||
'level:restart': 'onRestartLevel'
|
||||
'level:highlight-dom': 'onHighlightDom'
|
||||
|
@ -205,6 +205,8 @@ module.exports = class PlayLevelView extends RootView
|
|||
@session = @levelLoader.session
|
||||
@world = @levelLoader.world
|
||||
@level = @levelLoader.level
|
||||
@$el.addClass 'hero' if @level.get('type', true) is 'hero'
|
||||
@$el.addClass 'flags' if @level.get('slug') is 'sky-span' # TODO: figure out when the player has flags.
|
||||
@otherSession = @levelLoader.opponentSession
|
||||
@worldLoadFakeResources = [] # first element (0) is 1%, last (100) is 100%
|
||||
for percent in [1 .. 100]
|
||||
|
@ -258,7 +260,7 @@ module.exports = class PlayLevelView extends RootView
|
|||
@insertSubView @tome = new TomeView levelID: @levelID, session: @session, otherSession: @otherSession, thangs: @world.thangs, supermodel: @supermodel, level: @level
|
||||
@insertSubView new LevelPlaybackView session: @session
|
||||
@insertSubView new GoalsView {}
|
||||
@insertSubView new LevelFlagsView world: @world
|
||||
@insertSubView new LevelFlagsView world: @world if @levelID is 'sky-span' # TODO: figure out when flags are available
|
||||
@insertSubView new GoldView {}
|
||||
@insertSubView new HUDView {}
|
||||
@insertSubView new ChatView levelID: @levelID, sessionID: @session.id, session: @session
|
||||
|
|
|
@ -8,7 +8,7 @@ module.exports = class EditorConfigModal extends ModalView
|
|||
aceConfig: {}
|
||||
|
||||
defaultConfig:
|
||||
language: 'javascript'
|
||||
language: 'python'
|
||||
keyBindings: 'default'
|
||||
invisibles: false
|
||||
indentGuides: false
|
||||
|
@ -32,9 +32,9 @@ module.exports = class EditorConfigModal extends ModalView
|
|||
@aceConfig = _.defaults @aceConfig, @defaultConfig
|
||||
c = super()
|
||||
c.languages = [
|
||||
{id: 'python', name: 'Python'}
|
||||
{id: 'javascript', name: 'JavaScript'}
|
||||
{id: 'coffeescript', name: 'CoffeeScript'}
|
||||
{id: 'python', name: 'Python (Experimental)'}
|
||||
{id: 'clojure', name: 'Clojure (Experimental)'}
|
||||
{id: 'lua', name: 'Lua (Experimental)'}
|
||||
{id: 'io', name: 'Io (Experimental)'}
|
||||
|
|
|
@ -14,6 +14,7 @@ module.exports = class VictoryModal extends ModalView
|
|||
|
||||
events:
|
||||
'click .next-level-button': 'onPlayNextLevel'
|
||||
'click .world-map-button': 'onClickWorldMap'
|
||||
|
||||
# review events
|
||||
'mouseover .rating i': (e) -> @showStars(@starNum($(e.target)))
|
||||
|
@ -64,6 +65,11 @@ module.exports = class VictoryModal extends ModalView
|
|||
@saveReview() if @$el.find('.review textarea').val()
|
||||
Backbone.Mediator.publish 'level:play-next-level', {}
|
||||
|
||||
onClickWorldMap: (e) ->
|
||||
e.preventDefault()
|
||||
e.stopImmediatePropagation()
|
||||
Backbone.Mediator.publish 'router:navigate', route: '/play-hero', viewClass: require('views/play/WorldMapView'), viewArgs: [{supermodel: @supermodel}]
|
||||
|
||||
onGameSubmitted: (e) ->
|
||||
ladderURL = "/play/ladder/#{@level.get('slug')}#my-matches"
|
||||
Backbone.Mediator.publish 'router:navigate', route: ladderURL
|
||||
|
|
|
@ -104,7 +104,8 @@ module.exports = class CastButtonView extends CocoView
|
|||
else if castable
|
||||
s = $.i18n.t('play_level.tome_cast_button_run')
|
||||
s = $.i18n.t('play_level.tome_cast_button_casting') if s is 'Run' and me.get('preferredLanguage').split('-')[0] isnt 'en' # Temporary, if tome_cast_button_running isn't translated.
|
||||
s += ' ' + @castShortcut
|
||||
unless @options.levelID in ['dungeons-of-kithgard', 'gems-in-the-deep', 'shadow-guard', 'true-names'] # Hide for first few.
|
||||
s += ' ' + @castShortcut
|
||||
else
|
||||
s = $.i18n.t('play_level.tome_cast_button_ran')
|
||||
s = $.i18n.t('play_level.tome_cast_button_casting') if s is 'Ran' and me.get('preferredLanguage').split('-')[0] isnt 'en' # Temporary, if tome_cast_button_running isn't translated.
|
||||
|
|
|
@ -110,7 +110,7 @@ module.exports = class DocFormatter
|
|||
if @doc.type is 'number' and not isNaN v
|
||||
if v == Math.round v
|
||||
return v
|
||||
return v.toFixed 2
|
||||
return v?.toFixed(2) ? 'null'
|
||||
if _.isString v
|
||||
return "\"#{v}\""
|
||||
if v?.id
|
||||
|
|
|
@ -43,7 +43,7 @@ module.exports = class Spell
|
|||
if @canRead() # We can avoid creating these views if we'll never use them.
|
||||
@view = new SpellView {spell: @, level: options.level, session: @session, worker: @worker}
|
||||
@view.render() # Get it ready and code loaded in advance
|
||||
@tabView = new SpellListTabEntryView spell: @, supermodel: @supermodel, language: @language
|
||||
@tabView = new SpellListTabEntryView spell: @, supermodel: @supermodel, codeLanguage: @language, level: options.level
|
||||
@tabView.render()
|
||||
@team = @permissions.readwrite[0] ? 'common'
|
||||
Backbone.Mediator.publish 'tome:spell-created', spell: @
|
||||
|
@ -56,7 +56,7 @@ module.exports = class Spell
|
|||
@worker = null
|
||||
|
||||
setLanguage: (@language) ->
|
||||
console.log 'setting language to', @language, 'so using original source', @languages[language] ? @languages.javascript
|
||||
#console.log 'setting language to', @language, 'so using original source', @languages[language] ? @languages.javascript
|
||||
@originalSource = @languages[language] ? @languages.javascript
|
||||
|
||||
addThang: (thang) ->
|
||||
|
|
|
@ -33,6 +33,9 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
|
|||
shift = $.i18n.t 'keyboard_shortcuts.shift'
|
||||
context.beautifyShortcutVerbose = "#{ctrl}+#{shift}+B: #{$.i18n.t 'keyboard_shortcuts.beautify'}"
|
||||
context.maximizeShortcutVerbose = "#{ctrl}+#{shift}+M: #{$.i18n.t 'keyboard_shortcuts.maximize_editor'}"
|
||||
context.includeSpellList = @options.includeSpellList
|
||||
context.codeLanguage = @options.codeLanguage
|
||||
context.levelType = @options.level.get 'type', true
|
||||
context
|
||||
|
||||
afterRender: ->
|
||||
|
@ -71,7 +74,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
|
|||
found = true
|
||||
break
|
||||
return unless found
|
||||
docFormatter = new DocFormatter doc: doc, thang: @thang, language: @options.language, selectedMethod: true
|
||||
docFormatter = new DocFormatter doc: doc, thang: @thang, language: @options.codeLanguage, selectedMethod: true
|
||||
@$el.find('code').popover(
|
||||
animation: true
|
||||
html: true
|
||||
|
@ -122,11 +125,12 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
|
|||
|
||||
onSpellChangedLanguage: (e) ->
|
||||
return unless e.spell is @spell
|
||||
@options.language = e.language
|
||||
@options.codeLanguage = e.language
|
||||
@$el.find('code').popover 'destroy'
|
||||
@render()
|
||||
@docsBuilt = false
|
||||
@buildDocs() if @thang
|
||||
@updateReloadButton()
|
||||
|
||||
toggleControls: (e, enabled) ->
|
||||
# Don't call super; do it differently
|
||||
|
|
|
@ -61,7 +61,7 @@ module.exports = class SpellListView extends CocoView
|
|||
theseThangs = _.keys(spell.thangs)
|
||||
changedThangs = not lastThangs or not _.isEqual theseThangs, lastThangs
|
||||
lastThangs = theseThangs
|
||||
newEntries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs, supermodel: @supermodel
|
||||
newEntries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs, supermodel: @supermodel, includeSpellList: @spells.length > 1
|
||||
@entries.push entry
|
||||
for entry in newEntries
|
||||
@$el.append entry.el
|
||||
|
|
|
@ -76,6 +76,7 @@ module.exports = class SpellPaletteEntryView extends CocoView
|
|||
Backbone.Mediator.publish 'tome:palette-pin-toggled', entry: @, pinned: @popoverPinned
|
||||
|
||||
onClick: (e) =>
|
||||
return if @options.level.get('type', true) is 'hero' # No need for confusing docs pinning on hero levels.
|
||||
if key.shift
|
||||
Backbone.Mediator.publish 'tome:insert-snippet', doc: @options.doc, language: @options.language, formatted: @doc
|
||||
return
|
||||
|
|
|
@ -123,7 +123,8 @@ module.exports = class SpellPaletteView extends CocoView
|
|||
if tabbify and _.find @entries, ((entry) -> entry.doc.owner isnt 'this')
|
||||
@entryGroups = _.groupBy @entries, groupForEntry
|
||||
else
|
||||
defaultGroup = $.i18n.t('play_level.tome_available_spells', defaultValue: 'Available Spells')
|
||||
i18nKey = if @options.level.get('type', true) is 'hero' then 'play_level.tome_your_skills' else 'play_level.tome_available_spells'
|
||||
defaultGroup = $.i18n.t i18nKey
|
||||
@entryGroups = {}
|
||||
@entryGroups[defaultGroup] = @entries
|
||||
@defaultGroupSlug = _.string.slugify defaultGroup
|
||||
|
@ -144,7 +145,7 @@ module.exports = class SpellPaletteView extends CocoView
|
|||
|
||||
addEntry: (doc, shortenize, tabbify, isSnippet=false) ->
|
||||
writable = (if _.isString(doc) then doc else doc.name) in (@thang.apiUserProperties ? [])
|
||||
new SpellPaletteEntryView doc: doc, thang: @thang, shortenize: shortenize, tabbify: tabbify, isSnippet: isSnippet, language: @options.language, writable: writable
|
||||
new SpellPaletteEntryView doc: doc, thang: @thang, shortenize: shortenize, tabbify: tabbify, isSnippet: isSnippet, language: @options.language, writable: writable, level: @options.level
|
||||
|
||||
onDisableControls: (e) -> @toggleControls e, false
|
||||
onEnableControls: (e) -> @toggleControls e, true
|
||||
|
|
|
@ -36,8 +36,6 @@ ThangListView = require './ThangListView'
|
|||
SpellPaletteView = require './SpellPaletteView'
|
||||
CastButtonView = require './CastButtonView'
|
||||
|
||||
window.SHIM_WORKER_PATH = '/javascripts/workers/catiline_worker_shim.js'
|
||||
|
||||
module.exports = class TomeView extends CocoView
|
||||
id: 'tome-view'
|
||||
template: template
|
||||
|
@ -108,7 +106,7 @@ module.exports = class TomeView extends CocoView
|
|||
return teamSpellMap
|
||||
|
||||
createSpells: (programmableThangs, world) ->
|
||||
language = @options.session.get('codeLanguage') ? me.get('aceConfig')?.language ? 'javascript'
|
||||
language = @options.session.get('codeLanguage') ? me.get('aceConfig')?.language ? 'python'
|
||||
pathPrefixComponents = ['play', 'level', @options.levelID, @options.session.id, 'code']
|
||||
@spells ?= {}
|
||||
@thangSpells ?= {}
|
||||
|
@ -212,7 +210,7 @@ module.exports = class TomeView extends CocoView
|
|||
|
||||
updateSpellPalette: (thang, spell) ->
|
||||
return unless thang and @spellPaletteView?.thang isnt thang and thang.programmableProperties or thang.apiProperties
|
||||
@spellPaletteView = @insertSubView new SpellPaletteView thang: thang, supermodel: @supermodel, programmable: spell?.canRead(), language: spell?.language ? @options.session.get('codeLanguage'), session: @options.session
|
||||
@spellPaletteView = @insertSubView new SpellPaletteView thang: thang, supermodel: @supermodel, programmable: spell?.canRead(), language: spell?.language ? @options.session.get('codeLanguage'), session: @options.session, level: @options.level
|
||||
@spellPaletteView.toggleControls {}, spell.view.controlsEnabled if spell # TODO: know when palette should have been disabled but didn't exist
|
||||
|
||||
spellFor: (thang, spellName) ->
|
||||
|
|
|
@ -3,6 +3,7 @@ template = require 'templates/play/modal/play-level-modal'
|
|||
ChooseHeroView = require 'views/game-menu/ChooseHeroView'
|
||||
InventoryView = require 'views/game-menu/InventoryView'
|
||||
PlayLevelView = require 'views/play/level/PlayLevelView'
|
||||
LadderView = require 'views/play/ladder/LadderView'
|
||||
LevelSession = require 'models/LevelSession'
|
||||
|
||||
module.exports = class PlayLevelModal extends ModalView
|
||||
|
@ -97,10 +98,12 @@ module.exports = class PlayLevelModal extends ModalView
|
|||
@showLoading()
|
||||
@updateConfig =>
|
||||
@navigatingToPlay = true
|
||||
viewClass = if @options.levelPath is 'ladder' then LadderView else PlayLevelView
|
||||
Backbone.Mediator.publish 'router:navigate', {
|
||||
route: "/play/#{@options.levelPath || 'level'}/#{@options.levelID}",
|
||||
viewClass: PlayLevelView,
|
||||
viewArgs: [{supermodel: @supermodel}, @options.levelID]}
|
||||
route: "/play/#{@options.levelPath || 'level'}/#{@options.levelID}"
|
||||
viewClass: viewClass
|
||||
viewArgs: [{supermodel: @supermodel}, @options.levelID]
|
||||
}
|
||||
|
||||
onEnterPressed: (e) ->
|
||||
(if @chooseHeroView.$el.hasClass('secret') then @onClickPlayLevel else @onClickChooseInventory).apply @
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue