Merged in master

This commit is contained in:
Ruben Vereecken 2014-07-14 18:58:25 +02:00
commit a60451368e
99 changed files with 685 additions and 222 deletions

View file

@ -298,6 +298,9 @@ self.setupDebugWorldToRunUntilFrame = function (args) {
}
Math.random = self.debugWorld.rand.randf; // so user code is predictable
Aether.replaceBuiltin("Math", Math);
replacedLoDash = _.runInContext(self);
for(var key in replacedLoDash)
_[key] = replacedLoDash[key];
}
self.debugWorld.totalFrames = args.frame; //hack to work around error checking
self.currentDebugWorldFrame = args.frame;
@ -353,6 +356,9 @@ self.runWorld = function runWorld(args) {
}
Math.random = self.world.rand.randf; // so user code is predictable
Aether.replaceBuiltin("Math", Math);
replacedLoDash = _.runInContext(self);
for(var key in replacedLoDash)
_[key] = replacedLoDash[key];
self.postMessage({type: 'start-load-frames'});
self.world.loadFrames(self.onWorldLoaded, self.onWorldError, self.onWorldLoadProgress);
};

View file

@ -23,7 +23,9 @@ module.exports = class CocoRouter extends Backbone.Router
# 'account(/:subview)(/*rest)': 'accountView'
# Direct links
'test': go('TestView')
'test/*subpath': go('TestView')
'demo': go('DemoView')
'demo/*subpath': go('DemoView')
'play/ladder/:levelID': go('play/ladder/ladder_view')
'play/ladder': go('play/ladder_home')

View file

@ -320,6 +320,7 @@ module.exports = ScriptManager = class ScriptManager extends CocoClass
if ((noteGroup.script?.skippable) is false) and not options.force
@noteGroupQueue = @noteGroupQueue[i..]
@run()
@notifyScriptStateChanged()
return
@processNoteGroup(noteGroup)
@ -331,6 +332,7 @@ module.exports = ScriptManager = class ScriptManager extends CocoClass
@noteGroupQueue = []
@resetThings()
@notifyScriptStateChanged()
onNoteGroupTimeout: (noteGroup) ->
return unless noteGroup is @currentNoteGroup

View file

@ -25,9 +25,11 @@ module.exports = class CoordinateDisplay extends createjs.Container
@mouseEnabled = @mouseChildren = false
@addChild @background = new createjs.Shape()
@addChild @label = new createjs.Text('', 'bold 16px Arial', '#FFFFFF')
@addChild @pointMarker = new createjs.Shape()
@label.name = 'Coordinate Display Text'
@label.shadow = new createjs.Shadow('#000000', 1, 1, 0)
@background.name = 'Coordinate Display Background'
@pointMarker.name = 'Point Marker'
onMouseOver: (e) -> @mouseInBounds = true
onMouseOut: (e) -> @mouseInBounds = false
@ -60,26 +62,58 @@ module.exports = class CoordinateDisplay extends createjs.Container
return unless @label.parent
@removeChild @label
@removeChild @background
@removeChild @pointMarker
@uncache()
updateSize: ->
margin = 3
radius = 2.5
width = @label.getMeasuredWidth() + 2 * margin
height = @label.getMeasuredHeight() + 2 * margin
@label.regX = @background.regX = width / 2
@label.regY = @background.regY = height / 2
@label.regX -= margin
@label.regY -= margin
contentWidth = @label.getMeasuredWidth() + (2 * margin)
contentHeight = @label.getMeasuredHeight() + (2 * margin)
# Shift all contents up so marker is at pointer (affects container cache position)
@label.regY = @background.regY = @pointMarker.regY = contentHeight
pointMarkerStroke = 2
pointMarkerLength = 3
contributionsToTotalSize = []
contributionsToTotalSize = contributionsToTotalSize.concat @updateCoordinates contentWidth, contentHeight, pointMarkerStroke
contributionsToTotalSize = contributionsToTotalSize.concat @updatePointMarker contentHeight, pointMarkerLength, pointMarkerStroke
totalWidth = contentWidth + contributionsToTotalSize.reduce (a, b) -> a + b
totalHeight = contentHeight + contributionsToTotalSize.reduce (a, b) -> a + b
[totalWidth, totalHeight]
updateCoordinates: (contentWidth, contentHeight, initialXYOffset) ->
gap = 2
labelAndBgMarkerOffset = initialXYOffset * gap
# Center label horizontally and vertically
@label.x = contentWidth / 2 - (@label.getMeasuredWidth() / 2) + labelAndBgMarkerOffset
@label.y = contentHeight / 2 - (@label.getMeasuredHeight() / 2) - labelAndBgMarkerOffset
@background.graphics
.clear()
.beginFill('rgba(0,0,0,0.4)')
.beginStroke('rgba(0,0,0,0.6)')
.setStrokeStyle(1)
.drawRoundRect(0, 0, width, height, radius)
.setStrokeStyle(backgroundStroke = 1)
.drawRoundRect(labelAndBgMarkerOffset, -labelAndBgMarkerOffset, contentWidth, contentHeight, radius = 2.5)
.endFill()
.endStroke()
[width, height]
contributionsToTotalSize = [labelAndBgMarkerOffset, backgroundStroke]
updatePointMarker: (contentHeight, length, strokeSize) ->
shiftToLineupWithGrid = strokeSize / 2
pointMarkerInitialX = strokeSize - shiftToLineupWithGrid
pointMarkerInitialY = contentHeight - strokeSize + shiftToLineupWithGrid
@pointMarker.graphics
.beginStroke('rgb(142, 198, 67')
.setStrokeStyle(strokeSize, 'square')
.moveTo(pointMarkerInitialX, pointMarkerInitialY)
.lineTo(pointMarkerInitialX, pointMarkerInitialY - length)
.moveTo(pointMarkerInitialX, pointMarkerInitialY)
.lineTo(pointMarkerInitialX + length, pointMarkerInitialY)
.endStroke()
contributionsToTotalSize = [strokeSize]
show: =>
return unless @mouseInBounds and @lastPos and not @destroyed
@ -87,8 +121,9 @@ module.exports = class CoordinateDisplay extends createjs.Container
[width, height] = @updateSize()
sup = @camera.worldToSurface @lastPos
@x = sup.x
@y = sup.y - 2.5
@y = sup.y
@addChild @background
@addChild @label
@cache -width / 2, -height / 2, width, height
@addChild @pointMarker
@cache 0, -height, width, height
Backbone.Mediator.publish 'surface:coordinates-shown', {}

View file

@ -106,7 +106,7 @@ module.exports = class SpriteBoss extends CocoClass
createOpponentWizard: (opponent) ->
# TODO: colorize name and cloud by team, colorize wizard by user's color config, level-specific wizard spawn points
sprite = @createWizardSprite thangID: opponent.id, name: opponent.name
sprite = @createWizardSprite thangID: opponent.id, name: opponent.name, codeLanguage: opponent.codeLanguage
if not opponent.levelSlug or opponent.levelSlug is 'brawlwood'
sprite.targetPos = if opponent.team is 'ogres' then {x: 52, y: 52} else {x: 28, y: 28}
else if opponent.levelSlug is 'dungeon-arena'

View file

@ -608,7 +608,7 @@ module.exports = Surface = class Surface extends CocoClass
ratio = current % 1
@world.frames[next].restorePartialState ratio if next > 1
frame.clearEvents() if parseInt(@currentFrame) is parseInt(@lastFrame)
@spriteBoss.updateSounds()
@spriteBoss.updateSounds() if parseInt(@currentFrame) isnt parseInt(@lastFrame)
updateState: (frameChanged) ->
# world state must have been restored in @restoreWorldState

View file

@ -54,6 +54,11 @@ module.exports = class WizardSprite extends IndieSprite
@updateRotation()
# Don't call general update() because Thang isn't built yet
setNameLabel: (name) ->
if @options.codeLanguage and @options.codeLanguage isnt 'javascript' and not @isSelf
name += " (#{@options.codeLanguage})" # TODO: move on second line, capitalize properly
super name
onPlayerStatesChanged: (e) ->
for playerID, state of e.states
continue unless playerID is @thang.id

