Merge branch 'master' into feature/jsondiffpatch

This commit is contained in:
Scott Erickson 2014-04-15 15:18:57 -07:00
commit c395a3414e
29 changed files with 316 additions and 232 deletions

View file

@ -104,7 +104,7 @@ module.exports = class LevelLoader extends CocoClass
onSupermodelLoadedOne: (e) ->
@buildSpriteSheetsForThangType e.model if not @headless and e.model instanceof ThangType
@update()
@update() unless @destroyed
# Things to do when either the Session or Supermodel load
@ -160,7 +160,7 @@ module.exports = class LevelLoader extends CocoClass
buildSpriteSheetsForThangType: (thangType) ->
@grabThangTypeTeams() unless @thangTypeTeams
for team in @thangTypeTeams[thangType.get('original')] ? [null]
spriteOptions = {resolutionFactor: 4, async: true}
spriteOptions = {resolutionFactor: 4, async: false}
if thangType.get('kind') is 'Floor'
spriteOptions.resolutionFactor = 2
if team and color = @teamConfigs[team]?.color
@ -174,10 +174,14 @@ module.exports = class LevelLoader extends CocoClass
return unless building
#console.log 'Building:', thangType.get('name'), options
@spriteSheetsToBuild += 1
thangType.once 'build-complete', =>
onBuildComplete = =>
return if @destroyed
@spriteSheetsBuilt += 1
@notifyProgress()
if options.async
thangType.once 'build-complete', onBuildComplete
else
onBuildComplete()
# World init

View file

@ -455,7 +455,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
allProps = allProps.concat (@thang.moreProgrammableProperties ? [])
for property in allProps
if m = property.match /.*Range$/
if m = property.match /.*(Range|Distance|Radius)$/
if @thang[m[0]]? and @thang[m[0]] < 9001
@ranges.push
name: m[0]

View file

@ -54,7 +54,7 @@ module.exports = class Mark extends CocoClass
if @name is 'bounds' then @buildBounds()
else if @name is 'shadow' then @buildShadow()
else if @name is 'debug' then @buildDebug()
else if @name.match(/.+Range$/) then @buildRadius(@name)
else if @name.match(/.+(Range|Distance|Radius)$/) then @buildRadius(@name)
else if @thangType then @buildSprite()
else console.error "Don't know how to build mark for", @name
@mark?.mouseEnabled = false

View file

@ -293,6 +293,9 @@
time_current: "Now:"
time_total: "Max:"
time_goto: "Go to:"
infinite_loop_try_again: "Try Again"
infinite_loop_reset_level: "Reset Level"
infinite_loop_comment_out: "Comment Out My Code"
admin:
av_title: "Admin Views"

View file

