This commit is contained in:
Scott Erickson 2014-07-10 11:13:20 -07:00
commit dc27f25a37
25 changed files with 242 additions and 82 deletions

View file

@ -698,7 +698,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
AudioPlayer.playInterfaceSound 'coin_1', 0.25 AudioPlayer.playInterfaceSound 'coin_1', 0.25
if @thang.actionActivated and (action = @thang.getActionName()) isnt 'say' if @thang.actionActivated and (action = @thang.getActionName()) isnt 'say'
@playSound action, withDelay, volume @playSound action, withDelay, volume
if @thang.sayMessage and withDelay # don't play sayMessages while scrubbing, annoying if @thang.sayMessage and withDelay and not @thang.silent # don't play sayMessages while scrubbing, annoying
offsetFrames = Math.abs(@thang.sayStartTime - @thang.world.age) / @thang.world.dt offsetFrames = Math.abs(@thang.sayStartTime - @thang.world.age) / @thang.world.dt
if offsetFrames <= 2 # or (not withDelay and offsetFrames < 30) if offsetFrames <= 2 # or (not withDelay and offsetFrames < 30)
sound = AudioPlayer.soundForDialogue @thang.sayMessage, @thangType.get 'soundTriggers' sound = AudioPlayer.soundForDialogue @thang.sayMessage, @thangType.get 'soundTriggers'

View file