View file

@ -54,6 +54,7 @@ module.exports.i18n = (say, target, language=me.lang(), fallback='en') ->
generalName = matches[0] if matches
for localeName, locale of say.i18n
continue if localeName is '-'
if target of locale
result = locale[target]
else continue

View file

@ -2,13 +2,13 @@
class Vector
@className: 'Vector'
# Class methods for nondestructively operating
for name in ['add', 'subtract', 'multiply', 'divide', 'limit', 'normalize']
for name in ['add', 'subtract', 'multiply', 'divide', 'limit', 'normalize', 'rotate']
do (name) ->
Vector[name] = (a, b, useZ) ->
a.copy()[name](b, useZ)
isVector: true
apiProperties: ['x', 'y', 'z', 'magnitude', 'heading', 'distance', 'dot', 'equals', 'copy', 'distanceSquared']
apiProperties: ['x', 'y', 'z', 'magnitude', 'heading', 'distance', 'dot', 'equals', 'copy', 'distanceSquared', 'rotate']
constructor: (@x=0, @y=0, @z=0) ->

View file

@ -207,7 +207,11 @@ module.exports = class World
map = if kind is 'component' then @componentCodeClassMap else @systemCodeClassMap
c = map[js]
return c if c
c = map[js] = eval js
try
c = map[js] = eval js
catch err
console.error "Couldn't compile #{kind} code:", err, "\n", js
c = map[js] = {}
c.className = name
c

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "български език", englishDescri
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "български език", englishDescri
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
revert_models: "Models zurücksetzen."
fork_title: "Forke neue Version"
fork_creating: "Erzeuge Fork..."
# randomize: "Randomize"
more: "Mehr"
wiki: "Wiki"
live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "Wähle einen Gegner"
# select_your_language: "Select your language!"
tutorial_play: "Spiele Tutorial"
tutorial_recommended: "Empfohlen, wenn du noch nie zuvor gespielt hast."
tutorial_skip: "Überspringe Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra
revert_models: "Models zurücksetzen."
fork_title: "Forke neue Version"
fork_creating: "Erzeuge Fork..."
# randomize: "Randomize"
more: "Mehr"
wiki: "Wiki"
live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "Wähle einen Gegner"
# select_your_language: "Select your language!"
tutorial_play: "Spiele Tutorial"
tutorial_recommended: "Empfohlen, wenn du noch nie zuvor gespielt hast."
tutorial_skip: "Überspringe Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -482,7 +482,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# twitter: "Twitter"
# gplus: "Google+"
# editor:
editor:
# main_title: "CodeCombat Editors"
# main_description: "Build your own levels, campaigns, units and educational content. We provide all the tools you need!"
# article_title: "Article Editor"
@ -501,6 +501,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
randomize: "Randomise"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -499,8 +499,12 @@
back: "Back"
revert: "Revert"
revert_models: "Revert Models"
pick_a_terrain: "Pick A Terrain"
small: "Small"
grassy: "Grassy"
fork_title: "Fork New Version"
fork_creating: "Creating Fork..."
randomize: "Randomize"
more: "More"
wiki: "Wiki"
live_chat: "Live Chat"
@ -801,6 +805,7 @@
no_ranked_matches_pre: "No ranked matches for the "
no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "Choose an Opponent"
select_your_language: "Select your language!"
tutorial_play: "Play Tutorial"
tutorial_recommended: "Recommended if you've never played before"
tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
no_ranked_matches_pre: "Sin partidas clasificadas para el "
no_ranked_matches_post: " equipo! Juega en contra de algunos competidores y luego vuelve aquí para ver tu juego clasificado."
choose_opponent: "Escoge un Oponente"
# select_your_language: "Select your language!"
tutorial_play: "Juega el Tutorial"
tutorial_recommended: "Recomendado si nunca has jugado antes"
tutorial_skip: "Saltar Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
revert_models: "Revertir Modelos"
fork_title: "Bifurcar nueva versión"
fork_creating: "Creando bifurcación..."
# randomize: "Randomize"
more: "Más"
wiki: "Wiki"
live_chat: "Chat en directo"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
no_ranked_matches_pre: "No hay partidas calificadas para "
no_ranked_matches_post: " equipo! Juega contra otros competidores y luego vuelve aquí para que tu partida aparezca en la clasificación."
choose_opponent: "Elige un contrincante"
# select_your_language: "Select your language!"
tutorial_play: "Jugar el Tutorial"
tutorial_recommended: "Recomendado si no has jugado antes."
tutorial_skip: "Saltar el Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
tutorial_play: "Jugar Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
tutorial_skip: "Saltar Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
revert_models: "Annuler les modèles"
fork_title: "Fork une nouvelle version"
fork_creating: "Créer un Fork..."
# randomize: "Randomize"
more: "Plus"
wiki: "Wiki"
live_chat: "Chat en live"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
no_ranked_matches_pre: "Pas de match classé pour l'équipe "
no_ranked_matches_post: "! Affronte d'autres compétiteurs et reviens ici pour classer ta partie."
choose_opponent: "Choisir un Adversaire"
# select_your_language: "Select your language!"
tutorial_play: "Jouer au Tutoriel"
tutorial_recommended: "Recommendé si tu n'as jamais joué avant"
tutorial_skip: "Passer le Tutoriel"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -173,8 +173,8 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
email_announcements: "Bejelentések"
email_announcements_description: "Szeretnél levelet kapni a legújabb fejlesztéseinkről?"
email_notifications: "Értesítések"
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
email_any_notes: "Bármely értesítés"
email_notifications_summary: "CodeCombat tevékenységedre vonatkozó személyre szóló, automatikus értesítések beállításai."
email_any_notes: "Bármely megjegyzés"
email_any_notes_description: "Minden tevékenységgel kapcsolatos e-mail értesítés letiltása."
email_recruit_notes: "Álláslehetőségek"
email_recruit_notes_description: "Ha igazán jól játszol lehet, hogy felveszzük veled a kapcsolatot és megbeszéljük, hogy szerezzünk-e neked egy (jobb) állást."
@ -501,6 +501,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
no_ranked_matches_pre: "Nessuna partita valutata per "
no_ranked_matches_post: " squadra! Gioca contro altri avversari e poi torna qui affinchè la tua partita venga valutata."
choose_opponent: "Scegli un avversario"
# select_your_language: "Select your language!"
tutorial_play: "Gioca il Tutorial"
tutorial_recommended: "Consigliato se questa è la tua primissima partita"
tutorial_skip: "Salta il Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
revert_models: "모델 되돌리기"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
revert_models: "keer wijziging model terug"
fork_title: "Kloon naar nieuwe versie"
fork_creating: "Kloon aanmaken..."
# randomize: "Randomize"
more: "Meer"
wiki: "Wiki"
live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het"
no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen."
choose_opponent: "Kies een tegenstander"
# select_your_language: "Select your language!"
tutorial_play: "Speel de Tutorial"
tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld"
tutorial_skip: "Sla Tutorial over"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
revert_models: "keer wijziging model terug"
fork_title: "Kloon naar nieuwe versie"
fork_creating: "Kloon aanmaken..."
# randomize: "Randomize"
more: "Meer"
wiki: "Wiki"
live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het"
no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen."
choose_opponent: "Kies een tegenstander"
# select_your_language: "Select your language!"
tutorial_play: "Speel de Tutorial"
tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld"
tutorial_skip: "Sla Tutorial over"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
revert_models: "keer wijziging model terug"
fork_title: "Kloon naar nieuwe versie"
fork_creating: "Kloon aanmaken..."
# randomize: "Randomize"
more: "Meer"
wiki: "Wiki"
live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het"
no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen."
choose_opponent: "Kies een tegenstander"
# select_your_language: "Select your language!"
tutorial_play: "Speel de Tutorial"
tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld"
tutorial_skip: "Sla Tutorial over"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
revert_models: "Przywróć wersję"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
no_ranked_matches_pre: "Brak ocenionych pojedynków dla drużyny "
no_ranked_matches_post: " ! Zagraj przeciwko kilku oponentom i wróc tutaj, aby uzyskać ocenę gry."
choose_opponent: "Wybierz przeciwnika"
# select_your_language: "Select your language!"
tutorial_play: "Rozegraj samouczek"
tutorial_recommended: "Zalecane, jeśli wcześniej nie grałeś"
tutorial_skip: "Pomiń samouczek"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
revert_models: "Reverter Modelos"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
more: "Mais"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
no_ranked_matches_pre: "Sem partidas classificadas para o "
no_ranked_matches_post: " time! Jogue contra alguns competidores e então volte aqui para ter seu jogo classificado."
choose_opponent: "Escolha um Oponente"
# select_your_language: "Select your language!"
tutorial_play: "Jogue o Tutorial"
tutorial_recommended: "Recomendado se você nunca jogou antes"
tutorial_skip: "Pular Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
revert_models: "Reverter Modelos"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
no_ranked_matches_pre: "Sem jogos classificados pela equipa "
no_ranked_matches_post: "! Joga contra alguns adversários e volta aqui para veres o teu jogo classificado."
choose_opponent: "Escolhe um Adversário"
# select_your_language: "Select your language!"
tutorial_play: "Jogar Tutorial"
tutorial_recommended: "Recomendado se nunca jogaste antes"
tutorial_skip: "Saltar Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
revert_models: "Resetează Modelele"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
no_ranked_matches_pre: "Nici un meci de clasament pentru "
no_ranked_matches_post: " echipă! Joacă împotriva unor concurenți și revino apoi aici pentr a-ți plasa meciul in clasament."
choose_opponent: "Alege un adversar"
# select_your_language: "Select your language!"
tutorial_play: "Joacă Tutorial-ul"
tutorial_recommended: "Recomandat dacă nu ai mai jucat niciodată înainte"
tutorial_skip: "Sari peste Tutorial"