@ -3,7 +3,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
loading: "Aan het laden..."
saving: "Opslaan..."
sending: "Verzenden..."
# send: "Send"
send: "Verzend"
cancel: "Annuleren"
save: "Opslagen"
# publish: "Publish"
@ -114,8 +114,8 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
forum_page: "ons forum"
forum_suffix: "."
send: "Feedback Verzonden"
# contact_candidate: "Contact Candidate"
# recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 18% 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."
contact_candidate: "Contacteer Kandidaat"
recruitment_reminder: "Gebruik dit formulier om kandidaten te contacteren voor wie je een interesse hebt om te interviewen. Vergeet niet dat CodeCombat een honorarium vraagt van 18% op het eerste-jaarssalaris. Dit honorarium moet betaald worden als de kandidaat wordt aangenomen en kon tot na 90 dagen terugbetaald worden als deze ontslagen wordt in deze periode. Deeltijds-, contract- en thuiswerkers worden van dit honorarium vrijgesteld, alsook interims."
diplomat_suggestion:
title: "Help CodeCombat vertalen!"
@ -128,13 +128,13 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
wizard_settings:
title: "Tovenaar instellingen"
customize_avatar: "Bewerk je avatar"
# active: "Active"
# color: "Color"
# group: "Group"
active: "Actief"
color: "Kleur"
group: "Groep"
clothes: "Kleren"
trim: "Trim"
cloud: "Wolk"
# team: "Team"
team: "Team"
spell: "Spreuk"
boots: "Laarzen"
hue: "Hue"
@ -167,37 +167,37 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
error_saving: "Fout Tijdens Het Opslaan"
saved: "Aanpassingen Opgeslagen"
password_mismatch: "Het wachtwoord komt niet overeen."
# job_profile: "Job Profile"
# 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."
job_profile: "Job Profiel"
job_profile_approved: "Jouw job profiel werd goedgekeurd door CodeCombat. Werkgevers zullen het kunnen bekijken totdat je het inactief zet of als er geen verandering in komt voor vier weken."
job_profile_explanation: "Hey! Vul dit in en we zullen je contacteren om je een job als softwareontwikkelaar te helpen vinden."
account_profile:
edit_settings: "Instellingen Aanpassen"
profile_for_prefix: "Profiel voor "
profile_for_suffix: ""
# approved: "Approved"
# not_approved: "Not Approved"
# looking_for: "Looking for:"
# last_updated: "Last updated:"
# contact: "Contact"
# work_experience: "Work Experience"
# education: "Education"
# our_notes: "Our Notes"
# projects: "Projects"
approved: "Goedgekeurd"
not_approved: "Niet goedgekeurd"
looking_for: "Zoekt naar:"
last_updated: "Laatst aangepast:"
contact: "Contact"
work_experience: "Werk ervaring"
education: "Opleiding"
our_notes: "Onze notities"
projects: "Projecten"
# employers:
# want_to_hire_our_players: "Want to hire expert CodeCombat players?"
# contact_george: "Contact George to see our candidates"
# candidates_count_prefix: "We currently have "
# candidates_count_many: "many"
# candidates_count_suffix: "highly skilled and vetted developers looking for work."
# candidate_name: "Name"
# candidate_location: "Location"
# candidate_looking_for: "Looking For"
# candidate_role: "Role"
# candidate_top_skills: "Top Skills"
# candidate_years_experience: "Yrs Exp"
# candidate_last_updated: "Last Updated"
employers:
want_to_hire_our_players: "Wil je expert CodeCombat spelers aanwerven? "
contact_george: "Contacteer George om onze kandidaten te zien"
candidates_count_prefix: "Momenteel hebben we "
candidates_count_many: "veel"
candidates_count_suffix: "zeer getalenteerde en ervaren ontwikkelaars die werk zoeken."
candidate_name: "Naam"
candidate_location: "Locatie"
candidate_looking_for: "Zoekt naar"
candidate_role: "Rol"
candidate_top_skills: "Beste vaardigheden"
candidate_years_experience: "Jaren ervaring"
candidate_last_updated: "Laatst aangepast"
play_level:
level_load_error: "Level kon niet geladen worden: "
@ -316,14 +316,14 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
contact_us: "contacteer ons!"
hipchat_prefix: "Je kan ons ook vinden in ons"
hipchat_url: "(Engelstalig) HipChat kanaal."
# back: "Back"
back: "Terug"
revert: "Keer wijziging terug"
revert_models: "keer wijziging model terug"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
fork_title: "Kloon naar nieuwe versie"
fork_creating: "Kloon aanmaken..."
more: "Meer"
wiki: "Wiki"
live_chat: "Live Chat"
level_some_options: "Enkele opties?"
level_tab_thangs: "Elementen"
level_tab_scripts: "Scripts"
@ -331,11 +331,11 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
level_tab_components: "Componenten"
level_tab_systems: "Systemen"
level_tab_thangs_title: "Huidige Elementen"
# level_tab_thangs_all: "All"
level_tab_thangs_all: "Alles"
level_tab_thangs_conditions: "Start Condities"
level_tab_thangs_add: "Voeg element toe"
# delete: "Delete"
# duplicate: "Duplicate"
delete: "Verwijder"
duplicate: "Dupliceer"
level_settings_title: "Instellingen"
level_component_tab_title: "Huidige Componenten"
level_component_btn_new: "Maak een nieuwe component aan"
@ -357,7 +357,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
article_search_title: "Zoek Artikels Hier"
thang_search_title: "Zoek Thang Types Hier"
level_search_title: "Zoek Levels Hier"
# signup_to_create: "Sign Up to Create a New Content"
signup_to_create: "Registreer je om nieuwe content te maken"
# read_only_warning2: "Note: you can't save any edits here, because you're not logged in."
article:
@ -370,13 +370,13 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
body: "Inhoud"
version: "Versie"
commit_msg: "Commit Bericht"
# version_history: "Version History"
version_history: "Versie geschiedenis"
version_history_for: "Versie geschiedenis voor: "
result: "Resultaat"
results: "Resultaten"
description: "Beschrijving"
or: "of"
# subject: "Subject"
subject: "Onderwerp"
email: "Email"
password: "Wachtwoord"
message: "Bericht"
@ -662,6 +662,6 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
gplus_friends: "G+ vrienden"
gplus_friend_sessions: "Sessies van G+ vrienden"
leaderboard: "Scorebord"
# user_schema: "User Schema"
# user_profile: "User Profile"
user_schema: "Gebruikersschema"
user_profile: "Gebruikersprofiel"
# patches: "Patches"

View file

