mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-24 16:17:57 -05:00
Merge branch 'master' of https://github.com/codecombat/codecombat
This commit is contained in:
commit
dc27f25a37
25 changed files with 242 additions and 82 deletions
|
@ -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'
|
||||||
|
|
|
@ -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?"
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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.'}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -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%
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
|
@ -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
|
||||||
|
|
|
@ -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: ->
|
||||||
|
|
|
@ -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'
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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')
|
||||||
|
|
|
@ -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 = [
|
||||||
|
|
|
@ -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"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue