This commit is contained in:
Scott Erickson 2014-01-06 15:36:50 -08:00
commit fe984d7c73
23 changed files with 856 additions and 372 deletions

View file

@ -150,7 +150,8 @@ class Angel
@lastID = (if @lastID? then @lastID + 1 else Math.floor(@ids.length * Math.random())) % @ids.length @lastID = (if @lastID? then @lastID + 1 else Math.floor(@ids.length * Math.random())) % @ids.length
@ids[@lastID] @ids[@lastID]
infiniteLoopIntervalDuration: 5000 # check this often (must be more than the others added) # https://github.com/codecombat/codecombat/issues/81 -- TODO: we need to wait for worker initialization first
infiniteLoopIntervalDuration: 15000 # check this often (must be more than the others added)
infiniteLoopTimeoutDuration: 1500 # wait this long when we check infiniteLoopTimeoutDuration: 1500 # wait this long when we check
abortTimeoutDuration: 500 # give in-process or dying workers this long to give up abortTimeoutDuration: 500 # give in-process or dying workers this long to give up
constructor: (@god) -> constructor: (@god) ->

View file

@ -1,41 +1,41 @@
#contribute-view .contribute_class
#homepage_screenshot #homepage_screenshot
margin: 20px 0px margin: 20px 0px
.signature .signature
text-align: right text-align: right
a a
cursor: pointer cursor: pointer
.class_image .class_image
float: left float: left
width: 150px width: 150px
margin: 10px 10px 20px 20px margin: 10px 10px 20px 20px
padding-top: 65px
#contribute-nav #contribute-nav
float: left float: left
max-width: 20% max-width: 20%
width: 250px width: 250px
box-sizing: border-box box-sizing: border-box
margin-left: 20px margin-left: 20px
padding-top: 40px
li li
float: none float: none
width: 100% width: 100%
#contribute-main .class-main
margin-left: 25% margin-left: 25%
padding: 40px padding: 40px
box-sizing: border-box box-sizing: border-box
h3
padding-top: 70px
.header-scrolling-fix
padding-top: 65px !important
.well .well
padding: 5px 5px 5px 30px padding: 5px 5px 5px 30px
.saved-notification .saved-notification
display: none display: none
float: right float: right

View file