@ -3,7 +3,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
loading: "Aan het laden..."
saving: "Opslaan..."
sending: "Verzenden..."
# send: "Send"
send: "Verzend"
cancel: "Annuleren"
save: "Opslagen"
# publish: "Publish"
@ -114,8 +114,8 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
forum_page: "ons forum"
forum_suffix: "."
send: "Feedback Verzonden"
# contact_candidate: "Contact Candidate"
# recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 18% 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."
contact_candidate: "Contacteer Kandidaat"
recruitment_reminder: "Gebruik dit formulier om kandidaten te contacteren voor wie je een interesse hebt om te interviewen. Vergeet niet dat CodeCombat een honorarium vraagt van 18% op het eerste-jaarssalaris. Dit honorarium moet betaald worden als de kandidaat wordt aangenomen en kon tot na 90 dagen terugbetaald worden als deze ontslagen wordt in deze periode. Deeltijds-, contract- en thuiswerkers worden van dit honorarium vrijgesteld, alsook interims."
diplomat_suggestion:
title: "Help CodeCombat vertalen!"
@ -128,13 +128,13 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
wizard_settings:
title: "Tovenaar instellingen"
customize_avatar: "Bewerk je avatar"
# active: "Active"
# color: "Color"
# group: "Group"
active: "Actief"
color: "Kleur"
group: "Groep"
clothes: "Kleren"
trim: "Trim"
cloud: "Wolk"
# team: "Team"
team: "Team"
spell: "Spreuk"
boots: "Laarzen"
hue: "Hue"
@ -167,37 +167,37 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
error_saving: "Fout Tijdens Het Opslaan"
saved: "Aanpassingen Opgeslagen"
password_mismatch: "Het wachtwoord komt niet overeen."
# job_profile: "Job Profile"
# 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."
job_profile: "Job Profiel"
job_profile_approved: "Jouw job profiel werd goedgekeurd door CodeCombat. Werkgevers zullen het kunnen bekijken totdat je het inactief zet of als er geen verandering in komt voor vier weken."
job_profile_explanation: "Hey! Vul dit in en we zullen je contacteren om je een job als softwareontwikkelaar te helpen vinden."
account_profile:
edit_settings: "Instellingen Aanpassen"
profile_for_prefix: "Profiel voor "
profile_for_suffix: ""
# approved: "Approved"
# not_approved: "Not Approved"
# looking_for: "Looking for:"
# last_updated: "Last updated:"
# contact: "Contact"
# work_experience: "Work Experience"
# education: "Education"
# our_notes: "Our Notes"
# projects: "Projects"
approved: "Goedgekeurd"
not_approved: "Niet goedgekeurd"
looking_for: "Zoekt naar:"
last_updated: "Laatst aangepast:"
contact: "Contact"
work_experience: "Werk ervaring"
education: "Opleiding"
our_notes: "Onze notities"
projects: "Projecten"
# employers:
# want_to_hire_our_players: "Want to hire expert CodeCombat players?"
# contact_george: "Contact George to see our candidates"
# candidates_count_prefix: "We currently have "
# candidates_count_many: "many"
# candidates_count_suffix: "highly skilled and vetted developers looking for work."
# candidate_name: "Name"
# candidate_location: "Location"
# candidate_looking_for: "Looking For"
# candidate_role: "Role"
# candidate_top_skills: "Top Skills"
# candidate_years_experience: "Yrs Exp"
# candidate_last_updated: "Last Updated"
employers:
want_to_hire_our_players: "Wil je expert CodeCombat spelers aanwerven? "
contact_george: "Contacteer George om onze kandidaten te zien"
candidates_count_prefix: "Momenteel hebben we "
candidates_count_many: "veel"
candidates_count_suffix: "zeer getalenteerde en ervaren ontwikkelaars die werk zoeken."
candidate_name: "Naam"
candidate_location: "Locatie"
candidate_looking_for: "Zoekt naar"
candidate_role: "Rol"
candidate_top_skills: "Beste vaardigheden"
candidate_years_experience: "Jaren ervaring"
candidate_last_updated: "Laatst aangepast"
play_level:
level_load_error: "Level kon niet geladen worden: "
@ -316,14 +316,14 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
contact_us: "contacteer ons!"
hipchat_prefix: "Je kan ons ook vinden in ons"
hipchat_url: "(Engelstalig) HipChat kanaal."
# back: "Back"
back: "Terug"
revert: "Keer wijziging terug"
revert_models: "keer wijziging model terug"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
fork_title: "Kloon naar nieuwe versie"
fork_creating: "Kloon aanmaken..."
more: "Meer"
wiki: "Wiki"
live_chat: "Live Chat"
level_some_options: "Enkele opties?"
level_tab_thangs: "Elementen"
level_tab_scripts: "Scripts"
@ -331,11 +331,11 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
level_tab_components: "Componenten"
level_tab_systems: "Systemen"
level_tab_thangs_title: "Huidige Elementen"
# level_tab_thangs_all: "All"
level_tab_thangs_all: "Alles"
level_tab_thangs_conditions: "Start Condities"
level_tab_thangs_add: "Voeg element toe"
# delete: "Delete"
# duplicate: "Duplicate"
delete: "Verwijder"
duplicate: "Dupliceer"
level_settings_title: "Instellingen"
level_component_tab_title: "Huidige Componenten"
level_component_btn_new: "Maak een nieuwe component aan"
@ -357,8 +357,8 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
article_search_title: "Zoek Artikels Hier"
thang_search_title: "Zoek Thang Types Hier"
level_search_title: "Zoek Levels Hier"
# signup_to_create: "Sign Up to Create a New Content"
# read_only_warning2: "Note: you can't save any edits here, because you're not logged in."
signup_to_create: "Registreer je om nieuwe content te maken"
read_only_warning: "Herinnering: Je kunt hier geen aanpassingen opslaan, want je bent niet ingelogd als administrator."
article:
edit_btn_preview: "Voorbeeld"
@ -370,13 +370,13 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
body: "Inhoud"
version: "Versie"
commit_msg: "Commit Bericht"
# version_history: "Version History"
version_history: "Versie geschiedenis"
version_history_for: "Versie geschiedenis voor: "
result: "Resultaat"
results: "Resultaten"
description: "Beschrijving"
or: "of"
# subject: "Subject"
subject: "Onderwerp"
email: "Email"
password: "Wachtwoord"
message: "Bericht"
@ -662,6 +662,6 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
gplus_friends: "G+ vrienden"
gplus_friend_sessions: "Sessies van G+ vrienden"
leaderboard: "Scorebord"
# user_schema: "User Schema"
# user_profile: "User Profile"
user_schema: "Gebruikersschema"
user_profile: "Gebruikersprofiel"
# patches: "Patches"

View file

