Merge remote-tracking branch 'upstream/master'

This commit is contained in:
George Litos 2014-09-26 01:05:42 +03:00
commit 384bd4291e
102 changed files with 891 additions and 765 deletions
app
assets
images/pages
javascripts/workers
lib
locale
models
schemas
styles
templates
treema-ext.coffee
views

Binary file not shown.

After

(image error) Size: 5.4 KiB

Binary file not shown.

After

(image error) Size: 217 KiB

View file

@ -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;

View file

@ -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()

View file

@ -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

View file

@ -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

View file

@ -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)"

View file

@ -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)"

View file

@ -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."

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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: "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"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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)"

View file

@ -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"

View file

@ -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)"

View file

@ -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)"

View file

@ -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"

View file

@ -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

View file

@ -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,

View file

@ -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' }

View file

@ -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}
]

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -52,3 +52,8 @@
@keyframes #{$name}
@content
@mixin filter($filters)
-webkit-filter: $filters
-moz-filter: $filters
-o-filter: $filters
filter: $filters

View file

@ -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

View file

@ -16,7 +16,7 @@
float: right
margin-left: 10px
.next-level-button
.next-level-button, .world-map-button
float: right
margin-left: 10px

View file

@ -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%

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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'))

View file

@ -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

View file

@ -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

View file

@ -1 +1 @@
h5(data-i18n="play_level.tome_select_spell") Select a Spell
h5(data-i18n="play_level.tome_select_method") Select a Method

View file

@ -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

View file

@ -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()

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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) ->

View file

@ -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) ->

View file

@ -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

View file

@ -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]

View file

@ -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'

View file

@ -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: ''

View file

@ -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)'}

View file

@ -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')

View file

@ -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

View file

@ -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

View file

@ -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)'}

View file

@ -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

View file

@ -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.

View file

@ -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

View file

@ -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) ->

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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) ->

View file

@ -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