@ -235,7 +235,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
basics_city_help: "Ville dans laquelle vous souhaitez travailler (ou dans laquelle vous vivez actuellement)." basics_city_help: "Ville dans laquelle vous souhaitez travailler (ou dans laquelle vous vivez actuellement)."
basics_country: "Pays" basics_country: "Pays"
basics_country_help: "Pays dans lequel vous souhaitez travailler (ou dans lequel vous vivez actuellement)." basics_country_help: "Pays dans lequel vous souhaitez travailler (ou dans lequel vous vivez actuellement)."
basics_visa: "Status de travail aux Etats-Unis" basics_visa: "Statut de travail aux Etats-Unis"
basics_visa_help: "Etes vous autorisé à travailler aux Etats-Unis ou avez vous besoin d'un parrainage pour le visa ?" basics_visa_help: "Etes vous autorisé à travailler aux Etats-Unis ou avez vous besoin d'un parrainage pour le visa ?"
basics_looking_for: "Recherche" basics_looking_for: "Recherche"
basics_looking_for_full_time: "Temps plein" basics_looking_for_full_time: "Temps plein"
@ -248,60 +248,60 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
name_anonymous: "Developpeur Anonyme" name_anonymous: "Developpeur Anonyme"
name_help: "Le nom que vous souhaitez que l'employeur voie, par exemple 'Chuck Norris'." name_help: "Le nom que vous souhaitez que l'employeur voie, par exemple 'Chuck Norris'."
short_description_header: "Décrivez vous en quelques mots" short_description_header: "Décrivez vous en quelques mots"
# short_description_blurb: "Add a tagline to help an employer quickly learn more about you." short_description_blurb: "Ajoutez une phrase d'accroche pour permettre à un employeur d'en savoir plus sur vous."
short_description: "Description courte" short_description: "Description courte"
short_description_help: "Qui êtes vous et que recherchez vous ? 140 caractères max." short_description_help: "Qui êtes vous et que recherchez vous ? 140 caractères max."
skills_header: "Compétences" skills_header: "Compétences"
skills_help: "Notez vos compétence de développement par ordre de maitrise." skills_help: "Notez vos compétence de développement par ordre de maitrise."
long_description_header: "Détaillez votre poste souhaité" long_description_header: "Détaillez votre poste souhaité"
# long_description_blurb: "Tell employers how awesome you are and what role you want." long_description_blurb: "Faites savoir aux employeurs combien vous êtes génial et quel poste vous voulez."
# long_description: "Self Description" long_description: "Biographie"
# long_description_help: "Describe yourself to potential employers. Keep it short and to the point. We recommend outlining the position that would most interest you. Tasteful markdown okay; 600 characters max." long_description_help: "Décrivez-vous aux potentiels employeurs. Soyez bref et direct. Nous vous recommandons de bien indiquer quel poste vous intéresse le plus. 600 caractères max."
work_experience: "Experience de travail" work_experience: "Experience de travail"
# work_header: "Chronicle your work history" work_header: "Présentez votre parcours professionnel"
# work_years: "Years of Experience" work_years: "Années d'expérience"
# work_years_help: "How many years of professional experience (getting paid) developing software do you have?" work_years_help: "Combien d'années d'expérience professionnelle (salarié) avez-vous dans le développement logiciel ?"
# work_blurb: "List your relevant work experience, most recent first." work_blurb: "Lister vos missions les plus pertinentes, les plus récentes en premier."
# work_employer: "Employer" work_employer: "Employeur"
# work_employer_help: "Name of your employer." work_employer_help: "Nom de votre employeur."
# work_role: "Job Title" work_role: "Titre du poste"
# work_role_help: "What was your job title or role?" work_role_help: "Quel était l'intitulé de votre mission ou votre poste ?"
# work_duration: "Duration" work_duration: "Durée"
# work_duration_help: "When did you hold this gig?" # work_duration_help: "When did you hold this gig?"
# work_description: "Description" work_description: "Description"
# work_description_help: "What did you do there? (140 chars; optional)" work_description_help: "Qu'est-ce que vous y avez fait ? (140 carac.; optionel)"
education: "Education" education: "Education"
# education_header: "Recount your academic ordeals" education_header: "Racontez vos exploits scolaires"
# education_blurb: "List your academic ordeals." education_blurb: "Lister vos exploits scolaires."
# education_school: "School" education_school: "Etablissement"
# education_school_help: "Name of your school." education_school_help: "Nom de l'établissement."
# education_degree: "Degree" education_degree: "Diplôme"
# education_degree_help: "What was your degree and field of study?" education_degree_help: "Quel était votre diplôme et votre domaine d'étude ?"
# education_duration: "Dates" education_duration: "Dates"
# education_duration_help: "When?" education_duration_help: "Quand ?"
# education_description: "Description" education_description: "Description"
# education_description_help: "Highlight anything about this educational experience. (140 chars; optional)" education_description_help: "Mettez en avant ce que vous voulez à propos de votre parcours scolaire. (140 carac.; optionel)"
our_notes: "Notes" our_notes: "Notes"
projects: "Projets" projects: "Projets"
# projects_header: "Add 3 projects" projects_header: "Ajoutez 3 projets"
# projects_header_2: "Projects (Top 3)" projects_header_2: "Projets (Top 3)"
# projects_blurb: "Highlight your projects to amaze employers." projects_blurb: "Mettez en avant vos projets pour épater les employeurs."
# project_name: "Project Name" project_name: "Nom du projet"
# project_name_help: "What was the project called?" project_name_help: "Comment avez-vous appelé votre projet ?"
# project_description: "Description" project_description: "Description"
# project_description_help: "Briefly describe the project." project_description_help: "Décrivez brièvement le projet."
# project_picture: "Picture" project_picture: "Image"
# project_picture_help: "Upload a 230x115px or larger image showing off the project." project_picture_help: "Chargez une image de 230x115px oou plus grande pour présenter votre projet."
# project_link: "Link" project_link: "Lien"
# project_link_help: "Link to the project." project_link_help: "Lien vers le projet."
# player_code: "Player Code" # player_code: "Player Code"
employers: employers:
# want_to_hire_our_players: "Hire CodeCombat Players" want_to_hire_our_players: "Embaucher un Joueur CodeCombat"
# what: "What is CodeCombat?" what: "Qu'est-ce que CodeCombat?"
# what_blurb: "CodeCombat is a multiplayer browser programming game. Players write code to control their forces in battle against other developers. We support JavaScript, Python, Lua, Clojure, CoffeeScript, and Io." what_blurb: "CodeCombat est un jeu de programmation multijoueur par navigateur. Les Joueurs écrivent le code pour contrôler leurs troupes dans des batailles contre d'autres développeurs. Nous prenons en charge JavaScript, Python, Lua, Clojure, CoffeeScript, et Io."
# who: "Who Are the Players?" who: "Qui sont les Joueurs ?"
# who_blurb: "CodeCombateers are software developers who enjoy using their programming skills to play games. They range from college seniors at top 20 engineering programs to 20-year industry veterans." who_blurb: "CodeCombatants sont des développeurs logiciel qui aiment utiliser leurs compétences en programmation pour jouer. Ils sont tout aussi bien des étudiants issus des 20 meilleures écoles d'ingénieurs que des vétérans dans le milieu depuis plus de 20 ans."
# how: "How Do We Find Developers?" # how: "How Do We Find Developers?"
# how_blurb: "We host competitive tournaments to attract competitive software engieneers. We then use in-house algorithms to identify the best players among the top 5% of tournament winners." # how_blurb: "We host competitive tournaments to attract competitive software engieneers. We then use in-house algorithms to identify the best players among the top 5% of tournament winners."
# why: "Why Hire Through Us?" # why: "Why Hire Through Us?"