@ -3,7 +3,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
loading: "Aan het laden..."
saving: "Opslaan..."
sending: "Verzenden..."
# send: "Send"
send: "Verzend"
cancel: "Annuleren"
save: "Opslagen"
# publish: "Publish"
@ -114,8 +114,8 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
forum_page: "ons forum"
forum_suffix: "."
send: "Feedback Verzonden"
# contact_candidate: "Contact Candidate"
# recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 18% 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."
contact_candidate: "Contacteer Kandidaat"
recruitment_reminder: "Gebruik dit formulier om kandidaten te contacteren voor wie je een interesse hebt om te interviewen. Vergeet niet dat CodeCombat een honorarium vraagt van 18% op het eerste-jaarssalaris. Dit honorarium moet betaald worden als de kandidaat wordt aangenomen en kon tot na 90 dagen terugbetaald worden als deze ontslagen wordt in deze periode. Deeltijds-, contract- en thuiswerkers worden van dit honorarium vrijgesteld, alsook interims."
diplomat_suggestion:
title: "Help CodeCombat vertalen!"
@ -128,13 +128,13 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
wizard_settings:
title: "Tovenaar instellingen"
customize_avatar: "Bewerk je avatar"
# active: "Active"
# color: "Color"
# group: "Group"
active: "Actief"
color: "Kleur"
group: "Groep"
clothes: "Kleren"
trim: "Trim"
cloud: "Wolk"
# team: "Team"
team: "Team"
spell: "Spreuk"
boots: "Laarzen"
hue: "Hue"
@ -167,37 +167,37 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
error_saving: "Fout Tijdens Het Opslaan"
saved: "Aanpassingen Opgeslagen"
password_mismatch: "Het wachtwoord komt niet overeen."
# job_profile: "Job Profile"
# 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."
job_profile: "Job Profiel"
job_profile_approved: "Jouw job profiel werd goedgekeurd door CodeCombat. Werkgevers zullen het kunnen bekijken totdat je het inactief zet of als er geen verandering in komt voor vier weken."
job_profile_explanation: "Hey! Vul dit in en we zullen je contacteren om je een job als softwareontwikkelaar te helpen vinden."
account_profile:
edit_settings: "Instellingen Aanpassen"
profile_for_prefix: "Profiel voor "
profile_for_suffix: ""
# approved: "Approved"
# not_approved: "Not Approved"
# looking_for: "Looking for:"
# last_updated: "Last updated:"
# contact: "Contact"
# work_experience: "Work Experience"
# education: "Education"
# our_notes: "Our Notes"
# projects: "Projects"
approved: "Goedgekeurd"
not_approved: "Niet goedgekeurd"
looking_for: "Zoekt naar:"
last_updated: "Laatst aangepast:"
contact: "Contact"
work_experience: "Werk ervaring"
education: "Opleiding"
our_notes: "Onze notities"
projects: "Projecten"
# employers:
# want_to_hire_our_players: "Want to hire expert CodeCombat players?"
# contact_george: "Contact George to see our candidates"
# candidates_count_prefix: "We currently have "
# candidates_count_many: "many"
# candidates_count_suffix: "highly skilled and vetted developers looking for work."
# candidate_name: "Name"
# candidate_location: "Location"
# candidate_looking_for: "Looking For"
# candidate_role: "Role"
# candidate_top_skills: "Top Skills"
# candidate_years_experience: "Yrs Exp"
# candidate_last_updated: "Last Updated"
employers:
want_to_hire_our_players: "Wil je expert CodeCombat spelers aanwerven? "
contact_george: "Contacteer George om onze kandidaten te zien"
candidates_count_prefix: "Momenteel hebben we "
candidates_count_many: "veel"
candidates_count_suffix: "zeer getalenteerde en ervaren ontwikkelaars die werk zoeken."
candidate_name: "Naam"
candidate_location: "Locatie"
candidate_looking_for: "Zoekt naar"
candidate_role: "Rol"
candidate_top_skills: "Beste vaardigheden"
candidate_years_experience: "Jaren ervaring"
candidate_last_updated: "Laatst aangepast"
play_level:
level_load_error: "Level kon niet geladen worden: "
@ -316,14 +316,14 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
contact_us: "contacteer ons!"
hipchat_prefix: "Je kan ons ook vinden in ons"
hipchat_url: "(Engelstalig) HipChat kanaal."
# back: "Back"
back: "Terug"
revert: "Keer wijziging terug"
revert_models: "keer wijziging model terug"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
fork_title: "Kloon naar nieuwe versie"
fork_creating: "Kloon aanmaken..."
more: "Meer"
wiki: "Wiki"
live_chat: "Live Chat"
level_some_options: "Enkele opties?"
level_tab_thangs: "Elementen"
level_tab_scripts: "Scripts"
@ -331,11 +331,11 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
level_tab_components: "Componenten"
level_tab_systems: "Systemen"
level_tab_thangs_title: "Huidige Elementen"
# level_tab_thangs_all: "All"
level_tab_thangs_all: "Alles"
level_tab_thangs_conditions: "Start Condities"
level_tab_thangs_add: "Voeg element toe"
# delete: "Delete"
# duplicate: "Duplicate"
delete: "Verwijder"
duplicate: "Dupliceer"
level_settings_title: "Instellingen"
level_component_tab_title: "Huidige Componenten"
level_component_btn_new: "Maak een nieuwe component aan"
@ -357,7 +357,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
article_search_title: "Zoek Artikels Hier"
thang_search_title: "Zoek Thang Types Hier"
level_search_title: "Zoek Levels Hier"
# signup_to_create: "Sign Up to Create a New Content"
signup_to_create: "Registreer je om nieuwe content te maken"
# read_only_warning2: "Note: you can't save any edits here, because you're not logged in."
article:
@ -370,13 +370,13 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
body: "Inhoud"
version: "Versie"
commit_msg: "Commit Bericht"
# version_history: "Version History"
version_history: "Versie geschiedenis"
version_history_for: "Versie geschiedenis voor: "
result: "Resultaat"
results: "Resultaten"
description: "Beschrijving"
or: "of"
# subject: "Subject"
subject: "Onderwerp"
email: "Email"
password: "Wachtwoord"
message: "Bericht"
@ -662,6 +662,6 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
gplus_friends: "G+ vrienden"
gplus_friend_sessions: "Sessies van G+ vrienden"
leaderboard: "Scorebord"
# user_schema: "User Schema"
# user_profile: "User Profile"
user_schema: "Gebruikersschema"
user_profile: "Gebruikersprofiel"
# patches: "Patches"