View file

@ -173,7 +173,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
email_announcements: "Оповещения"
email_announcements_description: "Получать email-оповещения о последних новостях CodeCombat."
email_notifications: "Уведомления"
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
email_notifications_summary: "Настройки автоматических email-уведомлений, основанных на вашей активности на CodeCombat."
email_any_notes: "Все уведомления"
email_any_notes_description: "Отключите, чтобы больше не получать извещения."
email_recruit_notes: "Возможности для работы"
@ -399,8 +399,8 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
editor_config_keybindings_label: "Сочетания клавиш"
editor_config_keybindings_default: "По умолчанию (Ace)"
editor_config_keybindings_description: "Добавляет дополнительные сочетания, известные из популярных редакторов."
# editor_config_livecompletion_label: "Live Autocompletion"
# editor_config_livecompletion_description: "Displays autocomplete suggestions while typing."
editor_config_livecompletion_label: "Автозаполнение"
editor_config_livecompletion_description: "Отображение вариантов автозаполнения во время печати."
editor_config_invisibles_label: "Показывать непечатные символы"
editor_config_invisibles_description: "Отображение непечатных символов, таких как пробелы или табуляции."
editor_config_indentguides_label: "Показывать направляющие отступов"
@ -451,8 +451,8 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
enter: "Enter"
escape: "Escape"
cast_spell: "Произнести текущее заклинание."
# continue_script: "Continue past current script."
# skip_scripts: "Skip past all skippable scripts."
continue_script: "Продолжить текущий скрипт."
skip_scripts: "Пропустить все возможные скрипты."
toggle_playback: "Переключить проигрывание/паузу."
scrub_playback: "Перемотка назад и вперед во времени."
# single_scrub_playback: "Scrub back and forward through time by a single frame."
@ -501,6 +501,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
revert_models: "Откатить Модели"
fork_title: "Форк новой версии"
fork_creating: "Создание форка..."
# randomize: "Randomize"
more: "Ещё"
wiki: "Вики"
live_chat: "Онлайн-чат"
@ -535,10 +536,10 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
new_thang_title: "Создать новый тип объектов"
new_level_title: "Создать новый уровень"
new_article_title_login: "Войти, чтобы создать новую статью"
# new_thang_title_login: "Log In to Create a New Thang Type"
new_level_title_login: "Войти чтобы создать новый уровень"
# new_achievement_title: "Create a New Achievement"
# new_achievement_title_login: "Log In to Create a New Achievement"
new_thang_title_login: "Войти, чтобы создать новый тип объектов"
new_level_title_login: "Войти, чтобы создать новый уровень"
new_achievement_title: "Создать новое достижение"
new_achievement_title_login: "Войти, чтобы создать новое достижение"
article_search_title: "Искать статьи"
thang_search_title: "Искать типы объектов"
level_search_title: "Искать уровни"
@ -795,12 +796,13 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
rank_submitted: "Отправлено для оценки"
rank_failed: "Сбой в оценке"
rank_being_ranked: "Игра оценивается"
# rank_last_submitted: "submitted "
# help_simulate: "Help simulate games?"
rank_last_submitted: "отправлено "
help_simulate: "Нужна помощь в симуляции игр?"
code_being_simulated: "Ваш новый код участвует в симуляции других игроков для оценки. Обновление будет при поступлении новых матчей."
no_ranked_matches_pre: "Нет оценённых матчей для команды"
no_ranked_matches_post: "! Сыграйте против нескольких противников и возвращайтесь сюда для оценки вашей игры."
choose_opponent: "Выберите противника"
# select_your_language: "Select your language!"
tutorial_play: "Пройти обучение"
tutorial_recommended: "Рекомендуется, если вы раньше никогда не играли"
tutorial_skip: "Пропустить обучение"
@ -809,19 +811,19 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
simple_ai: "Простой ИИ"
warmup: "Разминка"
vs: "против"
# friends_playing: "Friends Playing"
# log_in_for_friends: "Log in to play with your friends!"
# social_connect_blurb: "Connect and play against your friends!"
friends_playing: "Друзья в игре"
log_in_for_friends: "Войти, чтобы поиграть с друзьями!"
social_connect_blurb: "Свяжите учетную запись и играйте против друзей!"
invite_friends_to_battle: "Пригласить друзей присоединиться к вам в сражении!"
fight: "В бой!"
# watch_victory: "Watch your victory"
# defeat_the: "Defeat the"
# tournament_ends: "Tournament ends"
# tournament_ended: "Tournament ended"
# tournament_rules: "Tournament Rules"
# tournament_blurb: "Write code, collect gold, build armies, crush foes, win prizes, and upgrade your career in our $40,000 Greed tournament! Check out the details"
# tournament_blurb_blog: "on our blog"
# rules: "Rules"
watch_victory: "Наблюдать за победой"
defeat_the: "Победить"
tournament_ends: "Турнир заканчивается"
tournament_ended: "Турнир закончился"
tournament_rules: "Правила турнира"
tournament_blurb: "Пишите код, собирайте золото, стройте армию, крушите противников, получайте призы и улучшайте вашу карьеру в нашем \"$40,000 турнире жадности\"! Узнайте больше"
tournament_blurb_blog: "в нашем блоге"
rules: "Правила"
winners: "Победители"
# ladder_prizes:

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
revert_models: "Återställ modeller"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
no_ranked_matches_pre: "Inga rankade matcher för "
no_ranked_matches_post: " laget! Spela mot några motståndare och kom sedan tillbaka it för att få din match rankad."
choose_opponent: "Välj en motståndare"
# select_your_language: "Select your language!"
tutorial_play: "Spela tutorial"
tutorial_recommended: "Rekommenderas om du aldrig har spelat tidigare"
tutorial_skip: "Hoppa över tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
revert_models: "Önceki Modeller"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
revert_models: "Моделі повернення"
fork_title: "Нова версія Форк"
fork_creating: "Створення Форк..."
# randomize: "Randomize"
more: "Більше"
wiki: "Wiki"
live_chat: "Online чат"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
revert_models: "还原模式"
fork_title: "派生新版本"
fork_creating: "正在执行派生..."
# randomize: "Randomize"
more: "更多"
wiki: "维基"
live_chat: "在线聊天"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "选择一个对手"
# select_your_language: "Select your language!"
tutorial_play: "玩教程"
tutorial_recommended: "如果你从未玩过的话,推荐先玩下教程"
tutorial_skip: "跳过教材"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
revert_models: "還原模式"
fork_title: "派生新版本"
fork_creating: "徠搭執行派生..."
# randomize: "Randomize"
more: "無數"
wiki: "維基"
live_chat: "上線白嗒"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "揀一個對手"
# select_your_language: "Select your language!"
tutorial_play: "攪教程"
tutorial_recommended: "假使爾從來朆攪過個話,建議爾先畀教程攪攪相"
tutorial_skip: "跳過教程"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra
# revert_models: "Revert Models"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra
# no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial"

View file

@ -30,7 +30,7 @@ module.exports = class Level extends CocoModel
visit = (system) ->
return if system.original of originalsSeen
systemModel = _.find systemModels, {original: system.original}
console.error 'Couldn\'t find model for original', system.original, 'from', systemModels unless systemModel
return console.error 'Couldn\'t find model for original', system.original, 'from', systemModels unless systemModel
for d in systemModel.dependencies or []
system2 = _.find levelSystems, {original: d.original}
visit system2
@ -61,7 +61,7 @@ module.exports = class Level extends CocoModel
for d in lc.dependencies or []
c2 = _.find thang.components, {original: d.original}
console.error thang.id, 'couldn\'t find dependent Component', d.original, 'from', lc.name unless c2
visit c2
visit c2 if c2
if lc.name is 'Collides'
allied = _.find levelComponents, {name: 'Allied'}
if allied

View file

@ -7,6 +7,7 @@ module.exports = class User extends CocoModel
@className: 'User'
@schema: require 'schemas/models/user'
urlRoot: '/db/user'
notyErrors: false
defaults:
points: 0

View file

@ -239,6 +239,9 @@ _.extend LevelSessionSchema.properties,
title: 'Opponent Rank'
description: 'The opponent\'s ranking in a given match'
type: 'number'
codeLanguage:
type: 'string'
description: 'What submittedCodeLanguage the opponent used during the match'
c.extendBasicProperties LevelSessionSchema, 'level.session'
c.extendPermissionsProperties LevelSessionSchema, 'level.session'

View file

@ -9,6 +9,9 @@ module.exports =
'note-group-ended':
{} # TODO schema
'modal-opened':
{} # TODO schema
'modal-closed':
{} # TODO schema

View file

@ -32,9 +32,6 @@ module.exports =
'level-set-grid':
{} # TODO schema
'tome:cast-spell':
{} # TODO schema
'level:restarted':
{} # TODO schema

View file

@ -1,74 +1,217 @@
module.exports =
'tome:cast-spell':
{} # TODO schema
"tome:cast-spell":
title: "Cast Spell"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when a spell is cast"
type: ["object", "undefined"]
properties:
spell:
type: "object"
thang:
type: "object"
preload:
type: "boolean"
required: []
additionalProperties: false
# TODO do we really need both 'cast-spell' and 'cast-spells'?
'tome:cast-spells':
{} # TODO schema
"tome:cast-spells":
title: "Cast Spells"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when spells are cast"
type: ["object", "undefined"]
properties:
spells:
type: "object"
preload:
type: "boolean"
required: []
additionalProperties: false
'tome:manual-cast':
{} # TODO schema
"tome:manual-cast":
title: "Manually Cast Spells"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you wish to manually recast all spells"
type: "object"
properties: {}
required: []
additionalProperties: false
'tome:spell-created':
{} # TODO schema
"tome:spell-created":
title: "Spell Created"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published after a new spell has been created"
type: "object"
properties:
"spell": "object"
required: ["spell"]
additionalProperties: false
'tome:spell-debug-property-hovered':
{} # TODO schema
"tome:spell-debug-property-hovered":
title: "Spell Debug Property Hovered"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you hover over a spell property"
type: "object"
properties:
"property": "string"
"owner": "string"
required: []
additionalProperties: false
'tome:toggle-spell-list':
{} # TODO schema
"tome:toggle-spell-list":
title: "Toggle Spell List"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you toggle the dropdown for a thang's spells"
type: "undefined"
additionalProperties: false
'tome:reload-code':
{} # TODO schema
"tome:reload-code":
title: "Reload Code"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you reset a spell to its original source"
type: "object"
properties:
"spell": "object"
required: ["spell"]
additionalProperties: false
'tome:palette-hovered':
{} # TODO schema
"tome:palette-hovered":
title: "Palette Hovered"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you hover over a Thang in the spell palette"
type: "object"
properties:
"thang": "object"
"prop": "string"
"entry": "object"
required: ["thang", "prop", "entry"]
additionalProperties: false
'tome:palette-pin-toggled':
{} # TODO schema
"tome:palette-pin-toggled":
title: "Palette Pin Toggled"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you pin or unpin the spell palette"
type: "object"
properties:
"entry": "object"
"pinned": "boolean"
required: ["entry", "pinned"]
additionalProperties: false
'tome:palette-clicked':
{} # TODO schema
"tome:palette-clicked":
title: "Palette Clicked"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you click on the spell palette"
type: "object"
properties:
"thang": "object"
"prop": "string"
"entry": "object"
required: ["thang", "prop", "entry"]
additionalProperties: false
'tome:spell-statement-index-updated':
{} # TODO schema
"tome:spell-statement-index-updated":
title: "Spell Statement Index Updated"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when the spell index is updated"
type: "object"
properties:
"statementIndex": "object"
"ace": "object"
required: ["statementIndex", "ace"]
additionalProperties: false
# TODO proposition: refactor 'tome' into spell events
'spell-beautify':
{} # TODO schema
"spell-beautify":
title: "Beautify"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you click the \"beautify\" button"
type: "object"
properties:
"spell": "object"
required: []
additionalProperties: false
'spell-step-forward':
{} # TODO schema
"spell-step-forward":
title: "Step Forward"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you step forward in time"
type: "undefined"
additionalProperties: false
'spell-step-backward':
{} # TODO schema
"spell-step-backward":
title: "Step Backward"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you step backward in time"
type: "undefined"
additionalProperties: false
'tome:spell-loaded':
{} # TODO schema
"tome:spell-loaded":
title: "Spell Loaded"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when a spell is loaded"
type: "object"
properties:
"spell": "object"
required: ["spell"]
additionalProperties: false
'tome:cast-spell':
{} # TODO schema
"tome:spell-changed":
title: "Spell Changed"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when a spell is changed"
type: "object"
properties:
"spell": "object"
required: ["spell"]
additionalProperties: false
'tome:spell-changed':
{} # TODO schema
"tome:editing-began":
title: "Editing Began"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you have begun changing code"
type: "undefined"
additionalProperties: false
'tome:editing-ended':
{} # TODO schema
"tome:editing-ended":
title: "Editing Ended"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you have stopped changing code"
type: "undefined"
additionalProperties: false
'tome:editing-began':
{} # TODO schema
"tome:problems-updated":
title: "Problems Updated"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when problems have been updated"
type: "object"
properties:
"spell": "object"
"problems": "array"
"isCast": "boolean"
required: ["spell", "problems", "isCast"]
additionalProperties: false
'tome:problems-updated':
{} # TODO schema
"tome:thang-list-entry-popover-shown":
title: "Thang List Entry Popover Shown"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when we show the popover for a thang in the master list"
type: "object"
properties:
"entry": "object"
required: ["entry"]
additionalProperties: false
'tome:thang-list-entry-popover-shown':
{} # TODO schema
'tome:spell-shown':
{} # TODO schema
'tome:focus-editor':
{} # TODO schema
"tome:spell-shown":
title: "Spell Shown"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when we show a spell"
type: "object"
properties:
"thang": "object"
"spell": "object"
required: ["thang", "spell"]
additionalProperties: false
'tome:change-language':
title: 'Tome Change Language'
@ -93,3 +236,37 @@ module.exports =
language:
type: 'string'
required: ['spell']
"tome:comment-my-code":
title: "Comment My Code"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when we comment out a chunk of your code"
type: "undefined"
additionalProperties: false
"tome:change-config":
title: "Change Config"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you change your tome settings"
type: "undefined"
additionalProperties: false
"tome:update-snippets":
title: "Update Snippets"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when we need to add Zatanna Snippets"
type: "object"
properties:
"propGroups": "object"
"allDocs": "object"
"language": "string"
required: ["propGroups", "allDocs"]
additionalProperties: false
# TODO proposition: add tome to name
"focus-editor":
title: "Focus Editor"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published whenever we want to give focus back to the editor"
type: "undefined"
additionalProperties: false