View file

@ -27,27 +27,29 @@ PropertyDocumentationSchema = c.object {
type: c.shortString(title: 'Type', description: 'Intended type of the property.') type: c.shortString(title: 'Type', description: 'Intended type of the property.')
description: description:
oneOf: [ oneOf: [
{title: 'Description', type: 'string', description: 'Description of the property.', maxLength: 1000, format: 'markdown'}
{ {
type: 'object', type: 'object',
title: 'Language Descriptions', title: 'Language Descriptions',
description: 'Property descriptions by code language.', description: 'Property descriptions by code language.',
additionalProperties: {type: 'string', description: 'Description of the property.', maxLength: 1000, format: 'markdown'} additionalProperties: {type: 'string', description: 'Description of the property.', maxLength: 1000, format: 'markdown'}
format: 'code-languages-object' format: 'code-languages-object'
default: {javascript: ''}
} }
{title: 'Description', type: 'string', description: 'Description of the property.', maxLength: 1000, format: 'markdown'}
] ]
args: c.array {title: 'Arguments', description: 'If this property has type "function", then provide documentation for any function arguments.'}, c.FunctionArgumentSchema args: c.array {title: 'Arguments', description: 'If this property has type "function", then provide documentation for any function arguments.'}, c.FunctionArgumentSchema
owner: {title: 'Owner', type: 'string', description: 'Owner of the property, like "this" or "Math".'} owner: {title: 'Owner', type: 'string', description: 'Owner of the property, like "this" or "Math".'}
example: example:
oneOf: [ oneOf: [
{title: 'Example', type: 'string', description: 'An optional example code block.', format: 'javascript'}
{ {
type: 'object', type: 'object',
title: 'Language Examples', title: 'Language Examples',
description: 'Examples by code language.', description: 'Examples by code language.',
additionalProperties: {type: 'string', description: 'An example code block.', format: 'code'} additionalProperties: {type: 'string', description: 'An example code block.', format: 'code'}
format: 'code-languages-object' format: 'code-languages-object'
default: {javascript: ''}
} }
{title: 'Example', type: 'string', description: 'An optional example code block.', format: 'javascript'}
] ]
snippets: {type: 'object', title: 'Snippets', description: 'List of snippets for the respective programming languages', additionalProperties: c.codeSnippet, format: 'code-languages-object'} snippets: {type: 'object', title: 'Snippets', description: 'List of snippets for the respective programming languages', additionalProperties: c.codeSnippet, format: 'code-languages-object'}
returns: c.object { returns: c.object {
@ -59,25 +61,27 @@ PropertyDocumentationSchema = c.object {
type: c.shortString(title: 'Type', description: 'Type of the return value') type: c.shortString(title: 'Type', description: 'Type of the return value')
example: example:
oneOf: [ oneOf: [
c.shortString(title: 'Example', description: 'Example return value')
{ {
type: 'object', type: 'object',
title: 'Language Examples', title: 'Language Examples',
description: 'Example return values by code language.', description: 'Example return values by code language.',
additionalProperties: c.shortString(description: 'Example return value.', format: 'code') additionalProperties: c.shortString(description: 'Example return value.', format: 'code')
format: 'code-languages-object' format: 'code-languages-object'
default: {javascript: ''}
} }
c.shortString(title: 'Example', description: 'Example return value')
] ]
description: description:
oneOf: [ oneOf: [
{title: 'Description', type: 'string', description: 'Description of the return value.', maxLength: 1000}
{ {
type: 'object', type: 'object',
title: 'Language Descriptions', title: 'Language Descriptions',
description: 'Example return values by code language.', description: 'Example return values by code language.',
additionalProperties: {type: 'string', description: 'Description of the return value.', maxLength: 1000} additionalProperties: {type: 'string', description: 'Description of the return value.', maxLength: 1000}
format: 'code-languages-object' format: 'code-languages-object'
default: {javascript: ''}
} }
{title: 'Description', type: 'string', description: 'Description of the return value.', maxLength: 1000}
] ]
DependencySchema = c.object { DependencySchema = c.object {

View file

@ -163,30 +163,34 @@ me.FunctionArgumentSchema = me.object {
type: me.shortString(title: 'Type', description: 'Intended type of the argument.') type: me.shortString(title: 'Type', description: 'Intended type of the argument.')
example: example:
oneOf: [ oneOf: [
me.shortString(title: 'Example', description: 'Example value for the argument.')
{ {
type: 'object', type: 'object',
title: 'Language Examples', title: 'Language Examples',
description: 'Examples by code language.', description: 'Examples by code language.',
additionalProperties: me.shortString(description: 'Example value for the argument.') additionalProperties: me.shortString(description: 'Example value for the argument.')
format: 'code-languages-object'
default: {javascript: ''}
} }
me.shortString(title: 'Example', description: 'Example value for the argument.')
] ]
description: description:
oneOf: [ oneOf: [
{title: 'Description', type: 'string', description: 'Description of the argument.', maxLength: 1000}
{ {
type: 'object', type: 'object',
title: 'Language Descriptions', title: 'Language Descriptions',
description: 'Example argument descriptions by code language.', description: 'Example argument descriptions by code language.',
additionalProperties: {type: 'string', description: 'Description of the argument.', maxLength: 1000} additionalProperties: {type: 'string', description: 'Description of the argument.', maxLength: 1000}
format: 'code-languages-object'
default: {javascript: ''}
} }
{title: 'Description', type: 'string', description: 'Description of the argument.', maxLength: 1000}
] ]
'default': 'default':
title: 'Default' title: 'Default'
description: 'Default value of the argument. (Your code should set this.)' description: 'Default value of the argument. (Your code should set this.)'
'default': null 'default': null
me.codeSnippet = me.codeSnippet = me.object {description: 'A language-specific code snippet'},
code: {type: 'string', title: 'Snippet', default: '', description: 'Code snippet. Use ${1:defaultValue} syntax to add flexible arguments'} code: {type: 'string', title: 'Snippet', default: '', description: 'Code snippet. Use ${1:defaultValue} syntax to add flexible arguments'}
tab: {type: 'string', title: 'Tab Trigger', description: 'Tab completion text. Will be expanded to the snippet if typed and hit tab.'} tab: {type: 'string', title: 'Tab Trigger', description: 'Tab completion text. Will be expanded to the snippet if typed and hit tab.'}

View file

@ -1,2 +1,18 @@
#docs-components-view #docs-components-view
color: saddlebrown color: saddlebrown
.row
.index-column, .documentation-column
overflow-y: scroll
overflow-x: hidden
min-height: 600px
> ul
padding: 0px 20px 20px 20px
.documentation-column
.specialList
list-style-type: none

View file

@ -37,6 +37,12 @@ body.is-playing
right: 0 right: 0
top: 0px top: 0px
bottom: 0 bottom: 0
transition: width 0.5s ease-in-out
&.fullscreen-editor
position: fixed
width: 100%
height: 100%
z-index: 20
#pointer #pointer
position: absolute position: absolute

View file

@ -6,13 +6,14 @@
bottom: -120px bottom: -120px
left: 10px left: 10px
right: 10px right: 10px
background: transparent url(/images/level/code_editor_error_background.png) no-repeat background: transparent
background-size: 100% 100%
border: 0 border: 0
padding: 18px 35px 18px 14px padding: 18px 35px 18px 14px
text-shadow: none text-shadow: none
color: white color: white
word-wrap: break-word word-wrap: break-word
border-image: url(/images/level/code_editor_error_background.png) 16 20 fill round
border-width: 16px 20px
.close .close
@include opacity(0.80) @include opacity(0.80)
@ -29,6 +30,23 @@
//&.alert-error //&.alert-error
&.alert-warning
border-image-source: url(/images/level/code_editor_warning_background.png)
&.alert-info
border-image-source: url(/images/level/code_editor_info_background.png)
&.alert-style
// Do we ever want to do this for style?
border-image-source: url(/images/level/code_editor_info_background.png)
html.no-borderimage
.problem-alert
border-width: 0
border-image: none
background: transparent url(/images/level/code_editor_error_background.png) no-repeat
background-size: 100% 100%
&.alert-warning &.alert-warning
background-image: url(/images/level/code_editor_warning_background.png) background-image: url(/images/level/code_editor_warning_background.png)

View file

@ -27,6 +27,13 @@
height: 100% height: 100%
width: 100% width: 100%
span.code-background
border-width: 22px
border-image: url(/images/level/code_editor_background.png) 22 fill round
img.code-background
display: none
.save-status .save-status
display: none display: none
position: absolute position: absolute
@ -64,7 +71,7 @@
.ace_gutter .ace_gutter
background-color: rgba(255, 255, 255, 0.25) background-color: rgba(255, 255, 255, 0.25)
width: 40px width: 47px
margin-left: 4px margin-left: 4px
border-bottom: 1px dotted #2f261d border-bottom: 1px dotted #2f261d
@ -133,3 +140,11 @@
.ace_searchbtn, .ace_replacebtn .ace_searchbtn, .ace_replacebtn
padding: 0px 4px padding: 0px 4px
html.no-borderimage
#spell-view
span.code-background
display: none
img.code-background
display: block

View file

@ -6,8 +6,8 @@
min-width: 250px min-width: 250px
max-width: 400px max-width: 400px
padding: 10px padding: 10px
background: transparent url(/images/level/popover_background.png) border-image: url(/images/level/popover_background.png) 18 fill round
background-size: 100% 100% border-width: 8px
.progress .progress
position: relative position: relative
span span
@ -16,3 +16,9 @@
color: black color: black
width: 100% width: 100%
html.no-borderimage
.spell-debug-view
background: transparent url(/images/level/popover_background.png)
background-size: 100% 100%
border: 0

View file

@ -8,6 +8,11 @@
left: 0% left: 0%
right: 10% right: 10%
padding: 4% padding: 4%
border-image: url(/images/level/popover_background.png) 18 fill round
border-width: 15px
html.no-borderimage
#spell-list-view
background: transparent url(/images/level/popover_background.png) background: transparent url(/images/level/popover_background.png)
background-size: 100% 100% background-size: 100% 100%
border: 0

View file

@ -17,15 +17,15 @@
width: -webkit-calc(100% - 100px) width: -webkit-calc(100% - 100px)
width: calc(100% - 100px) width: calc(100% - 100px)
padding: 0px 8px padding: 0px 8px
background: transparent url(/images/level/code_editor_tab_background.png) no-repeat border-width: 3px
background-size: 100% 100% border-image: url(/images/level/code_editor_tab_background.png) 4 fill repeat
text-align: center text-align: center
&.read-only &.read-only
background: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0.2) 100%), url(/images/level/code_editor_tab_background.png) background: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0.2) 100%), url(/images/level/code_editor_tab_background.png)
background-size: 100% 100% background-size: 100% 100%
.spell-list-button, .thang-avatar-wrapper, .reload-code, .beautify-code .spell-list-button, .thang-avatar-wrapper, .reload-code, .beautify-code, .fullscreen-code
width: $childSize width: $childSize
height: $childSize height: $childSize
margin: $childMargin margin: $childMargin
@ -41,6 +41,15 @@
.beautify-code .beautify-code
float: right float: right
.fullscreen-code
float: right
&:not(.maximized)
.icon-resize-small
display: none
&.maximized
.icon-fullscreen
display: none
.btn.btn-small .btn.btn-small
background: transparent background: transparent
padding: 0 padding: 0
@ -49,7 +58,7 @@
border-color: transparent border-color: transparent
@include box-shadow(none) @include box-shadow(none)
.icon-chevron-down, .icon-repeat, .icon-magnet .icon-chevron-down, .icon-repeat, .icon-magnet, .icon-fullscreen, .icon-resize-small
margin-top: 7px margin-top: 7px
.thang-avatar-wrapper .thang-avatar-wrapper
@ -94,3 +103,11 @@
.thang-avatar-wrapper .thang-avatar-wrapper
margin: 0 5px 0 0 margin: 0 5px 0 0
//margin: 2px 10px 2px 5px //margin: 2px 10px 2px 5px
html.no-borderimage
.spell-list-entry-view.spell-tab
border-width: 0
border-image: none
background: transparent url(/images/level/code_editor_tab_background.png) no-repeat
background-size: 100% 100%

View file

@ -10,8 +10,8 @@
max-height: 500px max-height: 500px
overflow: scroll overflow: scroll
padding: 4% padding: 4%
background: transparent url(/images/level/popover_background.png) border-image: url(/images/level/popover_background.png) 18 fill round
background-size: 100% 100% border-width: 15px
.thang-avatar-view .thang-avatar-view
cursor: pointer cursor: pointer
@ -20,4 +20,9 @@
display: inline-block display: inline-block
html.no-borderimage
.spell-list-entry-view
.spell-list-entry-thangs-view
background: transparent url(/images/level/popover_background.png)
background-size: 100% 100%
border: 0

View file

@ -17,7 +17,7 @@
z-index: 0 z-index: 0
//overflow-y: auto //overflow-y: auto
img .code-palette-background
position: absolute position: absolute
left: 0 left: 0
top: 0 top: 0
@ -25,6 +25,13 @@
height: 100% height: 100%
z-index: -1 z-index: -1
span.code-palette-background
border-width: 25px
border-image: url(/images/level/code_palette_background.png) 25 fill round
img.code-palette-background
display: none
&.disabled &.disabled
@include opacity(0.80) @include opacity(0.80)
@ -86,3 +93,9 @@
&.io &.io
background-image: url(/images/pages/home/language_logo_io.png) background-image: url(/images/pages/home/language_logo_io.png)
html.no-borderimage
#spell-palette-view
span.code-palette-background
display: none
img.code-palette-background
display: block

View file

@ -37,9 +37,8 @@
.popover .popover
padding: 10px 10px 30px 10px padding: 10px 10px 30px 10px
background: transparent url(/images/level/popover_background.png) border-image: url(/images/level/popover_background.png) 18 fill round
background-size: 100% 100% border-width: 15px
border: 0
@include box-shadow(0 0 0 #000) @include box-shadow(0 0 0 #000)
h1:not(.not-code), h2:not(.not-code), h3:not(.not-code), h4:not(.not-code), h5:not(.not-code), h6:not(.not-code) h1:not(.not-code), h2:not(.not-code), h3:not(.not-code), h4:not(.not-code), h5:not(.not-code), h6:not(.not-code)
@ -70,3 +69,10 @@
pre pre
display: inline-block display: inline-block
padding: 5px padding: 5px
html.no-borderimage
#tome-view
.popover
background: transparent url(/images/level/popover_background.png)
background-size: 100% 100%
border: 0

View file

@ -1,6 +1,23 @@
extends /templates/base extends /templates/base
block content block content
ul .row
.col-xs-3.index-column.nano
ul.nav.nav-list.list-group.nano-content
for component in components for component in components
li= component.get('name') li= component.get('name')
ul
each doc in component.attributes.propertyDocumentation
a(href="##{component.get('name')}#{doc.name}")
li
| #{doc.name}
.col-xs-9.documentation-column.nano
ul.nano-content
for component in components
each doc in component.attributes.propertyDocumentation
li(id="#{component.get('name')}#{doc.name}")
| #{doc.name}
ul.specialList
li=doc.description

View file

@ -1,4 +1,5 @@
img(src="/images/level/code_editor_background.png").code-background img(src="/images/level/code_editor_background.png").code-background
span.code-background
div.ace div.ace

View file

@ -4,10 +4,15 @@
code #{methodSignature} code #{methodSignature}
.btn.btn-small.fullscreen-code(title="Expand code editor")
i.icon-fullscreen
i.icon-resize-small
.btn.btn-small.reload-code(title="Reload original code for " + spell.name) .btn.btn-small.reload-code(title="Reload original code for " + spell.name)
i.icon-repeat i.icon-repeat
.btn.btn-small.beautify-code(title="Ctrl+Shift+B: Beautify code for " + spell.name) .btn.btn-small.beautify-code(title="Ctrl+Shift+B: Beautify code for " + spell.name)
i.icon-magnet i.icon-magnet
.clearfix .clearfix

View file

@ -1,4 +1,5 @@
img(src="/images/level/code_palette_background.png").code-palette-background img(src="/images/level/code_palette_background.png").code-palette-background
span.code-palette-background
.code-language-logo .code-language-logo
ul(class="nav nav-pills" + (tabbed ? ' multiple-tabs' : '')) ul(class="nav nav-pills" + (tabbed ? ' multiple-tabs' : ''))
each slug, group in entryGroupSlugs each slug, group in entryGroupSlugs

View file

@ -18,6 +18,7 @@ module.exports = class UnnamedView extends RootView
onLoaded: -> onLoaded: ->
console.log 'we have the components...', (c.get('name') for c in @componentDocs.models) console.log 'we have the components...', (c.get('name') for c in @componentDocs.models)
console.log 'we have the attributes...', (c.attributes for c in @componentDocs.models)
super() super()
getRenderData: -> getRenderData: ->

View file

@ -8,7 +8,6 @@ utils = require 'lib/utils'
module.exports = class DocsModal extends View module.exports = class DocsModal extends View
template: template template: template
id: 'docs-modal' id: 'docs-modal'
plain: true
shortcuts: shortcuts:
'enter': 'hide' 'enter': 'hide'

View file

@ -83,7 +83,7 @@ module.exports = class DocFormatter
@doc.title = if @options.shortenize then @doc.shorterName else @doc.shortName @doc.title = if @options.shortenize then @doc.shorterName else @doc.shortName
# Grab the language-specific documentation for some sub-properties, if we have it. # Grab the language-specific documentation for some sub-properties, if we have it.
toTranslate = [{obj: @doc, prop: 'example'}, {obj: @doc, prop: 'returns'}] toTranslate = [{obj: @doc, prop: 'description'}, {obj: @doc, prop: 'example'}, {obj: @doc, prop: 'returns'}]
for arg in (@doc.args ? []) for arg in (@doc.args ? [])
toTranslate.push {obj: arg, prop: 'example'}, {obj: arg, prop: 'description'} toTranslate.push {obj: arg, prop: 'example'}, {obj: arg, prop: 'description'}
for {obj, prop} in toTranslate for {obj, prop} in toTranslate

View file

@ -18,6 +18,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
'click .spell-list-button': 'onDropdownClick' 'click .spell-list-button': 'onDropdownClick'
'click .reload-code': 'onCodeReload' 'click .reload-code': 'onCodeReload'
'click .beautify-code': 'onBeautifyClick' 'click .beautify-code': 'onBeautifyClick'
'click .fullscreen-code': 'onFullscreenClick'
constructor: (options) -> constructor: (options) ->
super options super options
@ -86,6 +87,14 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
return unless @controlsEnabled return unless @controlsEnabled
Backbone.Mediator.publish 'spell-beautify', spell: @spell Backbone.Mediator.publish 'spell-beautify', spell: @spell
onFullscreenClick: ->
unless $('.fullscreen-code').hasClass 'maximized'
$('#code-area').addClass 'fullscreen-editor'
$('.fullscreen-code').addClass 'maximized'
else
$('#code-area').removeClass 'fullscreen-editor'
$('.fullscreen-code').removeClass 'maximized'
updateReloadButton: -> updateReloadButton: ->
changed = @spell.hasChanged null, @spell.getSource() changed = @spell.hasChanged null, @spell.getSource()
@$el.find('.reload-code').css('display', if changed then 'inline-block' else 'none') @$el.find('.reload-code').css('display', if changed then 'inline-block' else 'none')

View file

@ -255,6 +255,13 @@ module.exports = class PlayView extends View
image: '/file/db/level/52740644904ac0411700067c/rescue_mission_icon.png' image: '/file/db/level/52740644904ac0411700067c/rescue_mission_icon.png'
description: 'Fetch the wizards teleporting into the area - by Nathan Gossett' description: 'Fetch the wizards teleporting into the area - by Nathan Gossett'
} }
{
name: "Let's go Fly a Kite"
difficulty: 3
id: 'lets-go-fly-a-kite'
image: '/file/db/level/526711d9add4f8965f000002/hunter_triplets_icon.png'
description: 'There is a horde of ogres marching on your village. Stay out of reach and use your bow to take them out! - by Danny Whittaker'
}
] ]
context.campaigns = [ context.campaigns = [

View file

@ -44,7 +44,8 @@
"bootstrap": "~3.1.1", "bootstrap": "~3.1.1",
"validated-backbone-mediator": "~0.1.3", "validated-backbone-mediator": "~0.1.3",
"jquery.browser": "~0.0.6", "jquery.browser": "~0.0.6",
"zatanna": "~0.0.2" "zatanna": "~0.0.2",
"modernizr": "~2.8.3"
}, },
"overrides": { "overrides": {
"backbone": { "backbone": {
@ -81,6 +82,9 @@
"./dist/fonts/glyphicons-halflings-regular.ttf", "./dist/fonts/glyphicons-halflings-regular.ttf",
"./dist/fonts/glyphicons-halflings-regular.woff" "./dist/fonts/glyphicons-halflings-regular.woff"
] ]
},
"modernizr": {
"main": "modernizr.js"
} }
} }
} }