View file

@ -59,7 +59,7 @@ UserSchema = c.object {},
lookingFor: {title: 'Looking For', type: 'string', enum: ['Full-time', 'Part-time', 'Remote', 'Contracting', 'Internship'], default: 'Full-time', description: 'What kind of developer position do you want?'}
jobTitle: {type: 'string', maxLength: 50, title: 'Desired Job Title', description: 'What role are you looking for? Ex.: "Full Stack Engineer", "Front-End Developer", "iOS Developer"', default: 'Software Developer'}
active: {title: 'Active', type: 'boolean', description: 'Want interview offers right now?'}
updated: c.date {title: 'Last Updated', description: 'How fresh your profile appears to employers. The fresher, the better. Profiles go inactive after 30 days.'}
updated: c.date {title: 'Last Updated', description: 'How fresh your profile appears to employers. Profiles go inactive after 4 weeks.'}
name: c.shortString {title: 'Name', description: 'Name you want employers to see, like "Nick Winter".'}
city: c.shortString {title: 'City', description: 'City you want to work in (or live in now), like "San Francisco" or "Lubbock, TX".', default: 'Defaultsville, CA', format: 'city'}
country: c.shortString {title: 'Country', description: 'Country you want to work in (or live in now), like "USA" or "France".', default: 'USA', format: 'country'}
@ -74,12 +74,13 @@ UserSchema = c.object {},
employer: c.shortString {title: 'Employer', description: 'Name of your employer.'}
role: c.shortString {title: 'Job Title', description: 'What was your job title or role?'}
duration: c.shortString {title: 'Duration', description: 'When did you hold this gig? Ex.: "Feb 2013 - present".'}
description: {type: 'string', title: 'Description', description: 'What did you do there? (140 chars)', maxLength: 140}
education: c.array {title: 'Education', description: 'List your academic ordeals.'},
c.object {title: 'Ordeal', description: 'Some education that befell you.', required: ['school', 'degree', 'duration']},
school: c.shortString {title: 'School', description: 'Name of your school.'}
degree: c.shortString {title: 'Degree', description: 'What was your degree and field of study? Ex. Ph.D. Human-Computer Interaction (incomplete)'}
duration: c.shortString {title: 'Dates', description: 'When? Ex.: "Aug 2004 - May 2008".'}
projects: c.array {title: 'Projects', description: 'Highlight your projects to amaze employers.'},
projects: c.array {title: 'Projects', description: 'Highlight your projects to amaze employers.', maxItems: 3},
c.object {title: 'Project', description: 'A project you created.', required: ['name', 'description', 'picture'], default: {name: 'My Project', description: 'A project I worked on.', link: 'http://example.com', picture: ''}},
name: c.shortString {title: 'Project Name', description: 'What was the project called?', default: 'My Project'}
description: {type: 'string', title: 'Description', description: 'Briefly describe the project.', maxLength: 400, default: 'A project I worked on.', format: 'markdown'}

View file

@ -2,11 +2,21 @@ module.exports =
"application:idle-changed":
{} # TODO schema
"fbapi-loaded":
{} # TODO schema
"logging-in-with-facebook":
{} # TODO schema
"facebook-logged-in":
{} # TODO schema
title: "Facebook logged in"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you successfully logged in with facebook"
type: "object"
properties:
response:
type: "string"
required: ["response"]
"gapi-loaded":
{} # TODO schema
@ -15,4 +25,11 @@ module.exports =
{} # TODO schema
"gplus-logged-in":
{} # TODO schema
title: "G+ logged in"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you successfully logged in with G+"
type: "object"
properties:
authResult:
type: "string"
required: ["authResult"]

View file

@ -9,19 +9,63 @@ module.exports =
$ref: "bus"
"bus:connected":
{} # TODO schema
title: "Bus Connected"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when a Bus has connected"
type: "object"
properties:
bus:
$ref: "bus"
"bus:disconnected":
{} # TODO schema
title: "Bus Disconnected"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when a Bus has disconnected"
type: "object"
properties:
bus:
$ref: "bus"
"bus:new-message":
{} # TODO schema
title: "Message sent"
$schema: "http://json-schema.org/draft-04/schema#"
description: "A new message was sent"
type: "object"
properties:
message:
type: "string"
bus:
$ref: "bus"
"bus:player-joined":
{} # TODO schema
title: "Player joined"
$schema: "http://json-schema.org/draft-04/schema#"
description: "A new player has joined"
type: "object"
properties:
player:
type: "object"
bus:
$ref: "bus"
"bus:player-left":
{} # TODO schema
title: "Player left"
$schema: "http://json-schema.org/draft-04/schema#"
description: "A player has left"
type: "object"
properties:
player:
type: "object"
bus:
$ref: "bus"
"bus:player-states-changed":
{} # TODO schema
title: "Player state changes"
$schema: "http://json-schema.org/draft-04/schema#"
description: "State of the players has changed"
type: "object"
properties:
player:
type: "array"
bus:
$ref: "bus"

View file

@ -33,6 +33,7 @@
.job-profile-container
width: 100%
height: 100%
min-height: 600px
padding: 0
display: table

View file

@ -157,7 +157,8 @@ block content
.col-sm-8
h3 Glen De Cauwsemaecker
h3
a(href="http://www.glendc.com/") Glen De Cauwsemaecker
p(data-i18n="about.glen_description")
| Programmer and passionate game developer,

