diff --git a/app/assets/main.html b/app/assets/main.html
index 98c0571ae..d2a3257b4 100644
--- a/app/assets/main.html
+++ b/app/assets/main.html
@@ -53,10 +53,6 @@
-
-
diff --git a/app/lib/surface/MusicPlayer.coffee b/app/lib/surface/MusicPlayer.coffee
index 4d3e8b47d..606e7eed6 100644
--- a/app/lib/surface/MusicPlayer.coffee
+++ b/app/lib/surface/MusicPlayer.coffee
@@ -3,6 +3,7 @@ AudioPlayer = require 'lib/AudioPlayer'
{me} = require 'lib/auth'
CROSSFADE_LENGTH = 1500
+MUSIC_VOLUME = 0.6
module.exports = class MusicPlayer extends CocoClass
currentMusic: null
@@ -51,7 +52,7 @@ module.exports = class MusicPlayer extends CocoClass
return unless @currentMusic
@currentMusic.volume = 0.0
if me.get('music')
- createjs.Tween.get(@currentMusic).to({volume: 1.0}, CROSSFADE_LENGTH)
+ createjs.Tween.get(@currentMusic).to({volume: MUSIC_VOLUME}, CROSSFADE_LENGTH)
onMusicSettingChanged: ->
@updateMusicVolume()
@@ -59,7 +60,7 @@ module.exports = class MusicPlayer extends CocoClass
updateMusicVolume: ->
return unless @currentMusic
createjs.Tween.removeTweens(@currentMusic)
- @currentMusic.volume = if me.get('music') then 1.0 else 0.0
+ @currentMusic.volume = if me.get('music') then MUSIC_VOLUME else 0.0
destroy: ->
me.off 'change:music', @onMusicSettingChanged, @
diff --git a/app/lib/surface/Surface.coffee b/app/lib/surface/Surface.coffee
index b809742c6..96e051fe1 100644
--- a/app/lib/surface/Surface.coffee
+++ b/app/lib/surface/Surface.coffee
@@ -457,12 +457,12 @@ module.exports = Surface = class Surface extends CocoClass
onMouseDown: (e) =>
return if @disabled
- newPos = @camera.screenToCanvas({x: e.stageX, y: e.stageY})
+ cap = @camera.screenToCanvas({x: e.stageX, y: e.stageY})
# getObject(s)UnderPoint is broken, so we have to use the private method to get what we want
- onBackground = not @stage._getObjectsUnderPoint(newPos.x, newPos.y, null, true)
+ onBackground = not @stage._getObjectsUnderPoint(e.stageX, e.stageY, null, true)
- worldPos = @camera.screenToWorld x: e.stageX, y: e.stageY
- event = onBackground: onBackground, x: e.stageX, y: e.stageY, originalEvent: e, worldPos: worldPos
+ wop = @camera.screenToWorld x: e.stageX, y: e.stageY
+ event = onBackground: onBackground, x: e.stageX, y: e.stageY, originalEvent: e, worldPos: wop
Backbone.Mediator.publish 'surface:stage-mouse-down', event
Backbone.Mediator.publish 'tome:focus-editor', {}
diff --git a/app/locale/es-ES.coffee b/app/locale/es-ES.coffee
index 6344629f7..35e022051 100644
--- a/app/locale/es-ES.coffee
+++ b/app/locale/es-ES.coffee
@@ -79,7 +79,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
recover:
recover_account_title: "Recuperar Cuenta"
send_password: "Enviar recuperación de contraseña"
-# recovery_sent: "Recovery email sent."
+ recovery_sent: "Email de recuperación de contraseña enviado."
signup:
create_account_title: "Crea una cuenta para guardar tu progreso"
@@ -188,7 +188,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
email_announcements: "Noticias"
email_announcements_description: "Recibe correos electrónicos con las últimas noticias y desarrollos de CodeCombat."
email_notifications: "Notificationes"
-# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
+ email_notifications_summary: "Controles para personalizar las notificaciones por email automaticas, relacionadas con tu actividad en CodeCombat."
email_any_notes: "Cualquier Notificacion"
email_any_notes_description: "Deshabilitar todas las notificaciones por mail."
email_news: "Noticias"
@@ -216,7 +216,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
profile_for_prefix: "Perfil de "
profile_for_suffix: ""
featured: "Destacado"
-# not_featured: "Not Featured"
+ not_featured: "Sin Destacar"
looking_for: "Buscando:"
last_updated: "Última actualización:"
contact: "Contacto"
@@ -234,8 +234,8 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
# next_education: "recount your educational ordeals."
next_projects: "Muestranos tres proyectos en los que hayas trabajado."
next_links: "añade links personales o de redes sociales."
-# next_photo: "add an optional professional photo."
-# next_active: "mark yourself open to offers to show up in searches."
+ next_photo: "añadir una foto para el perfil profesional."
+ next_active: "mostrarte abierto a ofertas en las busquedas."
example_blog: "Blog"
example_personal_site: "Web personal"
links_header: "Enlaces Personales"
@@ -244,38 +244,38 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
links_name_help: "¿Qué estás enlazando?"
links_link_blurb: "URL del enlace"
basics_header: "Actualizar información básica"
-# basics_active: "Open to Offers"
-# basics_active_help: "Want interview offers right now?"
+ basics_active: "Abierto a ofertas"
+ basics_active_help: "Buscas entrevistas de trabajo ahora?"
# basics_job_title: "Desired Job Title"
-# basics_job_title_help: "What role are you looking for?"
+ basics_job_title_help: "Que tipo de rol estas buscando?"
basics_city: "Ciudad"
basics_city_help: "Ciudad en la que quieres trabajar (o en la que vives actualmente)."
basics_country: "País"
basics_country_help: "País en la que quieres trabajar (o en la que vives actualmente)."
-# 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_visa: "Estatus de Trabajo en EEUU"
+ basics_visa_help: "Estas autorizado a trabajar en EEUU, o necesitas una visa patrocinada? (Si vives en Canada o Australia, marca autorizado.)"
+ basics_looking_for: "Estoy Buscando"
basics_looking_for_full_time: "Full-time (tiempo completo)"
-# 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?"
+ basics_looking_for_part_time: "Tiempo Partido"
+ basics_looking_for_remote: "Desde Casa"
+ basics_looking_for_contracting: "Contractual"
+ basics_looking_for_internship: "Interino"
+ basics_looking_for_help: "Que tipo de puesto de desarrollo te gustaria?"
name_header: "Escriba su nombre"
name_anonymous: "Desarrollador Anónimo"
-# name_help: "Name you want employers to see, like 'Nick Winter'."
+ name_help: "Esto es lo que quieres que vean las empresas, algo como 'Nick Winter'."
short_description_header: "Escriba una breve descripción sobre usted."
-# short_description_blurb: "Add a tagline to help an employer quickly learn more about you."
+ short_description_blurb: "Añade una frase que ayude a las empresas a hacerse una idea de ti."
# short_description: "Tagline"
short_description_help: "¿Quién eres, y qué estás buscando? 140 caracteres como máximo."
-# skills_header: "Skills"
+ skills_header: "Habilidades"
# 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_header: "Describenos tu trabajo soñado"
+ long_description_blurb: "Cuenta a tus empleadores lo impresionante que eres y que trabajo estas buscando."
long_description: "Descripción Personal"
# 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: "Experiencia laboral"
-# work_header: "Chronicle your work history"
+ work_header: "Cuentanos un poco de tu historial laboral"
work_years: "Años de experiencia"
# 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."
@@ -301,51 +301,51 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
our_notes: "Nuestras notas"
# remarks: "Remarks"
projects: "Proyectos"
-# projects_header: "Add 3 projects"
-# projects_header_2: "Projects (Top 3)"
+ projects_header: "Añade 3 proyectos"
+ projects_header_2: "Proyectos (Top 3)"
# projects_blurb: "Highlight your projects to amaze employers."
-# project_name: "Project Name"
-# project_name_help: "What was the project called?"
+ project_name: "Nombre del proyecto"
+ project_name_help: "Como se llamaba el proyecto?"
project_description: "Descripción"
-# 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"
+ project_description_help: "Describe el proyecto brevemente."
+ project_picture: "Foto"
+ project_picture_help: "Sube una imagen de 230x115px o mas grande enseñandonos el proyecto."
+ project_link: "Enlace"
+ project_link_help: "Enlace al proyecto."
+ player_code: "Codigo de Jugador"
employers:
-# hire_developers_not_credentials: "Hire developers, not credentials."
-# get_started: "Get Started"
+ hire_developers_not_credentials: "Contrata desarrolladores, no credenciales."
+ get_started: "Empezar"
# 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_visa: "Visa"
+ filter_visa_yes: "Autorizado en EEUU"
+ filter_visa_no: "No Autorizado"
# 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."
+ filter_role_web_developer: "Desarrollador Web"
+ filter_role_software_developer: "Desarrollador de Software"
+ filter_role_mobile_developer: "Desarrollador de Mobiles"
+ filter_experience: "Experiencia"
+ filter_experience_senior: "Senior"
+ filter_experience_junior: "Junior"
+ filter_experience_recent_grad: "Recien Graduado"
+ filter_experience_student: "Estudiante Universitario"
+ filter_results: "notas"
+ start_hiring: "Comenzar a contratar."
+ reasons: "Tres razones por las que deberias contratar a traves de nosotros:"
+ everyone_looking: "Todo el mundo aqui esta buscando su proxima oportunidad."
# 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."
+ weeding: "Sientate; nosotros hemos hecho el trabajo por ti."
+ weeding_blurb: "Todos los jugadores que ponemos en la lista ha sido seguido por sus habilidades tecnicas. Tambien hacemos llamadas de telefono para los candidatos seleccionados y haz notas en sus perfiles para ahorrar tiempo."
# 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."
+ make_hiring_easier: "Hacer mi contratacion mas facil, por favor."
what: "¿Qué es 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."
+ cost: "Cuanto cobramos?"
+ cost_blurb: "Cobramos el 15% del salario del primer año y ofrecemos reembolso del 100% del dinero durante 90 dias. No cobramos a los candidatos que ya estan siendo entrevistados en tu compañia."
candidate_name: "Nombre"
candidate_location: "Ubicación"
candidate_looking_for: "Buscando"
@@ -353,10 +353,10 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
candidate_top_skills: "Mejores Habilidades"
candidate_years_experience: "Años Exp"
candidate_last_updated: "Última actualización"
-# candidate_who: "Who"
-# featured_developers: "Featured Developers"
-# other_developers: "Other Developers"
-# inactive_developers: "Inactive Developers"
+ candidate_who: "Quien"
+ featured_developers: "Desarrolladores Destacados"
+ other_developers: "Otros Desarrolladores"
+ inactive_developers: "Desarrolladores Inactivos"
play_level:
done: "Hecho"
@@ -446,7 +446,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
multiplayer_tab: "Multijugador"
inventory_caption: "Equipa a tu heroe"
choose_hero_caption: "Elige la lengua del heroe"
-# save_load_caption: "... and view history"
+ save_load_caption: "... y ver la historia"
options_caption: "Ajustes de configuracion"
guide_caption: "Documentos y pistas"
multiplayer_caption: "Juega con amigos!"
@@ -467,7 +467,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
music_label: "Musica"
music_description: "Musica de fondo on/off."
# autorun_label: "Autorun"
-# autorun_description: "Control automatic code execution."
+ autorun_description: "Control automatico de codigo en ejecucion."
editor_config: "Conf. editor"
editor_config_title: "Configuración del editor"
editor_config_level_language_label: "Lenguaje para este nivel"
diff --git a/app/locale/it.coffee b/app/locale/it.coffee
index 4bf2a3163..3549ad03c 100644
--- a/app/locale/it.coffee
+++ b/app/locale/it.coffee
@@ -3,37 +3,37 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
loading: "Caricamento in corso..."
saving: "Salvataggio in corso..."
sending: "Invio in corso..."
-# send: "Send"
+ send: "Invia"
cancel: "Annulla"
save: "Salva"
-# publish: "Publish"
-# create: "Create"
+ publish: "Pubblica"
+ create: "Crea"
delay_1_sec: "1 secondo"
delay_3_sec: "3 secondi"
delay_5_sec: "5 secondi"
manual: "Manuale"
fork: "Fork"
play: "Gioca"
-# retry: "Retry"
-# watch: "Watch"
+ retry: "Riprova"
+ watch: "Guarda"
# unwatch: "Unwatch"
-# submit_patch: "Submit Patch"
+ submit_patch: "Invia Patch"
-# units:
-# second: "second"
-# seconds: "seconds"
-# minute: "minute"
-# minutes: "minutes"
-# hour: "hour"
-# hours: "hours"
-# day: "day"
-# days: "days"
-# week: "week"
-# weeks: "weeks"
-# month: "month"
-# months: "months"
-# year: "year"
-# years: "years"
+ units:
+ second: "secondo"
+ seconds: "secondi"
+ minute: "minuto"
+ minutes: "minuti"
+ hour: "ora"
+ hours: "ore"
+ day: "giorno"
+ days: "giorni"
+ week: "settimana"
+ weeks: "settimane"
+ month: "mese"
+ months: "mesi"
+ year: "anno"
+ years: "anni"
modal:
close: "Chiudi"
@@ -48,9 +48,9 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
editor: "Editor"
blog: "Blog"
forum: "Forum"
-# account: "Account"
-# profile: "Profile"
-# stats: "Stats"
+ account: "Account"
+ profile: "Profilo"
+ stats: "Statistiche"
# code: "Code"
admin: "Amministratore"
home: "Pagina iniziale"
@@ -90,7 +90,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
creating: "Creazione account..."
sign_up: "Registrati"
log_in: "Accedi con la password"
-# social_signup: "Or, you can sign up through Facebook or G+:"
+ social_signup: "Oppure puoi registrarti con Facebook o Google+:"
# required: "You need to log in before you can go that way."
home:
@@ -102,7 +102,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
old_browser_suffix: "Puoi provare lo stesso, ma probabilmente non funzionerà."
campaign: "Campagna"
for_beginners: "Per Principianti"
-# multiplayer: "Multiplayer"
+ multiplayer: "Multiplayer"
for_developers: "Per Sviluppatori"
# 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."
@@ -124,13 +124,13 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
campaign_multiplayer_description: "... nelle quali programmi faccia a faccia contro altri giocatori."
campaign_player_created: "Creati dai giocatori"
campaign_player_created_description: "... nei quali affronterai la creatività dei tuoi compagni Stregoni Artigiani."
-# campaign_classic_algorithms: "Classic Algorithms"
+ campaign_classic_algorithms: "Algoritmi classici"
# campaign_classic_algorithms_description: "... in which you learn the most popular algorithms in Computer Science."
level_difficulty: "Difficoltà: "
play_as: "Gioca come "
spectate: "Spettatore"
-# players: "players"
-# hours_played: "hours played"
+ players: "giocatori"
+ hours_played: "ore di gioco"
contact:
contact_us: "Contatta CodeCombat"
@@ -142,7 +142,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
forum_page: "il nostro forum"
forum_suffix: " invece."
send: "Invia feedback"
-# contact_candidate: "Contact Candidate"
+# contact_candidate: "Contact Candidate"
# 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:
@@ -175,7 +175,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
autosave: "Modifiche salvate automaticamente"
me_tab: "Io"
picture_tab: "Immagine"
-# upload_picture: "Upload a picture"
+ upload_picture: "Carica immagine"
wizard_tab: "Stregone"
password_tab: "Password"
emails_tab: "Email"
@@ -191,9 +191,9 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# 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_news: "Novità"
+ email_recruit_notes: "Lavora con noi"
+ email_recruit_notes_description: "Se sai giocare molto bene potremmo contattarti per offrirti un lavoro (migliore)."
contributor_emails: "Email dei collaboratori"
contribute_prefix: "Stiamo cercando persone che si uniscano al nostro gruppo! Dai un'occhiata alla "
contribute_page: "pagina dei collaboratori"
@@ -210,8 +210,8 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# view_profile: "View Your Profile"
account_profile:
-# settings: "Settings"
-# edit_profile: "Edit Profile"
+ settings: "Impostazioni"
+ edit_profile: "Modifica Profilo"
# done_editing: "Done Editing"
profile_for_prefix: "Profilo di "
profile_for_suffix: ""
@@ -362,15 +362,15 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
done: "Fatto"
customize_wizard: "Personalizza stregone"
home: "Pagina iniziale"
-# stop: "Stop"
-# game_menu: "Game Menu"
+ stop: "Stop"
+ game_menu: "Menu"
guide: "Guida"
restart: "Ricomincia"
goals: "Obiettivi"
# success: "Success!"
-# incomplete: "Incomplete"
-# timed_out: "Ran out of time"
-# failing: "Failing"
+ incomplete: "Incompleto"
+ timed_out: "Tempo Scaduto"
+# failing: "Failing"
action_timeline: "Barra temporale delle azioni"
click_to_select: "Clicca un'unità per selezionarla."
reload_title: "Ricarica tutto il codice?"
@@ -401,7 +401,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
spell_saved: "Magia Salvata"
skip_tutorial: "Salta (esc)"
# keyboard_shortcuts: "Key Shortcuts"
-# loading_ready: "Ready!"
+ loading_ready: "Pronto!"
# 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."
@@ -438,18 +438,18 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# infinite_loop_comment_out: "Comment Out My Code"
game_menu:
-# inventory_tab: "Inventory"
-# choose_hero_tab: "Restart Level"
-# save_load_tab: "Save/Load"
-# options_tab: "Options"
-# guide_tab: "Guide"
+ inventory_tab: "Inventario"
+ choose_hero_tab: "Ricomincia Livello"
+ save_load_tab: "Salva/Carico"
+ options_tab: "Opzioni"
+ guide_tab: "Guida"
multiplayer_tab: "Multigiocatore"
# inventory_caption: "Equip your hero"
-# choose_hero_caption: "Choose hero, language"
+ choose_hero_caption: "Scegli eroe, lingua"
# save_load_caption: "... and view history"
# options_caption: "Configure settings"
# guide_caption: "Docs and tips"
-# multiplayer_caption: "Play with friends!"
+ multiplayer_caption: "Gioca con i tuoi amici!"
# inventory:
# temp: "Temp"
@@ -457,13 +457,13 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# choose_hero:
# temp: "Temp"
-# save_load:
-# granularity_saved_games: "Saved"
+ save_load:
+ granularity_saved_games: "Salvato"
# granularity_change_history: "History"
-# options:
+ options:
# general_options: "General Options"
-# volume_label: "Volume"
+ volume_label: "Volume"
# music_label: "Music"
# music_description: "Turn background music on/off."
# autorun_label: "Autorun"
@@ -491,20 +491,20 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
multiplayer:
multiplayer_title: "Impostazioni multigiocatore"
-# multiplayer_toggle: "Enable multiplayer"
-# multiplayer_toggle_description: "Allow others to join your game."
+ multiplayer_toggle: "Abilita multiplayer"
+ multiplayer_toggle_description: "Permetti ad altri giocatori di unirsi alla partita."
multiplayer_link_description: "Dai questo link a chi vuoi che si unisca a te."
multiplayer_hint_label: "Suggerimento:"
multiplayer_hint: " Clicca il link per selezionare tutto, quindi premi CMD-C o Ctrl-C per copiare il link."
multiplayer_coming_soon: "Ulteriori aggiunte per il multigiocatore in arrivo!"
# multiplayer_sign_in_leaderboard: "Sign in or create an account and get your solution on the leaderboard."
-# keyboard_shortcuts:
+ keyboard_shortcuts:
# keyboard_shortcuts: "Keyboard Shortcuts"
-# space: "Space"
-# enter: "Enter"
-# escape: "Escape"
-# shift: "Shift"
+ space: "Spazio"
+ enter: "Invio"
+ escape: "Esc"
+ shift: "Maiusc"
# cast_spell: "Cast current spell."
# run_real_time: "Run in real time."
# continue_script: "Continue past current script."
@@ -517,7 +517,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# toggle_grid: "Toggle grid overlay."
# toggle_pathfinding: "Toggle pathfinding overlay."
# beautify: "Beautify your code by standardizing its formatting."
-# maximize_editor: "Maximize/minimize code editor."
+ maximize_editor: "Ingrandisci/rimpicciolisci l'editor di programmazione."
# move_wizard: "Move your Wizard around the level."
admin:
@@ -764,9 +764,9 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# artisan_attribute_3: "For the time being, endurance en par with an Adventurer. Our Level Editor is super preliminary and frustrating to use. You have been warned!"
# artisan_join_desc: "Use the Level Editor in these steps, give or take:"
# artisan_join_step1: "Read the documentation."
-# artisan_join_step2: "Create a new level and explore existing levels."
+ artisan_join_step2: "Crea un nuovo livello ed esplora quelli già esistenti."
# artisan_join_step3: "Find us in our public HipChat room for help."
-# artisan_join_step4: "Post your levels on the forum for feedback."
+ artisan_join_step4: "Posta il tuo livello sul forum per ricevere del feedback."
more_about_artisan: "Leggi di più su cosa vuol dire diventare un creativo Artigiano"
# artisan_subscribe_desc: "Get emails on level editor updates and announcements."
# adventurer_summary: "Let us be clear about your role: you are the tank. You are going to take heavy damage. We need people to try out brand-new levels and help identify how to make things better. The pain will be enormous; making good games is a long process and no one gets it right the first time. If you can endure and have a high constitution score, then this class is for you."
@@ -784,7 +784,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
scribe_introduction_url_mozilla: "Rete di sviluppo di Mozilla"
# scribe_introduction_suf: " has built. If your idea of fun is articulating the concepts of programming in Markdown form, then this class might be for you."
# scribe_attribute_1: "Skill in words is pretty much all you need. Not only grammar and spelling, but able to convey complicated ideas to others."
-# contact_us_url: "Contact us"
+ contact_us_url: "Contattaci"
# scribe_join_description: "tell us a little about yourself, your experience with programming and what sort of things you'd like to write about. We'll go from there!"
more_about_scribe: "Leggi di più su cosa vuol dire diventare un diligente Scrivano"
# scribe_subscribe_desc: "Get emails about article writing announcements."
@@ -794,7 +794,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
diplomat_introduction_suf: "è che c'è un notevole interesse per CodeCombat negli altri paesi, in particolare in Brasile! Stiamo costruendo un corpo di traduttori per trasformare liste di parole in altre parole, per rendere CodeCombat accessibile il più possibile in tutto il mondo. Se ti piace l'idea di sbirciare nei contenuti futuri e di portare questi livelli ai tuoi connazionali il più presto possibile, questa categoria potrebbe essere la tua."
diplomat_attribute_1: "Competenza in inglese e nella lingua in cui vorresti tradurre. Per trasferire idee complesse è importante avere una solida capacità in entrambe!"
# diplomat_join_pref_github: "Find your language locale file "
-# diplomat_github_url: "on GitHub"
+ diplomat_github_url: "su GitHub"
# diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!"
more_about_diplomat: "Leggi di più su cosa vuol dire diventare un grande Diplomatico"
diplomat_subscribe_desc: "Ricevi messaggi email sullo sviluppo i18n e i livelli da tradurre."
@@ -829,8 +829,8 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
ambassador_title_description: "(Supporto)"
ladder:
-# please_login: "Please log in first before playing a ladder game."
-# my_matches: "My Matches"
+ please_login: "Per favore esegui il log in first prima di giocare una partita classificata ."
+ my_matches: "Le mie partite"
simulate: "Simula"
# simulation_explanation: "By simulating games you can get your game ranked faster!"
# simulate_games: "Simulate Games!"
diff --git a/app/locale/pt-PT.coffee b/app/locale/pt-PT.coffee
index 5a29ba6e1..8d02401e8 100644
--- a/app/locale/pt-PT.coffee
+++ b/app/locale/pt-PT.coffee
@@ -79,7 +79,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
recover:
recover_account_title: "Recuperar Conta"
send_password: "Enviar Password de Recuperação"
-# recovery_sent: "Recovery email sent."
+ recovery_sent: "E-mail de recuperação enviado."
signup:
create_account_title: "Criar Conta para Guardar Progresso"
@@ -307,12 +307,12 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
project_name: "Nome do Projeto"
# project_name_help: "What was the project called?"
project_description: "Descrição"
-# project_description_help: "Briefly describe the project."
+ project_description_help: "Descreva o projeto em poucas palavras."
project_picture: "Imagem"
# project_picture_help: "Upload a 230x115px or larger image showing off the project."
project_link: "Ligação"
# project_link_help: "Link to the project."
-# player_code: "Player Code"
+ player_code: "Código do Jogador"
employers:
hire_developers_not_credentials: "Contrate programadores, não cartas de recomendação."
@@ -568,7 +568,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
level_tab_settings: "Configurações"
level_tab_components: "Componentes"
level_tab_systems: "Sistemas"
-# level_tab_docs: "Documentation"
+ level_tab_docs: "Documentação"
level_tab_thangs_title: "Thangs Atuais"
level_tab_thangs_all: "Todos"
level_tab_thangs_conditions: "Condições Iniciais"
@@ -652,10 +652,10 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
why_paragraph_2_italic_caps: "NÃO MÃE, TENHO DE ACABAR O NÍVEL!"
why_paragraph_2_suffix: "É por isso que o CodeCombat é um jogo multijogador, e não um jogo que não passa de um curso com lições. Nós não vamos parar enquanto não puder parar--mas desta vez, isso é uma coisa boa."
why_paragraph_3: "Se vai ficar viciado em algum jogo, vicie-se neste e torne-se num dos feiticeiros da idade da tecnologia."
-# press_title: "Bloggers/Press"
-# 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."
+ press_title: "Bloggers/Imprensa"
+ press_paragraph_1_prefix: "Quer escrever sobre nós? Sinta-se à vontade para descarregar e usar todos os recursos incluídos no nosso"
+ press_paragraph_1_link: "pacote de imprensa"
+ press_paragraph_1_suffix: ". Todos os logótipos e imagens podem ser usados sem nos contactar diretamente."
team: "Equipa"
george_title: "CEO"
george_blurb: "Homem de Negócios"
@@ -695,9 +695,9 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
# recruitment_description_italic: "a lot"
# recruitment_description_ending: "the site remains free and everybody's happy. That's the plan."
copyrights_title: "Direitos Autorais e Licensas"
-# contributor_title: "Contributor License Agreement"
+ contributor_title: "Contrato de Licença do Contribuinte (CLA)"
# contributor_description_prefix: "All contributions, both on the site and on our GitHub repository, are subject to our"
-# cla_url: "CLA"
+ cla_url: "CLA"
# contributor_description_suffix: "to which you should agree before contributing."
code_title: "Código - MIT"
# code_description_prefix: "All code owned by CodeCombat or hosted on codecombat.com, both in the GitHub repository or in the codecombat.com database, is licensed under the"
diff --git a/app/views/editor/level/modals/GenerateTerrainModal.coffee b/app/views/editor/level/modals/GenerateTerrainModal.coffee
index c2637bd00..56e67e5bc 100644
--- a/app/views/editor/level/modals/GenerateTerrainModal.coffee
+++ b/app/views/editor/level/modals/GenerateTerrainModal.coffee
@@ -234,7 +234,7 @@ module.exports = class GenerateTerrainModal extends ModalView
template: template
plain: true
modalWidthPercent: 90
-
+
events:
'click .choose-option': 'onGenerate'
diff --git a/app/views/editor/level/thangs/ThangsTabView.coffee b/app/views/editor/level/thangs/ThangsTabView.coffee
index fd5201ed2..03ee1d0a4 100644
--- a/app/views/editor/level/thangs/ThangsTabView.coffee
+++ b/app/views/editor/level/thangs/ThangsTabView.coffee
@@ -237,11 +237,15 @@ module.exports = class ThangsTabView extends CocoView
@dragged = true
@surface.camera.dragDisabled = true
{stageX, stageY} = e.originalEvent
- wop = @surface.camera.screenToWorld x: stageX, y: stageY
+ cap = @surface.camera.screenToCanvas x: stageX, y: stageY
+ wop = @surface.camera.canvasToWorld cap
wop.z = @selectedExtantThang.depth / 2
@adjustThangPos @selectedExtantSprite, @selectedExtantThang, wop
[w, h] = [@surface.camera.canvasWidth, @surface.camera.canvasHeight]
- @calculateMovement(stageX / w, stageY / h, w / h)
+ sidebarWidths = ((if @$el.find(id).hasClass('hide') then 0 else (@$el.find(id).outerWidth() / @surface.camera.canvasScaleFactorX)) for id in ['#all-thangs', '#add-thangs-view'])
+ w -= sidebarWidth for sidebarWidth in sidebarWidths
+ cap.x -= sidebarWidths[0]
+ @calculateMovement(cap.x / w, cap.y / h, w / h)
onSpriteMouseUp: (e) ->
clearTimeout @backgroundAddClickTimeout
@@ -384,7 +388,7 @@ module.exports = class ThangsTabView extends CocoView
return unless @addThangSprite
wop = @surface.camera.screenToWorld x: e.x, y: e.y
wop.z = 0.5
- @adjustThangPos @addThangSprite, @addThangSprite.thang, wop # TODO: this and onSpriteDragged both conflictin'
+ @adjustThangPos @addThangSprite, @addThangSprite.thang, wop
null
onSurfaceMouseOver: (e) ->
diff --git a/app/views/game-menu/GameMenuModal.coffee b/app/views/game-menu/GameMenuModal.coffee
index 2881cc4a7..042c1f9b5 100644
--- a/app/views/game-menu/GameMenuModal.coffee
+++ b/app/views/game-menu/GameMenuModal.coffee
@@ -15,14 +15,15 @@ module.exports = class GameMenuModal extends ModalView
id: 'game-menu-modal'
instant: true
+ events:
+ 'change input.select': 'onSelectionChanged'
+ 'shown.bs.tab .nav-tabs a': 'onTabShown'
+
constructor: (options) ->
super options
@options.showDevBits = me.isAdmin() or /https?:\/\/localhost/.test(window.location.href)
@options.showInventory = @options.level.get('type', true) is 'hero'
- events:
- 'change input.select': 'onSelectionChanged'
-
getRenderData: (context={}) ->
context = super(context)
context.showDevBits = @options.showDevBits
@@ -36,6 +37,10 @@ module.exports = class GameMenuModal extends ModalView
(if @options.showInventory then @subviews.inventory_view else @subviews.choose_hero_view).$el.addClass 'active'
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-open', volume: 1
+ onTabShown: ->
+ Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-tab-switch', volume: 1
+
onHidden: ->
subview.onHidden?() for subviewKey, subview of @subviews
me.patch()
+ Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-close', volume: 1
diff --git a/app/views/modal/NewModelModal.coffee b/app/views/modal/NewModelModal.coffee
index 97ba6fcaf..f394ed55d 100644
--- a/app/views/modal/NewModelModal.coffee
+++ b/app/views/modal/NewModelModal.coffee
@@ -13,7 +13,7 @@ module.exports = class NewModelModal extends ModalView
constructor: (options) ->
super options
- @model = options.model
+ @modelClass = options.model
@modelLabel = options.modelLabel
@properties = options.properties
$('#name').ready @focusOnName
@@ -25,10 +25,10 @@ module.exports = class NewModelModal extends ModalView
c
makeNewModel: ->
- model = new @model
+ model = new @modelClass
name = @$el.find('#name').val()
model.set('name', name)
- if @model.schema().properties.permissions
+ if model.schema().properties.permissions
model.set 'permissions', [{access: 'owner', target: me.id}]
model.set(key, prop) for key, prop of @properties if @properties?
model
diff --git a/app/views/play/level/LevelGoalsView.coffee b/app/views/play/level/LevelGoalsView.coffee
index 15f0b5d7f..4a187879d 100644
--- a/app/views/play/level/LevelGoalsView.coffee
+++ b/app/views/play/level/LevelGoalsView.coffee
@@ -28,7 +28,7 @@ module.exports = class LevelGoalsView extends CocoView
@updatePlacement()
onNewGoalStates: (e) ->
- firstRun = @previousGoalStatus?
+ firstRun = not @previousGoalStatus?
@previousGoalStatus ?= {}
@$el.find('.goal-status').addClass 'secret'
classToShow = null
@@ -63,8 +63,9 @@ module.exports = class LevelGoalsView extends CocoView
goals.push goal
if not firstRun and state.status is 'success' and @previousGoalStatus[goal.id] isnt 'success'
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'goal-success', volume: 1
- else if not firstRun and state.status is 'incomplete' and @previousGoalStatus[goal.id] is 'success'
+ else if not firstRun and state.status isnt 'success' and @previousGoalStatus[goal.id] is 'success'
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'goal-incomplete-again', volume: 1
+ @previousGoalStatus[goal.id] = state.status
@$el.removeClass('secret') if goals.length > 0
onSurfacePlaybackRestarted: ->
@@ -91,9 +92,20 @@ module.exports = class LevelGoalsView extends CocoView
sound = if expand then 'goals-expand' else 'goals-collapse'
top = if expand then -10 else 26 - @$el.outerHeight()
@$el.css 'top', top
- Backbone.Mediator.publish 'audio-player:play-sound', trigger: sound, volume: 1 if @expanded?
+ if @soundTimeout
+ # Don't play the sound we were going to play after all; the transition has reversed.
+ clearTimeout @soundTimeout
+ @soundTimeout = null
+ else if @expanded?
+ # Play it when the transition ends, not when it begins.
+ @soundTimeout = _.delay @playToggleSound, 500, sound
@expanded = expand
+ playToggleSound: (sound) =>
+ return if @destroyed
+ Backbone.Mediator.publish 'audio-player:play-sound', trigger: sound, volume: 1
+ @soundTimeout = null
+
onSetLetterbox: (e) ->
@$el.toggle not e.on
@updatePlacement()
diff --git a/app/views/play/level/LevelLoadingView.coffee b/app/views/play/level/LevelLoadingView.coffee
index 383d969c3..9d8ec311c 100644
--- a/app/views/play/level/LevelLoadingView.coffee
+++ b/app/views/play/level/LevelLoadingView.coffee
@@ -31,7 +31,7 @@ module.exports = class LevelLoadingView extends CocoView
loadingDetails.css 'top', -loadingDetails.outerHeight(true)
@$el.find('.left-wing').css left: '-100%', backgroundPosition: 'right -400px top 0'
@$el.find('.right-wing').css right: '-100%', backgroundPosition: 'left -400px top 0'
- Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'loading-view-unveil', volume: 1
+ Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'loading-view-unveil', volume: 0.5
_.delay @onUnveilEnded, duration * 1000
onUnveilEnded: =>
diff --git a/app/views/play/level/LevelPlaybackView.coffee b/app/views/play/level/LevelPlaybackView.coffee
index 8ffb10607..6949fce6e 100644
--- a/app/views/play/level/LevelPlaybackView.coffee
+++ b/app/views/play/level/LevelPlaybackView.coffee
@@ -341,6 +341,7 @@ module.exports = class LevelPlaybackView extends CocoView
Backbone.Mediator.publish 'level:set-playing', {playing: false}
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'playback-scrub-start', volume: 0.5
+
stop: (event, ui) =>
return if @shouldIgnore()
@actualProgress = ui.value / @sliderIncrements
@@ -352,6 +353,7 @@ module.exports = class LevelPlaybackView extends CocoView
@$el.find('.scrubber-handle').effect('bounce', {times: 2})
else
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'playback-scrub-end', volume: 0.5
+
)
getScrubRatio: ->
diff --git a/app/views/play/level/tome/SpellListTabEntryView.coffee b/app/views/play/level/tome/SpellListTabEntryView.coffee
index d00e3aa6f..5d30e395c 100644
--- a/app/views/play/level/tome/SpellListTabEntryView.coffee
+++ b/app/views/play/level/tome/SpellListTabEntryView.coffee
@@ -78,7 +78,8 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
trigger: 'hover'
content: docFormatter.formatPopover()
container: @$el.parent()
- )
+ ).on 'show.bs.popover', =>
+ Backbone.Mediator.publish 'audio-player:play-sound', trigger: "spell-tab-entry-open", volume: 0.75
onMouseEnterAvatar: (e) -> # Don't call super
onMouseLeaveAvatar: (e) -> # Don't call super
diff --git a/app/views/play/level/tome/SpellPaletteEntryView.coffee b/app/views/play/level/tome/SpellPaletteEntryView.coffee
index 3f81a5d4c..434a12176 100644
--- a/app/views/play/level/tome/SpellPaletteEntryView.coffee
+++ b/app/views/play/level/tome/SpellPaletteEntryView.coffee
@@ -44,11 +44,10 @@ module.exports = class SpellPaletteEntryView extends CocoView
content: @docFormatter.formatPopover()
container: 'body'
template: @overridePopoverTemplate
- )
- window.element = @$el
- @$el.on 'show.bs.popover', =>
+ ).on 'show.bs.popover', =>
Backbone.Mediator.publish 'tome:palette-hovered', thang: @thang, prop: @doc.name, entry: @
- Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'spell-palette-entry-open', volume: 1
+ soundIndex = Math.floor(Math.random() * 4)
+ Backbone.Mediator.publish 'audio-player:play-sound', trigger: "spell-palette-entry-open-{soundIndex}", volume: 0.75
onMouseEnter: (e) ->
# Make sure the doc has the updated Thang so it can regenerate its prop value
@@ -65,6 +64,7 @@ module.exports = class SpellPaletteEntryView extends CocoView
@$el.add('.spell-palette-popover.popover').removeClass 'pinned'
$('.spell-palette-popover.popover .close').remove()
@$el.popover 'hide'
+ Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'spell-palette-entry-unpin', volume: 1
else
@popoverPinned = true
@$el.popover 'show'
diff --git a/test/demo/easeljs/WebGL.demo.coffee b/test/demo/easeljs/WebGL.demo.coffee
index 4b2efe59a..2ed4fe634 100644
--- a/test/demo/easeljs/WebGL.demo.coffee
+++ b/test/demo/easeljs/WebGL.demo.coffee
@@ -472,8 +472,37 @@ class WebGLDemoView extends RootView
createjs.Ticker.addEventListener "tick", listener
# 20% CPU
+
+ testGiantCanvas: ->
+ builder = new createjs.SpriteSheetBuilder()
+
+ # mess with these
+ builder.maxWidth = 4096
+ builder.maxHeight = 4096
+ scale = 3.9
+ duplicates = 100
+
+ frames = []
+ createClass = (frame) ->
+ class Stub
+ constructor: ->
+ sprite = new createjs.Sprite(sheet, frame)
+ sprite.stop()
+ return sprite
+ for name, klass of librarianLib
+ continue if name is 'Librarian_SideWalk_JSCC'
+ instance = new klass()
+ builder.addFrame(instance, instance.nominalBounds, scale) for i in _.range(duplicates)
+ librarianLib[name] = createClass(frames.length)
+ frames.push frames.length
+
+ sheet = builder.build()
+ $('body').attr('class', '').empty().css('background', 'white').append($(sheet._images))
+ for image, index in sheet._images
+ console.log "Sheet ##{index}: #{$(image).attr('width')}x#{$(image).attr('height')}"
+
afterRender: ->
# @testMovieClipWithRasterizedSpriteChildren()
# @testMovieClipWithEmptyObjectChildren()
@@ -485,7 +514,8 @@ class WebGLDemoView extends RootView
# @testAnimateManyRasteredWaterfalls()
# @testManualMovieClipUpdating()
# @testManyWaterfallsWithManualAnimation()
- @testLibrarianHorde()
+# @testLibrarianHorde()
+ @testGiantCanvas()
module.exports = ->
v = new WebGLDemoView()