View file

@ -125,11 +125,12 @@ module.exports.getTwoGames = (req, res) ->
#if userIsAnonymous req then return errors.unauthorized(res, 'You need to be logged in to get games.') #if userIsAnonymous req then return errors.unauthorized(res, 'You need to be logged in to get games.')
humansGameID = req.body.humansGameID humansGameID = req.body.humansGameID
ogresGameID = req.body.ogresGameID ogresGameID = req.body.ogresGameID
ladderGameIDs = ['greed','criss-cross','brawlwood','dungeon-arena','gold-rush']
levelID = _.sample ladderGameIDs
unless ogresGameID and humansGameID unless ogresGameID and humansGameID
#fetch random games here #fetch random games here
queryParams = queryParams =
'levelID': 'greed' 'levelID': levelID
'submitted': true 'submitted': true
'team': 'humans' 'team': 'humans'
selection = 'team totalScore transpiledCode submittedCodeLanguage teamSpells levelID creatorName creator submitDate' selection = 'team totalScore transpiledCode submittedCodeLanguage teamSpells levelID creatorName creator submitDate'
@ -140,7 +141,7 @@ module.exports.getTwoGames = (req, res) ->
return res.end() return res.end()
humanSkipCount = Math.floor(Math.random() * numberOfHumans) humanSkipCount = Math.floor(Math.random() * numberOfHumans)
ogreCountParams = ogreCountParams =
'levelID': 'greed' 'levelID': levelID
'submitted': true 'submitted': true
'team': 'ogres' 'team': 'ogres'
LevelSession.count ogreCountParams, (err, numberOfOgres) => LevelSession.count ogreCountParams, (err, numberOfOgres) =>
@ -161,7 +162,7 @@ module.exports.getTwoGames = (req, res) ->
if err? then return errors.serverError(res, "Couldn't select a random session! #{err}") if err? then return errors.serverError(res, "Couldn't select a random session! #{err}")
randomSession = randomSession[0] randomSession = randomSession[0]
queryParams = queryParams =
'levelID': 'greed' 'levelID': levelID
'submitted': true 'submitted': true
'team': 'ogres' 'team': 'ogres'
query = LevelSession query = LevelSession