View file

@ -13,7 +13,7 @@ block content
button.btn.edit-settings-button#toggle-job-profile-approved
i.icon-cog
span(data-i18n='account_profile.approved').approved Approved
span(data-i18n='account_profile.approved').not-approved Not Approved
span(data-i18n='account_profile.not_approved').not-approved Not Approved
if user.get('jobProfile')
- var profile = user.get('jobProfile');
@ -64,11 +64,13 @@ block content
div.duration.pull-right= job.duration
| #{job.role} at #{job.employer}
.clearfix
if job.description
div!= marked(job.description)
if profile.education.length
h3.experience-header
img.header-icon(src="/images/pages/account/profile/education.png", alt="")
span(data-i18n="account_profile.work_experience") Education
span(data-i18n="account_profile.education") Education
each school in profile.education
div.duration.pull-right= school.duration
| #{school.degree} at #{school.school}

View file

@ -8,5 +8,6 @@ block modal-body-content
p(data-i18n="play_level.infinite_loop_explanation") The initial code to build the world never finished running. It's probably either really slow or has an infinite loop. Or there might be a bug. You can either try running this code again or reset the code to the default state. If that doesn't fix it, please let us know.
block modal-footer-content
a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="play_level.infinite_loop_wait").btn#restart-level-infinite-loop-retry-button Try Again
a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="play_level.infinite_loop_reload").btn.btn-primary#restart-level-infinite-loop-confirm-button Reset Level
a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="play_level.infinite_loop_try_again").btn#restart-level-infinite-loop-retry-button Try Again
a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="play_level.infinite_loop_reset_level").btn.btn-danger#restart-level-infinite-loop-confirm-button Reset Level
a(href='#', data-dismiss="modal", aria-hidden="true", data-i18n="play_level.infinite_loop_comment_out").btn.btn-primary#restart-level-infinite-loop-comment-button Comment Out My Code

View file

@ -10,14 +10,12 @@ module.exports = class JobProfileView extends CocoView
'lookingFor', 'active', 'name', 'city', 'country', 'skills', 'experience', 'shortDescription', 'longDescription',
'work', 'education', 'visa', 'projects', 'links', 'jobTitle', 'photoURL'
]
readOnlySettings: [
'updated'
]
readOnlySettings: [] #['updated']
afterRender: ->
super()
return if @loading()
@buildJobProfileTreema()
_.defer => @buildJobProfileTreema() # Not sure why, but the Treemas don't fully build without this if you reload the page.
buildJobProfileTreema: ->
visibleSettings = @editableSettings.concat @readOnlySettings

View file

@ -43,7 +43,7 @@ module.exports = class SettingsView extends View
@jobProfileView = new JobProfileView()
@listenTo @jobProfileView, 'change', @save
@insertSubView @jobProfileView
@buildPictureTreema()
_.defer => @buildPictureTreema() # Not sure why, but the Treemas don't fully build without this if you reload the page.
chooseTab: (category) ->
id = "##{category}-pane"
@ -81,7 +81,6 @@ module.exports = class SettingsView extends View
schema = _.cloneDeep me.schema()
schema.properties = _.pick me.schema().properties, 'photoURL'
schema.required = ['photoURL']
console.log 'have data', data, 'schema', schema
treemaOptions =
filePath: "db/user/#{me.id}"
schema: schema
@ -94,6 +93,7 @@ module.exports = class SettingsView extends View
@$el.find('.gravatar-fallback').toggle not me.get 'photoURL'
onPictureChanged: (e) =>
console.log "on Picture TChoinagaegd"
@trigger 'change'
@$el.find('.gravatar-fallback').toggle not me.get 'photoURL'

View file

@ -84,7 +84,6 @@ module.exports = class EditorLevelView extends View
afterRender: ->
return if @startsLoading
super()
new LevelSystem # temp; trigger the LevelSystem schema to be loaded, if it isn't already
@$el.find('a[data-toggle="tab"]').on 'shown.bs.tab', (e) =>
Backbone.Mediator.publish 'level:view-switched', e
@thangsTab = @insertSubView new ThangsTabView world: @world, supermodel: @supermodel
@ -130,4 +129,4 @@ module.exports = class EditorLevelView extends View
toggleWatchLevel: ->
button = @$el.find('#watch-button')
@level.watch(button.find('.watch').is(':visible'))
button.find('> span').toggleClass('secret')
button.find('> span').toggleClass('secret')

View file

@ -179,6 +179,7 @@ module.exports = class ThangsTabView extends View
destroy: ->
@selectAddThangType null
@surface.destroy()
$(document).unbind 'contextmenu', @preventDefaultContextMenu
super()
onViewSwitched: (e) ->
@ -254,6 +255,7 @@ module.exports = class ThangsTabView extends View
# @thangsTreema.deselectAll()
selectAddThang: (e) =>
return unless $(e.target).closest('.editor-level-thangs-tab-view').length
if e then target = $(e.target) else target = @$el.find('.add-thangs-palette') # pretend to click on background if no event
return true if target.attr('id') is 'surface'
target = target.closest('.add-thang-palette-icon')
@ -426,6 +428,7 @@ module.exports = class ThangsTabView extends View
@$el.find('.thangs-column').show()
preventDefaultContextMenu: (e) ->
return unless $(e.target).closest('#canvas-wrapper').length
e.preventDefault()
onSpriteContextMenu: (e) ->

View file