@ -1,326 +0,0 @@
extends /templates/base
block content
ul.affix.nav.nav-list.nav-pills#contribute-nav
li
h3 Character Classes
li
a(href="#archmage") Archmage (Coder)
li
a(href="#artisan") Artisan (Level Builder)
li
a(href="#adventurer") Adventurer (Level Playtester)
li
a(href="#scribe") Scribe (Article Editor)
li
a(href="#diplomat") Diplomat (Translator)
li
a(href="#ambassador") Ambassador (Support)
li
a(href="#counselor") Counselor (Expert/Teacher)
hr
p Thanks to our lovely contributors: (work in progress; let us know who you are!)
li Turkish - Nazım Gediz Aydındoğmuş
li Brazilian Portuguese - Gutenberg Barros, Kieizroe, Matthew Burt
li Portugal Portuguese - Matthew Burt
li German - Dirk, Anon
li Thai - Kamolchanok Jittrepit
li Greek - Stergios
li Latin American Spanish - Jesús Ruppel, Matthew Burt, Mariano Luzza
li Spain Spanish - Matthew Burt, Anon
li French - Xeonarno, Anon
li Hungarian - Anon
li Japanese - g1itch
li Chinese - spacepope
li Polish - Anon
li Danish - Anon
li Slovak - Anon
li Artisans - Sootn, Aftermath, mcdavid1991
li Scribes - Ryan Faidley
li Adventurers - Kieizroe, (...)
li Archmages - David Golds, Zach Martin, Tom Steinbrecher, Mischa Lewis-Norelle, Sébastien Moratinos, Chloe Fan
div#contribute-main
div#intro
h2 Contributing
#homepage_screenshot
img(src="/images/pages/contribute/contribute_header.png", alt="")
p
strong We have high hopes for CodeCombat.
| We want to be where programmers of all stripes come to learn and play together,
| introduce others to the wonderful world of coding,
| and reflect the best parts of the community.
| We can't and don't want to do that alone;
| what makes projects like GitHub, Stack Overflow and Linux great are the people who
| use them and build on them.
| To that end,
a(href="https://github.com/codecombat/codecombat") CodeCombat is totally open source
| , and we aim to provide as many ways as possible for you to take part and
| make this project as much yours as ours.
p We hope you'll join our party!
p.signature - Nick, George, Scott, Michael, and Jeremy
hr
if me.attributes.anonymous
div#sign-up.alert.alert-info
strong Hey there!
| To subscribe for class emails, you'll need to
a(data-toggle="coco-modal", data-target="modal/signup") create an account
| first .
#archmage
.class_image
img(src="/images/pages/contribute/archmage.png", alt="")
h3 Archmage (Coder)
p One of the best parts about building games is they synthesize so many different things.
| Graphics, sound, real-time networking, social networking, and of course many of the
| more common aspects of programming, from low-level database management,
| and server administration to user facing design and interface building.
| There's a lot to do, and if you're an experienced programmer with a hankering
| to really dive into the nitty-gritty of CodeCombat, this class might be for you.
| We would love to have your help building the best programming game ever.
h4 Class Attributes
ul
li Knowledge in
a(href="http://coffeescript.org/") CoffeeScript
| , or a desire to learn. Most of our code is in this language.
| If you're a fan of Ruby or Python, you'll feel right at home.
| It's just JavaScript, but with a nicer syntax.
li Some experience in programming and personal initiative.
| We'll help you get oriented, but we can't spend much time training you.
h4 How To Join
p
| Anyone can help out! Just check out our
a(title='GitHub', href="https://github.com/codecombat/codecombat", tabindex=-1) GitHub
| to get started, and check the box below to mark yourself as a brave Archmage and get the latest news by email.
| Want to chat about what to do or how to get more deeply involved?
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Email us
| , or find us in our
a(href="http://www.hipchat.com/g3plnOKqa") public HipChat room
| and we'll go from there!
label.checkbox(for="developer").well
input(type='checkbox', name="developer", id="developer")
| Get emails on new coding opportunities and announcements.
.saved-notification ✓ Saved
#artisan
.class_image
img(src="/images/pages/contribute/artisan.png", alt="")
h3 Artisan (Level Builder)
p We must construct additional levels!
| People be clamoring for more content, and we can only build so many ourselves.
| Right now your workstation is level one; our level editor is barely
| usable even by its creators, so be wary.
| If you have visions of campaigns spanning for-loops to
a(href="http://stackoverflow.com/questions/758088/seeking-contrived-example-code-continuations/758105#758105") Mondo Bizzaro
| to then this class might be for you.
h4 Class Attributes
ul
li Any experience in building content like this would be nice, such as using
| Blizzard's level editors. But not required!
li A hankering to do a whole lot of testing and iteration.
| To make good levels, you need to take it to others and watch them play it,
| and be prepared to find a lot of things to fix.
li For the time being, endurance en par with an Adventurer.
| Our Level Editor is super preliminary and frustrating to use. You have been warned!
h4 How To Join
p The Level Editor is live! Go forth and fiddle with it.
| Right now for the sake of security, you can't make Components (the most powerful part of level building)
| but be in touch with us and we'll see if we can make what you need.
| See the
a(href="https://docs.google.com/document/d/117tMcL95T1KY8BDisr0iGi5Frb2ZvBJTC0us5hyQkJY/edit?usp=sharing") preliminary documentation
| for more info, and please comment on it so we can make the whole system better.
label.checkbox(for="level_creator").well
input(type='checkbox', name="level_creator", id="level_creator")
| Get emails on level editor updates and announcements.
.saved-notification ✓ Saved
#adventurer
.class_image
img(src="/images/pages/contribute/adventurer.png", alt="")
h3 Adventurer (Level Playtester)
p Let's be clear about your role: you are the tank. You're 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 might be for you.
h4 Class Attributes
ul
li A thirst for learning. You want to learn how to code and we want to teach you how to code.
| You'll probably be doing most of the teaching in this case, though.
li Charismatic. Be gentle but articulate about what needs improving, and offer suggestions
| on how to improve.
h4 How To Join
p Either get together with (or recruit!) an Artisan and work with them, or
| check the box below to receive emails when there are new levels to test.
| We'll also be posting about levels to review on our networks like
a(href="http://discourse.codecombat.com/category/adventurer") our forum
| ,
a(href="https://www.facebook.com/codecombat") Facebook
| ,
a(href="http://www.reddit.com/r/CodeCombat/") Reddit
| ,
a(href="https://twitter.com/CodeCombat") Twitter
| , and
a(href="https://plus.google.com/115285980638641924488/posts") Google+
| , so if you prefer to be notified those ways, sign up there!
label.checkbox(for="tester").well
input(type='checkbox', name="tester", id="tester")
| Get emails when there are new levels to test.
.saved-notification ✓ Saved
#scribe
.class_image
img(src="/images/pages/contribute/scribe.png", alt="")
h3 Scribe (Article Editor)
p CodeCombat isn't just going to be a bunch of levels.
| It will also include a resource for knowledge, a wiki of programming concepts that levels can hook into.
| That way rather than each Artisan having to describe in detail what a comparison operator is, they
| can simply link their level to the Article describing them that is already written for the player's edification.
| Something along the lines of what the
a(href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide") Mozilla Developer Network
| has built. If your idea of fun is articulating the concepts of programming in Markdown form,
| then this class might be for you.
h4 Class Attributes
ul
li Skill in words is pretty much all you need.
| Not only grammar and spelling, but able to convey complicated ideas to others.
h4 How To Join
p
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , 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!
label.checkbox(for="article_editor").well
input(type='checkbox', name="article_editor", id="article_editor")
| Get emails about article writing announcements.
.saved-notification ✓ Saved
#diplomat
.class_image
img(src="/images/pages/contribute/diplomat.png", alt="")
h3 Diplomat (Translator)
p So, if there's one thing we learned from the
a(href="blog.codecombat.com/post/64658141307/codecombat-in-y-combinator") launch in October
| , it's that there
| is sizeable interest in CodeCombat in other countries, particularly Brazil!
| We're building a corps of translators eager to turn one set of words into
| another set of words to get CodeCombat as accessible across the world as possible.
| If you like getting sneak peeks at upcoming content and getting these levels to
| your fellow nationals ASAP, then this class might be for you.
h4 Class Attributes
ul
li Fluency in English and the language you would like to translate to.
| When conveying complicated ideas, it's important to have a strong grasp in both!
h4 How to Join
p We've started a lot of initial translations at
a(href="https://docs.google.com/a/codecombat.com/spreadsheet/ccc?key=0AjsR1nOoMQ4MdFBqS1NqUmRTVG1hbEMxWTZEd1JrNXc&usp=drive_web#gid=0") this Google Doc
| , so check it out and add things for your language. Also, check this box below to
| keep up-to-date on new internationalization developments!
label.checkbox(for="translator").well
input(type='checkbox', name="translator", id="translator")
| Get emails about i18n developments and levels to translate.
.saved-notification ✓ Saved
#ambassador
.class_image
img(src="/images/pages/contribute/ambassador.png", alt="")
h3 Ambassador (Support)
p This is a community we're building, and you are the connections.
| We've got Olark chats, emails, and social networks with lots of people to talk with
| and help get acquainted with the game and learn from.
| If you want to help people get involved and have fun, and get a good feel of the pulse of
| CodeCombat and where we're going, then this class might be for you.
h4 Class Attributes
ul
li Communication skills. Be able to identify the problems players are having
| and help them solve them. Also, keep the rest of us informed about what
| players are saying, what they like and don't like and want more of!
h4 How to Join
p
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , tell us a little about yourself, what you've done and what you'd
| be interested in doing. We'll go from there!
p
strong Note
| : One of our top priorities is to build multiplayer where players having difficulty
| solving levels can summon higher level wizards to help them.
| This will be a great way for ambassadors to do their thing. We'll keep you posted!
label.checkbox(for="support").well
input(type='checkbox', name="support", id="support")
| Get emails on support updates and multiplayer developments.
.saved-notification ✓ Saved
#counselor
.class_image
img(src="/images/pages/contribute/counselor.png", alt="")
h3 Counselor (Expert)
p Do you have life experience?
| A different perspective on things that can help us decide how to shape CodeCombat?
| Of all these roles, this will probably take the least time, but
| individually you may make the most difference.
| We're on the lookout for wisened sages, particularly in areas like: teaching,
| game development, open source project management, technical recruiting, entrepreneurship,
| or design.
p Or really anything that is relevant to the development of CodeCombat.
| If you have knowledge and want to share it to help grow this project, then
| this class might be for you.
h4 Class Attributes
ul
li Experience, in any of the areas above or something you think might be helpful.
li A little bit of free time!
h4 How to Join
p
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , tell us a little about yourself, what you've done and what you'd
| be interested in doing. We'll put you in our contact list and be in touch
| when we could use advice (not too often).
div.clearfix

View file

@ -0,0 +1,62 @@
extends /templates/base
block content
div.contribute_class
include /templates/contribute/contribute_nav
div.class-main#adventurer-main
.class_image
img(src="/images/pages/contribute/adventurer.png", alt="")
h2 Adventurer (Level Playtester)
p Let's be clear about your role: you are the tank. You're 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 might be for you.
h4 Class Attributes
ul
li A thirst for learning. You want to learn how to code and we want to teach you how to code.
| You'll probably be doing most of the teaching in this case, though.
li Charismatic. Be gentle but articulate about what needs improving, and offer suggestions
| on how to improve.
h4 How To Join
p Either get together with (or recruit!) an Artisan and work with them, or
| check the box below to receive emails when there are new levels to test.
| We'll also be posting about levels to review on our networks like
a(href="http://discourse.codecombat.com/category/adventurer") our forum
| ,
a(href="https://www.facebook.com/codecombat") Facebook
| ,
a(href="http://www.reddit.com/r/CodeCombat/") Reddit
| ,
a(href="https://twitter.com/CodeCombat") Twitter
| , and
a(href="https://plus.google.com/115285980638641924488/posts") Google+
| , so if you prefer to be notified those ways, sign up there!
if me.attributes.anonymous
div#sign-up.alert.alert-info
strong Hey there!
| To subscribe for class emails, you'll need to
a(data-toggle="coco-modal", data-target="modal/signup") create an account
| first .
label.checkbox(for="tester").well
input(type='checkbox', name="tester", id="tester")
| Get emails when there are new levels to test.
.saved-notification ✓ Saved
h4 Changes are saved automatically when you toggle checkboxes.
#Contributors
h3 Our Brave Adventurers:
ul.adventurers
li Kieizroe
div.clearfix

View file

@ -0,0 +1,53 @@
extends /templates/base
block content
div.contribute_class
include /templates/contribute/contribute_nav
div.class-main#ambassador-main
.class_image
img(src="/images/pages/contribute/ambassador.png", alt="")
h2 Ambassador (Support)
p This is a community we're building, and you are the connections.
| We've got Olark chats, emails, and social networks with lots of people to talk with
| and help get acquainted with the game and learn from.
| If you want to help people get involved and have fun, and get a good feel of the pulse of
| CodeCombat and where we're going, then this class might be for you.
h4 Class Attributes
ul
li Communication skills. Be able to identify the problems players are having
| and help them solve them. Also, keep the rest of us informed about what
| players are saying, what they like and don't like and want more of!
h4 How to Join
p
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , tell us a little about yourself, what you've done and what you'd
| be interested in doing. We'll go from there!
p
strong Note
| : One of our top priorities is to build multiplayer where players having difficulty
| solving levels can summon higher level wizards to help them.
| This will be a great way for ambassadors to do their thing. We'll keep you posted!
if me.attributes.anonymous
div#sign-up.alert.alert-info
strong Hey there!
| To subscribe for class emails, you'll need to
a(data-toggle="coco-modal", data-target="modal/signup") create an account
| first .
label.checkbox(for="support").well
input(type='checkbox', name="support", id="support")
| Get emails on support updates and multiplayer developments.
.saved-notification ✓ Saved
h4 Changes are saved automatically when you toggle checkboxes.
div.clearfix

View file

@ -0,0 +1,74 @@
extends /templates/base
block content
div.contribute_class
include /templates/contribute/contribute_nav
div.class-main#archmage-main
.class_image
img(src="/images/pages/contribute/archmage.png", alt="")
h2 Archmage (Coder)
p One of the best parts about building games is they synthesize so many different things.
| Graphics, sound, real-time networking, social networking, and of course many of the
| more common aspects of programming, from low-level database management,
| and server administration to user facing design and interface building.
| There's a lot to do, and if you're an experienced programmer with a hankering
| to really dive into the nitty-gritty of CodeCombat, this class might be for you.
p Right now we have open-sourced two of our tools on the project:
a(href="https://github.com/codecombat/aether") Aether
| and
a(href="https://github.com/codecombat/treema") Treema
| . We are also open sourcing everything momentarily, so stay tuned for access to the main repo!
| We would love to have your help building out the best programming game ever.
h4 Class Attributes
ul
li Knowledge in
a(href="http://coffeescript.org/") CoffeeScript
| , or a desire to learn. Most of our code is in this language.
| If you're a fan of Ruby or Python, you'll feel right at home.
| It's just JavaScript, but with a nicer syntax.
li Some experience in programming and personal initiative.
| We'll help you get oriented, but we can't spend much time training you.
h4 How To Join
p
| Anyone can help out! Just check out our
a(title='GitHub', tabindex=-1) GitHub
| to get started, and check the box below to mark yourself as a brave Archmage.
| Want to chat about what to do or how to get more deeply involved?
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , tell us a little about yourself, what you've done and what you'd
| be interested in working on. We'll go from there!
if me.attributes.anonymous
div#sign-up.alert.alert-info
strong Hey there!
| To subscribe for class emails, you'll need to
a(data-toggle="coco-modal", data-target="modal/signup") create an account
| first .
label.checkbox(for="developer").well
input(type='checkbox', name="developer", id="developer")
| Get emails on new coding opportunities and announcements.
.saved-notification ✓ Saved
h4 Changes are saved automatically when you toggle checkboxes.
#Contributors
h3 Our Magical Archmages:
ul.archmages
li David Golds
li Zach Martin
li Tom Steinbrecher
li Mischa Lewis-Norelle
li Sébastien Moratinos
li Chloe Fan
div.clearfix

View file

@ -0,0 +1,63 @@
extends /templates/base
block content
div.contribute_class
include /templates/contribute/contribute_nav
div.class-main#artisan-main
.class_image
img(src="/images/pages/contribute/artisan.png", alt="")
h2 Artisan (Level Builder)
p We must construct additional levels!
| People be clamoring for more content, and we can only build so many ourselves.
| Right now your workstation is level one; our level editor is barely
| usable even by its creators, so be wary.
| If you have visions of campaigns spanning for-loops to
a(href="http://stackoverflow.com/questions/758088/seeking-contrived-example-code-continuations/758105#758105") Mondo Bizzaro
| to then this class might be for you.
h4 Class Attributes
ul
li Any experience in building content like this would be nice, such as using
| Blizzard's level editors. But not required!
li A hankering to do a whole lot of testing and iteration.
| To make good levels, you need to take it to others and watch them play it,
| and be prepared to find a lot of things to fix.
li For the time being, endurance en par with an Adventurer.
| Our Level Editor is super preliminary and frustrating to use. You have been warned!
h4 How To Join
p The Level Editor is live! Go forth and fiddle with it.
| Right now for the sake of security, you can't make Components (the most powerful part of level building)
| but be in touch with us and we'll see if we can make what you need.
| See the
a(href="https://docs.google.com/document/d/117tMcL95T1KY8BDisr0iGi5Frb2ZvBJTC0us5hyQkJY/edit?usp=sharing") preliminary documentation
| for more info, and please comment on it so we can make the whole system better.
if me.attributes.anonymous
div#sign-up.alert.alert-info
strong Hey there!
| To subscribe for class emails, you'll need to
a(data-toggle="coco-modal", data-target="modal/signup") create an account
| first .
label.checkbox(for="level_creator").well
input(type='checkbox', name="level_creator", id="level_creator")
| Get emails on level editor updates and announcements.
.saved-notification ✓ Saved
h4 Changes are saved automatically when you toggle checkboxes.
#Contributors
h3 Our Creative Artisans:
ul.artisans
li Sootn
li Zach Martin
li Aftermath
li mcdavid1991
div.clearfix

View file

@ -0,0 +1,311 @@
extends /templates/base
block content
div.contribute_class
include /templates/contribute/contribute_nav
div#contribute-main.class-main
div#intro
h2 Contributing
#homepage_screenshot
img(src="/images/pages/contribute/contribute_header.png", alt="")
p
strong We have high hopes for CodeCombat.
| We want to be where programmers of all stripes come to learn and play together,
| introduce others to the wonderful world of coding,
| and reflect the best parts of the community.
| We can't and don't want to do that alone;
| what makes projects like GitHub, Stack Overflow and Linux great are the people who
| use them and build on them.
| To that end,
a(href="https://github.com/codecombat/codecombat") CodeCombat is totally open source
| , and we aim to provide as many ways as possible for you to take part and
| make this project as much yours as ours.
p We hope you'll join our party!
p.signature - Nick, George, Scott, Michael, and Jeremy
hr
if me.attributes.anonymous
div#sign-up.alert.alert-info
strong Hey there!
| To subscribe for class emails, you'll need to
a(data-toggle="coco-modal", data-target="modal/signup") create an account
| first .
#archmage
.class_image.header-scrolling-fix
img(src="/images/pages/contribute/archmage.png", alt="")
h3.header-scrolling-fix Archmage (Coder)
p One of the best parts about building games is they synthesize so many different things.
| Graphics, sound, real-time networking, social networking, and of course many of the
| more common aspects of programming, from low-level database management,
| and server administration to user facing design and interface building.
| There's a lot to do, and if you're an experienced programmer with a hankering
| to really dive into the nitty-gritty of CodeCombat, this class might be for you.
| We would love to have your help building the best programming game ever.
h4 Class Attributes
ul
li Knowledge in
a(href="http://coffeescript.org/") CoffeeScript
| , or a desire to learn. Most of our code is in this language.
| If you're a fan of Ruby or Python, you'll feel right at home.
| It's just JavaScript, but with a nicer syntax.
li Some experience in programming and personal initiative.
| We'll help you get oriented, but we can't spend much time training you.
h4 How To Join
p
| Anyone can help out! Just check out our
a(title='GitHub', href="https://github.com/codecombat/codecombat", tabindex=-1) GitHub
| to get started, and check the box below to mark yourself as a brave Archmage and get the latest news by email.
| Want to chat about what to do or how to get more deeply involved?
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Email us
| , or find us in our
a(href="http://www.hipchat.com/g3plnOKqa") public HipChat room
| and we'll go from there!
a(href="/contribute/archmage")
h3 Learn More About Becoming A Powerful Archmage
label.checkbox(for="developer").well
input(type='checkbox', name="developer", id="developer")
| Get emails on new coding opportunities and announcements.
.saved-notification ✓ Saved
#artisan
.class_image.header-scrolling-fix
img(src="/images/pages/contribute/artisan.png", alt="")
h3.header-scrolling-fix Artisan (Level Builder)
p We must construct additional levels!
| People be clamoring for more content, and we can only build so many ourselves.
| Right now your workstation is level one; our level editor is barely
| usable even by its creators, so be wary.
| If you have visions of campaigns spanning for-loops to
a(href="http://stackoverflow.com/questions/758088/seeking-contrived-example-code-continuations/758105#758105") Mondo Bizzaro
| to then this class might be for you.
h4 Class Attributes
ul
li Any experience in building content like this would be nice, such as using
| Blizzard's level editors. But not required!
li A hankering to do a whole lot of testing and iteration.
| To make good levels, you need to take it to others and watch them play it,
| and be prepared to find a lot of things to fix.
li For the time being, endurance en par with an Adventurer.
| Our Level Editor is super preliminary and frustrating to use. You have been warned!
h4 How To Join
p The Level Editor is live! Go forth and fiddle with it.
| Right now for the sake of security, you can't make Components (the most powerful part of level building)
| but be in touch with us and we'll see if we can make what you need.
| See the
a(href="https://docs.google.com/document/d/117tMcL95T1KY8BDisr0iGi5Frb2ZvBJTC0us5hyQkJY/edit?usp=sharing") preliminary documentation
| for more info, and please comment on it so we can make the whole system better.
a(href="/contribute/artisan")
h3 Learn More About Becoming A Creative Artisan
label.checkbox(for="level_creator").well
input(type='checkbox', name="level_creator", id="level_creator")
| Get emails on level editor updates and announcements.
.saved-notification ✓ Saved
#adventurer
.class_image.header-scrolling-fix
img(src="/images/pages/contribute/adventurer.png", alt="")
h3.header-scrolling-fix Adventurer (Level Playtester)
p Let's be clear about your role: you are the tank. You're 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 might be for you.
h4 Class Attributes
ul
li A thirst for learning. You want to learn how to code and we want to teach you how to code.
| You'll probably be doing most of the teaching in this case, though.
li Charismatic. Be gentle but articulate about what needs improving, and offer suggestions
| on how to improve.
h4 How To Join
p Either get together with (or recruit!) an Artisan and work with them, or
| check the box below to receive emails when there are new levels to test.
| We'll also be posting about levels to review on our networks like
a(href="http://discourse.codecombat.com/category/adventurer") our forum
| ,
a(href="https://www.facebook.com/codecombat") Facebook
| ,
a(href="http://www.reddit.com/r/CodeCombat/") Reddit
| ,
a(href="https://twitter.com/CodeCombat") Twitter
| , and
a(href="https://plus.google.com/115285980638641924488/posts") Google+
| , so if you prefer to be notified those ways, sign up there!
a(href="/contribute/adventurer")
h3 Learn More About Becoming A Brave Adventurer
label.checkbox(for="tester").well
input(type='checkbox', name="tester", id="tester")
| Get emails when there are new levels to test.
.saved-notification ✓ Saved
#scribe
.class_image.header-scrolling-fix
img(src="/images/pages/contribute/scribe.png", alt="")
h3.header-scrolling-fix Scribe (Article Editor)
p CodeCombat isn't just going to be a bunch of levels.
| It will also include a resource for knowledge, a wiki of programming concepts that levels can hook into.
| That way rather than each Artisan having to describe in detail what a comparison operator is, they
| can simply link their level to the Article describing them that is already written for the player's edification.
| Something along the lines of what the
a(href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide") Mozilla Developer Network
| has built. If your idea of fun is articulating the concepts of programming in Markdown form,
| then this class might be for you.
h4 Class Attributes
ul
li Skill in words is pretty much all you need.
| Not only grammar and spelling, but able to convey complicated ideas to others.
h4 How To Join
p
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , 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!
a(href="/contribute/scribe")
h3 Learn More About Becoming A Diligent Scribe
label.checkbox(for="article_editor").well
input(type='checkbox', name="article_editor", id="article_editor")
| Get emails about article writing announcements.
.saved-notification ✓ Saved
#diplomat
.class_image.header-scrolling-fix
img(src="/images/pages/contribute/diplomat.png", alt="")
h3.header-scrolling-fix Diplomat (Translator)
p So, if there's one thing we learned from the
a(href="blog.codecombat.com/post/64658141307/codecombat-in-y-combinator") launch in October
| , it's that there
| is sizeable interest in CodeCombat in other countries, particularly Brazil!
| We're building a corps of translators eager to turn one set of words into
| another set of words to get CodeCombat as accessible across the world as possible.
| If you like getting sneak peeks at upcoming content and getting these levels to
| your fellow nationals ASAP, then this class might be for you.
h4 Class Attributes
ul
li Fluency in English and the language you would like to translate to.
| When conveying complicated ideas, it's important to have a strong grasp in both!
h4 How to Join
p We've started a lot of initial translations at
a(href="https://docs.google.com/a/codecombat.com/spreadsheet/ccc?key=0AjsR1nOoMQ4MdFBqS1NqUmRTVG1hbEMxWTZEd1JrNXc&usp=drive_web#gid=0") this Google Doc
| , so check it out and add things for your language. Also, check this box below to
| keep up-to-date on new internationalization developments!
a(href="/contribute/diplomat")
h3 Learn More About Becoming A Great Diplomat
label.checkbox(for="translator").well
input(type='checkbox', name="translator", id="translator")
| Get emails about i18n developments and levels to translate.
.saved-notification ✓ Saved
#ambassador
.class_image.header-scrolling-fix
img(src="/images/pages/contribute/ambassador.png", alt="")
h3.header-scrolling-fix Ambassador (Support)
p This is a community we're building, and you are the connections.
| We've got Olark chats, emails, and social networks with lots of people to talk with
| and help get acquainted with the game and learn from.
| If you want to help people get involved and have fun, and get a good feel of the pulse of
| CodeCombat and where we're going, then this class might be for you.
h4 Class Attributes
ul
li Communication skills. Be able to identify the problems players are having
| and help them solve them. Also, keep the rest of us informed about what
| players are saying, what they like and don't like and want more of!
h4 How to Join
p
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , tell us a little about yourself, what you've done and what you'd
| be interested in doing. We'll go from there!
p
strong Note
| : One of our top priorities is to build multiplayer where players having difficulty
| solving levels can summon higher level wizards to help them.
| This will be a great way for ambassadors to do their thing. We'll keep you posted!
a(href="/contribute/ambassador")
h3 Learn More About Becoming A Helpful Ambassador
label.checkbox(for="support").well
input(type='checkbox', name="support", id="support")
| Get emails on support updates and multiplayer developments.
.saved-notification ✓ Saved
#counselor
.class_image.header-scrolling-fix
img(src="/images/pages/contribute/counselor.png", alt="")
h3.header-scrolling-fix Counselor (Expert)
p Do you have life experience?
| A different perspective on things that can help us decide how to shape CodeCombat?
| Of all these roles, this will probably take the least time, but
| individually you may make the most difference.
| We're on the lookout for wisened sages, particularly in areas like: teaching,
| game development, open source project management, technical recruiting, entrepreneurship,
| or design.
p Or really anything that is relevant to the development of CodeCombat.
| If you have knowledge and want to share it to help grow this project, then
| this class might be for you.
h4 Class Attributes
ul
li Experience, in any of the areas above or something you think might be helpful.
li A little bit of free time!
h4 How to Join
p
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , tell us a little about yourself, what you've done and what you'd
| be interested in doing. We'll put you in our contact list and be in touch
| when we could use advice (not too often).
a(href="/contribute/counselor")
h3 Learn More About Becoming A Valuable Counselor
div.clearfix

View file

@ -0,0 +1,17 @@
ul.contribute_class.affix.nav.nav-list.nav-pills#contribute-nav
li
h3 Character Classes
li
a(href=navPrefix + "#archmage") Archmage (Coder)
li
a(href=navPrefix + "#artisan") Artisan (Level Builder)
li
a(href=navPrefix + "#adventurer") Adventurer (Level Playtester)
li
a(href=navPrefix + "#scribe") Scribe (Article Editor)
li
a(href=navPrefix + "#diplomat") Diplomat (Translator)
li
a(href=navPrefix + "#ambassador") Ambassador (Support)
li
a(href=navPrefix + "#counselor") Counselor (Expert/Teacher)

View file

@ -0,0 +1,39 @@
extends /templates/base
block content
div.contribute_class
include /templates/contribute/contribute_nav
div.class-main#sounselor-main
.class_image
img(src="/images/pages/contribute/counselor.png", alt="")
h2 Counselor (Expert)
p Do you have life experience?
| A different perspective on things that can help us decide how to shape CodeCombat?
| Of all these roles, this will probably take the least time, but
| individually you may make the most difference.
| We're on the lookout for wisened sages, particularly in areas like: teaching,
| game development, open source project management, technical recruiting, entrepreneurship,
| or design.
p Or really anything that is relevant to the development of CodeCombat.
| If you have knowledge and want to share it to help grow this project, then
| this class might be for you.
h4 Class Attributes
ul
li Experience, in any of the areas above or something you think might be helpful.
li A little bit of free time!
h4 How to Join
p
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , tell us a little about yourself, what you've done and what you'd
| be interested in doing. We'll put you in our contact list and be in touch
| when we could use advice (not too often).
div.clearfix

View file

@ -0,0 +1,68 @@
extends /templates/base
block content
div.contribute_class
include /templates/contribute/contribute_nav
div.class-main#diplomat-main
.class_image
img(src="/images/pages/contribute/diplomat.png", alt="")
h2 Diplomat (Translator)
p So, if there's one thing we learned from the
a(href="blog.codecombat.com/post/64658141307/codecombat-in-y-combinator") launch in October
| , it's that there
| is sizeable interest in CodeCombat in other countries, particularly Brazil!
| We're building a corps of translators eager to turn one set of words into
| another set of words to get CodeCombat as accessible across the world as possible.
| If you like getting sneak peeks at upcoming content and getting these levels to
| your fellow nationals ASAP, then this class might be for you.
h4 Class Attributes
ul
li Fluency in English and the language you would like to translate to.
| When conveying complicated ideas, it's important to have a strong grasp in both!
h4 How to Join
p We've started a lot of initial translations at
a(href="https://docs.google.com/a/codecombat.com/spreadsheet/ccc?key=0AjsR1nOoMQ4MdFBqS1NqUmRTVG1hbEMxWTZEd1JrNXc&usp=drive_web#gid=0") this Google Doc
| , so check it out and add things for your language. Also, check this box below to
| keep up-to-date on new internationalization developments!
if me.attributes.anonymous
div#sign-up.alert.alert-info
strong Hey there!
| To subscribe for class emails, you'll need to
a(data-toggle="coco-modal", data-target="modal/signup") create an account
| first .
label.checkbox(for="translator").well
input(type='checkbox', name="translator", id="translator")
| Get emails about i18n developments and levels to translate.
.saved-notification ✓ Saved
h4 Changes are saved automatically when you toggle checkboxes.
#Contributors
h3 Our Translating Diplomats:
ul.diplomats
li Turkish - Nazım Gediz Aydındoğmuş
li Brazilian Portuguese - Gutenberg Barros, Kieizroe, Matthew Burt
li Portugal Portuguese - Matthew Burt
li German - Dirk, Anon
li Thai - Kamolchanok Jittrepit
li Greek - Stergios
li Latin American Spanish - Jesús Ruppel, Matthew Burt, Mariano Luzza
li Spain Spanish - Matthew Burt, Anon
li French - Xeonarno, Anon
li Hungarian - Anon
li Japanese - g1itch
li Chinese - spacepope
li Polish - Anon
li Danish - Anon
li Slovak - Anon
div.clearfix

View file

@ -0,0 +1,54 @@
extends /templates/base
block content
div.contribute_class
include /templates/contribute/contribute_nav
div.class-main#scribe-main
.class_image
img(src="/images/pages/contribute/scribe.png", alt="")
h2 Scribe (Article Editor)
p CodeCombat isn't just going to be a bunch of levels.
| It will also include a resource for knowledge, a wiki of programming concepts that levels can hook into.
| That way rather than each Artisan having to describe in detail what a comparison operator is, they
| can simply link their level to the Article describing them that is already written for the player's edification.
| Something along the lines of what the
a(href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide") Mozilla Developer Network
| has built. If your idea of fun is articulating the concepts of programming in Markdown form,
| then this class might be for you.
h4 Class Attributes
ul
li Skill in words is pretty much all you need.
| Not only grammar and spelling, but able to convey complicated ideas to others.
h4 How To Join
p
a(title='Contact', tabindex=-1, data-toggle="coco-modal", data-target="modal/contact") Contact us
| , 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!
if me.attributes.anonymous
div#sign-up.alert.alert-info
strong Hey there!
| To subscribe for class emails, you'll need to
a(data-toggle="coco-modal", data-target="modal/signup") create an account
| first .
label.checkbox(for="article_editor").well
input(type='checkbox', name="article_editor", id="article_editor")
| Get emails about article writing announcements.
.saved-notification ✓ Saved
h4 Changes are saved automatically when you toggle checkboxes.
#Contributors
h3 Our Diligent Scribes:
ul.scribes
li Ryan Faidley
div.clearfix

View file

@ -0,0 +1,7 @@
ContributeClassView = require 'views/contribute/contribute_class_view'
template = require 'templates/contribute/adventurer'
{me} = require('lib/auth')
module.exports = class AdventurerView extends ContributeClassView
id: "adventurer-view"
template: template

View file

@ -0,0 +1,7 @@
ContributeClassView = require 'views/contribute/contribute_class_view'
template = require 'templates/contribute/ambassador'
{me} = require('lib/auth')
module.exports = class AmbassadorView extends ContributeClassView
id: "ambassador-view"
template: template

View file

@ -0,0 +1,6 @@
ContributeClassView = require 'views/contribute/contribute_class_view'
template = require 'templates/contribute/archmage'
module.exports = class ArchmageView extends ContributeClassView
id: "archmage-view"
template: template

View file

@ -0,0 +1,7 @@
ContributeClassView = require 'views/contribute/contribute_class_view'
template = require 'templates/contribute/artisan'
{me} = require('lib/auth')
module.exports = class ArtisanView extends ContributeClassView
id: "artisan-view"
template: template

View file

@ -0,0 +1,37 @@
View = require 'views/kinds/RootView'
{me} = require('lib/auth')
module.exports = class ContributeClassView extends View
navPrefix: '/contribute'
events:
'change input[type="checkbox"]': 'onCheckboxChanged'
getRenderData: ->
c = super()
c.navPrefix = @navPrefix
c
afterRender: ->
super()
checkboxes = @$el.find('input[type="checkbox"]').toArray()
_.forEach checkboxes, (el) ->
el = $(el)
if el.attr('name') in me.get('emailSubscriptions')
el.prop('checked', true)
onCheckboxChanged: (e) ->
el = $(e.target)
checked = el.prop('checked')
subscription = el.attr('name')
subscriptions = me.get('emailSubscriptions') ? []
if checked and not (subscription in subscriptions)
subscriptions.push(subscription)
if me.get 'anonymous'
@openModalView new SignupModalView()
if not checked
subscriptions = _.without subscriptions, subscription
el.parent().find('.saved-notification').finish().show('fast').delay(3000).fadeOut(2000)
me.set('emailSubscriptions', subscriptions)
me.save()

View file

@ -0,0 +1,7 @@
ContributeClassView = require 'views/contribute/contribute_class_view'
template = require 'templates/contribute/counselor'
{me} = require('lib/auth')
module.exports = class CounselorView extends ContributeClassView
id: "counselor-view"
template: template

View file

@ -0,0 +1,7 @@
ContributeClassView = require 'views/contribute/contribute_class_view'
template = require 'templates/contribute/diplomat'
{me} = require('lib/auth')
module.exports = class DiplomatView extends ContributeClassView
id: "diplomat-view"
template: template

View file

@ -0,0 +1,7 @@
ContributeClassView = require 'views/contribute/contribute_class_view'
template = require 'templates/contribute/scribe'
{me} = require('lib/auth')
module.exports = class ScribeView extends ContributeClassView
id: "scribe-view"
template: template

View file

@ -1,35 +1,11 @@
View = require 'views/kinds/RootView' ContributeClassView = require 'views/contribute/contribute_class_view'
template = require 'templates/contribute' template = require 'templates/contribute/contribute'
{me} = require 'lib/auth'
SignupModalView = require 'views/modal/signup_modal' SignupModalView = require 'views/modal/signup_modal'
module.exports = class ContributeView extends View module.exports = class ContributeView extends ContributeClassView
id: "contribute-view" id: "contribute-view"
template: template template: template
navPrefix: ''
events: events:
'change input[type="checkbox"]': 'onCheckboxChanged' 'change input[type="checkbox"]': 'onCheckboxChanged'
afterRender: ->
super()
checkboxes = @$el.find('input[type="checkbox"]').toArray()
_.forEach checkboxes, (el) ->
el = $(el)
if el.attr('name') in me.get('emailSubscriptions')
el.prop('checked', true)
onCheckboxChanged: (e) ->
el = $(e.target)
checked = el.prop('checked')
subscription = el.attr('name')
subscriptions = me.get('emailSubscriptions') ? []
if checked and not (subscription in subscriptions)
subscriptions.push(subscription)
if me.get 'anonymous'
@openModalView new SignupModalView()
if not checked
subscriptions = _.without subscriptions, subscription
el.parent().find('.saved-notification').finish().show('fast').delay(3000).fadeOut(2000)
me.set('emailSubscriptions', subscriptions)
me.save()

View file

@ -42,6 +42,7 @@ module.exports = class ThangsTabView extends View
'sprite:dragged': 'onSpriteDragged' 'sprite:dragged': 'onSpriteDragged'
'sprite:mouse-up': 'onSpriteMouseUp' 'sprite:mouse-up': 'onSpriteMouseUp'
'sprite:double-clicked': 'onSpriteDoubleClicked' 'sprite:double-clicked': 'onSpriteDoubleClicked'
'surface:stage-mouse-down': 'onStageMouseDown'
constructor: (options) -> constructor: (options) ->
super options super options
@ -118,7 +119,13 @@ module.exports = class ThangsTabView extends View
@surface?.spriteBoss?.selectSprite null, null @surface?.spriteBoss?.selectSprite null, null
onSpriteMouseDown: (e) -> onSpriteMouseDown: (e) ->
#console.log "mouse down", e # Sprite clicks happen after stage clicks, but we need to know whether a sprite is being clicked.
clearTimeout @backgroundAddClickTimeout
onStageMouseDown: (e) ->
if @addThangSprite
# If we click on the background, we need to add @addThangSprite, but not if onSpriteMouseDown will fire.
@backgroundAddClickTimeout = _.defer => @onExtantThangSelected {}
onSpriteDragged: (e) -> onSpriteDragged: (e) ->
return unless @selectedExtantThang and e.thang?.id is @selectedExtantThang?.id return unless @selectedExtantThang and e.thang?.id is @selectedExtantThang?.id

View file

@ -16,7 +16,7 @@ module.exports = class RootView extends CocoView
events: events:
"click #logout-button": "logoutAccount" "click #logout-button": "logoutAccount"
'change .language-dropdown': 'showDiplomatSuggestionModal' 'change .language-dropdown': 'showDiplomatSuggestionModal'
shortcuts: shortcuts:
'backspace, delete': 'preventBackspace' 'backspace, delete': 'preventBackspace'
# 'backspace': 'preventBackspace' # 'backspace': 'preventBackspace'
@ -56,7 +56,7 @@ module.exports = class RootView extends CocoView
code2 isnt code and code2.split('-')[0] is code) code2 isnt code and code2.split('-')[0] is code)
for code, localeInfo of locale when not (code in genericCodes) or code is preferred for code, localeInfo of locale when not (code in genericCodes) or code is preferred
$select.append( $select.append(
$("<option></option>").val(code).text(localeInfo.nativeDescription)) $("<option></option>").attr("value", code).text(localeInfo.nativeDescription))
$select.val(preferred).fancySelect() $select.val(preferred).fancySelect()
showDiplomatSuggestionModal: -> showDiplomatSuggestionModal: ->
@ -75,4 +75,4 @@ module.exports = class RootView extends CocoView
errors = JSON.parse(res.responseText) errors = JSON.parse(res.responseText)
console.warn "Error saving language:", errors console.warn "Error saving language:", errors
res.success (model, response, options) -> res.success (model, response, options) ->
#console.log "Saved language:", newLang #console.log "Saved language:", newLang