View file

@ -1 +0,0 @@
@import "bootstrap/bootstrap";

View file

@ -1,4 +1,4 @@
#terrain-randomise-modal
#terrain-randomize-modal
.choose-option
margin-bottom: 15px

View file

@ -9,9 +9,9 @@
display: block
float: none
background: white
.wizard-name-line
#wizard-settings-name-wrapper
padding-left: 0px !important
.help-block
text-align: center
margin-bottom: 10px
label
margin-right: 10px

View file

@ -50,3 +50,9 @@
td
padding: 1px 2px
.code-language-cell
padding: 0 10px
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
background-size: contain
height: 19px

View file

@ -37,3 +37,9 @@
td
padding: 1px 2px
.code-language-cell
padding: 0 10px
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
background-size: contain
height: 19px

View file

@ -95,7 +95,17 @@
span
position: relative
top: 1px
.code-language
position: absolute
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
background-size: contain
width: 40px
height: 40px
right: -5px
top: -15px
display: block
.my-name
border-right: 15px solid transparent
left: 0
@ -145,4 +155,4 @@
top: 35px
font-size: 40px
font-weight: bolder
color: black
color: black

View file

@ -13,13 +13,14 @@
$childMargin: 2px
$childSize: $height - 2 * $childMargin
height: $height
width: 80%
width: -webkit-calc(100% - 100px)
width: calc(100% - 100px)
width: 90%
width: -webkit-calc(100% - 50px)
width: calc(100% - 50px)
padding: 0px 8px
border-width: 3px
border-image: url(/images/level/code_editor_tab_background.png) 4 fill repeat
text-align: center
white-space: nowrap
position: relative
&.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)
@ -34,6 +35,11 @@
.spell-list-button, .thang-avatar-wrapper
float: left
.spell-tool-buttons
position: absolute
right: 0px
top: 0px
.reload-code
float: right
display: none
@ -66,6 +72,7 @@
code
margin-top: 7px
font-size: 1vw
.spell-list-entry-view:not(.spell-tab)
cursor: pointer
@ -110,4 +117,4 @@ html.no-borderimage
border-width: 0
border-image: none
background: transparent url(/images/level/code_editor_tab_background.png) no-repeat
background-size: 100% 100%
background-size: 100% 100%

View file

@ -1,7 +1,7 @@
extends /templates/base
block content
h1(data-i18n="community.main_title") CodeCombat Community
p There are dozens of ways you can get involved with CodeCombat. Check out the resources we've built, decide what sounds the most fun, and we look forward to working with you!
@ -15,13 +15,13 @@ block content
p We have built several tools that enable users to get not only edit, but also build new game content!
ul
li
li
a(href="/editor/level", data-i18n="community.level_editor")
| : fork, edit, or build your own CodeCombat levels. New levels can be kept private or published to the community.
li
li
a(href="/editor/thang", data-i18n="editor.thang_title")
| : modify or import new art assets for the game using our powerful editor.
li
li
a(href="/editor/article", data-i18n="editor.article_title")
| : edit or create documentation used in CodeCombat levels.
@ -35,51 +35,51 @@ block content
ul
li We write about our progress and current projects on our
a(href="http://blog.codecombat.com", data-i18n="nav.blog")
li We write about our progress and current projects on our
a.spl(href="http://blog.codecombat.com", data-i18n="nav.blog")
| .
li Participate in our active user community by checking out our
a(href="http://discourse.codecombat.com", data-i18n="nav.forum")
li Participate in our active user community by checking out our
a.spl(href="http://discourse.codecombat.com", data-i18n="nav.forum")
| .
li For regular news about learning to code, games, and education, check out our
a(href="https://www.facebook.com/codecombat", data-i18n="community.facebook")
li For regular news about learning to code, games, and education, check out our
a.spl(href="https://www.facebook.com/codecombat", data-i18n="community.facebook")
| .
li For realtime status or to have a quick chat, follow us on
a(href="https://twitter.com/CodeCombat", data-i18n="community.twitter")
li For realtime status or to have a quick chat, follow us on
a.spl(href="https://twitter.com/CodeCombat", data-i18n="community.twitter")
| .
li Don't like Facebook? We're on
a(href="https://plus.google.com/115285980638641924488/posts", data-i18n="community.gplus")
li Don't like Facebook? We're on
a.spl(href="https://plus.google.com/115285980638641924488/posts", data-i18n="community.gplus")
| .
li You can also find us in our
a(href="http://www.hipchat.com/g3plnOKqa", data-i18n="editor.hipchat_url")
li You can also find us in our
a.spl(href="http://www.hipchat.com/g3plnOKqa", data-i18n="editor.hipchat_url")
.community_columns
h2 Contribute
p Put your skills to use helping us teach the world to code. We have a lot of roles you can consider, and if we don't have a role for you, let us know:
p Put your skills to use helping us teach the world to code. We have a lot of roles you can consider, and if we don't have a role for you, let us know:
ul
li
a(href="/contribute#archmage", data-i18n="classes.archmage_title")
li
a(href="/contribute#archmage", data-i18n="classes.archmage_title")
| : contribute by writing code.
li
a(href="/contribute#artisan", data-i18n="classes.artisan_title")
li
a(href="/contribute#artisan", data-i18n="classes.artisan_title")
| : build new game levels.
li
a(href="/contribute#adventurer", data-i18n="classes.adventurer_title")
li
a(href="/contribute#adventurer", data-i18n="classes.adventurer_title")
| : test new game levels.
li
a(href="/contribute#scribe", data-i18n="classes.scribe_title")
li
a(href="/contribute#scribe", data-i18n="classes.scribe_title")
| : write educational documentation.
li
a(href="/contribute#diplomat", data-i18n="classes.diplomat_title")
li
a(href="/contribute#diplomat", data-i18n="classes.diplomat_title")
| : translate site content.
li
a(href="/contribute#ambassador", data-i18n="classes.ambassador_title")
li
a(href="/contribute#ambassador", data-i18n="classes.ambassador_title")
| : support our community of educators and coders.
| Check out the
a(href="/contribute", data-i18n="nav.contribute")
a.spl(href="/contribute", data-i18n="nav.contribute")
| page to find out more about the roles and how you can get started.

View file

@ -49,7 +49,7 @@ block header
if level.get('type') === 'ladder'
li.dropdown
a(data-toggle='dropdown')
a(data-toggle='dropdown').play-with-team-parent
span.glyphicon-play.glyphicon
ul.dropdown-menu
li.dropdown-header Play As Which Team?
@ -70,17 +70,17 @@ block header
a#level-watch-button
span.watch
span.glyphicon.glyphicon-eye-open
span.spl Watch
span.spl(data-i18n="common.watch") Watch
span.unwatch.secret
span.glyphicon.glyphicon-eye-close
span.spl Unwatch
span.spl(data-i18n="common.unwatch") Unwatch
li(class=anonymous ? "disabled": "")
a(data-i18n="common.fork")#fork-level-start-button Fork
li(class=anonymous ? "disabled": "")
a(data-toggle="coco-modal", data-target="modal/revert", data-i18n="editor.revert")#revert-button Revert
li(class=anonymous ? "disabled": "")
a(data-toggle="coco-modal", data-target="modal/terrain_randomise", data-i18n="editor.randomise")#randomise-button Randomise
a(data-toggle="coco-modal", data-target="editor/level/modal/terrain_randomize", data-i18n="editor.randomize")#randomize-button Randomize
li(class=anonymous ? "disabled": "")
a(data-i18n="editor.pop_i18n")#pop-level-i18n-button Populate i18n
li.divider