@ -20,7 +20,7 @@ module.exports = class HomeView extends View
majorVersion = $.browser.versionNumber
c.isOldBrowser = true if $.browser.mozilla && majorVersion < 21
c.isOldBrowser = true if $.browser.chrome && majorVersion < 17
c.isOldBrowser = true if $.browser.safari && majorVersion < 536
c.isOldBrowser = true if $.browser.safari && majorVersion < 6
else
console.warn 'no more jquery browser version...'
c.isEnglish = (me.get('preferredLanguage') or 'en').startsWith 'en'

View file

@ -8,3 +8,4 @@ module.exports = class InfiniteLoopModal extends View
events:
'click #restart-level-infinite-loop-retry-button': -> Backbone.Mediator.publish 'tome:cast-spell'
'click #restart-level-infinite-loop-confirm-button': -> Backbone.Mediator.publish 'restart-level'
'click #restart-level-infinite-loop-comment-button': -> Backbone.Mediator.publish 'tome:comment-my-code'

View file

@ -90,8 +90,10 @@ module.exports = class Spell
problems:
jshint_W040: {level: "ignore"}
jshint_W030: {level: "ignore"} # aether_NoEffect instead
jshint_W038: {level: "ignore"} #eliminates hoisting problems
jshint_W091: {level: "ignore"} #eliminates more hoisting problems
jshint_W038: {level: "ignore"} # eliminates hoisting problems
jshint_W091: {level: "ignore"} # eliminates more hoisting problems
jshint_E043: {level: "ignore"} # https://github.com/codecombat/codecombat/issues/813 -- since we can't actually tell JSHint to really ignore things
jshint_Unknown: {level: "ignore"} # E043 also triggers Unknown, so ignore that, too
aether_MissingThis: {level: (if thang.requiresThis then 'error' else 'warning')}
language: aceConfig.language ? 'javascript'
functionName: @name

View file

@ -82,7 +82,7 @@ module.exports = class SpellView extends View
@ace.setShowPrintMargin false
@ace.setShowInvisibles aceConfig.invisibles
@ace.setBehavioursEnabled aceConfig.behaviors
@ace.setAnimatedScroll true
@ace.setAnimatedScroll true
@ace.setKeyboardHandler @keyBindings[aceConfig.keyBindings ? 'default']
@toggleControls null, @writable
@aceSession.selection.on 'changeCursor', @onCursorActivity

View file

@ -51,6 +51,7 @@ module.exports = class TomeView extends View
'tome:change-language': 'updateLanguageForAllSpells'
'surface:sprite-selected': 'onSpriteSelected'
'god:new-world-created': 'onNewWorld'
'tome:comment-my-code': 'onCommentMyCode'
events:
'click #spell-view': 'onSpellViewClick'
@ -78,6 +79,14 @@ module.exports = class TomeView extends View
@thangList.adjustThangs @spells, thangs
@spellList.adjustSpells @spells
onCommentMyCode: (e) ->
for spellKey, spell of @spells when spell.canWrite()
console.log "Commenting out", spellKey
commentedSource = 'return; // Commented out to stop infinite loop.\n' + spell.getSource()
spell.view.updateACEText commentedSource
spell.view.recompile false
@cast()
createWorker: ->
return
# In progress

View file

@ -204,6 +204,14 @@ module.exports = class PlayView extends View
image: '/file/db/level/526fd3043c637ece50001bb2/the_herd_icon.png'
description: "Transfer a stack of ogres while preserving their honor. - by Alexandru"
}
{
name: 'Find the Spy'
difficulty: 2
id: 'find-the-spy'
image: '/file/db/level/526ae95c1e5cd30000000008/zone_of_danger_icon.png'
description: "Identify the spies hidden among your soldiers - by Nathan Gossett"
}
#{
# name: 'Enemy Artillery'
# difficulty: 1

View file

@ -7,23 +7,24 @@
=============================================================================
Congratulations, you are now part of the CodeCombat community.
Now that your Develop Environment has been setup, you are ready to start
contributing and help us make this world a better place.
Do you have questions or would you like to meet us?
Talk with us on hipchat @ https://www.hipchat.com/g3plnOKqa
Another way to reach is, is by visiting our forum.
You can find it @ http://discourse.codecombat.com/
You can read about the latest developments on our blog site.
This one can be found @ http://blog.codecombat.com/
Last but not least, you can find most of our documentation
and information on our wiki @ https://github.com/codecombat/codecombat/wiki
We hope you'll enjoy yourself within our community, just as much as us.
Gefeliciteerd, je bent nu een deel van de CodeCombat gemeenschap.
Nu dat je ontwikkelingsomgeving volledig klaar is kun je beginnen met bijdragen
en ons helpen de wereld een betere plek te maken.
Heb je enige vragen of wil je ons ontmoeten?
Praat met ons op hipchat @ https://www.hipchat.com/g3plnOKqa
Je kunt ons ook bereiken via de forums.
Deze zijn te vinden @ http://discourse.codecombat.com/
De laatste ontwikkelingen kun je ook altijd volgen op onze blog.
Deze is te vinden @ http://blog.codecombat.com/
Tenslotte kun je de meeste documentatie en informatie vinden
op onze wiki @ https://github.com/codecombat/codecombat/wiki
We hopen dat je het naar je zin zult hebben en net zoveel plezier zult beleven als wij.
- Nick, George, Scott, Michael, Jeremy and Glen

View file

@ -5,7 +5,7 @@ SessionHandler = require('./sessions/level_session_handler')
Feedback = require('./feedbacks/LevelFeedback')
Handler = require('../commons/Handler')
mongoose = require('mongoose')
async = require 'async'
LevelHandler = class LevelHandler extends Handler
modelClass: Level
jsonSchema: require '../../app/schemas/models/level'
@ -220,7 +220,7 @@ LevelHandler = class LevelHandler extends Handler
userMap[u._id] = u[serviceProperty] for u in userResults
session[serviceProperty] = userMap[session.creator] for session in sessionResults
res.send(sessionResults)
getRandomSessionPair: (req, res, slugOrID) ->
findParameters = {}
if Handler.isID slugOrID
@ -235,32 +235,34 @@ LevelHandler = class LevelHandler extends Handler
query.exec (err, level) =>
return @sendDatabaseError(res, err) if err
return @sendNotFoundError(res) unless level?
sessionsQueryParameters =
level:
original: level.original.toString()
majorVersion: level.version.major
submitted:true
query = Session
.find(sessionsQueryParameters)
.select('team')
.lean()
query.exec (err, resultSessions) =>
return @sendDatabaseError res, err if err? or not resultSessions
teamSessions = _.groupBy resultSessions, 'team'
sessions = []
numberOfTeams = 0
for team of teamSessions
numberOfTeams += 1
sessions.push _.sample(teamSessions[team])
if numberOfTeams != 2 then return @sendDatabaseError res, "There aren't sessions of 2 teams, so cannot choose random opponents!"
@sendSuccess res, sessions
query = Session.find(sessionsQueryParameters).distinct("team")
query.exec (err, teams) =>
return @sendDatabaseError res, err if err? or not teams
findTop20Players = (sessionQueryParams, team, cb) ->
sessionQueryParams["team"] = team
Session.aggregate [
{$match: sessionQueryParams}
{$project: {"totalScore":1}}
{$sort: {"totalScore":-1}}
{$limit: 20}
], cb
async.map teams, findTop20Players.bind(@, sessionsQueryParameters), (err, map) =>
if err? then return @sendDatabaseError(res, err)
sessions = []
for mapItem in map
sessions.push _.sample(mapItem)
if map.length != 2 then return @sendDatabaseError res, "There aren't sessions of 2 teams, so cannot choose random opponents!"
@sendSuccess res, sessions
getFeedback: (req, res, id) ->
return @sendNotFoundError(res) unless req.user
@fetchLevelByIDAndHandleErrors id, req, res, (err, level) =>

View file

@ -62,7 +62,7 @@ UserSchema.statics.updateMailChimp = (doc, callback) ->
doc.updatedMailChimp = true
callback?()
mc.lists.subscribe params, onSuccess, onFailure
mc?.lists.subscribe params, onSuccess, onFailure
UserSchema.pre('save', (next) ->

View file

@ -156,7 +156,7 @@ UserHandler = class UserHandler extends Handler
getSimulatorLeaderboard: (req, res) ->
@validateSimulateLeaderboardRequestParameters(req)
query = {}
sortOrder = -1
limit = if req.query.limit > 30 then 30 else req.query.limit
@ -165,13 +165,11 @@ UserHandler = class UserHandler extends Handler
simulatedByQuery[if req.query.order is 1 then "$gt" else "$lte"] = req.query.scoreOffset
query.simulatedBy = simulatedByQuery
sortOrder = 1 if req.query.order is 1
aggregation = User.aggregate [
{$match: query}
{$project:{"name":1, "simulatedBy": 1, "simulatedFor":1}}
{$sort: {"simulatedBy":sortOrder}}
{$limit: limit}
]
aggregation.exec (err, otherUsers) ->
else
query.simulatedBy = {"$exists": true}
leaderboardQuery = User.find(query).select("name simulatedBy simulatedFor").sort({"simulatedBy":sortOrder}).limit(limit)
leaderboardQuery.exec (err, otherUsers) ->
otherUsers = _.reject otherUsers, _id: req.user._id if req.query.scoreOffset isnt -1
otherUsers ?= []
res.send(otherUsers)
@ -250,8 +248,7 @@ UserHandler = class UserHandler extends Handler
getCandidates: (req, res) ->
authorized = req.user.isAdmin() or ('employer' in req.user.get('permissions'))
since = (new Date((new Date()) - 2 * 30.4 * 86400 * 1000)).toISOString()
#query = {'jobProfileApproved': true, 'jobProfile.active': true, 'jobProfile.updated': {$gt: since}}
query = {'jobProfile.active': true, 'jobProfile.updated': {$gt: since}} # testing
query = {'jobProfile.active': true, 'jobProfile.updated': {$gt: since}}
query.jobProfileApproved = true unless req.user.isAdmin()
selection = 'jobProfile'
selection += ' email' if authorized
@ -265,7 +262,6 @@ UserHandler = class UserHandler extends Handler
fields = if authorized then ['jobProfile', 'jobProfileApproved', 'photoURL', '_id'] else ['jobProfile']
obj = _.pick document.toObject(), fields
obj.photoURL ||= obj.jobProfile.photoURL if authorized
obj.photoURL ||= @buildGravatarURL document if authorized
subfields = ['country', 'city', 'lookingFor', 'jobTitle', 'skills', 'experience', 'updated']
if authorized
subfields = subfields.concat ['name']

View file

@ -27,15 +27,6 @@ describe '/file', ->
dropGridFS ->
done()
it 'can\'t be created by ordinary users.', (done) ->
func = (err, res, body) ->
expect(res.statusCode).toBe(403)
expect(body.metadata).toBeUndefined()
done()
loginJoe ->
request.post(options, func)
it 'can\'t be created if invalid (property path is required)', (done) ->
func = (err, res, body) ->
expect(res.statusCode).toBe(422)