View file

@ -8,8 +8,8 @@ block modal-body-content
a(href="#")
div.choose-option(data-preset-type="grassy", data-preset-size="small")
div.preset-size.name-label
span(data-i18n="ladder.small") Small
span(data-i18n="editor.small") Small
div.preset-name
span(data-i18n="ladder.grassy") Grassy
span(data-i18n="editor.grassy") Grassy
//- for model in models
block modal-footer

View file

@ -4,10 +4,13 @@ block modal-header-content
h3(data-i18n="wizard_settings.title2") Customize Your Character
block modal-body-content
div.wizard-name-line.form-group
label.control-label(for="name")
| Your Wizardly Name:
input#wizard-settings-name(name="name", type="text", value="#{me.get('name')||''}")
form.form-horizontal
div.form-group
.row
label.control-label.col-sm-6(for="name")
| Your Wizardly Name:
#wizard-settings-name-wrapper.col-sm-4
input#wizard-settings-name.form-control.input-sm(name="name", type="text", value="#{me.get('name')||''}")
#wizard-settings-view

View file

@ -4,13 +4,13 @@ div#columns.row
div(id="histogram-display-#{team.name}", class="histogram-display",data-team-name=team.name)
table.table.table-bordered.table-condensed.table-hover
tr
th
th(colspan=2)
th(colspan=3, style="color: #{team.primaryColor}")
span= team.name
span
span(data-i18n="ladder.leaderboard") Leaderboard
tr
th
th(colspan=2)
th(data-i18n="general.score") Score
th(data-i18n="general.name").name-col-cell Name
th
@ -21,6 +21,7 @@ div#columns.row
for session, rank in topSessions
- var myRow = session.get('creator') == me.id
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
td.code-language-cell(style="background-image: url(/images/pages/home/language_logo_" + session.get('submittedCodeLanguage') + ".png)")
td.rank-cell= rank + 1
td.score-cell= Math.round(session.get('totalScore') * 100)
td.name-col-cell= session.get('creatorName') || "Anonymous"
@ -34,6 +35,7 @@ div#columns.row
for session in team.leaderboard.nearbySessions()
- var myRow = session.get('creator') == me.id
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
td.code-language-cell(style="background-image: url(/images/pages/home/language_logo_" + session.get('submittedCodeLanguage') + ".png)")
td.rank-cell= session.rank
td.score-cell= Math.round(session.get('totalScore') * 100)
td.name-col-cell= session.get('creatorName') || "Anonymous"

View file

@ -4,7 +4,7 @@ div#columns.row
table.table.table-bordered.table-condensed
tr
th(colspan=4, style="color: #{team.primaryColor}")
th(colspan=5, style="color: #{team.primaryColor}")
span(data-i18n="ladder.summary_your") Your
|#{team.name}
|
@ -16,16 +16,17 @@ div#columns.row
if team.session
tr
th(colspan=4)
th(colspan=5)
.ladder-submission-view(data-session-id=team.session.id)
if team.scoreHistory
tr
th(colspan=4, style="color: #{team.primaryColor}")
th(colspan=5, style="color: #{team.primaryColor}")
div(class="score-chart-wrapper", data-team-name=team.name, id="score-chart-#{team.name}")
tr
th(data-i18n="general.result") Result
th
th(data-i18n="general.opponent") Opponent
th(data-i18n="general.when") When
th
@ -38,6 +39,7 @@ div#columns.row
span(data-i18n="general.loss").loss Loss
if match.state === 'tie'
span(data-i18n="general.tie").tie Tie
td.code-language-cell(style="background-image: url(/images/pages/home/language_logo_" + match.codeLanguage + ".png)")
td.name-cell= match.opponentName || "Anonymous"
td.time-cell= match.when
td.battle-cell

View file

@ -13,13 +13,16 @@ block modal-body-content
span.btn.btn-primary.btn-block.btn-lg#skip-tutorial-button(data-i18n="ladder.tutorial_skip") Skip Tutorial
div#normal-view
if tutorialLevelExists
p.tutorial-suggestion
strong(data-i18n="ladder.tutorial_not_sure") Not sure what's going on?
|
a(href="/play/level/#{levelID}-tutorial", data-i18n="ladder.tutorial_play_first") Play the tutorial first.
h4.language-selection(data-i18n="ladder.select_your_language") Select your language!
.form-group.select-group
select#tome-language(name="language")
for option in languages
option(value=option.id selected=(language === option.id))= option.name
a(href="/play/level/#{levelID}?team=#{teamID}")
div.play-option
img(src=myPortrait).my-icon.only-one
@ -30,6 +33,7 @@ block modal-body-content
span= myName
div.opponent-name.name-label
span(data-i18n="ladder.simple_ai") Simple AI
//span.code-language(style="background-image: url(/images/pages/home/language_logo_javascript.png)")
div.difficulty
span(data-i18n="ladder.warmup") Warmup
div(data-i18n="ladder.vs").vs VS
@ -45,6 +49,8 @@ block modal-body-content
span= myName
div.opponent-name.name-label
span= challengers.easy.opponentName
if challengers.easy.codeLanguage
span.code-language(style="background-image: url(/images/pages/home/language_logo_" + challengers.easy.codeLanguage + ".png)")
div.difficulty
span(data-i18n="general.easy") Easy
div(data-i18n="ladder.vs").vs VS
@ -60,6 +66,8 @@ block modal-body-content
span= myName
div.opponent-name.name-label
span= challengers.medium.opponentName
if challengers.medium.codeLanguage
span.code-language(style="background-image: url(/images/pages/home/language_logo_" + challengers.medium.codeLanguage + ".png)")
div.difficulty
span(data-i18n="general.medium") Medium
div(data-i18n="ladder.vs").vs VS
@ -75,6 +83,8 @@ block modal-body-content
span= myName
div.opponent-name.name-label
span= challengers.hard.opponentName
if challengers.hard.codeLanguage
span.code-language(style="background-image: url(/images/pages/home/language_logo_" + challengers.hard.codeLanguage + ".png)")
div.difficulty
span(data-i18n="general.hard") Hard
div(data-i18n="ladder.vs").vs VS

View file

@ -4,15 +4,15 @@
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)
i.icon-repeat
.spell-tool-buttons
.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)
i.icon-repeat
.btn.btn-small.beautify-code(title="Ctrl+Shift+B: Beautify code for " + spell.name)
i.icon-magnet
.btn.btn-small.beautify-code(title="Ctrl+Shift+B: Beautify code for " + spell.name)
i.icon-magnet
.clearfix
.clearfix

View file

@ -249,9 +249,9 @@ class JavaScriptTreema extends CodeTreema
class InternationalizationNode extends TreemaNode.nodeMap.object
findLanguageName: (languageCode) ->
# to get around mongoose emtpy object bug, there's a prop in the object which needs to be ignored
return '' if languageCode is '-'
return '' if languageCode is '-'
locale[languageCode]?.nativeDescription or "#{languageCode} Not Found"
getChildren: ->
res = super(arguments...)
res = (r for r in res when r[0] isnt '-')
@ -322,7 +322,7 @@ class LatestVersionReferenceNode extends TreemaNode
return unless term
@lastTerm = term
@getSearchResultsEl().empty().append('Searching')
@collection = new LatestVersionCollection()
@collection = new LatestVersionCollection([], model: @model)
# HACK while search is broken
# @collection.url = "#{@url}?term=#{term}&project=true"

View file

@ -26,6 +26,7 @@ module.exports = class EditorLevelView extends View
events:
'click #play-button': 'onPlayLevel'
'click .play-with-team-button': 'onPlayLevel'
'click .play-with-team-parent': 'onPlayLevelTeamSelect'
'click #commit-level-start-button': 'startCommittingLevel'
'click #fork-level-start-button': 'startForkingLevel'
'click #level-history-button': 'showVersionHistory'
@ -77,6 +78,12 @@ module.exports = class EditorLevelView extends View
@listenTo @patchesView, 'accepted-patch', -> location.reload()
@$el.find('#level-watch-button').find('> span').toggleClass('secret') if @level.watching()
onPlayLevelTeamSelect: (e) ->
if @childWindow and not @childWindow.closed
# We already have a child window open, so we don't need to ask for a team; we'll use its existing team.
e.stopImmediatePropagation()
@onPlayLevel e
onPlayLevel: (e) ->
team = $(e.target).data('team')
sendLevel = =>

View file

@ -1,5 +1,5 @@
ModalView = require 'views/kinds/ModalView'
template = require 'templates/modal/terrain_randomise'
template = require 'templates/editor/level/modal/terrain_randomize'
CocoModel = require 'models/CocoModel'
clusters = {
@ -66,16 +66,17 @@ sizes = {
'borderSize': {
'x':4
'y':4
'thickness':2
}
}
module.exports = class TerrainRandomiseModal extends ModalView
id: 'terrain-randomise-modal'
module.exports = class TerrainRandomizeModal extends ModalView
id: 'terrain-randomize-modal'
template: template
thangs = []
events:
'click .choose-option': 'onRandomise'
'click .choose-option': 'onRandomize'
onRevertModel: (e) ->
id = $(e.target).val()
@ -83,25 +84,25 @@ module.exports = class TerrainRandomiseModal extends ModalView
$(e.target).closest('tr').remove()
@reloadOnClose = true
onRandomise: (e) ->
onRandomize: (e) ->
target = $(e.target)
presetType = target.attr 'data-preset-type'
presetSize = target.attr 'data-preset-size'
@randomiseThangs presetType, presetSize
Backbone.Mediator.publish('randomise:terrain-generated',
@randomizeThangs presetType, presetSize
Backbone.Mediator.publish('randomize:terrain-generated',
'thangs': @thangs
)
@hide()
randomiseThangs: (presetName, presetSize) ->
randomizeThangs: (presetName, presetSize) ->
preset = presets[presetName]
presetSize = sizes[presetSize]
@thangs = []
@randomiseFloor preset, presetSize
@randomiseBorder preset, presetSize
@randomiseDecorations preset, presetSize
@randomizeFloor preset, presetSize
@randomizeBorder preset, presetSize
@randomizeDecorations preset, presetSize
randomiseFloor: (preset, presetSize) ->
randomizeFloor: (preset, presetSize) ->
for i in _.range(0, presetSize.x, sizes.floorSize.x)
for j in _.range(0, presetSize.y, sizes.floorSize.y)
@thangs.push {
@ -112,40 +113,42 @@ module.exports = class TerrainRandomiseModal extends ModalView
}
}
randomiseBorder: (preset, presetSize) ->
randomizeBorder: (preset, presetSize) ->
for i in _.range(0-sizes.floorSize.x/2+sizes.borderSize.x, presetSize.x-sizes.floorSize.x/2, sizes.borderSize.x)
@thangs.push {
'id': @getRandomThang(preset.borders)
'pos': {
'x': i
'y': 0-sizes.floorSize.x/2
for j in _.range(sizes.borderSize.thickness)
@thangs.push {
'id': @getRandomThang(preset.borders)
'pos': {
'x': i + _.random(-sizes.borderSize.x/2, sizes.borderSize.x/2)
'y': 0 - sizes.floorSize.x/2 + _.random(-sizes.borderSize.x/2, sizes.borderSize.x/2)
}
}
}
@thangs.push {
'id': @getRandomThang(preset.borders)
'pos': {
'x': i
'y': presetSize.y - sizes.borderSize.y
@thangs.push {
'id': @getRandomThang(preset.borders)
'pos': {
'x': i + _.random(-sizes.borderSize.x/2, sizes.borderSize.x/2)
'y': presetSize.y - sizes.borderSize.y + _.random(-sizes.borderSize.x/2, sizes.borderSize.x/2)
}
}
}
for i in _.range(0-sizes.floorSize.y/2, presetSize.y-sizes.borderSize.y, sizes.borderSize.y)
@thangs.push {
'id': @getRandomThang(preset.borders)
'pos': {
'x': 0-sizes.floorSize.x/2+sizes.borderSize.x
'y': i
for j in _.range(3)
@thangs.push {
'id': @getRandomThang(preset.borders)
'pos': {
'x': 0-sizes.floorSize.x/2+sizes.borderSize.x + _.random(-sizes.borderSize.y/2, sizes.borderSize.y/2)
'y': i + _.random(-sizes.borderSize.y/2, sizes.borderSize.y/2)
}
}
}
@thangs.push {
'id': @getRandomThang(preset.borders)
'pos': {
'x': presetSize.x - sizes.borderSize.x - sizes.floorSize.x/2
'y': i
@thangs.push {
'id': @getRandomThang(preset.borders)
'pos': {
'x': presetSize.x - sizes.borderSize.x - sizes.floorSize.x/2 + _.random(-sizes.borderSize.y/2, sizes.borderSize.y/2)
'y': i + _.random(-sizes.borderSize.y/2, sizes.borderSize.y/2)
}
}
}
randomiseDecorations: (preset, presetSize)->
randomizeDecorations: (preset, presetSize)->
for name, decoration of preset.decorations
for num in _.range(_.random(decoration.num[0], decoration.num[1]))
center =

View file

@ -43,7 +43,7 @@ module.exports = class ThangsTabView extends View
'sprite:mouse-up': 'onSpriteMouseUp'
'sprite:double-clicked': 'onSpriteDoubleClicked'
'surface:stage-mouse-up': 'onStageMouseUp'
'randomise:terrain-generated': 'onRandomiseTerrain'
'randomize:terrain-generated': 'onRandomizeTerrain'
events:
'click #extant-thangs-filter button': 'onFilterExtantThangs'
@ -224,10 +224,14 @@ module.exports = class ThangsTabView extends View
return unless e.thang
@editThang thangID: e.thang.id
onRandomiseTerrain: (e) ->
onRandomizeTerrain: (e) ->
@thangsBatch = []
nonRandomThangs = (thang for thang in @thangsTreema.get('') when not /Random/.test thang.id)
@thangsTreema.set '', nonRandomThangs
for thang in e.thangs
@selectAddThangType thang.id
@addThang @addThangType, thang.pos
@addThang @addThangType, thang.pos, true
@batchInsert()
@selectAddThangType null
# TODO: figure out a good way to have all Surface clicks and Treema clicks just proxy in one direction, so we can maintain only one way of handling selection and deletion
@ -397,8 +401,15 @@ module.exports = class ThangsTabView extends View
id = treema?.data?.id
@editThang thangID: id if id
addThang: (thangType, pos) ->
thangID = Thang.nextID(thangType.get('name'), @world) until thangID and not @thangsTreema.get "id=#{thangID}"
batchInsert: ->
@thangsTreema.set '', @thangsTreema.get('').concat(@thangsBatch)
@thangsBatch = []
addThang: (thangType, pos, batchInsert=false) ->
if batchInsert
thangID = "Random #{thangType.get('name')} #{@thangsBatch.length}"
else
thangID = Thang.nextID(thangType.get('name'), @world) until thangID and not @thangsTreema.get "id=#{thangID}"
if @cloneSourceThang
components = _.cloneDeep @thangsTreema.get "id=#{@cloneSourceThang.id}/components"
@selectAddThang null
@ -408,7 +419,10 @@ module.exports = class ThangsTabView extends View
physical = _.find components, (c) -> c.config?.pos?
physical.config.pos = x: pos.x, y: pos.y, z: physical.config.pos.z if physical
thang = thangType: thangType.get('original'), id: thangID, components: components
@thangsTreema.insert '', thang
if batchInsert
@thangsBatch.push thang
else
@thangsTreema.insert '', thang
editThang: (e) ->
if e.target # click event

View file

@ -177,6 +177,7 @@ module.exports = class CocoView extends Backbone.View
$('#modal-wrapper .modal').modal(modalOptions).on 'hidden.bs.modal', @modalClosed
window.currentModal = modalView
@getRootView().stopListeningToShortcuts(true)
Backbone.Mediator.publish 'modal-opened', {}
modalClosed: =>
visibleModal.willDisappear() if visibleModal
@ -190,7 +191,7 @@ module.exports = class CocoView extends Backbone.View
@openModalView(wm)
else
@getRootView().listenToShortcuts(true)
Backbone.Mediator.publish 'modal-closed'
Backbone.Mediator.publish 'modal-closed', {}
# Loading RootViews

View file

@ -73,6 +73,7 @@ module.exports = class MyMatchesTabView extends CocoView
sessionID: opponent.sessionID
stale: match.date < submitDate
fresh: fresh
codeLanguage: match.codeLanguage
}
for team in @teams

View file

@ -15,6 +15,15 @@ module.exports = class LadderPlayModal extends View
events:
'click #skip-tutorial-button': 'hideTutorialButtons'
'change #tome-language': 'updateLanguage'
defaultAceConfig:
language: 'javascript'
keyBindings: 'default'
invisibles: false
indentGuides: false
behaviors: false
liveCompletion: true
constructor: (options, @level, @session, @team) ->
super(options)
@ -23,8 +32,14 @@ module.exports = class LadderPlayModal extends View
@startLoadingChallengersMaybe()
@wizardType = ThangType.loadUniversalWizard()
# PART 1: Load challengers from the db unless some are in the matches
updateLanguage: ->
aceConfig = _.cloneDeep me.get('aceConfig') ? {}
aceConfig = _.defaults aceConfig, @defaultAceConfig
aceConfig.language = @$el.find('#tome-language').val()
me.set 'aceConfig', aceConfig
me.patch()
# PART 1: Load challengers from the db unless some are in the matches
startLoadingChallengersMaybe: ->
matches = @session?.get('matches')
if matches?.length then @loadNames() else @loadChallengers()
@ -73,7 +88,14 @@ module.exports = class LadderPlayModal extends View
ctx.teamID = @team
ctx.otherTeamID = @otherTeam
ctx.tutorialLevelExists = @tutorialLevelExists
ctx.languages = [
{id: 'javascript', name: 'JavaScript'}
{id: 'coffeescript', name: 'CoffeeScript'}
{id: 'python', name: 'Python (Experimental)'}
{id: 'clojure', name: 'Clojure (Experimental)'}
{id: 'lua', name: 'Lua (Experimental)'}
{id: 'io', name: 'Io (Experimental)'}
]
teamsList = teamDataFromLevel @level
teams = {}
teams[team.id] = team for team in teamsList
@ -154,7 +176,8 @@ module.exports = class LadderPlayModal extends View
return unless session
return {
sessionID: session.id
opponentID: session.get('creator')
opponentID: session.get 'creator'
codeLanguage: session.get 'submittedCodeLanguage'
}
challengeInfoFromMatches: (matches) ->
@ -164,6 +187,7 @@ module.exports = class LadderPlayModal extends View
return {
sessionID: opponent.sessionID
opponentID: opponent.userID
codeLanguage: opponent.codeLanguage
}
class ChallengersData

View file

@ -138,7 +138,13 @@ module.exports = class PlayLevelView extends View
supermodel: @supermodel
firstOnly: true
@openModalView(new DocsModal(options), true)
Backbone.Mediator.subscribeOnce 'modal-closed', @onLevelStarted, @
onGuideOpened = ->
@guideOpenTime = new Date()
onGuideClosed = ->
application.tracker?.trackTiming new Date() - @guideOpenTime, 'Intro Guide Time', @levelID, @levelID, 100
@onLevelStarted()
Backbone.Mediator.subscribeOnce 'modal-opened', onGuideOpened, @
Backbone.Mediator.subscribeOnce 'modal-closed', onGuideClosed, @
return true
getRenderData: ->
@ -281,7 +287,7 @@ module.exports = class PlayLevelView extends View
@surface.showLevel()
if @otherSession
# TODO: colorize name and cloud by team, colorize wizard by user's color config
@surface.createOpponentWizard id: @otherSession.get('creator'), name: @otherSession.get('creatorName'), team: @otherSession.get('team'), levelSlug: @level.get('slug')
@surface.createOpponentWizard id: @otherSession.get('creator'), name: @otherSession.get('creatorName'), team: @otherSession.get('team'), levelSlug: @level.get('slug'), codeLanguage: @otherSession.get('submittedCodeLanguage')
@loadingView?.unveil()
onLoadingViewUnveiled: (e) ->

View file

@ -64,7 +64,7 @@ exports.config =
'stylesheets/app.css': /^(app|vendor|bower_components)/
order:
before: [
'app/styles/bootstrap.scss'
'app/styles/bootstrap/*'
'vendor/styles/nanoscroller.scss'
]
templates:

View file

@ -91,6 +91,8 @@ work = () ->
return
Math.random = self.world.rand.randf # so user code is predictable
Aether.replaceBuiltin('Math', Math)
replacedLoDash = _.runInContext(self)
_[key] = replacedLoDash[key] for key, val of replacedLoDash
console.log 'Loading frames.'
self.postMessage type: 'start-load-frames'

View file

@ -155,7 +155,7 @@ LevelHandler = class LevelHandler extends Handler
sortParameters =
'totalScore': req.query.order
selectProperties = ['totalScore', 'creatorName', 'creator']
selectProperties = ['totalScore', 'creatorName', 'creator', 'submittedCodeLanguage']
query = Session
.find(sessionsQueryParameters)

View file

@ -579,6 +579,7 @@ addMatchToSessions = (newScoreObject, callback) ->
matchObject.opponents[sessionID].totalScore = session.totalScore
matchObject.opponents[sessionID].metrics = {}
matchObject.opponents[sessionID].metrics.rank = Number(newScoreObject[sessionID]?.gameRanking ? 0)
matchObject.opponents[sessionID].codeLanguage = newScoreObject[sessionID].submittedCodeLanguage
#log.info "Match object computed, result: #{matchObject}"
#log.info 'Writing match object to database...'
@ -595,6 +596,7 @@ updateMatchesInSession = (matchObject, sessionID, callback) ->
opponentsClone = _.omit opponentsClone, sessionID
opponentsArray = _.toArray opponentsClone
currentMatchObject.opponents = opponentsArray
currentMatchObject.codeLanguage = matchObject.opponents[opponentsArray[0].sessionID].codeLanguage
LevelSession.findOne {'_id': sessionID}, (err, session) ->
session = session.toObject()
currentMatchObject.playtime = session.playtime ? 0
@ -770,6 +772,7 @@ retrieveOldSessionData = (sessionID, callback) ->
'meanStrength': session.meanStrength ? 25
'totalScore': session.totalScore ? (25 - 1.8*(25/3))
'id': sessionID
'submittedCodeLanguage': session.submittedCodeLanguage
callback err, oldScoreObject
markSessionAsDoneRanking = (sessionID, cb) ->

View file

@ -70,16 +70,24 @@ setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly = (app) ->
return next() if req.query['try-old-browser-anyway'] or not isOldBrowser req
res.sendfile(path.join(__dirname, 'public', 'index_old_browser.html'))
<<<<<<< HEAD
setupRedirectMiddleware = (app) ->
app.all '/account/profile/*', (req, res, next) ->
nameOrID = req.path.split('/')[3]
res.redirect 301, "/user/#{nameOrID}/profile"
=======
setupTrailingSlashRemovingMiddleware = (app) ->
app.use (req, res, next) ->
return res.redirect 301, req.url[...-1] if req.url.length > 1 and req.url.slice(-1) is '/'
next()
>>>>>>> master
exports.setupMiddleware = (app) ->
setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly app
setupExpressMiddleware app
setupPassportMiddleware app
setupOneSecondDelayMiddleware app
setupTrailingSlashRemovingMiddleware app
setupRedirectMiddleware app
###Routing function implementations###