From c6caef6219fdf563084706efc75cea487011da6c Mon Sep 17 00:00:00 2001 From: Jayant Jain Date: Mon, 11 Aug 2014 05:33:39 +0530 Subject: [PATCH 01/37] Undo redo descriptions for ThangsTabView --- app/views/editor/level/LevelEditView.coffee | 8 ++++ .../editor/level/thangs/ThangsTabView.coffee | 47 +++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/app/views/editor/level/LevelEditView.coffee b/app/views/editor/level/LevelEditView.coffee index 8e489291e..02ba073d5 100644 --- a/app/views/editor/level/LevelEditView.coffee +++ b/app/views/editor/level/LevelEditView.coffee @@ -32,7 +32,9 @@ module.exports = class LevelEditView extends RootView 'click #fork-level-start-button': 'startForkingLevel' 'click #level-history-button': 'showVersionHistory' 'click #undo-button': 'onUndo' + 'mouseenter #undo-button': 'showUndoDescription' 'click #redo-button': 'onRedo' + 'mouseenter #redo-button': 'showRedoDescription' 'click #patches-tab': -> @patchesView.load() 'click #components-tab': -> @subviews.editor_level_components_tab_view.refreshLevelThangsTreema @level.get('thangs') 'click #level-patch-button': 'startPatchingLevel' @@ -113,6 +115,12 @@ module.exports = class LevelEditView extends RootView onRedo: -> @getCurrentView()?.redo?() + showUndoDescription: -> + @getCurrentView()?.showUndoDescription() + + showRedoDescription: -> + @getCurrentView()?.showRedoDescription() + getCurrentView: -> tabText = _.string.underscored $('li.active')[0]?.textContent currentView = @subviews["editor_level_#{tabText}_tab_view"] diff --git a/app/views/editor/level/thangs/ThangsTabView.coffee b/app/views/editor/level/thangs/ThangsTabView.coffee index 3f9b1250f..30896614e 100644 --- a/app/views/editor/level/thangs/ThangsTabView.coffee +++ b/app/views/editor/level/thangs/ThangsTabView.coffee @@ -485,6 +485,20 @@ module.exports = class ThangsTabView extends CocoView redo: (e) -> if not @editThangView then @thangsTreema.redo() else @editThangView.redo() + showUndoDescription: -> + if @editThangView + @editThangView.showUndoDescription() + else + undoDescription = @thangsTreema.getUndoDescription() + titleText = $('#undo-button').attr('title', 'Undo ' + undoDescription + ' (Ctrl+Z)') + + showRedoDescription: -> + if @editThangView + @editThangView.showRedoDescription() + else + redoDescription = @thangsTreema.getRedoDescription() + titleText = $('#redo-button').attr('title', 'Redo ' + redoDescription + ' (Ctrl+Shift+Z)') + class ThangsNode extends TreemaNode.nodeMap.array valueClass: 'treema-array-replacement' getChildren: -> @@ -492,6 +506,39 @@ class ThangsNode extends TreemaNode.nodeMap.array # TODO: add some filtering to only work with certain types of units at a time return children + getUndoDescription: -> + trackedActions = @getTrackedActions() + currentStateIndex = @getCurrentStateIndex() + if currentStateIndex then return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) else return '' + + getRedoDescription: -> + trackedActions = @getTrackedActions() + currentStateIndex = @getCurrentStateIndex() + if currentStateIndex isnt trackedActions.length + return @getTrackedActionDescription trackedActions[currentStateIndex] + else + return '' + + getTrackedActionDescription: (trackedAction) -> + switch trackedAction.action + when 'insert' + trackedActionDescription = 'Add New Thang' + + when 'delete' + trackedActionDescription = 'Delete Thang' + + when 'edit' + path = trackedAction.path.split '/' + if path[path.length-1] is 'pos' + trackedActionDescription = 'Move Thang' + else + trackedActionDescription = 'Edit Thang' + + else + trackedActionDescription = '' + + trackedActionDescription + class ThangNode extends TreemaObjectNode valueClass: 'treema-thang' collection: false From 9c235fa7976ca3b048c1d71b41ed996b1c148d70 Mon Sep 17 00:00:00 2001 From: Jayant Jain Date: Mon, 11 Aug 2014 21:56:36 +0530 Subject: [PATCH 02/37] Minor refactoring and bug fixes for undo and undo descriptions --- .../editor/level/scripts/ScriptsTabView.coffee | 18 ++++++++++++++---- .../editor/level/thangs/ThangsTabView.coffee | 9 ++++----- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/app/views/editor/level/scripts/ScriptsTabView.coffee b/app/views/editor/level/scripts/ScriptsTabView.coffee index a53b2c383..ba6c2c62b 100644 --- a/app/views/editor/level/scripts/ScriptsTabView.coffee +++ b/app/views/editor/level/scripts/ScriptsTabView.coffee @@ -39,23 +39,27 @@ module.exports = class ScriptsTabView extends CocoView onScriptsChanged: (e) => @level.set 'scripts', @scriptsTreema.data - lastAction = @scriptsTreema.trackedActions[@scriptsTreema.trackedActions.length - 1] + lastAction = @scriptsTreema.trackedActions[@scriptsTreema.getCurrentStateIndex() - 1] return unless lastAction if lastAction.action is 'insert' and lastAction.parentPath is '/' newScript = @scriptsTreema.get lastAction.path if newScript.id is undefined + @scriptsTreema.disableTracking() @scriptsTreema.set lastAction.path+'/id', 'Script-' + @scriptsTreema.data.length + @scriptsTreema.enableTracking() @scriptTreema.refreshDisplay() if lastAction.action is 'delete' and lastAction.parentPath[0] is '/' for key, treema of @scriptsTreema.childrenTreemas key = parseInt(key) + treema.disableTracking() if /Script-[0-9]*/.test treema.data.id existingKey = parseInt(treema.data.id.substr(7)) if existingKey isnt key+1 treema.set 'id', 'Script-' + (key+1) - + treema.enableTracking() + onScriptSelected: (e, selected) => selected = if selected.length > 1 then selected[0].getLastSelectedTreema() else selected[0] unless selected @@ -103,10 +107,16 @@ module.exports = class ScriptsTabView extends CocoView @scriptsTreema.set(@selectedScriptPath, @scriptTreema.data) undo: -> - @scriptsTreema.undo() if @scriptTreema.undo() is undefined + if @scriptTreema.canUndo() then @scriptTreema.undo() else @scriptsTreema.undo() redo: -> - @scriptsTreema.redo() if @scriptTreema.redo() is undefined + if @scriptTreema.canRedo() then @scriptTreema.redo() else @scriptsTreema.redo() + + showUndoDescription: -> + return + + showRedoDescription: -> + return class ScriptNode extends TreemaObjectNode valueClass: 'treema-script' diff --git a/app/views/editor/level/thangs/ThangsTabView.coffee b/app/views/editor/level/thangs/ThangsTabView.coffee index 30896614e..5d3c17d1f 100644 --- a/app/views/editor/level/thangs/ThangsTabView.coffee +++ b/app/views/editor/level/thangs/ThangsTabView.coffee @@ -507,17 +507,16 @@ class ThangsNode extends TreemaNode.nodeMap.array return children getUndoDescription: -> + return '' unless @canUndo() trackedActions = @getTrackedActions() currentStateIndex = @getCurrentStateIndex() - if currentStateIndex then return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) else return '' + return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) getRedoDescription: -> + return '' unless @canRedo() trackedActions = @getTrackedActions() currentStateIndex = @getCurrentStateIndex() - if currentStateIndex isnt trackedActions.length - return @getTrackedActionDescription trackedActions[currentStateIndex] - else - return '' + return @getTrackedActionDescription trackedActions[currentStateIndex] getTrackedActionDescription: (trackedAction) -> switch trackedAction.action From d713c35db705b76d7cf29f603441f309166c3554 Mon Sep 17 00:00:00 2001 From: Jayant Jain Date: Mon, 11 Aug 2014 23:14:57 +0530 Subject: [PATCH 03/37] Refactors auto insert ids and adds undo-redo descriptions for ScriptsTabView --- .../level/scripts/ScriptsTabView.coffee | 125 ++++++++++++++---- 1 file changed, 102 insertions(+), 23 deletions(-) diff --git a/app/views/editor/level/scripts/ScriptsTabView.coffee b/app/views/editor/level/scripts/ScriptsTabView.coffee index ba6c2c62b..84487a802 100644 --- a/app/views/editor/level/scripts/ScriptsTabView.coffee +++ b/app/views/editor/level/scripts/ScriptsTabView.coffee @@ -28,7 +28,10 @@ module.exports = class ScriptsTabView extends CocoView callbacks: change: @onScriptsChanged select: @onScriptSelected + addChild: @onNewScriptAdded + removeChild: @onScriptDeleted nodeClasses: + array: ScriptsNode object: ScriptNode view: @ @scriptsTreema = @$el.find('#scripts-treema').treema treemaOptions @@ -39,26 +42,6 @@ module.exports = class ScriptsTabView extends CocoView onScriptsChanged: (e) => @level.set 'scripts', @scriptsTreema.data - lastAction = @scriptsTreema.trackedActions[@scriptsTreema.getCurrentStateIndex() - 1] - return unless lastAction - - if lastAction.action is 'insert' and lastAction.parentPath is '/' - newScript = @scriptsTreema.get lastAction.path - if newScript.id is undefined - @scriptsTreema.disableTracking() - @scriptsTreema.set lastAction.path+'/id', 'Script-' + @scriptsTreema.data.length - @scriptsTreema.enableTracking() - @scriptTreema.refreshDisplay() - - if lastAction.action is 'delete' and lastAction.parentPath[0] is '/' - for key, treema of @scriptsTreema.childrenTreemas - key = parseInt(key) - treema.disableTracking() - if /Script-[0-9]*/.test treema.data.id - existingKey = parseInt(treema.data.id.substr(7)) - if existingKey isnt key+1 - treema.set 'id', 'Script-' + (key+1) - treema.enableTracking() onScriptSelected: (e, selected) => selected = if selected.length > 1 then selected[0].getLastSelectedTreema() else selected[0] @@ -82,6 +65,7 @@ module.exports = class ScriptsTabView extends CocoView callbacks: change: @onScriptChanged nodeClasses: + object: PropertiesNode 'event-value-chain': EventPropsNode 'event-prereqs': EventPrereqsNode 'event-prereq': EventPrereqNode @@ -103,20 +87,80 @@ module.exports = class ScriptsTabView extends CocoView getThangIDs: -> (t.id for t in @level.get('thangs') when t.id isnt 'Interface') + onNewScriptAdded: (scriptNode) => + return unless scriptNode + if scriptNode.data.id is undefined + scriptNode.disableTracking() + scriptNode.set '/id', 'Script-' + @scriptsTreema.data.length + scriptNode.enableTracking() + + onScriptDeleted: => + for key, treema of @scriptsTreema.childrenTreemas + key = parseInt(key) + treema.disableTracking() + if /Script-[0-9]*/.test treema.data.id + existingKey = parseInt(treema.data.id.substr(7)) + if existingKey isnt key+1 + treema.set 'id', 'Script-' + (key+1) + treema.enableTracking() + onScriptChanged: => @scriptsTreema.set(@selectedScriptPath, @scriptTreema.data) undo: -> if @scriptTreema.canUndo() then @scriptTreema.undo() else @scriptsTreema.undo() - + redo: -> if @scriptTreema.canRedo() then @scriptTreema.redo() else @scriptsTreema.redo() showUndoDescription: -> - return + if @scriptTreema.canUndo() + undoDescription = @scriptTreema.getUndoDescription() + else + undoDescription = @scriptsTreema.getUndoDescription() + titleText = $('#undo-button').attr('title', 'Undo ' + undoDescription + ' (Ctrl+Z)') showRedoDescription: -> - return + if @scriptTreema.canRedo() + redoDescription = @scriptTreema.getRedoDescription() + else + redoDescription = @scriptsTreema.getRedoDescription() + titleText = $('#redo-button').attr('title', 'Redo ' + redoDescription + ' (Ctrl+Shift+Z)') + +class ScriptsNode extends TreemaArrayNode + addNewChild: -> + newTreema = super() + if @callbacks.addChild + @callbacks.addChild newTreema + newTreema + + getUndoDescription: -> + return '' unless @canUndo() + trackedActions = @getTrackedActions() + currentStateIndex = @getCurrentStateIndex() + return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) + + getRedoDescription: -> + return '' unless @canRedo() + trackedActions = @getTrackedActions() + currentStateIndex = @getCurrentStateIndex() + return @getTrackedActionDescription trackedActions[currentStateIndex] + + getTrackedActionDescription: (trackedAction) -> + switch trackedAction.action + when 'insert' + trackedActionDescription = 'Add New Script' + + when 'delete' + trackedActionDescription = 'Delete Script' + + when 'edit' + path = trackedAction.path.split '/' + trackedActionDescription = 'Edit Script' + + else + trackedActionDescription = '' + trackedActionDescription class ScriptNode extends TreemaObjectNode valueClass: 'treema-script' @@ -130,6 +174,12 @@ class ScriptNode extends TreemaObjectNode @tabToCurrentScript() e.preventDefault() + onDeletePressed: (e) -> + returnVal = super(e) + if @callbacks.removeChild + @callbacks.removeChild() + returnVal + onRightArrowPressed: -> @tabToCurrentScript() @@ -140,6 +190,35 @@ class ScriptNode extends TreemaObjectNode return unless firstRow? firstRow.select() +class PropertiesNode extends TreemaObjectNode + getUndoDescription: -> + return '' unless @canUndo() + trackedActions = @getTrackedActions() + currentStateIndex = @getCurrentStateIndex() + return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) + + getRedoDescription: -> + return '' unless @canRedo() + trackedActions = @getTrackedActions() + currentStateIndex = @getCurrentStateIndex() + return @getTrackedActionDescription trackedActions[currentStateIndex] + + getTrackedActionDescription: (trackedAction) -> + switch trackedAction.action + when 'insert' + trackedActionDescription = 'Add New Script Property' + + when 'delete' + trackedActionDescription = 'Delete Script Property' + + when 'edit' + path = trackedAction.path.split '/' + trackedActionDescription = 'Edit Script Property' + + else + trackedActionDescription = '' + trackedActionDescription + class EventPropsNode extends TreemaNode.nodeMap.string valueClass: 'treema-event-props' From 67ed28e034859e08e46ebbf03ac95149d5d11770 Mon Sep 17 00:00:00 2001 From: Jayant Jain Date: Wed, 13 Aug 2014 02:55:05 +0530 Subject: [PATCH 04/37] Undo redo descriptions for settings tab view --- .../level/settings/SettingsTabView.coffee | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/app/views/editor/level/settings/SettingsTabView.coffee b/app/views/editor/level/settings/SettingsTabView.coffee index 5133dd6ba..87d464118 100644 --- a/app/views/editor/level/settings/SettingsTabView.coffee +++ b/app/views/editor/level/settings/SettingsTabView.coffee @@ -39,6 +39,7 @@ module.exports = class SettingsTabView extends CocoView callbacks: {change: @onSettingsChanged} thangIDs: thangIDs nodeClasses: + object: SettingsNode thang: nodes.ThangNode @settingsTreema = @$el.find('#settings-treema').treema treemaOptions @@ -59,3 +60,39 @@ module.exports = class SettingsTabView extends CocoView redo: -> @settingsTreema.redo() + + showUndoDescription: -> + titleText = $('#undo-button').attr('title', 'Undo ' + @settingsTreema.getUndoDescription() + ' (Ctrl+Z)') + + showRedoDescription: -> + titleText = $('#redo-button').attr('title', 'Redo ' + @settingsTreema.getRedoDescription() + ' (Ctrl+Shift+Z)') + + +class SettingsNode extends TreemaObjectNode + getUndoDescription: -> + return '' unless @canUndo() + trackedActions = @getTrackedActions() + currentStateIndex = @getCurrentStateIndex() + return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) + + getRedoDescription: -> + return '' unless @canRedo() + trackedActions = @getTrackedActions() + currentStateIndex = @getCurrentStateIndex() + return @getTrackedActionDescription trackedActions[currentStateIndex] + + getTrackedActionDescription: (trackedAction) -> + switch trackedAction.action + when 'insert' + trackedActionDescription = 'Add New Setting' + + when 'delete' + trackedActionDescription = 'Delete Setting' + + when 'edit' + path = trackedAction.path.split '/' + trackedActionDescription = 'Edit Setting' + + else + trackedActionDescription = '' + trackedActionDescription From 094f26fc6353e6b1204190e447c98a1a5b4d3c3e Mon Sep 17 00:00:00 2001 From: Jayant Jain Date: Wed, 13 Aug 2014 05:28:23 +0530 Subject: [PATCH 05/37] Removes undo-redo description methods from treema subclasses --- .../level/scripts/ScriptsTabView.coffee | 57 +------------------ .../level/settings/SettingsTabView.coffee | 28 +-------- .../editor/level/thangs/ThangsTabView.coffee | 42 ++++---------- 3 files changed, 13 insertions(+), 114 deletions(-) diff --git a/app/views/editor/level/scripts/ScriptsTabView.coffee b/app/views/editor/level/scripts/ScriptsTabView.coffee index 84487a802..e3ea56388 100644 --- a/app/views/editor/level/scripts/ScriptsTabView.coffee +++ b/app/views/editor/level/scripts/ScriptsTabView.coffee @@ -128,40 +128,13 @@ module.exports = class ScriptsTabView extends CocoView titleText = $('#redo-button').attr('title', 'Redo ' + redoDescription + ' (Ctrl+Shift+Z)') class ScriptsNode extends TreemaArrayNode + nodeDescription: 'Script' addNewChild: -> newTreema = super() if @callbacks.addChild @callbacks.addChild newTreema newTreema - getUndoDescription: -> - return '' unless @canUndo() - trackedActions = @getTrackedActions() - currentStateIndex = @getCurrentStateIndex() - return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) - - getRedoDescription: -> - return '' unless @canRedo() - trackedActions = @getTrackedActions() - currentStateIndex = @getCurrentStateIndex() - return @getTrackedActionDescription trackedActions[currentStateIndex] - - getTrackedActionDescription: (trackedAction) -> - switch trackedAction.action - when 'insert' - trackedActionDescription = 'Add New Script' - - when 'delete' - trackedActionDescription = 'Delete Script' - - when 'edit' - path = trackedAction.path.split '/' - trackedActionDescription = 'Edit Script' - - else - trackedActionDescription = '' - trackedActionDescription - class ScriptNode extends TreemaObjectNode valueClass: 'treema-script' collection: false @@ -191,33 +164,7 @@ class ScriptNode extends TreemaObjectNode firstRow.select() class PropertiesNode extends TreemaObjectNode - getUndoDescription: -> - return '' unless @canUndo() - trackedActions = @getTrackedActions() - currentStateIndex = @getCurrentStateIndex() - return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) - - getRedoDescription: -> - return '' unless @canRedo() - trackedActions = @getTrackedActions() - currentStateIndex = @getCurrentStateIndex() - return @getTrackedActionDescription trackedActions[currentStateIndex] - - getTrackedActionDescription: (trackedAction) -> - switch trackedAction.action - when 'insert' - trackedActionDescription = 'Add New Script Property' - - when 'delete' - trackedActionDescription = 'Delete Script Property' - - when 'edit' - path = trackedAction.path.split '/' - trackedActionDescription = 'Edit Script Property' - - else - trackedActionDescription = '' - trackedActionDescription + nodeDescription: 'Script Property' class EventPropsNode extends TreemaNode.nodeMap.string valueClass: 'treema-event-props' diff --git a/app/views/editor/level/settings/SettingsTabView.coffee b/app/views/editor/level/settings/SettingsTabView.coffee index 87d464118..9497fa78e 100644 --- a/app/views/editor/level/settings/SettingsTabView.coffee +++ b/app/views/editor/level/settings/SettingsTabView.coffee @@ -69,30 +69,4 @@ module.exports = class SettingsTabView extends CocoView class SettingsNode extends TreemaObjectNode - getUndoDescription: -> - return '' unless @canUndo() - trackedActions = @getTrackedActions() - currentStateIndex = @getCurrentStateIndex() - return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) - - getRedoDescription: -> - return '' unless @canRedo() - trackedActions = @getTrackedActions() - currentStateIndex = @getCurrentStateIndex() - return @getTrackedActionDescription trackedActions[currentStateIndex] - - getTrackedActionDescription: (trackedAction) -> - switch trackedAction.action - when 'insert' - trackedActionDescription = 'Add New Setting' - - when 'delete' - trackedActionDescription = 'Delete Setting' - - when 'edit' - path = trackedAction.path.split '/' - trackedActionDescription = 'Edit Setting' - - else - trackedActionDescription = '' - trackedActionDescription + nodeDescription: 'Settings' \ No newline at end of file diff --git a/app/views/editor/level/thangs/ThangsTabView.coffee b/app/views/editor/level/thangs/ThangsTabView.coffee index 5d3c17d1f..31b6e9dba 100644 --- a/app/views/editor/level/thangs/ThangsTabView.coffee +++ b/app/views/editor/level/thangs/ThangsTabView.coffee @@ -501,42 +501,20 @@ module.exports = class ThangsTabView extends CocoView class ThangsNode extends TreemaNode.nodeMap.array valueClass: 'treema-array-replacement' + nodeDescription: 'Thang' + + getTrackedActionDescription: (trackedAction) -> + trackedActionDescription = super(trackedAction) + if trackedActionDescription is 'Edit ' + @nodeDescription + path = trackedAction.path.split '/' + if path[path.length-1] is 'pos' + trackedActionDescription = 'Move Thang' + trackedActionDescription + getChildren: -> children = super(arguments...) # TODO: add some filtering to only work with certain types of units at a time return children - - getUndoDescription: -> - return '' unless @canUndo() - trackedActions = @getTrackedActions() - currentStateIndex = @getCurrentStateIndex() - return @getTrackedActionDescription( trackedActions[currentStateIndex - 1] ) - - getRedoDescription: -> - return '' unless @canRedo() - trackedActions = @getTrackedActions() - currentStateIndex = @getCurrentStateIndex() - return @getTrackedActionDescription trackedActions[currentStateIndex] - - getTrackedActionDescription: (trackedAction) -> - switch trackedAction.action - when 'insert' - trackedActionDescription = 'Add New Thang' - - when 'delete' - trackedActionDescription = 'Delete Thang' - - when 'edit' - path = trackedAction.path.split '/' - if path[path.length-1] is 'pos' - trackedActionDescription = 'Move Thang' - else - trackedActionDescription = 'Edit Thang' - - else - trackedActionDescription = '' - - trackedActionDescription class ThangNode extends TreemaObjectNode valueClass: 'treema-thang' From 1e52f237b78564285d1ddadf5f9d76634239f4f3 Mon Sep 17 00:00:00 2001 From: Jayant Jain Date: Wed, 13 Aug 2014 06:56:03 +0530 Subject: [PATCH 06/37] Reworks undo-redo and undo-redo descriptions --- .../component/ThangComponentConfigView.coffee | 6 ------ app/views/editor/level/LevelEditView.coffee | 10 ++++++---- .../level/scripts/ScriptsTabView.coffee | 20 ------------------- .../level/settings/SettingsTabView.coffee | 13 ------------ .../level/systems/LevelSystemEditView.coffee | 12 ----------- .../level/systems/SystemsTabView.coffee | 7 ------- .../level/thangs/LevelThangEditView.coffee | 8 -------- .../editor/level/thangs/ThangsTabView.coffee | 20 ------------------- 8 files changed, 6 insertions(+), 90 deletions(-) diff --git a/app/views/editor/component/ThangComponentConfigView.coffee b/app/views/editor/component/ThangComponentConfigView.coffee index 81c86d331..1d2a78bb1 100644 --- a/app/views/editor/component/ThangComponentConfigView.coffee +++ b/app/views/editor/component/ThangComponentConfigView.coffee @@ -71,10 +71,4 @@ module.exports = class ThangComponentConfigView extends CocoView @changed = true @trigger 'changed', { component: @component, config: @data() } - undo: -> - @editThangTreema.undo() - - redo: -> - @editThangTreema.redo() - data: -> @editThangTreema.data diff --git a/app/views/editor/level/LevelEditView.coffee b/app/views/editor/level/LevelEditView.coffee index 02ba073d5..c5a542f5f 100644 --- a/app/views/editor/level/LevelEditView.coffee +++ b/app/views/editor/level/LevelEditView.coffee @@ -110,16 +110,18 @@ module.exports = class LevelEditView extends RootView @childWindow.focus() onUndo: -> - @getCurrentView()?.undo?() + TreemaNode.getLastTreemaWithFocus()?.undo() onRedo: -> - @getCurrentView()?.redo?() + TreemaNode.getLastTreemaWithFocus()?.redo() showUndoDescription: -> - @getCurrentView()?.showUndoDescription() + undoDescription = TreemaNode.getLastTreemaWithFocus().getUndoDescription() + @$el.find('#undo-button').attr('title', 'Undo ' + undoDescription + ' (Ctrl+Z)') showRedoDescription: -> - @getCurrentView()?.showRedoDescription() + redoDescription = TreemaNode.getLastTreemaWithFocus().getRedoDescription() + @$el.find('#redo-button').attr('title', 'Redo ' + redoDescription + ' (Ctrl+Shift+Z)') getCurrentView: -> tabText = _.string.underscored $('li.active')[0]?.textContent diff --git a/app/views/editor/level/scripts/ScriptsTabView.coffee b/app/views/editor/level/scripts/ScriptsTabView.coffee index e3ea56388..b6bbe6f7f 100644 --- a/app/views/editor/level/scripts/ScriptsTabView.coffee +++ b/app/views/editor/level/scripts/ScriptsTabView.coffee @@ -107,26 +107,6 @@ module.exports = class ScriptsTabView extends CocoView onScriptChanged: => @scriptsTreema.set(@selectedScriptPath, @scriptTreema.data) - undo: -> - if @scriptTreema.canUndo() then @scriptTreema.undo() else @scriptsTreema.undo() - - redo: -> - if @scriptTreema.canRedo() then @scriptTreema.redo() else @scriptsTreema.redo() - - showUndoDescription: -> - if @scriptTreema.canUndo() - undoDescription = @scriptTreema.getUndoDescription() - else - undoDescription = @scriptsTreema.getUndoDescription() - titleText = $('#undo-button').attr('title', 'Undo ' + undoDescription + ' (Ctrl+Z)') - - showRedoDescription: -> - if @scriptTreema.canRedo() - redoDescription = @scriptTreema.getRedoDescription() - else - redoDescription = @scriptsTreema.getRedoDescription() - titleText = $('#redo-button').attr('title', 'Redo ' + redoDescription + ' (Ctrl+Shift+Z)') - class ScriptsNode extends TreemaArrayNode nodeDescription: 'Script' addNewChild: -> diff --git a/app/views/editor/level/settings/SettingsTabView.coffee b/app/views/editor/level/settings/SettingsTabView.coffee index 9497fa78e..cf2c57196 100644 --- a/app/views/editor/level/settings/SettingsTabView.coffee +++ b/app/views/editor/level/settings/SettingsTabView.coffee @@ -55,18 +55,5 @@ module.exports = class SettingsTabView extends CocoView continue if @settingsTreema.data[key] is undefined @level.set key, @settingsTreema.data[key] - undo: -> - @settingsTreema.undo() - - redo: -> - @settingsTreema.redo() - - showUndoDescription: -> - titleText = $('#undo-button').attr('title', 'Undo ' + @settingsTreema.getUndoDescription() + ' (Ctrl+Z)') - - showRedoDescription: -> - titleText = $('#redo-button').attr('title', 'Redo ' + @settingsTreema.getRedoDescription() + ' (Ctrl+Shift+Z)') - - class SettingsNode extends TreemaObjectNode nodeDescription: 'Settings' \ No newline at end of file diff --git a/app/views/editor/level/systems/LevelSystemEditView.coffee b/app/views/editor/level/systems/LevelSystemEditView.coffee index 89c52faae..b1bcf8f67 100644 --- a/app/views/editor/level/systems/LevelSystemEditView.coffee +++ b/app/views/editor/level/systems/LevelSystemEditView.coffee @@ -115,18 +115,6 @@ module.exports = class LevelSystemEditView extends CocoView @levelSystem.watch(button.find('.watch').is(':visible')) button.find('> span').toggleClass('secret') - undo: -> - if @$el.find('li.active > a#system-config-schema-tab') - @configSchemaTreema.undo() - if @$el.find('li.active > a#system-settings-tab') - @systemSettingsTreema.undo() - - redo: -> - if @$el.find('li.active > a#system-config-schema-tab') - @configSchemaTreema.redo() - if @$el.find('li.active > a#system-settings-tab') - @systemSettingsTreema.redo() - destroy: -> @editor?.destroy() super() diff --git a/app/views/editor/level/systems/SystemsTabView.coffee b/app/views/editor/level/systems/SystemsTabView.coffee index df5908aa7..89fa16bf1 100644 --- a/app/views/editor/level/systems/SystemsTabView.coffee +++ b/app/views/editor/level/systems/SystemsTabView.coffee @@ -125,13 +125,6 @@ module.exports = class SystemsTabView extends CocoView {original: '528114e60268d018e300001a', majorVersion: 0} # UI {original: '528114040268d018e3000011', majorVersion: 0} # Physics ] - undo: -> - return unless @levelSystemEditView - @levelSystemEditView.undo() - - redo: -> - return unless @levelSystemEditView - @levelSystemEditView.redo() class LevelSystemNode extends TreemaObjectNode valueClass: 'treema-level-system' diff --git a/app/views/editor/level/thangs/LevelThangEditView.coffee b/app/views/editor/level/thangs/LevelThangEditView.coffee index effcea1af..7ed5dce9e 100644 --- a/app/views/editor/level/thangs/LevelThangEditView.coffee +++ b/app/views/editor/level/thangs/LevelThangEditView.coffee @@ -92,11 +92,3 @@ module.exports = class LevelThangEditView extends CocoView onComponentsChanged: (components) => @thangData.components = components @saveThang() - - undo: -> - return unless @thangComponentEditView - @thangComponentEditView.undo() - - redo: -> - return unless @thangComponentEditView - @thangComponentEditView.redo() diff --git a/app/views/editor/level/thangs/ThangsTabView.coffee b/app/views/editor/level/thangs/ThangsTabView.coffee index 31b6e9dba..43bbe5032 100644 --- a/app/views/editor/level/thangs/ThangsTabView.coffee +++ b/app/views/editor/level/thangs/ThangsTabView.coffee @@ -479,26 +479,6 @@ module.exports = class ThangsTabView extends CocoView $('#add-thangs-column').toggle() @onWindowResize e - undo: (e) -> - if not @editThangView then @thangsTreema.undo() else @editThangView.undo() - - redo: (e) -> - if not @editThangView then @thangsTreema.redo() else @editThangView.redo() - - showUndoDescription: -> - if @editThangView - @editThangView.showUndoDescription() - else - undoDescription = @thangsTreema.getUndoDescription() - titleText = $('#undo-button').attr('title', 'Undo ' + undoDescription + ' (Ctrl+Z)') - - showRedoDescription: -> - if @editThangView - @editThangView.showRedoDescription() - else - redoDescription = @thangsTreema.getRedoDescription() - titleText = $('#redo-button').attr('title', 'Redo ' + redoDescription + ' (Ctrl+Shift+Z)') - class ThangsNode extends TreemaNode.nodeMap.array valueClass: 'treema-array-replacement' nodeDescription: 'Thang' From 76c784b1decb3255a68e4f1b7e83fd6f74d3837a Mon Sep 17 00:00:00 2001 From: Jayant Jain Date: Wed, 13 Aug 2014 11:57:04 +0530 Subject: [PATCH 07/37] Adds default scripts whenever a new level is created --- app/lib/DefaultScripts.coffee | 25 +++++++++++++++++++ .../level/scripts/ScriptsTabView.coffee | 3 +++ 2 files changed, 28 insertions(+) create mode 100644 app/lib/DefaultScripts.coffee diff --git a/app/lib/DefaultScripts.coffee b/app/lib/DefaultScripts.coffee new file mode 100644 index 000000000..c1dd80277 --- /dev/null +++ b/app/lib/DefaultScripts.coffee @@ -0,0 +1,25 @@ +module.exports = [ + { + channel: "god:new-world-created" + noteChain: [] + id: "Introduction" + } + { + channel: "world:won" + noteChain: [] + id: "Victory Playback" + scriptPrereqs: ["Introduction"] + } + { + channel: "level-set-playing" + noteChain: [] + scriptPrereqs: ["Victory Playback"] + id: "Victory Playback Started" + } + { + channel: "surface:frame-changed" + noteChain: [] + scriptPrereqs: ["Victory Playback Started"] + id: "Show Victory" + } +] \ No newline at end of file diff --git a/app/views/editor/level/scripts/ScriptsTabView.coffee b/app/views/editor/level/scripts/ScriptsTabView.coffee index b6bbe6f7f..cf412a649 100644 --- a/app/views/editor/level/scripts/ScriptsTabView.coffee +++ b/app/views/editor/level/scripts/ScriptsTabView.coffee @@ -3,6 +3,7 @@ template = require 'templates/editor/level/scripts_tab' Level = require 'models/Level' Surface = require 'lib/surface/Surface' nodes = require './../treema_nodes' +defaultScripts = require 'lib/DefaultScripts' module.exports = class ScriptsTabView extends CocoView id: 'editor-level-scripts-tab-view' @@ -22,6 +23,8 @@ module.exports = class ScriptsTabView extends CocoView @level = e.level @dimensions = @level.dimensions() scripts = $.extend(true, [], @level.get('scripts') ? []) + if scripts.length is 0 + scripts = $.extend(true, [], defaultScripts) treemaOptions = schema: Level.schema.properties.scripts data: scripts From f4b8b76f463de710e3110a85aa504a25eb7c9491 Mon Sep 17 00:00:00 2001 From: Jayant Jain Date: Wed, 13 Aug 2014 12:39:21 +0530 Subject: [PATCH 08/37] Adds subclass for component config nodes --- app/views/editor/component/ThangComponentConfigView.coffee | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/views/editor/component/ThangComponentConfigView.coffee b/app/views/editor/component/ThangComponentConfigView.coffee index 1d2a78bb1..39717ef6b 100644 --- a/app/views/editor/component/ThangComponentConfigView.coffee +++ b/app/views/editor/component/ThangComponentConfigView.coffee @@ -48,6 +48,7 @@ module.exports = class ThangComponentConfigView extends CocoView teams: teams superteams: superteams nodeClasses: + object: ComponentConfigNode 'point2d': nodes.WorldPointNode 'viewport': nodes.WorldViewportNode 'bounds': nodes.WorldBoundsNode @@ -72,3 +73,6 @@ module.exports = class ThangComponentConfigView extends CocoView @trigger 'changed', { component: @component, config: @data() } data: -> @editThangTreema.data + +class ComponentConfigNode extends TreemaObjectNode + nodeDescription: 'Component Property' \ No newline at end of file From 0084b64d67c5bc360e01bc1b0e65984aa30ba7c3 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Wed, 13 Aug 2014 20:45:33 -0700 Subject: [PATCH 09/37] Made some updates to the community page. --- app/locale/en.coffee | 13 +++-- app/styles/community.sass | 54 ++++++++++------- app/templates/community.jade | 103 ++++++++++++++++----------------- app/views/CommunityView.coffee | 15 +++++ 4 files changed, 105 insertions(+), 80 deletions(-) diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 260f5f8d3..51d7f212b 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -524,11 +524,16 @@ clas: "CLAs" community: - level_editor: "Level Editor" main_title: "CodeCombat Community" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" + introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" + level_editor_prefix: "Use the CodeCombat" + level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" + thang_editor_prefix: "We call units within the game 'thangs'. Use the" + thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." + article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" + article_editor_suffix: "and help CodeCombat players get the most out of their playtime." + find_us: "Find us on these sites" + contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombat Editors" diff --git a/app/styles/community.sass b/app/styles/community.sass index 5c32b21ba..ec7f5118e 100644 --- a/app/styles/community.sass +++ b/app/styles/community.sass @@ -1,24 +1,34 @@ +@import "bootstrap/variables" +@import "bootstrap/mixins" + #community-view + + .community-columns + width: 330px + float: left + padding-left: 10px + padding-right: 10px + + .half-width + width: 50% + height: 175px + float: left + + .logo-row + padding-top: 10px + width: 80% + margin: 0 auto + + .logo-row img + height: 50px + margin: 7px + + .lower-titles + text-align: center - .community_columns - width: 330px - float: left - padding-left: 10px - padding-right: 10px - - .half_width - width: 50% - height: 175px - float: left - - .logo_row - padding-top: 10px - width: 80% - margin: 0 auto - - .logo_row img - height: 50px - margin: 7px - - .lower_titles - text-align: center \ No newline at end of file + img + border-radius: 20px + @include transition( (background-color 0.2s linear, box-shadow 0.2s linear) ) + &:hover + background-color: #7abee3 + box-shadow: 0 0 20px #7abee3 diff --git a/app/templates/community.jade b/app/templates/community.jade index 7b0df7b38..66f67f5e7 100644 --- a/app/templates/community.jade +++ b/app/templates/community.jade @@ -4,96 +4,91 @@ block content h1(data-i18n="community.main_title") Community - p Check out the ways you can get involved below, decide what sounds the most fun, and we look forward to working with you! + p(data-i18n="community.introduction") Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you! div - .community_columns - + .community-columns a(href="/editor/level") img(src="/images/pages/community/level.png") - h2 - a.spl(href="/editor/level", data-i18n="community.level_editor") - - p Use the CodeCombat - a.spl(href="/editor/level", data-i18n="community.level_editor") - | to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours! - - .community_columns + a.spl(href="/editor/level", data-i18n="editor.level_title") + p + span(data-i18n="community.level_editor_prefix") Use the CodeCombat + a.spl.spr(href="/editor/level", data-i18n="editor.level_title") + span(data-i18n="community.level_editor_suffix") to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours! + .community-columns a(href="/editor/thang") img(src="/images/pages/community/thang.png") - - h2 a.spl(href="/editor/thang", data-i18n="editor.thang_title") + p + span(data-i18n="community.thang_editor_prefix") We call units within the game 'thangs'. Use the + a.spl.spr(href="/editor/thang", data-i18n="editor.thang_title") + span(data-i18n="community.level_editor_suffix") to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites. - p We call items within the game "thangs." Use the - a.spl(href="/editor/thang", data-i18n="editor.thang_title") - | to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own JS art. - - .community_columns - + .community-columns a(href="/editor/article") img(src="/images/pages/community/article.png") - h2 a.spl(href="/editor/level", data-i18n="editor.article_title") - - p See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the - a.spl(href="/editor/article", data-i18n="editor.article_title") - | and help CodeCombat players get the most out of their play time. + p + span(data-i18n="community.article_editor_prefix") See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the + a.spl.spr(href="/editor/article", data-i18n="editor.article_title") + span(data-i18n="community.article_editor_suffix") and help CodeCombat players get the most out of their playtime. div - .half_width + .half-width - h2.lower_titles Find us on these sites + h2.lower-titles + a(href="https://www.facebook.com/codecombat", data-i18n="community.find_us") Find us on these sites - .logo_row + .logo-row - a(href="http://blog.codecombat.com") - img(src="/images/pages/community/logo_sett.png") + a(href="http://blog.codecombat.com") + img(src="/images/pages/community/logo_sett.png") - a(href="http://discourse.codecombat.com") - img(src="/images/pages/community/logo_discourse.png") + a(href="http://discourse.codecombat.com") + img(src="/images/pages/community/logo_discourse.png") - a(href="https://www.facebook.com/codecombat") - img(src="/images/pages/community/logo_facebook.png") + a(href="https://www.facebook.com/codecombat") + img(src="/images/pages/community/logo_facebook.png") - a(href="https://twitter.com/CodeCombat") - img(src="/images/pages/community/logo_twitter.png") + a(href="https://twitter.com/CodeCombat") + img(src="/images/pages/community/logo_twitter.png") - a(href="https://plus.google.com/115285980638641924488/posts") - img(src="/images/pages/community/logo_g+.png") + a(href="https://plus.google.com/115285980638641924488/posts") + img(src="/images/pages/community/logo_g+.png") - a(href="http://www.hipchat.com/g3plnOKqa") - img(src="/images/pages/community/logo_hipchat.png") + a(href="http://www.hipchat.com/g3plnOKqa") + img(src="/images/pages/community/logo_hipchat.png") - .half_width + .half-width - h2.lower_titles Contribute to the Project + h2.lower-titles + a(href="/contribute", data-i18n="community.contribute_to_the_project") Contribute to the project - .logo_row + .logo-row.contribute-classes - a(href="/contribute#adventurer") - img(src="/images/pages/community/adventurer.png") + a(href="/contribute#adventurer") + img(src="/images/pages/community/adventurer.png") - a(href="/contribute#ambassador") - img(src="/images/pages/community/ambassador.png") + a(href="/contribute#ambassador") + img(src="/images/pages/community/ambassador.png") - a(href="/contribute#archmage") - img(src="/images/pages/community/archmage.png") + a(href="/contribute#archmage") + img(src="/images/pages/community/archmage.png") - a(href="/contribute#scribe") - img(src="/images/pages/community/scribe.png") + a(href="/contribute#scribe") + img(src="/images/pages/community/scribe.png") - a(href="/contribute#diplomat") - img(src="/images/pages/community/diplomat.png") + a(href="/contribute#diplomat") + img(src="/images/pages/community/diplomat.png") - a(href="/contribute#artisan") - img(src="/images/pages/community/artisan.png") + a(href="/contribute#artisan") + img(src="/images/pages/community/artisan.png") .clearfix diff --git a/app/views/CommunityView.coffee b/app/views/CommunityView.coffee index 15d28300a..8f61e1a24 100644 --- a/app/views/CommunityView.coffee +++ b/app/views/CommunityView.coffee @@ -4,3 +4,18 @@ template = require 'templates/community' module.exports = class CommunityView extends RootView id: 'community-view' template: template + + afterRender: -> + super() + @$el.find('.contribute-classes a').each -> + characterClass = $(@).attr('href').split('#')[1] + title = $.i18n.t("classes.#{characterClass}_title") + titleDescription = $.i18n.t("classes.#{characterClass}_title_description") + if characterClass is 'artisan' + summary = $.i18n.t("contribute.#{characterClass}_summary_pref") + ' Mondo Bizarro' + $.i18n.t("contribute.#{characterClass}_summary_suf") + else if characterClass is 'scribe' + summary = $.i18n.t("contribute.#{characterClass}_summary_pref") + 'Mozilla Developer Network' + $.i18n.t("contribute.#{characterClass}_summary_suf") + else + summary = $.i18n.t("contribute.#{characterClass}_summary") + explanation = "

#{title} #{titleDescription}

#{summary}" + $(@).popover(placement: 'bottom', trigger: 'hover', container: 'body', content: explanation, html: true) From d7270335ca67366054eca67b83451616b62b1cea Mon Sep 17 00:00:00 2001 From: Imperadeiro98 Date: Thu, 14 Aug 2014 09:04:29 +0100 Subject: [PATCH 10/37] Update diplomat.jade Added all the languages and myself. --- app/templates/contribute/diplomat.jade | 72 +++++++++++++++++++------- 1 file changed, 52 insertions(+), 20 deletions(-) diff --git a/app/templates/contribute/diplomat.jade b/app/templates/contribute/diplomat.jade index e2e6a756c..978d6ca0d 100644 --- a/app/templates/contribute/diplomat.jade +++ b/app/templates/contribute/diplomat.jade @@ -53,28 +53,60 @@ block content //#contributor-list // TODO: collect CodeCombat userids for these guys so we can include a tiled list ul.diplomats - li Turkish - Nazım Gediz Aydındoğmuş, cobaimelan, wakeup - li Brazilian Portuguese - Gutenberg Barros, Kieizroe, Matthew Burt, brunoporto, cassiocardoso - li Portugal Portuguese - Matthew Burt, ReiDuKuduro - li German - Dirk, faabsen, HiroP0, Anon, bkimminich - li Thai - Kamolchanok Jittrepit - li Vietnamese - An Nguyen Hoang Thien - li Dutch - Glen De Cauwsemaecker, Guido Zuidhof, Ruben Vereecken, Jasper D'haene - li Greek - Stergios - li Latin American Spanish - Jesús Ruppel, Matthew Burt, Mariano Luzza - li Spain Spanish - Matthew Burt, DanielRodriguezRivero, Anon, Pouyio - li French - Xeonarno, Elfisen, Armaldio, MartinDelille, pstweb, veritable, jaybi, xavismeh, Anon, Feugy - li Hungarian - ferpeter, csuvsaregal, atlantisguru, Anon - li Japanese - g1itch, kengos, treby - li Chinese - Adam23, spacepope, yangxuan8282, Cheng Zheng - li Polish - Anon, Kacper Ciepielewski - li Danish - Einar Rasmussen, sorsjen, Randi Hillerøe, Anon - li Slovak - Anon - li Persian - Reza Habibi (Rehb) + //li Arabic - + //li Bahasa Malaysia - + //li Bulgarian - + //li Catalan - + li Chinese - Chinese - Adam23, spacepope, yangxuan8282, Cheng Zheng + //li Chinese (Simplified) - + //li Chinese (Traditional) - li Czech - vanous - li Russian - fess89, ser-storchak, Mr A, a1ip - li Ukrainian - fess89 + li Danish - Einar Rasmussen, sorsjen, Randi Hillerøe, Anon + li Dutch - Glen De Cauwsemaecker, Guido Zuidhof, Ruben Vereecken, Jasper D'haene + //li Dutch (Belgium) - + //li Dutch (Netherlands) - + //li English - + //li English (AU) - + //li English (UK) - + //li English (US) - + //li Finnish - + li French - Xeonarno, Elfisen, Armaldio, MartinDelille, pstweb, veritable, jaybi, xavismeh, Anon, Feugy + li German - Dirk, faabsen, HiroP0, Anon, bkimminich + //li German (Austria) - + //li German (Germany) - + //li German (Switzerland) - + li Greek - Stergios + //li Hebrew - + //li Hindi - + li Hungarian - ferpeter, csuvsaregal, atlantisguru, Anon + //li Indonesian - li Italian - flauta + li Japanese - g1itch, kengos, treby + //li Korean - + //li Lithuanian - li Norwegian - bardeh + //li Norwegian (Bokmål) - + //li Norwegian Nynorsk - + li Persian - Reza Habibi (Rehb) + li Polish - Anon, Kacper Ciepielewski + //li Portuguese - + li Portuguese (Brasil) - Gutenberg Barros, Kieizroe, Matthew Burt, brunoporto, cassiocardoso + li Portuguese (Portugal) - Matthew Burt, ReiDuKuduro, Imperadeiro98 + //li Romanian - + li Russian - fess89, ser-storchak, Mr A, a1ip + //li Serbian - + li Slovak - Anon + //li Slovene - + //li Spanish - + li Spanish (Latin America) - Jesús Ruppel, Matthew Burt, Mariano Luzza + li Spanish (Spain) - Matthew Burt, DanielRodriguezRivero, Anon, Pouyio + //li Swedish - + li Thai - Kamolchanok Jittrepit + li Turkish - Nazım Gediz Aydındoğmuş, cobaimelan, wakeup + li Ukrainian - fess89 + //li Urdu - + li Vietnamese - Vietnamese - An Nguyen Hoang Thien + //li Wuu (Simplified) - + //li Wuu (Traditional) - div.clearfix From 8e4f9189a061f18c5a04951ab9148c4203e5c782 Mon Sep 17 00:00:00 2001 From: Imperadeiro98 Date: Thu, 14 Aug 2014 09:05:47 +0100 Subject: [PATCH 11/37] Update locale.coffee --- app/locale/locale.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/locale/locale.coffee b/app/locale/locale.coffee index 5b970d28f..34e59f3f7 100644 --- a/app/locale/locale.coffee +++ b/app/locale/locale.coffee @@ -54,7 +54,7 @@ module.exports = he: require './he' # עברית, Hebrew lt: require './lt' # lietuvių kalba, Lithuanian sr: require './sr' # српски, Serbian - uk: require './uk' # українська мова, Ukranian + uk: require './uk' # українська мова, Ukrainian hi: require './hi' # मानक हिन्दी, Hindi ur: require './ur' # اُردُو, Urdu ms: require './ms' # Bahasa Melayu, Bahasa Malaysia From 553b124de83ffac5bd31582b6b7e5e03123c5ba3 Mon Sep 17 00:00:00 2001 From: Imperadeiro98 Date: Thu, 14 Aug 2014 09:05:56 +0100 Subject: [PATCH 12/37] Update uk.coffee --- app/locale/uk.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/locale/uk.coffee b/app/locale/uk.coffee index 17417a8b9..f0bdd77af 100644 --- a/app/locale/uk.coffee +++ b/app/locale/uk.coffee @@ -1,4 +1,4 @@ -module.exports = nativeDescription: "українська мова", englishDescription: "Ukranian", translation: +module.exports = nativeDescription: "українська мова", englishDescription: "Ukrainian", translation: common: loading: "Завантаження..." saving: "Збереження..." From 5f7ef825f81ef814b3e80949d212526844b8112d Mon Sep 17 00:00:00 2001 From: Ruben Vereecken Date: Thu, 14 Aug 2014 16:38:50 +0200 Subject: [PATCH 13/37] Introduced findBySlugOrId to fix a bug --- server/lib/utils.coffee | 3 +++ server/plugins/plugins.coffee | 7 ++++++- server/users/user_handler.coffee | 4 ++-- 3 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 server/lib/utils.coffee diff --git a/server/lib/utils.coffee b/server/lib/utils.coffee new file mode 100644 index 000000000..d0fd9d09e --- /dev/null +++ b/server/lib/utils.coffee @@ -0,0 +1,3 @@ + +module.exports = + isID: (id) -> _.isString(id) and id.length is 24 and id.match(/[a-f0-9]/gi)?.length is 24 diff --git a/server/plugins/plugins.coffee b/server/plugins/plugins.coffee index 238bcce3d..918055042 100644 --- a/server/plugins/plugins.coffee +++ b/server/plugins/plugins.coffee @@ -1,6 +1,7 @@ mongoose = require('mongoose') textSearch = require('mongoose-text-search') log = require 'winston' +utils = require '../lib/utils' module.exports.MigrationPlugin = (schema, migrations) -> # Property name migrations made EZ @@ -31,9 +32,13 @@ module.exports.NamedPlugin = (schema) -> schema.add({name: String, slug: String}) schema.index({'slug': 1}, {unique: true, sparse: true, name: 'slug index'}) - schema.statics.getBySlug = (slug, done) -> + schema.statics.findBySlug = (slug, done) -> @findOne {slug: slug}, done + schema.statics.findBySlugOrId = (slugOrID, done) -> + return @findById slugOrID, done if utils.isID slugOrID + @findOne {slug: slugOrID}, done + schema.pre('save', (next) -> if schema.uses_coco_versions v = @get('version') diff --git a/server/users/user_handler.coffee b/server/users/user_handler.coffee index 917a43c0c..c87073cd8 100644 --- a/server/users/user_handler.coffee +++ b/server/users/user_handler.coffee @@ -208,7 +208,7 @@ UserHandler = class UserHandler extends Handler @sendSuccess(res, {result: 'success'}) avatar: (req, res, id) -> - @modelClass.findById(id).exec (err, document) => + @modelClass.findBySlugOrId(id).exec (err, document) => return @sendDatabaseError(res, err) if err return @sendNotFoundError(res) unless document photoURL = document?.get('photoURL') @@ -232,7 +232,7 @@ UserHandler = class UserHandler extends Handler IDify: (idOrSlug, done) -> return done null, idOrSlug if Handler.isID idOrSlug - User.getBySlug idOrSlug, (err, user) -> done err, user?.get '_id' + User.findBySlug idOrSlug, (err, user) -> done err, user?.get '_id' getLevelSessions: (req, res, userIDOrSlug) -> @IDify userIDOrSlug, (err, userID) => From dbff3e04d5ed85ef9ce6bd36a520a24abc11cde9 Mon Sep 17 00:00:00 2001 From: Ruben Vereecken Date: Thu, 14 Aug 2014 17:25:41 +0200 Subject: [PATCH 14/37] Job profile view works once again --- app/templates/account/profile.jade | 7 ++++--- app/views/kinds/UserView.coffee | 9 ++++++--- app/views/user/JobProfileView.coffee | 6 +++--- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/app/templates/account/profile.jade b/app/templates/account/profile.jade index 37ff7ef85..a178413ce 100644 --- a/app/templates/account/profile.jade +++ b/app/templates/account/profile.jade @@ -7,7 +7,7 @@ block content |Please a.auth-button login | to view this profile. - else + else if user.loaded if allowedToEditJobProfile .profile-control-bar if editing @@ -486,8 +486,9 @@ block content span(data-i18n="account_profile.profile_for_prefix") Profile for span= user.get('name') || "Anonymous Wizard" span(data-i18n="account_profile.profile_for_suffix") - - img.profile-photo(src=user.getPhotoURL(256)) + + if user.loaded + img.profile-photo(src=user.getPhotoURL(256)) p To see a private user profile, you may need to log in. diff --git a/app/views/kinds/UserView.coffee b/app/views/kinds/UserView.coffee index 90f1bed11..d73e9cc7f 100644 --- a/app/views/kinds/UserView.coffee +++ b/app/views/kinds/UserView.coffee @@ -9,15 +9,14 @@ module.exports = class UserView extends RootView constructor: (@userID, options) -> super options - @userID ?= me.id @listenTo @, 'userNotFound', @ifUserNotFound @fetchUser @userID - fetchUser: (id) -> + fetchUser: -> if @isMe() @user = me @onLoaded() - @user = new User _id: id + @user = new User _id: @userID @supermodel.loadModel @user, 'user' getRenderData: -> @@ -29,8 +28,12 @@ module.exports = class UserView extends RootView isMe: -> @userID is me.id onLoaded: -> + @onUserLoaded @user if @user.loaded and not @userLoaded super() + onUserLoaded: -> + @userLoaded = true + ifUserNotFound: -> console.warn 'user not found' @render() diff --git a/app/views/user/JobProfileView.coffee b/app/views/user/JobProfileView.coffee index 831b30d6a..836b75676 100644 --- a/app/views/user/JobProfileView.coffee +++ b/app/views/user/JobProfileView.coffee @@ -54,7 +54,7 @@ module.exports = class JobProfileView extends UserView 'change #admin-contact': 'onAdminContactChanged' 'click .session-link': 'onSessionLinkPressed' - constructor: (userID, options) -> + constructor: (options, userID) -> @onJobProfileNotesChanged = _.debounce @onJobProfileNotesChanged, 1000 @onRemarkChanged = _.debounce @onRemarkChanged, 1000 @authorizedWithLinkedIn = IN?.User?.isAuthorized() @@ -63,7 +63,7 @@ module.exports = class JobProfileView extends UserView window.contractCallback = => @authorizedWithLinkedIn = IN?.User?.isAuthorized() @render() - super options, userID + super userID, options onLoaded: -> @finishInit() unless @destroyed @@ -530,7 +530,7 @@ module.exports = class JobProfileView extends UserView console.log 'Saved UserRemark', @remark, 'with response', response updateProgress: (highlightNext) -> - return unless @user?.loaded + return unless @user?.loaded and @sessions?.loaded completed = 0 totalWeight = 0 next = null From 7286d069a08e1d4e35c08d0862a18b2739d9372d Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Thu, 14 Aug 2014 10:28:50 -0700 Subject: [PATCH 15/37] Working to get undo/redo working again when manipulating ThangsTabView not using the Treema. --- app/lib/utils.coffee | 2 +- app/views/editor/level/modals/SaveLevelModal.coffee | 4 ++++ app/views/editor/level/thangs/ThangsTabView.coffee | 11 ++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/lib/utils.coffee b/app/lib/utils.coffee index c009af43a..17167422d 100644 --- a/app/lib/utils.coffee +++ b/app/lib/utils.coffee @@ -25,7 +25,7 @@ module.exports.normalizeFunc = (func_thing, object) -> if _.isString(func_thing) func = object[func_thing] if not func - console.error "Could not find method #{func_thing} in object #{@}" + console.error "Could not find method #{func_thing} in object", object return => null # always return a func, or Mediator will go boom func_thing = func return func_thing diff --git a/app/views/editor/level/modals/SaveLevelModal.coffee b/app/views/editor/level/modals/SaveLevelModal.coffee index 2cbf62b9c..316283ecf 100644 --- a/app/views/editor/level/modals/SaveLevelModal.coffee +++ b/app/views/editor/level/modals/SaveLevelModal.coffee @@ -47,6 +47,10 @@ module.exports = class SaveLevelModal extends SaveVersionModal shouldSaveEntity: (m) -> return false unless m.hasWriteAccess() + if not m.get('system') and m.type() is 'LevelComponent' + # Trying to debug the occasional phantom all-Components-must-be-saved bug + console.log "Should we save", m.get('system'), m.get('name'), m, "? localChanges:", m.hasLocalChanges(), "version:", m.get('version'), 'isPublished:', m.isPublished(), 'collection:', m.collection + return false return true if m.hasLocalChanges() return true if (m.get('version').major is 0 and m.get('version').minor is 0) or not m.isPublished() and not m.collection # Sometimes we have two versions: one in a search collection and one with a URL. We only save changes to the latter. diff --git a/app/views/editor/level/thangs/ThangsTabView.coffee b/app/views/editor/level/thangs/ThangsTabView.coffee index 4ce59d636..5bf39f4e4 100644 --- a/app/views/editor/level/thangs/ThangsTabView.coffee +++ b/app/views/editor/level/thangs/ThangsTabView.coffee @@ -58,8 +58,8 @@ module.exports = class ThangsTabView extends CocoView 'delete, del, backspace': 'deleteSelectedExtantThang' 'left': -> @moveAddThangSelection -1 'right': -> @moveAddThangSelection 1 - 'ctrl+z': 'undo' - 'ctrl+shift+z': 'redo' + 'ctrl+z, ⌘+z': 'undo' + 'ctrl+shift+z, ⌘+shift+z': 'redo' constructor: (options) -> super options @@ -106,6 +106,11 @@ module.exports = class ThangsTabView extends CocoView else $('#thangs-list').height(oldHeight - thangsHeaderHeight - 80) + undo: (e) -> + if not @editThangView then @thangsTreema.undo() else @editThangView.undo() + + redo: (e) -> + if not @editThangView then @thangsTreema.redo() else @editThangView.redo() afterRender: -> super() @@ -495,7 +500,7 @@ class ThangsNode extends TreemaNode.nodeMap.array children = super(arguments...) # TODO: add some filtering to only work with certain types of units at a time return children - + class ThangNode extends TreemaObjectNode valueClass: 'treema-thang' collection: false From c31a5094724564138f1e20c84aef02119d7f0b97 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Wed, 13 Aug 2014 17:21:37 -0700 Subject: [PATCH 16/37] Working on the inventory view. Added a way to get the current equipment config from the inventory view. --- app/Router.coffee | 1 + app/locale/en.coffee | 1 + app/models/LevelComponent.coffee | 2 + app/models/ThangType.coffee | 53 +++++ app/styles/game-menu/inventory-view.sass | 96 ++++++++- app/styles/game-menu/item-view.sass | 14 ++ app/templates/game-menu/inventory-view.jade | 38 ++-- app/templates/game-menu/item-view.jade | 12 ++ app/views/game-menu/InventoryView.coffee | 182 ++++++++++++++++++ app/views/game-menu/ItemView.coffee | 21 ++ .../levels/thangs/thang_type_handler.coffee | 2 +- 11 files changed, 409 insertions(+), 13 deletions(-) create mode 100644 app/styles/game-menu/item-view.sass create mode 100644 app/templates/game-menu/item-view.jade create mode 100644 app/views/game-menu/ItemView.coffee diff --git a/app/Router.coffee b/app/Router.coffee index 2fda8dbc7..98229b552 100644 --- a/app/Router.coffee +++ b/app/Router.coffee @@ -15,6 +15,7 @@ module.exports = class CocoRouter extends Backbone.Router routes: '': go('HomeView') + 'items': go('game-menu/InventoryView') 'about': go('AboutView') diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 51d7f212b..5272af5c9 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -944,6 +944,7 @@ candidate_sessions: "Candidate Sessions" user_remark: "User Remark" versions: "Versions" + items: "Items" delta: added: "Added" diff --git a/app/models/LevelComponent.coffee b/app/models/LevelComponent.coffee index 4ab97c9c5..6353e9684 100644 --- a/app/models/LevelComponent.coffee +++ b/app/models/LevelComponent.coffee @@ -5,6 +5,8 @@ module.exports = class LevelComponent extends CocoModel @schema: require 'schemas/models/level_component' @EquipsID: '53e217d253457600003e3ebb' + @ItemID: '53e12043b82921000051cdf9' + @AttacksID: '524b7ba57fc0f6d519000016' urlRoot: '/db/level.component' set: (key, val, options) -> diff --git a/app/models/ThangType.coffee b/app/models/ThangType.coffee index 76bffd5a0..d35f4c0b8 100644 --- a/app/models/ThangType.coffee +++ b/app/models/ThangType.coffee @@ -1,5 +1,6 @@ CocoModel = require './CocoModel' SpriteBuilder = require 'lib/sprites/SpriteBuilder' +LevelComponent = require './LevelComponent' buildQueue = [] @@ -262,3 +263,55 @@ module.exports = class ThangType extends CocoModel @wizardType.url = -> url @wizardType.fetch() @wizardType + + getPortraitURL: -> "/file/db/thang.type/#{@get('original')}/portrait.png" + + # Item functions + + getAllowedSlots: -> + itemComponentRef = _.find( + @get('components') or [], + (compRef) -> compRef.original is LevelComponent.ItemID) + return itemComponentRef?.config?.slots or [] + + getFrontFacingStats: -> + stats = [] + for component in @get('components') or [] + continue unless config = component.config + if config.attackDamage + stats.push { name: 'Attack Damage', value: config.attackDamage } + if config.attackRange + stats.push { name: 'Attack Range', value: "#{config.attackRange}m" } + if config.cooldown + stats.push { name: 'Cooldown', value: "#{config.cooldown}s" } + if config.maxSpeed + stats.push { name: 'Speed', value: "#{config.maxSpeed}m/s" } + if config.maxAcceleration + stats.push { name: 'Acceleration', value: "#{config.maxAcceleration}m/s^2" } + if config.stats + for stat, value of config.stats + if value.factor + value = "x#{value.factor}" + if value.addend and value.addend > 0 + value = "+#{value.addend}" + if value.addend and value.addend < 0 + value = "#{value.addend}" + if value.setTo + value = "=#{value.setTo}" + if stat is 'maxHealth' + stats.push { name: 'Health', value: value } + if stat is 'healthReplenishRate' + stats.push { name: 'Regen', value: value } + if config.programmableProperties + props = config.programmableProperties + if props.length + stats.push { name: 'Allows', value: props.join(', ') } + if config.visualRange + value = config.visualRange + if value is 9001 then value is "Infinite" + stats.push { name: 'Visual Range', value: "#{value}m"} + if config.programmableSnippets + snippets = config.programmableSnippets + if snippets.length + stats.push { name: 'Snippets', value: snippets.join(', ') } + stats \ No newline at end of file diff --git a/app/styles/game-menu/inventory-view.sass b/app/styles/game-menu/inventory-view.sass index 9e6856e2f..3cec60ad8 100644 --- a/app/styles/game-menu/inventory-view.sass +++ b/app/styles/game-menu/inventory-view.sass @@ -1,3 +1,97 @@ +$selected-area-height: 150px + #inventory-view + position: relative + height: 600px + background-color: white + user-select: none + h3 - text-decoration: underline + margin: 0 + + #equipped + padding: 10px + width: 74% + position: absolute + left: 0 + top: 0 + bottom: $selected-area-height + 10 + right: 0 + overflow: scroll + + .item-slot.disabled + opacity: 0.5 + + .panel + text-align: center + width: 31% + margin: 5px 2% 5px 0 + float: left + cursor: pointer + + .panel-heading + padding: 5px + + .panel-info .panel-body + background-color: #e0f0f5 + + .panel-body + height: 50px + padding: 5px + overflow: scroll + font-size: 12px + + #available-equipment + width: 24% + padding: 10px + position: absolute + right: 1% + top: 0 + bottom: $selected-area-height + 10 + overflow: scroll + user-select: none + + h3 + margin-bottom: 5px + + .list-group-item.active + background-color: #e0f0f5 + + .list-group-item.equipped + display: none + + .item-mixin + &.active + background-color: lightblue + .well + padding: 5px + cursor: pointer + + #selected-items + position: absolute + height: $selected-area-height + left: 0 + right: 0 + bottom: 0 + + #selected-equipped-item, #selected-available-item + position: absolute + bottom: 0 + top: 0 + overflow: scroll + padding: 10px + + img + width: 100px + height: 100px + + .item-info + margin-left: 110px + + #selected-equipped-item + left: 0 + width: 48.5% + + #selected-available-item + right: 2% + width: 48.5% diff --git a/app/styles/game-menu/item-view.sass b/app/styles/game-menu/item-view.sass new file mode 100644 index 000000000..259334682 --- /dev/null +++ b/app/styles/game-menu/item-view.sass @@ -0,0 +1,14 @@ +.item-mixin, .item-view + width: 100% + + img + float: left + width: 40px + height: 40px + + .item-info + margin-left: 45px + + ul + margin-top: 5px + padding-left: 20px diff --git a/app/templates/game-menu/inventory-view.jade b/app/templates/game-menu/inventory-view.jade index 3082c87fc..7bf5182ee 100644 --- a/app/templates/game-menu/inventory-view.jade +++ b/app/templates/game-menu/inventory-view.jade @@ -1,11 +1,27 @@ -img(src="/images/pages/game-menu/inventory-stub.png") - -div(data-i18n="inventory.temp") Temp - -h3 Interactions -ul - li Click an item slot. It is highlighted and items that can go in that slot show up on the right with short descriptions. Full info about it shows up on the lower left. - li Click an item on the menu. It shows up on the lower right. - li To equip an item: drag (if ipad), double click (if web), click swap button (either) - li Click an item on the menu. It swaps the item into the slot. - li If the equipment changed and the player clicks done, a new LevelSession is created with this new equipment. If “use current code” is selected, the code for the current session is copied over to the new session. Modal closes, data is loaded, world runs, etc. +div#equipped + h3 Equipped + - for (var i=0; i < slots.length; i += 3) { + div + - for (var j=i; j < slots.length && j < i + 3; j++) { + - var slot = slots[j]; + div.panel.panel-default.item-slot(data-slot=slot) + .panel-heading + .panel-title.slot-name= slot + .panel-body.slot-item + if equipment[slot] + - var item = equipment[slot] + .replace-me(data-item-id=item.id) + - } + .clearfix + - } + +div#available-equipment + h3 Available + for item in items + .list-group-item(class=item.classes, data-item-id=item.id) + +div#selected-items + #selected-equipped-item.well + .item-view-stub + #selected-available-item.well + .item-view-stub diff --git a/app/templates/game-menu/item-view.jade b/app/templates/game-menu/item-view.jade new file mode 100644 index 000000000..04dc9e350 --- /dev/null +++ b/app/templates/game-menu/item-view.jade @@ -0,0 +1,12 @@ +img(src=item.getPortraitURL()).img-thumbnail +div.item-info + if includes.name + strong= item.get('name') + if includes.stats + - var stats = item.getFrontFacingStats() + ul + for stat in stats + li #{stat.name}: #{stat.value} +.clearfix + + \ No newline at end of file diff --git a/app/views/game-menu/InventoryView.coffee b/app/views/game-menu/InventoryView.coffee index f1b5ec5bf..c327f9271 100644 --- a/app/views/game-menu/InventoryView.coffee +++ b/app/views/game-menu/InventoryView.coffee @@ -2,15 +2,197 @@ CocoView = require 'views/kinds/CocoView' template = require 'templates/game-menu/inventory-view' {me} = require 'lib/auth' ThangType = require 'models/ThangType' +CocoCollection = require 'collections/CocoCollection' +ItemView = require './ItemView' + +DEFAULT_EQUIPMENT = { + 'right-hand': '53e21249b82921000051ce11' + 'feet':'53e214f153457600003e3eab' + 'eyes': '53e2167653457600003e3eb3' + 'left-hand': '53e22aa153457600003e3ef5' +} module.exports = class InventoryView extends CocoView id: 'inventory-view' className: 'tab-pane' template: template + slots: ["head","eyes","neck","torso","wrists","gloves","left-ring","right-ring","right-hand","left-hand","waist","feet","spellbook","programming-book","pet","minion","misc-0","misc-1","misc-2","misc-3","misc-4"] + + events: + 'click .item-slot': 'onItemSlotClick' + 'click #available-equipment .list-group-item': 'onAvailableItemClick' + 'dblclick #available-equipment .list-group-item': 'onAvailableItemDoubleClick' + 'dblclick .item-slot .item-view': 'onEquippedItemDoubleClick' + + shortcuts: + 'esc': 'clearSelection' + + initialize: (options) -> + super(arguments...) + @items = new CocoCollection([], { model: ThangType }) + @equipment = options.equipment or DEFAULT_EQUIPMENT + @items.url = '/db/thang.type?view=items&project=name,description,components,original' + @supermodel.loadCollection(@items, 'items') + + onLoaded: -> + super() getRenderData: (context={}) -> context = super(context) + context.equipped = _.values(@equipment) + context.items = @items.models + + for item in @items.models + item.classes = item.getAllowedSlots() + item.classes.push 'equipped' if item.get('original') in context.equipped + + context.slots = @slots + context.equipment = _.clone @equipment + for slot, itemOriginal of context.equipment + item = _.find @items.models, (item) -> item.get('original') is itemOriginal + context.equipment[slot] = item context afterRender: -> super() + return unless @supermodel.finished() + + keys = (item.id for item in @items.models) + itemMap = _.zipObject keys, @items.models + + # Fill in equipped items + for slottedItemStub in @$el.find('.replace-me') + itemID = $(slottedItemStub).data('item-id') + item = itemMap[itemID] + itemView = new ItemView({item:item, includes:{name:true}}) + itemView.render() + $(slottedItemStub).replaceWith(itemView.$el) + @registerSubView(itemView) + + for availableItemEl in @$el.find('#available-equipment .list-group-item') + itemID = $(availableItemEl).data('item-id') + item = itemMap[itemID] + itemView = new ItemView({item:item, includes:{name:true}}) + itemView.render() + $(availableItemEl).append(itemView.$el) + @registerSubView(itemView) + + @delegateEvents() + + clearSelection: -> + @$el.find('.panel-info').removeClass('panel-info') + @$el.find('.list-group-item').removeClass('active') + @onSelectionChanged() + + onItemSlotClick: (e) -> + slot = $(e.target).closest('.panel') + wasActive = slot.hasClass('panel-info') + @$el.find('#equipped .panel').removeClass('panel-info') + @$el.find('#available-equipment .list-group-item').removeClass('active') if slot.hasClass('disabled') + slot.addClass('panel-info') # unless wasActive + @onSelectionChanged() + + onAvailableItemClick: (e) -> + itemEl = $(e.target).closest('.list-group-item') + @$el.find('#available-equipment .list-group-item').removeClass('active') + itemEl.addClass('active') + @onSelectionChanged() + + onAvailableItemDoubleClick: -> + slot = @$el.find('#equipped .item-slot.panel-info') + slot = $('.panel:not(.disabled):first') if not slot.length + @unequipItemFromSlot(slot) + @equipSelectedItemToSlot(slot) + @onSelectionChanged() + + onEquippedItemDoubleClick: (e) -> + slot = $(e.target).closest('.item-slot') + @unequipItemFromSlot(slot) + @onSelectionChanged() + + unequipItemFromSlot: (slot) -> + itemIDToUnequip = slot.find('.item-view').data('item-id') + return unless itemIDToUnequip + slot.find('.item-view').detach() + for el in @$el.find('#available-equipment .list-group-item') + itemID = $(el).find('.item-view').data('item-id') + if itemID is itemIDToUnequip + $(el).removeClass('equipped') + + equipSelectedItemToSlot: (slot) -> + selectedItemContainer = @$el.find('#available-equipment .list-group-item.active') + newItemHTML = selectedItemContainer.html() + @$el.find('#available-equipment .list-group-item.active').addClass('equipped') + container = slot.find('.panel-body') + container.html(newItemHTML) + container.find('.item-view').data('item-id', selectedItemContainer.find('.item-view').data('item-id')) + @$el.find('.list-group-item').removeClass('active') + + onSelectionChanged: -> + @$el.find('.item-slot').show() + + selectedSlot = @$el.find('.panel.panel-info') + selectedItem = @$el.find('#available-equipment .list-group-item.active') + + if selectedSlot.length + @$el.find('#available-equipment .list-group-item').hide() + @$el.find("#available-equipment .list-group-item.#{selectedSlot.data('slot')}").show() + + selectedSlotItemID = selectedSlot.find('.item-view').data('item-id') + if selectedSlotItemID + item = _.find @items.models, {id:selectedSlotItemID} + + if not @selectedEquippedItemView + @selectedEquippedItemView = new ItemView({ + item: item, includes: {name: true, stats: true}}) + @insertSubView(@selectedEquippedItemView, @$el.find('#selected-equipped-item .item-view-stub')) + + else + @selectedEquippedItemView.$el.show() + @selectedEquippedItemView.item = item + @selectedEquippedItemView.render() + + else + @selectedEquippedItemView?.$el.hide() + + else + @$el.find('#available-equipment .list-group-item').show() + @$el.find('#available-equipment .list-group-item.equipped').hide() + + @$el.find('.item-slot').removeClass('disabled') + if selectedItem.length + item = _.find @items.models, {id:selectedItem.find('.item-view').data('item-id')} + + # update which slots are enabled + allowedSlots = item.getAllowedSlots() + for slotEl in @$el.find('.item-slot') + slotName = $(slotEl).data('slot') + if slotName not in allowedSlots + $(slotEl).addClass('disabled') + + # updated selected item view + if not @selectedAvailableItemView + @selectedAvailableItemView = new ItemView({ + item: item, includes: {name: true, stats: true}}) + @insertSubView(@selectedAvailableItemView, @$el.find('#selected-available-item .item-view-stub')) + + else + @selectedAvailableItemView.$el.show() + @selectedAvailableItemView.item = item + @selectedAvailableItemView.render() + + else + @selectedAvailableItemView?.$el.hide() + + @delegateEvents() + + getCurrentEquipmentConfig: -> + config = {} + for slot in @$el.find('.item-slot') + slotName = $(slot).data('slot') + slotItemID = $(slot).find('.item-view').data('item-id') + continue unless slotItemID + item = _.find @items.models, {id:slotItemID} + config[slotName] = item.get('original') + + config \ No newline at end of file diff --git a/app/views/game-menu/ItemView.coffee b/app/views/game-menu/ItemView.coffee new file mode 100644 index 000000000..8ff1b3612 --- /dev/null +++ b/app/views/game-menu/ItemView.coffee @@ -0,0 +1,21 @@ +CocoView = require 'views/kinds/CocoView' +template = require 'templates/game-menu/item-view' + +module.exports = class ItemView extends CocoView + className: 'item-view' + + template: template + + initialize: (options) -> + super(arguments...) + @item = options.item + @includes = options.includes or {} + + getRenderData: -> + c = super() + c.item = @item + c.includes = @includes + c + + afterRender: -> + @$el.data('item-id', @item.id) diff --git a/server/levels/thangs/thang_type_handler.coffee b/server/levels/thangs/thang_type_handler.coffee index 33c23a2bb..fe775a358 100644 --- a/server/levels/thangs/thang_type_handler.coffee +++ b/server/levels/thangs/thang_type_handler.coffee @@ -31,7 +31,7 @@ ThangTypeHandler = class ThangTypeHandler extends Handler projection = {} if req.query.project projection[field] = 1 for field in req.query.project.split(',') - ThangType.find({ 'kind': 'Item' }, projection).exec (err, documents) => + ThangType.find({ 'kind': 'Item', slug: { $exists: true } }, projection).exec (err, documents) => return @sendDatabaseError(res, err) if err documents = (@formatEntity(req, doc) for doc in documents) @sendSuccess(res, documents) From 18b0208aac0162b69481389e32511dcbf6df8377 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Thu, 14 Aug 2014 10:57:49 -0700 Subject: [PATCH 17/37] Updated i18n. --- .../archmage}/glen_small.png | Bin app/locale/ar.coffee | 62 +++++++++++++-- app/locale/bg.coffee | 62 +++++++++++++-- app/locale/ca.coffee | 62 +++++++++++++-- app/locale/cs.coffee | 62 +++++++++++++-- app/locale/da.coffee | 62 +++++++++++++-- app/locale/de-AT.coffee | 62 +++++++++++++-- app/locale/de-CH.coffee | 62 +++++++++++++-- app/locale/de-DE.coffee | 62 +++++++++++++-- app/locale/de.coffee | 62 +++++++++++++-- app/locale/el.coffee | 62 +++++++++++++-- app/locale/en-AU.coffee | 62 +++++++++++++-- app/locale/en-GB.coffee | 62 +++++++++++++-- app/locale/en-US.coffee | 62 +++++++++++++-- app/locale/en.coffee | 4 +- app/locale/es-419.coffee | 62 +++++++++++++-- app/locale/es-ES.coffee | 62 +++++++++++++-- app/locale/es.coffee | 62 +++++++++++++-- app/locale/fa.coffee | 62 +++++++++++++-- app/locale/fi.coffee | 62 +++++++++++++-- app/locale/fr.coffee | 62 +++++++++++++-- app/locale/he.coffee | 62 +++++++++++++-- app/locale/hi.coffee | 62 +++++++++++++-- app/locale/hu.coffee | 62 +++++++++++++-- app/locale/id.coffee | 62 +++++++++++++-- app/locale/it.coffee | 62 +++++++++++++-- app/locale/ja.coffee | 62 +++++++++++++-- app/locale/ko.coffee | 62 +++++++++++++-- app/locale/lt.coffee | 62 +++++++++++++-- app/locale/ms.coffee | 62 +++++++++++++-- app/locale/nb.coffee | 62 +++++++++++++-- app/locale/nl-BE.coffee | 62 +++++++++++++-- app/locale/nl-NL.coffee | 62 +++++++++++++-- app/locale/nl.coffee | 62 +++++++++++++-- app/locale/nn.coffee | 62 +++++++++++++-- app/locale/no.coffee | 62 +++++++++++++-- app/locale/pl.coffee | 62 +++++++++++++-- app/locale/pt-BR.coffee | 62 +++++++++++++-- app/locale/pt-PT.coffee | 72 +++++++++++++++--- app/locale/pt.coffee | 62 +++++++++++++-- app/locale/ro.coffee | 62 +++++++++++++-- app/locale/ru.coffee | 60 +++++++++++++-- app/locale/sk.coffee | 62 +++++++++++++-- app/locale/sl.coffee | 62 +++++++++++++-- app/locale/sr.coffee | 62 +++++++++++++-- app/locale/sv.coffee | 62 +++++++++++++-- app/locale/th.coffee | 62 +++++++++++++-- app/locale/tr.coffee | 62 +++++++++++++-- app/locale/uk.coffee | 60 +++++++++++++-- app/locale/ur.coffee | 62 +++++++++++++-- app/locale/vi.coffee | 62 +++++++++++++-- app/locale/zh-HANS.coffee | 62 +++++++++++++-- app/locale/zh-HANT.coffee | 62 +++++++++++++-- app/locale/zh-WUU-HANS.coffee | 62 +++++++++++++-- app/locale/zh-WUU-HANT.coffee | 62 +++++++++++++-- app/locale/zh.coffee | 62 +++++++++++++-- app/templates/about.jade | 12 ++- app/views/contribute/ArchmageView.coffee | 1 + 58 files changed, 3035 insertions(+), 336 deletions(-) rename app/assets/images/pages/{about => contribute/archmage}/glen_small.png (100%) diff --git a/app/assets/images/pages/about/glen_small.png b/app/assets/images/pages/contribute/archmage/glen_small.png similarity index 100% rename from app/assets/images/pages/about/glen_small.png rename to app/assets/images/pages/contribute/archmage/glen_small.png diff --git a/app/locale/ar.coffee b/app/locale/ar.coffee index 0e0465257..36859535c 100644 --- a/app/locale/ar.coffee +++ b/app/locale/ar.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/bg.coffee b/app/locale/bg.coffee index b8905d1c4..917bbc3d1 100644 --- a/app/locale/bg.coffee +++ b/app/locale/bg.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "български език", englishDescri blog: "Блог" forum: "Форум" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "български език", englishDescri # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "български език", englishDescri # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "български език", englishDescri # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Преглед" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "български език", englishDescri general: and: "и" name: "Име" +# date: "Date" # body: "Body" version: "Версия" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "български език", englishDescri # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "български език", englishDescri # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "български език", englishDescri # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/ca.coffee b/app/locale/ca.coffee index 9e5dad953..3d15bf783 100644 --- a/app/locale/ca.coffee +++ b/app/locale/ca.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr blog: "Blog" forum: "Fòrum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Inici" contribute: "Col·laborar" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/cs.coffee b/app/locale/cs.coffee index d7deb8a67..ce9b5eecd 100644 --- a/app/locale/cs.coffee +++ b/app/locale/cs.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr blog: "Blog" forum: "Fórum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Domů" contribute: "Přispívat" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr new_password: "Nové heslo" new_password_verify: "Potvrdit" email_subscriptions: "Doručovat emailem" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Oznámení" email_announcements_description: "Zasílat emaily o posledních novinkách a o postupu ve vývoji CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Emaily pro přispívatele" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Editory CodeCombatu" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Náhled" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr general: and: "a" name: "Jméno" +# date: "Date" body: "Tělo" version: "Verze" commit_msg: "Popisek ukládání" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr nick_description: "Programátorský kouzelník, excentrický motivační mág i experimentátor. Nick by mohl dělat de-facto cokoliv, ale zvolil si vytvořit CodeCombat." jeremy_description: "Mistr zákaznické podpory, tester použitelnosti a organizátor komunity. Je velmi pravděpodobné, že jste si spolu již psali." michael_description: "Programátor, systémový administrátor a král podsvětí technického zázemí. Michael udržuje naše servery online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Licence" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr introduction_desc_github_url: "CodeCombat je kompletně open source" introduction_desc_suf: "a snažíme se jak jen to jde, abychom vám umožnili se do tohoto projektu zapojit." introduction_desc_ending: "Doufáme, že se k nám přidáte!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy a Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy a Matt" alert_account_message_intro: "Vítejte!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/da.coffee b/app/locale/da.coffee index 249d6a383..1f85341e4 100644 --- a/app/locale/da.coffee +++ b/app/locale/da.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans blog: "Blog" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Hjem" contribute: "Bidrag" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans new_password: "Nyt Password" new_password_verify: "Bekræft" email_subscriptions: "Emailtilmeldinger" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Nyheder" email_announcements_description: "Få emails om de seneste nyheder og udvikling på CodeCombat." email_notifications: "Notifikationer" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Bidragsklasse-emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans level_search_title: "Søg Baner Her" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Forhåndsvisning" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans general: and: "og" name: "navn" +# date: "Date" body: "krop" version: "version" commit_msg: "ændringsnotat" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." introduction_desc_ending: "Vi håber du vil deltage i vores fest!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy, ogGlen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy, ogMatt" alert_account_message_intro: "Hej med dig!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/de-AT.coffee b/app/locale/de-AT.coffee index fc8e2850d..3c18983f6 100644 --- a/app/locale/de-AT.coffee +++ b/app/locale/de-AT.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/de-CH.coffee b/app/locale/de-CH.coffee index 92e073458..e81164a48 100644 --- a/app/locale/de-CH.coffee +++ b/app/locale/de-CH.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge blog: "Blog" forum: "Forum" account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Home" contribute: "Mitmache" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge new_password: "Neus Passwort" new_password_verify: "Bestätige" email_subscriptions: "E-Mail Abos" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Akündigunge" email_announcements_description: "Bechum Mails mit Neuigkeite und de neuste Entwicklige bi CodeCombat." email_notifications: "Benachrichtigunge" email_notifications_summary: "Istellige für personalisierti, automatischi E-Mail Notifikatione im Zemehang mit dine CodeCombat Aktivitäte" email_any_notes: "Alli Notifikatione" email_any_notes_description: "Deaktiviere zum kei Aktivitäts-Notifikatione meh per E-Mail becho." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # clas: "CLAs" community: - level_editor: "Level Editor" main_title: "CodeCombat Community" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge nick_description: "Programmier-Zauberer, exzentrische Motivations-Magier und Chopfüber-Experimentierer. De Nick chönti alles mache und het sich entschiede zum CodeCombat baue." jeremy_description: "Kundesupport-Magier, Usability Tester und Community-Organisator; du hesch worschinli scho mitem Jeremy gredet." michael_description: "Programmierer, Systemadmin und es technisches Wunderchind ohni Studium. Michael isch die Person wo üsi Server am Laufe bhaltet." - glen_description: "Programmierer und passionierte Gameentwickler mit de Motivation, die Welt zumene bessere Ort zmache, indem mer Sache entwickled wo e Rolle spieled. S Wort unmöglich findet mer nid i sim Wortschatz. Neui Fähigkeite erlerne isch sini Freud!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Rechtlichs" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/de-DE.coffee b/app/locale/de-DE.coffee index 33d3d34df..ee180693e 100644 --- a/app/locale/de-DE.coffee +++ b/app/locale/de-DE.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: blog: "Blog" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administration" home: "Home" contribute: "Helfen" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: new_password: "Neues Passwort" new_password_verify: "Passwort verifizieren" email_subscriptions: "Email Abonnements" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Ankündigungen" email_announcements_description: "Erhalte regelmäßig Ankündigungen zu deinem Account." email_notifications: "Benachrichtigungen" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" email_recruit_notes: "Job-Angebote" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Unterstützer Email" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: # clas: "CLAs" community: - level_editor: "Level Editor" main_title: "CodeCombat Community" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombat Editoren" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: level_search_title: "Durchsuche Levels hier" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Vorschau" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: general: and: "und" name: "Name" +# date: "Date" body: "Inhalt" version: "Version" commit_msg: "Commit Nachricht" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: nick_description: "Programmierzauberer, exzentrischer Motivationskünstler und Auf-den-Kopf-stell-Experimentierer. Nick könnte alles mögliche tun und entschied CodeCombat zu bauen." jeremy_description: "Kundendienstmagier, Usability Tester und Community-Organisator. Wahrscheinlich hast du schon mit Jeremy gesprochen." michael_description: "Programmierer, Systemadministrator und studentisch technisches Wunderkind, Michael hält unsere Server am Laufen." - glen_description: "Programmier und leidenschaftlicher Spieleentwickler mit der Motivation die Welt, durch das Entwickeln von Sachen die zählen, zu einem besseren Platz zu machen. Das Wort 'unmöglich' kann nicht in seinem Wortschatz gefunden werden. Neue Fähigkeiten zu lernen ist seine Leidenschaft!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Rechtliches" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/de.coffee b/app/locale/de.coffee index 8a4307ee9..ffeef03df 100644 --- a/app/locale/de.coffee +++ b/app/locale/de.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra blog: "Blog" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administration" home: "Home" contribute: "Helfen" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra new_password: "Neues Passwort" new_password_verify: "Passwort verifizieren" email_subscriptions: "Email Abonnements" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Ankündigungen" email_announcements_description: "Erhalte regelmäßig Ankündigungen zu deinem Account." email_notifications: "Benachrichtigungen" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" email_recruit_notes: "Job-Angebote" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Unterstützer Email" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra # clas: "CLAs" community: - level_editor: "Level Editor" main_title: "CodeCombat Community" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombat Editoren" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra level_search_title: "Durchsuche Levels hier" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Vorschau" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra general: and: "und" name: "Name" +# date: "Date" body: "Inhalt" version: "Version" commit_msg: "Commit Nachricht" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra nick_description: "Programmierzauberer, exzentrischer Motivationskünstler und Auf-den-Kopf-stell-Experimentierer. Nick könnte alles mögliche tun und entschied CodeCombat zu bauen." jeremy_description: "Kundendienstmagier, Usability Tester und Community-Organisator. Wahrscheinlich hast du schon mit Jeremy gesprochen." michael_description: "Programmierer, Systemadministrator und studentisch technisches Wunderkind, Michael hält unsere Server am Laufen." - glen_description: "Programmier und leidenschaftlicher Spieleentwickler mit der Motivation die Welt, durch das Entwickeln von Sachen die zählen, zu einem besseren Platz zu machen. Das Wort 'unmöglich' kann nicht in seinem Wortschatz gefunden werden. Neue Fähigkeiten zu lernen ist seine Leidenschaft!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Rechtliches" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/el.coffee b/app/locale/el.coffee index 7f6c8119e..3d27b4456 100644 --- a/app/locale/el.coffee +++ b/app/locale/el.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre blog: "Μπλόγκ" forum: "Φόρουμ" account: "Λογαριασμός" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Διαχειριστής" home: "Αρχική" contribute: "Συμβάλλω" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre new_password: "Καινούργιος Κωδικός" new_password_verify: " Επαλήθευση Κωδικού" email_subscriptions: "Συνδρομές Email" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Ανακοινώσεις" email_announcements_description: "Λάβετε emails για τα τελευταία νέα και τις εξελίξεις του CodeCombat." email_notifications: "Ειδοποιήσεις" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre general: and: "και" name: "Όνομα" +# date: "Date" # body: "Body" version: "Έκδοση" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/en-AU.coffee b/app/locale/en-AU.coffee index 44c898d37..338488db7 100644 --- a/app/locale/en-AU.coffee +++ b/app/locale/en-AU.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/en-GB.coffee b/app/locale/en-GB.coffee index b1ead3374..c3c1d2933 100644 --- a/app/locale/en-GB.coffee +++ b/app/locale/en-GB.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." jeremy_description: "Customer support mage, usability tester, and community organiser; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Interested in working on game graphics, user interface design, database and server organisation, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/en-US.coffee b/app/locale/en-US.coffee index 7f59ed334..15c436e31 100644 --- a/app/locale/en-US.coffee +++ b/app/locale/en-US.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 5272af5c9..8f34232a1 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -662,7 +662,7 @@ nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." - glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" + matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Legal" @@ -733,7 +733,7 @@ introduction_desc_github_url: "CodeCombat is totally open source" introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." introduction_desc_ending: "We hope you'll join our party!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" alert_account_message_intro: "Hey there!" alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/es-419.coffee b/app/locale/es-419.coffee index 3b1134683..8e839ca04 100644 --- a/app/locale/es-419.coffee +++ b/app/locale/es-419.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip blog: "Blog" forum: "Foro" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Inicio" contribute: "Contribuir" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip new_password: "Nueva Contraseña" new_password_verify: "Verificar" email_subscriptions: "Suscripciones de Email" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Noticias" email_announcements_description: "Recibe correos electrónicos con las últimas noticias y desarrollos de CodeCombat." email_notifications: "Notificaciones" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Emails Clase Contribuyente" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Vista previa" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip general: and: "y" name: "Nombre" +# date: "Date" body: "Cuerpo" version: "Versión" commit_msg: "Enviar mensaje" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/es-ES.coffee b/app/locale/es-ES.coffee index 52690ab9e..b034c2d49 100644 --- a/app/locale/es-ES.coffee +++ b/app/locale/es-ES.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis blog: "Blog" forum: "Foro" account: "Cuenta" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Inicio" contribute: "Colaborar" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis new_password: "Nueva contraseña" new_password_verify: "Verificar" email_subscriptions: "Suscripciones de correo electrónico" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Noticias" email_announcements_description: "Recibe correos electrónicos con las últimas noticias y desarrollos de CodeCombat." email_notifications: "Notificationes" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" email_recruit_notes_description: "Si tu juegas realmente bien, puede que contactemos contigo para que consigas un trabajo (mejor)." contributor_emails: "Correos para colaboradores" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis clas: "CLAs" community: - level_editor: "Editor de niveles" main_title: "Comunidad de CodeCombat" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Editores de CodeCombat" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis level_search_title: "Buscar niveles aquí" achievement_search_title: "Buscar Logros" read_only_warning2: "Nota: no puedes guardar nada de lo que edites aqui porque no has iniciado sesión." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Vista preliminar" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis general: and: "y" name: "Nombre" +# date: "Date" body: "Cuerpo" version: "Versión" commit_msg: "Mensaje de Asignación o Commit" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis nick_description: "Mago de la programación, hechicero excéntrico de la motivación y experimentador del revés. Nick pudo haber hecho cualquier cosa y eligió desarrollar CodeCombat." jeremy_description: "Mago de la atención al cliente, tester de usabilidad y organizador de la comunidad; es probable que ya hayas hablado con Jeremy." michael_description: "Programador, administrador de sistemas y prodigio técnico, Michael es el encargado de mantener nuestros servidores en línea." - glen_description: "Programador y apasionado desarrollador de juegos, con la motivación de hacer este mundo un sitio mejor, desarrollando cosas que importan. La palabra imposible no existe en su diccionario. ¡Aprender nuevas habilidades es su hobby!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis introduction_desc_github_url: "CodeCombat es totalmente de código abierto" introduction_desc_suf: ", y nuestro objetivo es ofrecer tantas maneras como sea posible para que tomes parte y hagas de este proyecto algo tan tuyo como nuestro." introduction_desc_ending: "¡Esperamos que te unas a nuestro equipo!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy y Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy y Matt" alert_account_message_intro: "¡Hola!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "¿Interesado en trabajar en gráficos para juegos, el diseño de la interfaz de usuario, bases de datos y la organización de servidores, redes multijugador, físicas, sonido o el funcionamiento del motor del juego? ¿Quieres ayudar a construir un juego para ayudar a otras personas a aprender aquello en lo que eres bueno? Tenemos mucho que hacer y si eres un programador experimentado y quieres desarrollar para CodeCombat, esta clase es para tí. Nos encantaría recibir tu ayuda para construir el mejor juego de programación que se haya hecho." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" no_changes: "Sin Cambios" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/es.coffee b/app/locale/es.coffee index dbab3e948..48ebcf7bd 100644 --- a/app/locale/es.coffee +++ b/app/locale/es.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t blog: "Blog" forum: "Foro" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Inicio" contribute: "Contribuir" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t new_password: "Nueva Contraseña" new_password_verify: "Verificar" email_subscriptions: "Suscripciones de Email" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Noticias" email_announcements_description: "Recibe correos electrónicos con las últimas noticias y desarrollos de CodeCombat." email_notifications: "Notificación" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Correos Para Colaboradores" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Previsualizar" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t general: and: "y" name: "Nombre" +# date: "Date" body: "Cuerpo" version: "Versión" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/fa.coffee b/app/locale/fa.coffee index 0863c9fdd..70fd8bf50 100644 --- a/app/locale/fa.coffee +++ b/app/locale/fa.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", blog: "بلاگ" forum: "انجمن" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "مدیر" home: "خانه" contribute: "همکاری" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", general: # and: "and" name: "نام" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/fi.coffee b/app/locale/fi.coffee index 65537d51b..778c6a431 100644 --- a/app/locale/fi.coffee +++ b/app/locale/fi.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/fr.coffee b/app/locale/fr.coffee index 2d787e83e..22f06f8e4 100644 --- a/app/locale/fr.coffee +++ b/app/locale/fr.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "français", englishDescription: "French", t blog: "Blog" forum: "Forum" account: "Compte" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Accueil" contribute: "Contribuer" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "français", englishDescription: "French", t new_password: "Nouveau mot de passe" new_password_verify: "Vérifier" email_subscriptions: "Abonnements" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Annonces" email_announcements_description: "Recevoir des mails sur les dernières actualités et sur le développement de CodeCombat." email_notifications: "Notifications" email_notifications_summary: "Commandes pour personaliser les notifications automatiques d'email liées à votre activité sur CodeCombat." email_any_notes: "Toutes Notifications" email_any_notes_description: "Désactivez pour ne plus recevoir de notifications par e-mail." +# email_news: "News" email_recruit_notes: "Offres d'emploi" email_recruit_notes_description: "Si vous jouez vraiment bien, nous pouvons vous contacter pour vous proposer un (meilleur) emploi." contributor_emails: "Emails des contributeurs" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "français", englishDescription: "French", t clas: "CLAs" community: - level_editor: "Editeur de niveau" main_title: "Communauté CodeCombat" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Éditeurs CodeCombat" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "français", englishDescription: "French", t level_search_title: "Rechercher dans les niveaux" # achievement_search_title: "Search Achievements" read_only_warning2: "Note: vous ne pouvez sauvegarder aucune édition, car vous n'êtes pas identifié." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Prévisualiser" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t general: and: "et" name: "Nom" +# date: "Date" body: "Corps" version: "Version" commit_msg: "Message de mise à jour" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t nick_description: "Assistant programmeur, mage à la motivation excentrique, et bidouilleur de l'extrême. Nick peut faire n'importe quoi mais il a choisi CodeCombat." jeremy_description: "Mage de l'assistance client, testeur de maniabilité, et community manager; vous avez probablement déjà parlé avec Jeremy." michael_description: "Programmeur, administrateur réseau, et l'enfant prodige du premier cycle, Michael est la personne qui maintient nos serveurs en ligne." - glen_description: "Programmeur et développeur de jeux passioné, avec la motivation pour faire de ce monde un meilleur endroit, en développant des choses qui comptent. Le mot impossible est introuvable dans son dictionnaire. Apprendre de nouveaux talents est sa joie !" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Légal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t introduction_desc_github_url: "CodeCombat est totalement open source" introduction_desc_suf: ", et nous avons pour objectif de fournir autant de manières possibles pour que vous participiez et fassiez de ce projet autant le votre que le notre." introduction_desc_ending: "Nous espérons que vous allez joindre notre aventure!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy et Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy et Matt" alert_account_message_intro: "Et tiens!" alert_account_message: "Pour souscrire aux e-mails, vous devez être connecté" # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "français", englishDescription: "French", t text_diff: "Différence de texte" merge_conflict_with: "Fusionner les conflits avec" no_changes: "Aucuns Changements" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/he.coffee b/app/locale/he.coffee index 324afd38a..458faf794 100644 --- a/app/locale/he.coffee +++ b/app/locale/he.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", blog: "בלוג" forum: "פורום" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "אדמין" home: "בית" contribute: "תרום" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", new_password: "סיסמה חדשה" new_password_verify: "חזור על הסיסמה שנית" email_subscriptions: "הרשמויות אימייל" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "הודעות" email_announcements_description: "קבל את החדשות ואת הפיתוחים הכי חדישים במשחק באימייל." email_notifications: "עדכונים" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "אימיילים של כיתות תורמים" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/hi.coffee b/app/locale/hi.coffee index 5ab1ab3de..f85054a33 100644 --- a/app/locale/hi.coffee +++ b/app/locale/hi.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/hu.coffee b/app/locale/hu.coffee index 6e2c2e604..db8543482 100644 --- a/app/locale/hu.coffee +++ b/app/locale/hu.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t blog: "Blog" forum: "Fórum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Kezdőlap" contribute: "Segítségnyújtás" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t new_password: "Új jelszó" new_password_verify: "Új jelszó megismétlése" email_subscriptions: "Hírlevél feliratkozások" +# email_subscriptions_none: "No Email Subscriptions." 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: "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_news: "News" 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." contributor_emails: "Hozzájárulóknak szóló levelek" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/id.coffee b/app/locale/id.coffee index b35f4468b..7e9288a4f 100644 --- a/app/locale/id.coffee +++ b/app/locale/id.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/it.coffee b/app/locale/it.coffee index 0ac1d1a02..49b2634a9 100644 --- a/app/locale/it.coffee +++ b/app/locale/it.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t blog: "Blog" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Amministratore" home: "Pagina iniziale" contribute: "Contribuisci" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t new_password: "Nuova password" new_password_verify: "Verifica" email_subscriptions: "Sottoscrizioni email" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Annunci email" email_announcements_description: "Ricevi email con le ultime novità e sviluppi di CodeCombat." email_notifications: "Notifiche email" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Email dei collaboratori" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Editor di CodeCombat" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Anteprima" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t general: and: "e" name: "Nome" +# date: "Date" body: "Testo" version: "Versione" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Questioni legali" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/ja.coffee b/app/locale/ja.coffee index c9b95d887..3770dbf4b 100644 --- a/app/locale/ja.coffee +++ b/app/locale/ja.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", blog: "ブログ" forum: "掲示板" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "管理" home: "ホーム" contribute: "貢献" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", new_password: "新パスワード" new_password_verify: "新パスワードを再入力" email_subscriptions: "ニュースレターの購読" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "お知らせ" email_announcements_description: "CodeCombatの最新のニュースや進展をメールで受け取る" email_notifications: "通知" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "開発を手伝ってくれる人向けのメール" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", clas: "CLA" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombatエディター" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/ko.coffee b/app/locale/ko.coffee index b1adfef5b..3487a8a4a 100644 --- a/app/locale/ko.coffee +++ b/app/locale/ko.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t blog: "블로그" forum: "포럼" account: "계정" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "관리자" home: "홈" contribute: "참여하기" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t new_password: "새 비밀번호" new_password_verify: "확인(다시한번 입력해주세요)" email_subscriptions: "이메일 구독" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "공지사항" email_announcements_description: "코드 컴뱃의 개발 및 진행 상황을 이메일로 구독하세요" email_notifications: "알람" email_notifications_summary: "당신의 코드 컴뱃 활동과 관련된 자동 알림 메일을 설정할 수 있습니다." email_any_notes: "모든 알림 받기" email_any_notes_description: "모든 알림 메일 받지 않기" +# email_news: "News" email_recruit_notes: "구인 정보" email_recruit_notes_description: "정말 실력이 좋으시다고 판단되면, 보다 좋은 구직 정보와 관련하여 연락드릴 수도 있습니다." contributor_emails: "조력자들 이메일" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t clas: "컨트리뷰터 라이센스 약관" community: - level_editor: "레벨 에디터" main_title: "코드 컴뱃 커뮤니티" - facebook: "페이스북" - twitter: "트위터" - gplus: "구글 플러스" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "코드 컴뱃 에디터들" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t level_search_title: "레벨들은 여기에서 찾으세요" achievement_search_title: "업적 검색" read_only_warning2: "주의: 로그인하지 않으셨기 때문에 내용을 저장할 수 없습니다." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "미리보기" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t general: and: "그리고" name: "이름" +# date: "Date" body: "구성" version: "버전" commit_msg: "커밋 메세지" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t nick_description: "프로그래밍 마법사, 별난 자극의 마술사, 거꾸로 생각하는것을 좋아하는 실험가. Nick은 뭐든지 할수있는 남자입니다. 그 뭐든지 중에 코드 컴뱃을 선택했죠. " jeremy_description: "고객 지원 마법사, 사용성 테스터, 커뮤니티 오거나이저; 당신은 아마 이미 Jeremy랑 이야기 했을거에요." michael_description: "프로그래머, 시스템 관리자, 기술 신동(대학생이래요),Michael 은 우리 서버를 계속 무결점상태로 유지시켜주는 사람입니다." - glen_description: "프로그래머이자 열정적인 게임 개발자. 의미있는 것들을 개발함으로써 세상을 보다 더 나은 곳으로 변화시키고자 하는 개발자입니다. 그의 사전에 불가능이란 없습니다. 새로운 기술을 배우는 건 그에게 몹시 즐거운 일이죠!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/lt.coffee b/app/locale/lt.coffee index 92881be9d..617b89185 100644 --- a/app/locale/lt.coffee +++ b/app/locale/lt.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee index 7cb553d0c..7430592c5 100644 --- a/app/locale/ms.coffee +++ b/app/locale/ms.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" home: "Halaman" contribute: "Sumbangan" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa new_password: "Kata-laluan baru" new_password_verify: "Verifikasi" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Pengumuman" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." email_notifications: "Notifikasi" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa general: and: "dan" name: "Nama" +# date: "Date" # body: "Body" version: "Versi" commit_msg: "Mesej Commit" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Undang-Undang" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/nb.coffee b/app/locale/nb.coffee index 75eb89ca4..118b34c64 100644 --- a/app/locale/nb.coffee +++ b/app/locale/nb.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg blog: "Blogg" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administrator" home: "Hjem" contribute: "Bidra" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg new_password: "Nytt Passord" new_password_verify: "Verifiser" email_subscriptions: "Epost Abonnement" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Kunngjøringer" email_announcements_description: "Få epost om siste nytt og utvikling fra CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Contributor Klasse Epost" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg general: # and: "and" name: "Navn" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/nl-BE.coffee b/app/locale/nl-BE.coffee index 01c4c9dcc..2a29bdbf3 100644 --- a/app/locale/nl-BE.coffee +++ b/app/locale/nl-BE.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: blog: "Blog" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administrator" home: "Home" contribute: "Bijdragen" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: new_password: "Nieuw Wachtwoord" new_password_verify: "Verifieer" email_subscriptions: "E-mail Abonnementen" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Aankondigingen" email_announcements_description: "Verkrijg emails over het laatste nieuws en de ontwikkelingen bij CodeCombat." email_notifications: "Notificaties" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Medewerker Klasse emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: level_search_title: "Zoek Levels Hier" # achievement_search_title: "Search Achievements" read_only_warning2: "Pas op, je kunt geen aanpassingen opslaan hier, want je bent niet ingelogd." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Voorbeeld" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: general: and: "en" name: "Naam" +# date: "Date" body: "Inhoud" version: "Versie" commit_msg: "Commit Bericht" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: nick_description: "Getalenteerde programmeur, excentriek gemotiveerd, een rasechte experimenteerder. Nick kan alles en kiest ervoor om CodeCombat te ontwikkelen." jeremy_description: "Klantenservice Manager, usability tester en gemeenschapsorganisator; Je hebt waarschijnlijk al gesproken met Jeremy." michael_description: "Programmeur, sys-admin, en technisch wonderkind, Michael is de persoon die onze servers draaiende houdt." - glen_description: "Programmeur en gepassioneerde game developer, met de motivatie om de wereld te verbeteren, door het ontwikkelen van de dingen die belangrijk zijn. Het woord onmogelijk staat niet in zijn woordenboek. Nieuwe vaardigheden leren is een plezier voor him!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Legaal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: introduction_desc_github_url: "CodeCombat is volledig open source" introduction_desc_suf: ", en we streven ernaar om op zoveel mogelijk manieren het mogelijk te maken voor u om deel te nemen en dit project van zowel jou als ons te maken." introduction_desc_ending: "We hopen dat je met ons meedoet!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy en Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy en Matt" alert_account_message_intro: "Hallo!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Geïnteresserd in het werken aan game graphics, user interface design, database- en serverorganisatie, multiplayer networking, physics, geluid of game engine prestaties? Wil jij helpen een game te bouwen wat anderen leert waar jij goed in bent? We moeten nog veel doen en als jij een ervaren programmeur bent en wil ontwikkelen voor CodeCombat, dan is dit de klasse voor jou. We zouden graag je hulp hebben bij het maken van de beste programmeergame ooit." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/nl-NL.coffee b/app/locale/nl-NL.coffee index b58479f8d..78351654b 100644 --- a/app/locale/nl-NL.coffee +++ b/app/locale/nl-NL.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription blog: "Blog" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administrator" home: "Home" contribute: "Bijdragen" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription new_password: "Nieuw Wachtwoord" new_password_verify: "Verifieer" email_subscriptions: "E-mail Abonnementen" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Aankondigingen" email_announcements_description: "Verkrijg emails over het laatste nieuws en de ontwikkelingen bij CodeCombat." email_notifications: "Notificaties" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Medewerker Klasse emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription level_search_title: "Zoek Levels Hier" # achievement_search_title: "Search Achievements" read_only_warning2: "Pas op, je kunt geen aanpassingen opslaan hier, want je bent niet ingelogd." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Voorbeeld" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription general: and: "en" name: "Naam" +# date: "Date" body: "Inhoud" version: "Versie" commit_msg: "Commit Bericht" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription nick_description: "Getalenteerde programmeur, excentriek gemotiveerd, een rasechte experimenteerder. Nick kan alles en kiest ervoor om CodeCombat te ontwikkelen." jeremy_description: "Klantenservice Manager, usability tester en gemeenschapsorganisator; Je hebt waarschijnlijk al gesproken met Jeremy." michael_description: "Programmeur, sys-admin, en technisch wonderkind, Michael is de persoon die onze servers draaiende houdt." - glen_description: "Programmeur en gepassioneerde game developer, met de motivatie om de wereld te verbeteren, door het ontwikkelen van de dingen die belangrijk zijn. Het woord onmogelijk staat niet in zijn woordenboek. Nieuwe vaardigheden leren is een plezier voor him!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Legaal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription introduction_desc_github_url: "CodeCombat is volledig open source" introduction_desc_suf: ", en we streven ernaar om op zoveel mogelijk manieren het mogelijk te maken voor u om deel te nemen en dit project van zowel jou als ons te maken." introduction_desc_ending: "We hopen dat je met ons meedoet!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy en Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy en Matt" alert_account_message_intro: "Hallo!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Geïnteresserd in het werken aan game graphics, user interface design, database- en serverorganisatie, multiplayer networking, physics, geluid of game engine prestaties? Wil jij helpen een game te bouwen wat anderen leert waar jij goed in bent? We moeten nog veel doen en als jij een ervaren programmeur bent en wil ontwikkelen voor CodeCombat, dan is dit de klasse voor jou. We zouden graag je hulp hebben bij het maken van de beste programmeergame ooit." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/nl.coffee b/app/locale/nl.coffee index df70d2ef2..b4278d78c 100644 --- a/app/locale/nl.coffee +++ b/app/locale/nl.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t blog: "Blog" forum: "Forum" account: "Lidmaatschap" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administrator" home: "Home" contribute: "Bijdragen" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t new_password: "Nieuw Wachtwoord" new_password_verify: "Verifieer" email_subscriptions: "E-mail Abonnementen" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Aankondigingen" email_announcements_description: "Verkrijg emails over het laatste nieuws en de ontwikkelingen bij CodeCombat." email_notifications: "Meldingen" email_notifications_summary: "Instellingen voor gepersonaliseerde, automatische meldingen via e-mail omtrent je activiteit op CodeCombat." email_any_notes: "Alle Meldingen" email_any_notes_description: "Zet alle activiteit-meldingen via e-mail af." +# email_news: "News" email_recruit_notes: "Job Aanbiedingen" email_recruit_notes_description: "Als je zeer goed speelt, zouden we je wel eens kunnen contacteren om je een (betere) job aan te bieden." contributor_emails: "Medewerker Klasse emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t clas: "CLAs" community: - level_editor: "Level Bewerker" main_title: "CodeCombat Gemeenschap" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t level_search_title: "Zoek Levels Hier" # achievement_search_title: "Search Achievements" read_only_warning2: "Pas op, je kunt geen aanpassingen opslaan hier, want je bent niet ingelogd." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Voorbeeld" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t general: and: "en" name: "Naam" +# date: "Date" body: "Inhoud" version: "Versie" commit_msg: "Commit Bericht" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t nick_description: "Getalenteerde programmeur, excentriek gemotiveerd, een rasechte experimenteerder. Nick kan alles en kiest ervoor om CodeCombat te ontwikkelen." jeremy_description: "Klantenservice Manager, usability tester en gemeenschapsorganisator; Je hebt waarschijnlijk al gesproken met Jeremy." michael_description: "Programmeur, sys-admin, en technisch wonderkind, Michael is de persoon die onze servers draaiende houdt." - glen_description: "Programmeur en gepassioneerde game developer, met de motivatie om de wereld te verbeteren, door het ontwikkelen van de dingen die belangrijk zijn. Het woord onmogelijk staat niet in zijn woordenboek. Nieuwe vaardigheden leren is een plezier voor him!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Legaal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t introduction_desc_github_url: "CodeCombat is volledig open source" introduction_desc_suf: ", en we streven ernaar om op zoveel mogelijk manieren het mogelijk te maken voor u om deel te nemen en dit project van zowel jou als ons te maken." introduction_desc_ending: "We hopen dat je met ons meedoet!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy en Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy en Matt" alert_account_message_intro: "Hallo!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Geïnteresserd in het werken aan game graphics, user interface design, database- en serverorganisatie, multiplayer networking, physics, geluid of game engine prestaties? Wil jij helpen een game te bouwen wat anderen leert waar jij goed in bent? We moeten nog veel doen en als jij een ervaren programmeur bent en wil ontwikkelen voor CodeCombat, dan is dit de klasse voor jou. We zouden graag je hulp hebben bij het maken van de beste programmeergame ooit." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/nn.coffee b/app/locale/nn.coffee index b4bec0665..b756ff68d 100644 --- a/app/locale/nn.coffee +++ b/app/locale/nn.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/no.coffee b/app/locale/no.coffee index b2f1f1fcc..e4e40ebb6 100644 --- a/app/locale/no.coffee +++ b/app/locale/no.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr blog: "Blogg" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administrator" home: "Hjem" contribute: "Bidra" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr new_password: "Nytt Passord" new_password_verify: "Verifiser" email_subscriptions: "Epostabonnement" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Kunngjøringer" email_announcements_description: "Få epost om siste nytt og utvikling fra CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Bidragsyterklasse Epost" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr general: # and: "and" name: "Navn" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/pl.coffee b/app/locale/pl.coffee index ea6b9abf5..8f8edd0fb 100644 --- a/app/locale/pl.coffee +++ b/app/locale/pl.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish blog: "Blog" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Główna" contribute: "Współpraca" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish new_password: "Nowe hasło" new_password_verify: "Zweryfikuj" email_subscriptions: "Powiadomienia email" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Ogłoszenia" email_announcements_description: "Otrzymuj powiadomienia o najnowszych wiadomościach i zmianach w CodeCombat." email_notifications: "Powiadomienia" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Powiadomienia asystentów" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Edytory CodeCombat" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish level_search_title: "Przeszukaj poziomy" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Podgląd" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish general: and: "i" name: "Imię" +# date: "Date" body: "Zawartość" version: "Wersja" commit_msg: "Wiadomość do commitu" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish nick_description: "Programistyczny czarownik, ekscentryczny magik i eksperymentator pełną gębą. Nick może robić cokolwiek, a decyduje się pracować przy CodeCombat." jeremy_description: "Magik od kontaktów z klientami, tester użyteczności i organizator społeczności; prawdopodobnie już rozmawiałeś z Jeremym." michael_description: "Programista, sys-admin, cudowne dziecko studiów technicznych, Michael to osoba utrzymująca nasze serwery online." - glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that mather. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Nota prawna" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish introduction_desc_github_url: "CodeCombat jest całkowicie open source" introduction_desc_suf: " i zamierzamy zapewnić tak wiele sposobów na współpracę w projekcie jak to tylko możliwe, by był on tak samo nasz, jak i wasz." introduction_desc_ending: "Liczymy, że dołączysz się do nas!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy i Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy i Matt" alert_account_message_intro: "Hej tam!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Zainteresowany pracą przy grafice, interfejsie użytkownika, organizacji bazy danych oraz serwera, łączności multiplayer, fizyce, dźwięku lub wydajności silnika gry? Chciałbyś dołączyć się do budowania gry, która pomoże innym nauczyć się umiejętności, które sam posiadasz? Mamy wiele do zrobienia i jeśli jesteś doświadczonym programistą chcącym pomóc w rozwoju CodeCombat, ta klasa jest dla ciebie. Twoja pomoc przy budowaniu najlepszej gry programistycznej w historii będzie nieoceniona." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/pt-BR.coffee b/app/locale/pt-BR.coffee index e5b9c915d..647498a40 100644 --- a/app/locale/pt-BR.coffee +++ b/app/locale/pt-BR.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: blog: "Blog" forum: "Fórum" account: "Conta" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administrador" home: "Início" contribute: "Contribuir" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: new_password: "Nova Senha" new_password_verify: "Confirmação" email_subscriptions: "Assinaturas para Notícias por Email" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Notícias" email_announcements_description: "Receba emails com as últimas notícias e desenvolvimentos do CodeCombat." email_notifications: "Notificações" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" email_recruit_notes: "Oportunidades de emprego" email_recruit_notes_description: "Se você jogar muito bem, nós podemos lhe contactar para lhe oferecer um emprego (melhor)" contributor_emails: "Emails para as Classes de Contribuidores" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Editores do CodeCombat" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: level_search_title: "Procurar Níveis Aqui" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Prever" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: general: and: "e" name: "Nome" +# date: "Date" body: "Principal" version: "Versão" commit_msg: "Mensagem do Commit" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: nick_description: "Mago da programação, feiticeiro da motivação excêntrica e experimentador doido. Nick pode fazer qualquer coisa e escolheu desenvolver o CodeCombat." jeremy_description: "Mago em suporte ao consumidor, testador de usabilidade, e organizador da comunidade; você provavelmente já falou com o Jeremy." michael_description: "Programador, administrador de sistemas, e um técnico prodígio não graduado, Michael é a pessoa que mantém os servidores funcionando." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Jurídico" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: introduction_desc_github_url: "CodeCombat é totalmente código aberto" introduction_desc_suf: ", e nosso objetivo é oferecer quantas maneiras forem possíveis para você participar e fazer deste projeto tanto seu como nosso." introduction_desc_ending: "Nós esperamos que você se junte a nossa festa!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" alert_account_message_intro: "Ei!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Interessado em trabalhar em gráficos do jogo, design de interface de usuário, banco de dados e organização de servidores, networking multiplayer, física, som ou desempenho do motor de jogo? Quer ajudar a construir um jogo para ajudar outras pessoas a aprender o que você é bom? Temos muito a fazer e se você é um programador experiente e quer desenvolver para o CodeCombat, esta classe é para você. Gostaríamos muito de sua ajuda a construir o melhor jogo de programação da história." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "português do Brasil", englishDescription: # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/pt-PT.coffee b/app/locale/pt-PT.coffee index 1ae60b284..f32a9d262 100644 --- a/app/locale/pt-PT.coffee +++ b/app/locale/pt-PT.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: blog: "Blog" forum: "Fórum" account: "Conta" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administrador" home: "Início" contribute: "Contribuir" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: new_password: "Nova Palavra-passe" new_password_verify: "Verificar" email_subscriptions: "Subscrições de E-mail" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Anúncios" email_announcements_description: "Receba e-mails sobre as últimas novidades e desenvolvimentos no CodeCombat." email_notifications: "Notificações" email_notifications_summary: "Controle, de uma forma personalizada e automática, os e-mails de notificações relacionados com a sua atividade no CodeCombat." email_any_notes: "Quaisquer Notificações" email_any_notes_description: "Desative para parar de receber todos os e-mails de notificação de atividade." +# email_news: "News" email_recruit_notes: "Oportunidades de Emprego" email_recruit_notes_description: "Se joga muito bem, podemos contactá-lo para lhe arranjar um (melhor) emprego." contributor_emails: "Subscrições de E-mail (Contribuintes)" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: clas: "CLA's" community: - level_editor: "Editor de Níveis" main_title: "Comunidade do CodeCombat" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Editores do CodeCombat" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: level_search_title: "Procurar Níveis Aqui" achievement_search_title: "Procurar Conquistas" read_only_warning2: "Nota: não pode guardar nenhuma edição feita aqui, porque não tem sessão iniciada." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Pré-visualizar" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: general: and: "e" name: "Nome" +# date: "Date" body: "Corpo" version: "Versão" commit_msg: "Enviar Mensagem" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: nick_description: "Feiticeiro da programção, mago da motivação excêntrico e experimentador de pernas para o ar. O Nick pode fazer qualquer coisa e escolhe construir o CodeCombat." jeremy_description: "Mago do suporte ao cliente, testador do uso e organizador da comunidade; provavelmente já falou com o Jeremy." michael_description: "Programador, administrador do sistema e técnico de graduação prodígio, o Michael é a pessoa que mantém os nossos servidores online." - glen_description: "Programador e desenvolvedor de jogos apaixonado, com a motivação necessária para tornar este mundo um lugar melhor, ao desenvolver coisas que importam. A palavra impossível não pode ser encontrada no dicionário dele. Aprender novas habilidades é a alegria dele!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Legal" @@ -711,14 +726,14 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: # canonical: "The English version of this document is the definitive, canonical version. If there are any discrepencies between translations, the English document takes precedence." contribute: -# page_title: "Contribuir" -# character_classes_title: "Classes de Personagens" -# introduction_desc_intro: "Temos esperanças elevadas para o CodeCombat." + page_title: "Contribuir" + character_classes_title: "Classes de Personagens" + introduction_desc_intro: "Temos esperanças elevadas para o CodeCombat." # introduction_desc_pref: "We want to be where programmers of all stripes come to learn and play together, introduce others to the wonderful world of coding, and reflect the best parts of the community. We can't and don't want to do that alone; what makes projects like GitHub, Stack Overflow and Linux great are the people who use them and build on them. To that end, " -# introduction_desc_github_url: "o CodeCombat é totalmente open source" + introduction_desc_github_url: "o CodeCombat é totalmente open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." -# introduction_desc_ending: "Esperemos que se junte a nós!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy e Glen" + introduction_desc_ending: "Esperemos que se junte a nós!" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy e Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: text_diff: "Diferença de Texto" merge_conflict_with: "FUNDIR CONFLITO COM" no_changes: "Sem Alterações" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/pt.coffee b/app/locale/pt.coffee index 17f9fb828..cc39eaa49 100644 --- a/app/locale/pt.coffee +++ b/app/locale/pt.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues blog: "Blog" forum: "Fórum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Administrador" home: "Início" contribute: "Contribuir" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues new_password: "Nova Senha" new_password_verify: "Confirmação" email_subscriptions: "Assinaturas para Notícias por Email" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Notícias" email_announcements_description: "Receba emails com as últimas notícias e desenvolvimentos do CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Emails para as Classes de Contribuidores" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues general: # and: "and" name: "Nome" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/ro.coffee b/app/locale/ro.coffee index ed13d5ec7..48a4c9226 100644 --- a/app/locale/ro.coffee +++ b/app/locale/ro.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman blog: "Blog" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Acasa" contribute: "Contribuie" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman new_password: "Parolă nouă" new_password_verify: "Verifică" email_subscriptions: "Subscripție Email" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Anunțuri" email_announcements_description: "Primește email-uri cu ultimele știri despre CodeCombat." email_notifications: "Notificări" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Editori CodeCombat" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman level_search_title: "Caută nivele aici" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman general: and: "și" name: "Nume" +# date: "Date" body: "Corp" version: "Versiune" commit_msg: "Înregistrează Mesajul" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick poate să facă orice si a ales să dezvolte CodeCombat." jeremy_description: "Customer support mage, usability tester, and community organizer; probabil ca ați vorbit deja cu Jeremy." michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael este cel care ține serverele in picioare." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Aspecte Legale" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman introduction_desc_github_url: "CodeCombat este complet open source" introduction_desc_suf: ", și ne propunem să vă punem la dispoziție pe cât de mult posibil modalități de a lua parte la acest proiect pentru a-l face la fel de mult as vostru cât și al nostru." introduction_desc_ending: "Sperăm să vă placă petrecerea noastră!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy și Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy și Matt" alert_account_message_intro: "Salutare!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Interesat să lucrezi la grafica jocului, interfața grafică cu utilizatorul, baze de date și organizare server, multiplayer networking, fizică, sunet, sau performanțe game engine? Vrei să ajuți la construirea unui joc pentru a învăța pe alții ceea ce te pricepi? Avem o grămadă de făcut dacă ești un programator experimentat și vrei sa dezvolți pentru CodeCombat, această clasă este pentru tine. Ne-ar plăcea să ne ajuți să construim cel mai bun joc de programare făcut vreodată." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/ru.coffee b/app/locale/ru.coffee index fab79b66d..c048edf9f 100644 --- a/app/locale/ru.coffee +++ b/app/locale/ru.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi blog: "Блог" forum: "Форум" account: "Аккаунт" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Админ" home: "Домой" contribute: "Сотрудничество" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi new_password: "Новый пароль" new_password_verify: "Подтверждение пароля" email_subscriptions: "Email-подписки" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Оповещения" email_announcements_description: "Получать email-оповещения о последних новостях CodeCombat." email_notifications: "Уведомления" email_notifications_summary: "Настройки автоматических email-уведомлений, основанных на вашей активности на CodeCombat." email_any_notes: "Все уведомления" email_any_notes_description: "Отключите, чтобы больше не получать извещения." +# email_news: "News" email_recruit_notes: "Возможности для работы" email_recruit_notes_description: "Если вы действительно хорошо играете, то мы можем связаться с вами для предложения (лучшей) работы." contributor_emails: "Рассылки по классам участников" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi clas: "ЛСС" community: - level_editor: "редактор уровней" main_title: "Сообщество CodeCombat" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Редакторы CodeCombat" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi level_search_title: "Искать уровни" achievement_search_title: "Искать достижения" read_only_warning2: "Примечание: вы не можете сохранять любые правки здесь, потому что вы не авторизованы." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Предпросмотр" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi general: and: "и" name: "Имя" +# date: "Date" body: "Содержание" version: "Версия" commit_msg: "Сопроводительное сообщение" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi nick_description: "Маг программирования, мудрец эксцентричного мотивирования и чудаковатый экспериментатор. Ник может всё и хочет построить CodeCombat." jeremy_description: "Маг клиентской поддержки, юзабилити-тестер, и организатор сообщества; вы наверняка уже говорили с Джереми." michael_description: "Программист, сисадмин и непризнанный технический гений, Михаэль является лицом, поддерживающим наши серверы в доступности." - glen_description: "Программист и страстный разработчик игр, с мотивацией сделать этот мир лучше путём разработки действительно значащих вещей. Слова \"невозможно\" нет в его словаре. Освоение новых навыков его развлечение!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Юридическая информация" @@ -938,3 +953,38 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi text_diff: "Разница" # merge_conflict_with: "MERGE CONFLICT WITH" no_changes: "Нет изменений" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/sk.coffee b/app/locale/sk.coffee index dc63b602c..28d0b324a 100644 --- a/app/locale/sk.coffee +++ b/app/locale/sk.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", blog: "Blog" forum: "Fórum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Spravuj" home: "Domov" contribute: "Prispej" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", new_password: "Nové heslo" new_password_verify: "Overenie" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", general: # and: "and" name: "Meno" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/sl.coffee b/app/locale/sl.coffee index 78798520b..2ae16b022 100644 --- a/app/locale/sl.coffee +++ b/app/locale/sl.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/sr.coffee b/app/locale/sr.coffee index e551f1983..4ad284ac3 100644 --- a/app/locale/sr.coffee +++ b/app/locale/sr.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian blog: "Блог" forum: "Форум" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Админ" home: "Почетна" contribute: "Допринеси" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian new_password: "Нова Шифра" new_password_verify: "Потврди" email_subscriptions: "Мејл претплате" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Обавештења" email_announcements_description: "Прими мејл за најновије вести и достигнућа на CodeCombat-у" # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Мејлови реда сарадника" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian general: # and: "and" name: "Име" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/sv.coffee b/app/locale/sv.coffee index 55576a617..12eefbd4e 100644 --- a/app/locale/sv.coffee +++ b/app/locale/sv.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr blog: "Blogg" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Admin" home: "Hem" contribute: "Bidra" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr new_password: "Nytt lösenord" new_password_verify: "Verifiera" email_subscriptions: "E-postsprenumerationer" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Meddelanden" email_announcements_description: "Få e-post med de senaste nyheterna och utvecklingen på CodeCombat." email_notifications: "Påminnelser" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "E-post för bidragare" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombatredigerare" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr level_search_title: "Sök nivåer här" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Förhandsgranska" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr general: and: "och" name: "Namn" +# date: "Date" body: "Kropp" version: "Version" commit_msg: "Förbindelsemeddelande" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr nick_description: "Programmeringstrollkarl, excentrisk motivationsmagiker och upp-och-ner-experimenterare. Nick kan göra vad som helst och väljer att bygga CodeCombat." jeremy_description: "Kundsupportsmagiker, användbarhetstestare och gemenskapsorganisatör; du har förmodligen redan pratat med Jeremy." michael_description: "Programmerare, sys-admin, och studerande tekniskt underbarn, Michael är personen som håller våra servrar online." - glen_description: "Programmerare och passionerad spelutvecklare, med motivationen att göra denna värld till ett bättre ställe genom att utveckla saker som spelar roll. Ordet omöjligt finns inte i hans ordbok. Att lära sig nya färdigheter är hans lycka." +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Juridik" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr introduction_desc_github_url: "CodeCombat is totally open source" introduction_desc_suf: ", och vi siktar på att tillhandahålla så många sätt som möjligt för dig att delta och göra det här projektet till lika mycket ditt som vårt." introduction_desc_ending: "Vi hoppas att du vill vara med!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy och Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy och Matt" alert_account_message_intro: "Hej där!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Intresserad av att jobba med spelgrafik, användargränssnittsdesign, databas- och serveroptimering, flerspelarnätverkadnde, fysik, ljud eller spelmotorprestation? Vill du hjälpa till att bygga ett spel för att hjälpa andra människor lära sig det du är bra på? Vi har mycket att göra och om du är en erfaren programmerare och vill utveckla för CodeCombat är denna klassen för dig. Vi skulle älska din hjälp med att bygga det bästa programmeringsspelet någonsin." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/th.coffee b/app/locale/th.coffee index ae017455b..10b480b97 100644 --- a/app/locale/th.coffee +++ b/app/locale/th.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra blog: "บล็อก" forum: "กระดานสนทนา" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "ผู้ดูแลระบบ" home: "Home" contribute: "สนับสนุน" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra new_password: "รหัสผ่านใหม่" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "ประกาศ" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/tr.coffee b/app/locale/tr.coffee index fe09441c4..23901b6ce 100644 --- a/app/locale/tr.coffee +++ b/app/locale/tr.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t blog: "Blog" forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Yönetici" home: "Anasayfa" contribute: "Katkıda bulun" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t new_password: "Yeni Şifre" new_password_verify: "Teyit Et" email_subscriptions: "E-posta Abonelikleri" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Duyurular" email_announcements_description: "CodeCombat ile ilgili son haberlere ve gelişmelere ulaşın." email_notifications: "Bilgilendirme" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "İştirakçi Sınıfı E-postaları" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombat Düzenleyici" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t level_search_title: "Seviye ara" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Önizleme" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t general: and: "ve" name: "İsim" +# date: "Date" body: "Gövde" version: "Sürüm" commit_msg: "Gönderme İletisi" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t nick_description: "Programlama sihirbazı, tuhaf motivasyon büyücü ve tersine mühendis. Nick her şeyden anlar ve şu anda CodeCombat'i inşa etmekle meşgul." jeremy_description: "Müşteri hizmetleri büyücüsü, kullanılabilirlik test edicisi ve topluluk örgütleyici; muhtemelen Jeremy ile konuşmuşluğunuz vardır." michael_description: "Programcı, sistem yöneticisi, halihazırda üniversite okuyan teknik-harika-çocuk. Michael sunucularımızı ayakta tutan adamın ta kendisi." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Hukuki" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t introduction_desc_github_url: "CodeCombat tümüyle açık kaynaklıdır" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" alert_account_message_intro: "Merhaba!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/uk.coffee b/app/locale/uk.coffee index f0bdd77af..ec5fd37b2 100644 --- a/app/locale/uk.coffee +++ b/app/locale/uk.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "українська мова", englishDesc blog: "Блог" forum: "Форум" account: "Акаунт" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Адміністратор" home: "На головну" contribute: "Співпраця" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "українська мова", englishDesc new_password: "Новий пароль" new_password_verify: "Підтвердження паролю" email_subscriptions: "Email-підписки" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Оголошення" email_announcements_description: "Отримувати електронні листи про останні новини CodeCombat." email_notifications: "Нотифікації" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "Підписки за класами учасників" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "українська мова", englishDesc clas: "CLAs" community: - level_editor: "Редактор рівнів" main_title: "Спільноти CodeCombat" - facebook: "Facebook" - twitter: "Twitter" - gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "Редактори CodeCombat" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "українська мова", englishDesc level_search_title: "Шукати рівні тут" # achievement_search_title: "Search Achievements" read_only_warning2: "Примітка: Ви не можете зберегти ніякі зміни, оскільки Ви не зареєструвались." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "Анонс" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "українська мова", englishDesc general: and: "та" name: "Ім’я" +# date: "Date" body: "Тіло" version: "Версія" commit_msg: "Доручити повідомлення" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "українська мова", englishDesc nick_description: "Чарівник програмування, ексцентричний маг мотивації та непересічний експериментатор. Нік здатен зробити будь-що, і він обрав зробити CodeCombat." jeremy_description: "Чарівник підтримки користувачів, тестер юзабіліті та організатор спільноти; ви ймовірно вже спілкувались з Джеремі." michael_description: "Програміст, адмін та загадковий технічний вундеркінд, Майкл - та людина, що утримує наші сервери онлайн." - glen_description: "Програміст та натхненний розробник ігор, що мріє зробити цей світ краще, створюючи дійсно значущі речі. Ніколи не вживає слова \"неможливо\". Дізнаватися нове - для нього найбільша насолода!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "Юридична інформація" @@ -938,3 +953,38 @@ module.exports = nativeDescription: "українська мова", englishDesc # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/ur.coffee b/app/locale/ur.coffee index 85ea79946..c2274a5a9 100644 --- a/app/locale/ur.coffee +++ b/app/locale/ur.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/vi.coffee b/app/locale/vi.coffee index 4eaea50b8..7ee8be6d0 100644 --- a/app/locale/vi.coffee +++ b/app/locale/vi.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # blog: "Blog" forum: "Diễn đàn" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "Quản trị viên" home: "Nhà" contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn new_password: "Mật khẩu mới" new_password_verify: "Xác nhận" email_subscriptions: "Thuê bao Email" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "Thông báo" email_announcements_description: "Nhận email về tin tức mới nhất và sự phát triển của Codecombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/zh-HANS.coffee b/app/locale/zh-HANS.coffee index 0a8724a75..b1c10912e 100644 --- a/app/locale/zh-HANS.coffee +++ b/app/locale/zh-HANS.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese blog: "博客" forum: "论坛" account: "账号" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "管理" home: "首页" contribute: "贡献" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese new_password: "新密码" new_password_verify: "核实" email_subscriptions: "邮箱验证" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "通知" email_announcements_description: "接收关于 CodeCombat 的邮件。" email_notifications: "通知" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." email_any_notes: "任何通知" email_any_notes_description: "取消接收所有活动提醒邮件" +# email_news: "News" email_recruit_notes: "工作机会" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "贡献者通知" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese # clas: "CLAs" community: - level_editor: "关卡编辑器" main_title: "CodeCombat 社区" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombat 编辑器" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese level_search_title: "在这里搜索关卡" # achievement_search_title: "Search Achievements" read_only_warning2: "提示:你不能保存任何编辑,因为你没有登陆" +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "预览" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese general: and: "和" name: "名字" +# date: "Date" body: "正文" version: "版本" commit_msg: "提交信息" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "法律" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese introduction_desc_github_url: "我们把 CodeCombat 完全开源" introduction_desc_suf: ",而且我们希望提供尽可能多的方法让你来参加这个项目,与我们一起创造。" introduction_desc_ending: "我们希望你也能一起加入进来!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy 以及 Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy 以及 Matt" alert_account_message_intro: "你好!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "你对游戏图像、界面设计、数据库和服务器运营、多人在线、物理、声音、游戏引擎性能感兴趣吗?想做一个教别人编程的游戏吗?如果你有编程经验,想要开发 CodeCombat ,那就选择这个职业吧。我们会非常高兴在制作史上最棒编程游戏的过程中得到你的帮助。" @@ -938,3 +953,38 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/zh-HANT.coffee b/app/locale/zh-HANT.coffee index b5ede37c4..028d5f123 100644 --- a/app/locale/zh-HANT.coffee +++ b/app/locale/zh-HANT.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese blog: "官方部落格" forum: "論壇" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "系統管理員" home: "首頁" contribute: "貢獻" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese new_password: "新密碼" new_password_verify: "確認密碼" email_subscriptions: "訂閱" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "通知" email_announcements_description: "接收關於 CodeCombat 的新聞和開發消息。" # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "貢獻者電郵" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese general: # and: "and" name: "名字" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/zh-WUU-HANS.coffee b/app/locale/zh-WUU-HANS.coffee index 227ba698f..10dea5d73 100644 --- a/app/locale/zh-WUU-HANS.coffee +++ b/app/locale/zh-WUU-HANS.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # blog: "Blog" # forum: "Forum" # account: "Account" +# profile: "Profile" +# stats: "Stats" +# code: "Code" # admin: "Admin" # home: "Home" # contribute: "Contribute" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # new_password: "New Password" # new_password_verify: "Verify" # email_subscriptions: "Email Subscriptions" +# email_subscriptions_none: "No Email Subscriptions." # email_announcements: "Announcements" # email_announcements_description: "Get emails on the latest news and developments at CodeCombat." # email_notifications: "Notifications" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." # contributor_emails: "Contributor Class Emails" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # general: # and: "and" # name: "Name" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/zh-WUU-HANT.coffee b/app/locale/zh-WUU-HANT.coffee index 8d097a8e7..fcaf99542 100644 --- a/app/locale/zh-WUU-HANT.coffee +++ b/app/locale/zh-WUU-HANT.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio blog: "部落格" forum: "論壇" account: "賬號" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "管理" home: "首頁" contribute: "貢獻" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio new_password: "新密碼" new_password_verify: "覈實" email_subscriptions: "郵箱校對" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "通知" email_announcements_description: "收 有關 CodeCombat 個電子信。" email_notifications: "通知" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." # email_any_notes: "Any Notifications" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" # email_recruit_notes: "Job Opportunities" # email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job." contributor_emails: "貢獻人個通知" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" editor: main_title: "CodeCombat 編寫器" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio level_search_title: "徠箇搭尋關" # achievement_search_title: "Search Achievements" read_only_warning2: "提醒:爾嘸處存編寫,朆登進之故" +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" article: edit_btn_preview: "試望" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio general: and: "搭" name: "名字" +# date: "Date" body: "正文" version: "版本" commit_msg: "提交訊息" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." legal: page_title: "律法" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio introduction_desc_github_url: "我裏畀 CodeCombat 整個開源" introduction_desc_suf: ",我裏也希望提供越多越好個方法讓爾參加箇項目,搭我裏聚隊造。" introduction_desc_ending: "我裏希望爾也聚隊加進來!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy 搭 Glen" + introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy 搭 Matt" alert_account_message_intro: "爾好!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "爾對遊戲圖像、界面設計、數據庫搭服務器運行、多人徠線、物理、聲音、遊戲引擎性能許感興趣噃?想做一個教別人編程個遊戲噃?空是爾有編程經驗,想開發 CodeCombat ,箇勿職業揀箇去。我裏候快活個,徠造“史上最讚個編程遊戲”個過程當中有爾個幫襯。" @@ -938,3 +953,38 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/locale/zh.coffee b/app/locale/zh.coffee index a3c3d7f77..18fffb6ba 100644 --- a/app/locale/zh.coffee +++ b/app/locale/zh.coffee @@ -49,6 +49,9 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra blog: "博客" forum: "论坛" account: "账号" +# profile: "Profile" +# stats: "Stats" +# code: "Code" admin: "超级管理员" home: "首页" contribute: "贡献" @@ -176,12 +179,14 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra new_password: "新密码" new_password_verify: "验证" email_subscriptions: "邮件订阅" +# email_subscriptions_none: "No Email Subscriptions." email_announcements: "声明" email_announcements_description: "获取有关CodeCombat的最新消息" email_notifications: "通知" email_notifications_summary: "控制个性化的自动邮件提醒,提醒您在CodeCombat的活动" email_any_notes: "任何通知" # email_any_notes_description: "Disable to stop all activity notification emails." +# email_news: "News" email_recruit_notes: "工作机会" email_recruit_notes_description: "如果你玩得的确不赖,我们会联系你,或许给你一份(更好的)工作" contributor_emails: "贡献者邮件" @@ -519,11 +524,16 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra # clas: "CLAs" # community: -# level_editor: "Level Editor" # main_title: "CodeCombat Community" -# facebook: "Facebook" -# twitter: "Twitter" -# gplus: "Google+" +# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!" +# level_editor_prefix: "Use the CodeCombat" +# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!" +# thang_editor_prefix: "We call units within the game 'thangs'. Use the" +# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." +# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" +# article_editor_suffix: "and help CodeCombat players get the most out of their playtime." +# find_us: "Find us on these sites" +# contribute_to_the_project: "Contribute to the project" # editor: # main_title: "CodeCombat Editors" @@ -591,6 +601,10 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra # level_search_title: "Search Levels Here" # achievement_search_title: "Search Achievements" # read_only_warning2: "Note: you can't save any edits here, because you're not logged in." +# no_achievements: "No achievements have been added for this level yet." +# achievement_query_misc: "Key achievement off of miscellanea" +# achievement_query_goals: "Key achievement off of level goals" +# level_completion: "Level Completion" # article: # edit_btn_preview: "Preview" @@ -599,6 +613,7 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra general: # and: "and" name: "名字" +# date: "Date" # body: "Body" # version: "Version" # commit_msg: "Commit Message" @@ -647,7 +662,7 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." # jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." # michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!" +# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." # legal: # page_title: "Legal" @@ -718,7 +733,7 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Glen" +# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -938,3 +953,38 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" # no_changes: "No Changes" + +# user: +# stats: "Stats" +# singleplayer_title: "Singleplayer Levels" +# multiplayer_title: "Multiplayer Levels" +# achievements_title: "Achievements" +# last_played: "Last Played" +# status: "Status" +# status_completed: "Completed" +# status_unfinished: "Unfinished" +# no_singleplayer: "No Singleplayer games played yet." +# no_multiplayer: "No Multiplayer games played yet." +# no_achievements: "No Achievements earned yet." +# favorite_prefix: "Favorite language is " +# favorite_postfix: "." + +# achievements: +# last_earned: "Last Earned" +# amount_achieved: "Amount" +# achievement: "Achievement" +# category_contributor: "Contributor" +# category_miscellaneous: "Miscellaneous" +# category_levels: "Levels" +# category_undefined: "Uncategorized" +# current_xp_prefix: "" +# current_xp_postfix: " in total" +# new_xp_prefix: "" +# new_xp_postfix: " earned" +# left_xp_prefix: "" +# left_xp_infix: " until level " +# left_xp_postfix: "" + +# account: +# recently_played: "Recently Played" +# no_recent_games: "No games played during the past two weeks." diff --git a/app/templates/about.jade b/app/templates/about.jade index ab7e09a41..b9ffc3a57 100644 --- a/app/templates/about.jade +++ b/app/templates/about.jade @@ -153,17 +153,15 @@ block content li.row - img(src="/images/pages/about/glen_small.png").img-thumbnail + img(src="/images/pages/contribute/archmage.png").img-thumbnail .col-sm-8 h3 - a(href="http://www.glendc.com/") Glen De Cauwsemaecker + a(href="http://www.mattlott.com/") Matt Lott - p(data-i18n="about.glen_description") - | Programmer and passionate game developer, - | with the motivation to make this world a better place, - | by developing things that mather. The word impossible can't - | be found in his dictionary. Learning new skills is his joy! + p(data-i18n="about.matt_description") + | Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur + | of peanut butter, sipper of coffee. diff --git a/app/views/contribute/ArchmageView.coffee b/app/views/contribute/ArchmageView.coffee index dd21e40ae..e9847448a 100644 --- a/app/views/contribute/ArchmageView.coffee +++ b/app/views/contribute/ArchmageView.coffee @@ -7,6 +7,7 @@ module.exports = class ArchmageView extends ContributeClassView contributorClassName: 'archmage' contributors: [ + {id: '52ccfc9bd3eb6b5a4100b60d', name: 'Glen De Cauwsemaecker', github: 'GlenDC'} {id: '52bfc3ecb7ec628868001297', name: 'Tom Steinbrecher', github: 'TomSteinbrecher'} {id: '5272806093680c5817033f73', name: 'Sébastien Moratinos', github: 'smoratinos'} {name: 'deepak1556', avatar: 'deepak', github: 'deepak1556'} From 5a700c14df34be66e9790bed198cab4afc604253 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Thu, 14 Aug 2014 11:00:08 -0700 Subject: [PATCH 18/37] Stab at fixing the client tests on travis. --- app/assets/javascripts/mock-ajax.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/assets/javascripts/mock-ajax.js b/app/assets/javascripts/mock-ajax.js index 20b07befd..e4b75ed7b 100644 --- a/app/assets/javascripts/mock-ajax.js +++ b/app/assets/javascripts/mock-ajax.js @@ -269,7 +269,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. var responseBody = responseMap[url]; var responded = false; - var requests = jasmine.Ajax.requests.all(); + var requests = jasmine.Ajax.requests.all().slice(); for(var j in requests) { var request = requests[j]; if(request.url.startsWith(url)) { From 719e64e85f330afa4af4ae072950d9d9769f91d7 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Thu, 14 Aug 2014 11:43:35 -0700 Subject: [PATCH 19/37] Added a quick visualization of language localization completion to the Diplomat page. --- app/application.coffee | 2 +- app/templates/contribute/diplomat.jade | 69 ++++--------------- app/views/contribute/DiplomatView.coffee | 84 ++++++++++++++++++++++++ 3 files changed, 99 insertions(+), 56 deletions(-) diff --git a/app/application.coffee b/app/application.coffee index 1b23abcbb..9f23e9f91 100644 --- a/app/application.coffee +++ b/app/application.coffee @@ -1,7 +1,7 @@ FacebookHandler = require 'lib/FacebookHandler' GPlusHandler = require 'lib/GPlusHandler' LinkedInHandler = require 'lib/LinkedInHandler' -locale = require 'locale/locale' +locale = require 'locale/locale' # TODO: don't require all of these? Might be slow. (Haven't checked.) {me} = require 'lib/auth' Tracker = require 'lib/Tracker' CocoView = require 'views/kinds/CocoView' diff --git a/app/templates/contribute/diplomat.jade b/app/templates/contribute/diplomat.jade index 978d6ca0d..2ddc3c53b 100644 --- a/app/templates/contribute/diplomat.jade +++ b/app/templates/contribute/diplomat.jade @@ -47,66 +47,25 @@ block content .contributor-signup-anonymous .contributor-signup(data-contributor-class-id="translator", data-contributor-class-name="diplomat") + h3(data-i18n="contribute.translating_diplomats") | Our Translating Diplomats: //#contributor-list // TODO: collect CodeCombat userids for these guys so we can include a tiled list ul.diplomats - //li Arabic - - //li Bahasa Malaysia - - //li Bulgarian - - //li Catalan - - li Chinese - Chinese - Adam23, spacepope, yangxuan8282, Cheng Zheng - //li Chinese (Simplified) - - //li Chinese (Traditional) - - li Czech - vanous - li Danish - Einar Rasmussen, sorsjen, Randi Hillerøe, Anon - li Dutch - Glen De Cauwsemaecker, Guido Zuidhof, Ruben Vereecken, Jasper D'haene - //li Dutch (Belgium) - - //li Dutch (Netherlands) - - //li English - - //li English (AU) - - //li English (UK) - - //li English (US) - - //li Finnish - - li French - Xeonarno, Elfisen, Armaldio, MartinDelille, pstweb, veritable, jaybi, xavismeh, Anon, Feugy - li German - Dirk, faabsen, HiroP0, Anon, bkimminich - //li German (Austria) - - //li German (Germany) - - //li German (Switzerland) - - li Greek - Stergios - //li Hebrew - - //li Hindi - - li Hungarian - ferpeter, csuvsaregal, atlantisguru, Anon - //li Indonesian - - li Italian - flauta - li Japanese - g1itch, kengos, treby - //li Korean - - //li Lithuanian - - li Norwegian - bardeh - //li Norwegian (Bokmål) - - //li Norwegian Nynorsk - - li Persian - Reza Habibi (Rehb) - li Polish - Anon, Kacper Ciepielewski - //li Portuguese - - li Portuguese (Brasil) - Gutenberg Barros, Kieizroe, Matthew Burt, brunoporto, cassiocardoso - li Portuguese (Portugal) - Matthew Burt, ReiDuKuduro, Imperadeiro98 - //li Romanian - - li Russian - fess89, ser-storchak, Mr A, a1ip - //li Serbian - - li Slovak - Anon - //li Slovene - - //li Spanish - - li Spanish (Latin America) - Jesús Ruppel, Matthew Burt, Mariano Luzza - li Spanish (Spain) - Matthew Burt, DanielRodriguezRivero, Anon, Pouyio - //li Swedish - - li Thai - Kamolchanok Jittrepit - li Turkish - Nazım Gediz Aydındoğmuş, cobaimelan, wakeup - li Ukrainian - fess89 - //li Urdu - - li Vietnamese - Vietnamese - An Nguyen Hoang Thien - //li Wuu (Simplified) - - //li Wuu (Traditional) - + each stats, languageCode in languageStats + if !(languageCode.indexOf('-') != -1 && stats.completion < 0.02 && !stats.diplomats.length) + li + a(href=stats.githubURL) + span= stats.englishDescription + if stats.englishDescription != stats.nativeDescription + span.spl.spr - + span= stats.nativeDescription + if stats.diplomats.length + span.spl - #{stats.diplomats.join(', ')} + .progress + .progress-bar(style='width: ' + (100 * stats.completion) + '%') + span(style=stats.completion < 0.06 ? 'color: black; text-shadow: 0px 1px 0px white' : '')= (100 * stats.completion).toFixed(1) + '%' div.clearfix diff --git a/app/views/contribute/DiplomatView.coffee b/app/views/contribute/DiplomatView.coffee index 32572cce0..1f075803f 100644 --- a/app/views/contribute/DiplomatView.coffee +++ b/app/views/contribute/DiplomatView.coffee @@ -6,3 +6,87 @@ module.exports = class DiplomatView extends ContributeClassView id: 'diplomat-view' template: template contributorClassName: 'diplomat' + + getRenderData: -> + context = super() + context.viewName = @viewName + context.user = @user unless @user?.isAnonymous() + context.languageStats = @calculateSpokenLanguageStats() + context + + calculateSpokenLanguageStats: -> + @locale ?= require 'locale/locale' + totalStrings = @countStrings @locale.en + languageStats = {} + for languageCode, language of @locale + languageStats[languageCode] = + githubURL: "https://github.com/codecombat/codecombat/blob/master/app/locale/#{languageCode}.coffee" + completion: @countStrings(language) / totalStrings + nativeDescription: language.nativeDescription + englishDescription: language.englishDescription + diplomats: @diplomats[languageCode] + languageCode: languageCode + languageStats + + countStrings: (language) -> + translated = 0 + for section, strings of language.translation + translated += _.size strings + translated + + diplomats: + en: [] # English - English + 'en-US': [] # English (US), English (US) + 'en-GB': [] # English (UK), English (UK) + 'en-AU': [] # English (AU), English (AU) + ru: ['fess89', 'ser-storchak', 'Mr A', 'a1ip'] # русский язык, Russian + de: ['Dirk', 'faabsen', 'HiroP0', 'Anon', 'bkimminich'] # Deutsch, German + 'de-DE': [] # Deutsch (Deutschland), German (Germany) + 'de-AT': [] # Deutsch (Österreich), German (Austria) + 'de-CH': [] # Deutsch (Schweiz), German (Switzerland) + es: [] # español, Spanish + 'es-419': ['Jesús Ruppel', 'Matthew Burt', 'Mariano Luzza'] # español (América Latina), Spanish (Latin America) + 'es-ES': ['Matthew Burt', 'DanielRodriguezRivero', 'Anon', 'Pouyio'] # español (ES), Spanish (Spain) + zh: ['Adam23', 'spacepope', 'yangxuan8282', 'Cheng Zheng'] # 中文, Chinese + 'zh-HANS': [] # 简体中文, Chinese (Simplified) + 'zh-HANT': [] # 繁体中文, Chinese (Traditional) + 'zh-WUU-HANS': [] # 吴语, Wuu (Simplified) + 'zh-WUU-HANT': [] # 吳語, Wuu (Traditional) + fr: ['Xeonarno', 'Elfisen', 'Armaldio', 'MartinDelille', 'pstweb', 'veritable', 'jaybi', 'xavismeh', 'Anon', 'Feugy'] # français, French + ja: ['g1itch', 'kengos', 'treby'] # 日本語, Japanese + ar: [] # العربية, Arabic + pt: [] # português, Portuguese + 'pt-BR': ['Gutenberg Barros', 'Kieizroe', 'Matthew Burt', 'brunoporto', 'cassiocardoso'] # português do Brasil, Portuguese (Brazil) + 'pt-PT': ['Matthew Burt', 'ReiDuKuduro', 'Imperadeiro98'] # Português (Portugal), Portuguese (Portugal) + pl: ['Anon', 'Kacper Ciepielewski'] # język polski, Polish + it: ['flauta'] # italiano, Italian + tr: ['Nazım Gediz Aydındoğmuş', 'cobaimelan', 'wakeup'] # Türkçe, Turkish + nl: ['Glen De Cauwsemaecker', 'Guido Zuidhof', 'Ruben Vereecken', 'Jasper D\'haene'] # Nederlands, Dutch + 'nl-BE': [] # Nederlands (België), Dutch (Belgium) + 'nl-NL': [] # Nederlands (Nederland), Dutch (Netherlands) + fa: ['Reza Habibi (Rehb)'] # فارسی, Persian + cs: ['vanous'] # čeština, Czech + sv: [] # Svenska, Swedish + id: [] # Bahasa Indonesia, Indonesian + el: ['Stergios'] # ελληνικά, Greek + ro: [] # limba română, Romanian + vi: ['An Nguyen Hoang Thien'] # Tiếng Việt, Vietnamese + hu: ['ferpeter', 'csuvsaregal', 'atlantisguru', 'Anon'] # magyar, Hungarian + th: ['Kamolchanok Jittrepit'] # ไทย, Thai + da: ['Einar Rasmussen', 'sorsjen', 'Randi Hillerøe', 'Anon'] # dansk, Danish + ko: [] # 한국어, Korean + sk: ['Anon'] # slovenčina, Slovak + sl: [] # slovenščina, Slovene + fi: [] # suomi, Finnish + bg: [] # български език, Bulgarian + no: ['bardeh'] # Norsk, Norwegian + nn: [] # Norwegian (Nynorsk), Norwegian Nynorsk + nb: [] # Norsk Bokmål, Norwegian (Bokmål) + he: [] # עברית, Hebrew + lt: [] # lietuvių kalba, Lithuanian + sr: [] # српски, Serbian + uk: ['fess89'] # українська мова, Ukrainian + hi: [] # मानक हिन्दी, Hindi + ur: [] # اُردُو, Urdu + ms: [] # Bahasa Melayu, Bahasa Malaysia + ca: [] # Català, Catalan From b1252a44265ecd44d3a6491ff855e000352a9057 Mon Sep 17 00:00:00 2001 From: Dominik Kundel Date: Thu, 14 Aug 2014 22:29:57 +0200 Subject: [PATCH 20/37] moving the popover for palette entries into the body to fix layering with popover of autocomplete --- app/styles/play/level.sass | 11 ++- app/styles/play/level/tome/tome.sass | 84 ++++++++++++++++++- .../level/tome/SpellListTabEntryView.coffee | 8 +- .../level/tome/SpellPaletteEntryView.coffee | 13 +-- app/views/play/level/tome/SpellView.coffee | 20 ++++- 5 files changed, 118 insertions(+), 18 deletions(-) diff --git a/app/styles/play/level.sass b/app/styles/play/level.sass index 90e40715f..b0d52ea6f 100644 --- a/app/styles/play/level.sass +++ b/app/styles/play/level.sass @@ -38,10 +38,6 @@ body.is-playing top: 0px bottom: 0 transition: width 0.5s ease-in-out - &.fullscreen-editor - position: fixed - width: 100% - height: 100% #pointer position: absolute @@ -153,3 +149,10 @@ body.is-playing a color: white text-decoration: underline + +html.fullscreen-editor + #level-view + #code-area + position: fixed + width: 100% + height: 100% diff --git a/app/styles/play/level/tome/tome.sass b/app/styles/play/level/tome/tome.sass index e41128470..d3db84cd2 100644 --- a/app/styles/play/level/tome/tome.sass +++ b/app/styles/play/level/tome/tome.sass @@ -70,6 +70,11 @@ display: inline-block padding: 5px +// Set z-index of autocomplete popup smaller than the one of popovers +.ace_editor.ace_autocomplete + z-index: 20 !important + border-color: red !important + html.no-borderimage #tome-view .popover @@ -83,4 +88,81 @@ html.no-borderimage min-width: 600px bottom: inherit right: 50% - margin-right: -300px \ No newline at end of file + margin-right: -300px + + +// NEED TO MOVE THIS +// -------------------------------- + +.spell-palette-popover.popover + // Only those popovers which are our direct children (spell documentation) + max-width: 600px + + &.pinned + left: auto !important + top: 50px !important + right: 45% + // bottom: 151px + @include user-select(text) + // Wish I could set max-width and max-height (and override Bootstrap's stuff) + // but without explicitly setting height, child overflow-y: scroll doesn't work + min-width: 45% + height: 60% + + .arrow + display: none + + .close + position: absolute + top: 5% + right: 5% + font-size: 28px + font-weight: bold + @include opacity(0.6) + text-shadow: 0 1px 0 white + + &:hover + @include opacity(1) + + padding: 10px 10px 30px 10px + border-image: url(/images/level/popover_background.png) 18 fill round + border-width: 15px + @include box-shadow(0 0 0 #000) + + h1:not(.not-code), h2:not(.not-code), h3:not(.not-code), h4:not(.not-code), h5:not(.not-code), h6:not(.not-code) + font-family: Menlo, Monaco, Consolas, "Courier New", monospace + + .popover-title + background-color: transparent + margin: 0 14px + padding: 8px 0 + border-bottom-color: #ccc + + .popover-content + max-height: 100% + overflow-y: auto + margin-right: 10px + img + float: right + + &.top .arrow + bottom: -2% + &.bottom .arrow + top: -2% + &.left .arrow + right: 0% + &.right .arrow + left: -3% + +html.no-borderimage + .spell-palette-popover.popover + background: transparent url(/images/level/popover_background.png) + background-size: 100% 100% + border: 0 + +html.fullscreen-editor + .spell-palette-popover.popover.pinned + min-width: 600px + bottom: inherit + right: 50% + margin-right: -300px \ No newline at end of file diff --git a/app/views/play/level/tome/SpellListTabEntryView.coffee b/app/views/play/level/tome/SpellListTabEntryView.coffee index 68f946846..36059c504 100644 --- a/app/views/play/level/tome/SpellListTabEntryView.coffee +++ b/app/views/play/level/tome/SpellListTabEntryView.coffee @@ -95,9 +95,9 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView Backbone.Mediator.publish 'spell-beautify', spell: @spell onFullscreenClick: -> - $codearea = $('#code-area') - $codearea.css 'z-index', 20 unless $codearea.hasClass 'fullscreen-editor' - $('#code-area').toggleClass 'fullscreen-editor' + $codearea = $('html') + $('#code-area').css 'z-index', 20 unless $codearea.hasClass 'fullscreen-editor' + $('html').toggleClass 'fullscreen-editor' $('.fullscreen-code').toggleClass 'maximized' updateReloadButton: -> @@ -151,7 +151,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView break $codearea = $('#code-area') $codearea.on transitionListener, => - $codearea.css 'z-index', 1 unless $codearea.hasClass 'fullscreen-editor' + $codearea.css 'z-index', 1 unless $('html').hasClass 'fullscreen-editor' destroy: -> diff --git a/app/views/play/level/tome/SpellPaletteEntryView.coffee b/app/views/play/level/tome/SpellPaletteEntryView.coffee index 39a1d164e..ca9270616 100644 --- a/app/views/play/level/tome/SpellPaletteEntryView.coffee +++ b/app/views/play/level/tome/SpellPaletteEntryView.coffee @@ -9,6 +9,7 @@ module.exports = class SpellPaletteEntryView extends CocoView className: 'spell-palette-entry-view' template: template popoverPinned: false + overridePopoverTemplate: '' subscriptions: 'surface:frame-changed': 'onFrameChanged' @@ -41,8 +42,10 @@ module.exports = class SpellPaletteEntryView extends CocoView placement: 'top' trigger: 'manual' # Hover, until they click, which will then pin it until unclick. content: @docFormatter.formatPopover() - container: '#tome-view' + container: 'body' + template: @overridePopoverTemplate ) + window.element = @$el @$el.on 'show.bs.popover', => Backbone.Mediator.publish 'tome:palette-hovered', thang: @thang, prop: @doc.name, entry: @ @@ -58,15 +61,15 @@ module.exports = class SpellPaletteEntryView extends CocoView togglePinned: -> if @popoverPinned @popoverPinned = false - @$el.add('#tome-view .popover').removeClass 'pinned' - $('#tome-view .popover .close').remove() + @$el.add('.spell-palette-popover.popover').removeClass 'pinned' + $('.spell-palette-popover.popover .close').remove() @$el.popover 'hide' else @popoverPinned = true @$el.popover 'show' - @$el.add('#tome-view .popover').addClass 'pinned' + @$el.add('.spell-palette-popover.popover').addClass 'pinned' x = $('') - $('#tome-view .popover').append x + $('.spell-palette-popover.popover').append x x.on 'click', @onClick Backbone.Mediator.publish 'tome:palette-pin-toggled', entry: @, pinned: @popoverPinned diff --git a/app/views/play/level/tome/SpellView.coffee b/app/views/play/level/tome/SpellView.coffee index 8a4c38f89..2169e6f91 100644 --- a/app/views/play/level/tome/SpellView.coffee +++ b/app/views/play/level/tome/SpellView.coffee @@ -50,6 +50,7 @@ module.exports = class SpellView extends CocoView 'tome:update-snippets': 'addZatannaSnippets' 'tome:insert-snippet': 'onInsertSnippet' 'spell-beautify': 'onSpellBeautify' + 'script:state-changed': 'onScriptStateChange' events: 'mouseout': 'onMouseOut' @@ -124,10 +125,17 @@ module.exports = class SpellView extends CocoView addCommand name: 'end-current-script' bindKey: {win: 'Shift-Space', mac: 'Shift-Space'} - passEvent: true # https://github.com/ajaxorg/ace/blob/master/lib/ace/keyboard/keybinding.js#L114 - # No easy way to selectively cancel shift+space, since we don't get access to the event. - # Maybe we could temporarily set ourselves to read-only if we somehow know that a script is active? - exec: -> Backbone.Mediator.publish 'level:shift-space-pressed' + # passEvent: true # https://github.com/ajaxorg/ace/blob/master/lib/ace/keyboard/keybinding.js#L114 + # No easy way to selectively cancel shift+space, since we don't get access to the event. + # Maybe we could temporarily set ourselves to read-only if we somehow know that a script is active? + exec: => + if @scriptRunning + console.log '>>>> BOOM <<<<' + Backbone.Mediator.publish 'level:shift-space-pressed' + else + console.log '>>>> BAEM <<<<' + @ace.insert ' ' + addCommand name: 'end-all-scripts' bindKey: {win: 'Escape', mac: 'Escape'} @@ -197,6 +205,7 @@ module.exports = class SpellView extends CocoView # window.snippetEntries = snippetEntries lang = @editModes[e.language].substr 'ace/mode/'.length @zatanna.addSnippets snippetEntries, lang + window.aceEditor = @ace onMultiplayerChanged: -> if @session.get('multiplayer') @@ -683,6 +692,9 @@ module.exports = class SpellView extends CocoView @spell.hasChangedSignificantly @getSource(), null, (hasChanged) => @recompile() if hasChanged + onScriptStateChange: (e) -> + @scriptRunning = if e.currentScript is null then false else true + destroy: -> $(@ace?.container).find('.ace_gutter').off 'click', '.ace_error, .ace_warning, .ace_info', @onAnnotationClick @firepad?.dispose() From 9b79e2ca2783d34a394d575e6dc2d688bb0e4904 Mon Sep 17 00:00:00 2001 From: Matt Lott Date: Thu, 14 Aug 2014 11:55:43 -0700 Subject: [PATCH 21/37] Instrument user code problems --- app/models/UserCodeProblem.coffee | 6 ++ app/schemas/models/user_code_problem.coffee | 25 +++++ app/views/play/level/tome/Problem.coffee | 25 ++++- app/views/play/level/tome/Spell.coffee | 1 + app/views/play/level/tome/SpellView.coffee | 2 +- app/views/play/level/tome/TomeView.coffee | 1 + server/commons/mapping.coffee | 1 + server/routes/db.coffee | 2 +- .../user_code_problems/UserCodeProblem.coffee | 10 ++ .../user_code_problem_handler.coffee | 25 +++++ .../views/play/level/tome/Problem.spec.coffee | 91 +++++++++++++++++++ 11 files changed, 185 insertions(+), 4 deletions(-) create mode 100644 app/models/UserCodeProblem.coffee create mode 100644 app/schemas/models/user_code_problem.coffee create mode 100644 server/user_code_problems/UserCodeProblem.coffee create mode 100644 server/user_code_problems/user_code_problem_handler.coffee create mode 100644 test/app/views/play/level/tome/Problem.spec.coffee diff --git a/app/models/UserCodeProblem.coffee b/app/models/UserCodeProblem.coffee new file mode 100644 index 000000000..611b30a19 --- /dev/null +++ b/app/models/UserCodeProblem.coffee @@ -0,0 +1,6 @@ +CocoModel = require './CocoModel' + +module.exports = class UserCodeProblem extends CocoModel + @className: 'UserCodeProblem' + @schema: require 'schemas/models/user_code_problem' + urlRoot: '/db/user.code.problem' diff --git a/app/schemas/models/user_code_problem.coffee b/app/schemas/models/user_code_problem.coffee new file mode 100644 index 000000000..38ac00ceb --- /dev/null +++ b/app/schemas/models/user_code_problem.coffee @@ -0,0 +1,25 @@ +c = require './../schemas' + +UserCodeProblemSchema = c.object { + title: 'User Code Problem' + description: 'Data for a problem in user code.' +} + +_.extend UserCodeProblemSchema.properties, + creator: c.objectId(links: [{rel: 'extra', href: '/db/user/{($)}'}]) + created: c.date({title: 'Created', readOnly: true}) + + code: String + codeSnippet: String + errHint: String + errId: String + errLevel: String + errMessage: String + errRange: [] + errType: String + language: String + levelID: String + +c.extendBasicProperties UserCodeProblemSchema, 'user.code.problem' + +module.exports = UserCodeProblemSchema diff --git a/app/views/play/level/tome/Problem.coffee b/app/views/play/level/tome/Problem.coffee index 5aaa1907d..23918b2b4 100644 --- a/app/views/play/level/tome/Problem.coffee +++ b/app/views/play/level/tome/Problem.coffee @@ -1,20 +1,23 @@ ProblemAlertView = require './ProblemAlertView' Range = ace.require('ace/range').Range +UserCodeProblem = require 'models/UserCodeProblem' module.exports = class Problem annotation: null alertView: null markerRange: null - constructor: (@aether, @aetherProblem, @ace, withAlert=false, withRange=false) -> + constructor: (@aether, @aetherProblem, @ace, withAlert=false, isCast=false, @levelID) -> @buildAnnotation() @buildAlertView() if withAlert - @buildMarkerRange() if withRange + @buildMarkerRange() if isCast + @saveUserCodeProblem() if isCast destroy: -> unless @alertView?.destroyed @alertView?.$el?.remove() @alertView?.destroy() @removeMarkerRange() + @userCodeProblem.off() if @userCodeProblem buildAnnotation: -> return unless @aetherProblem.range @@ -46,3 +49,21 @@ module.exports = class Problem @ace.getSession().removeMarker @markerRange.id @markerRange.start.detach() @markerRange.end.detach() + + saveUserCodeProblem: () -> + @userCodeProblem = new UserCodeProblem() + @userCodeProblem.set 'code', @aether.raw + if @aetherProblem.range + rawLines = @aether.raw.split '\n' + errorLines = rawLines.slice @aetherProblem.range[0].row, @aetherProblem.range[1].row + 1 + @userCodeProblem.set 'codeSnippet', errorLines.join '\n' + @userCodeProblem.set 'errHint', @aetherProblem.hint if @aetherProblem.hint + @userCodeProblem.set 'errId', @aetherProblem.id if @aetherProblem.id + @userCodeProblem.set 'errLevel', @aetherProblem.level if @aetherProblem.level + @userCodeProblem.set 'errMessage', @aetherProblem.message if @aetherProblem.message + @userCodeProblem.set 'errRange', @aetherProblem.range if @aetherProblem.range + @userCodeProblem.set 'errType', @aetherProblem.type if @aetherProblem.type + @userCodeProblem.set 'language', @aether.language.id if @aether.language?.id + @userCodeProblem.set 'levelID', @levelID if @levelID + @userCodeProblem.save() + null \ No newline at end of file diff --git a/app/views/play/level/tome/Spell.coffee b/app/views/play/level/tome/Spell.coffee index 2f1b62d0e..af6628eac 100644 --- a/app/views/play/level/tome/Spell.coffee +++ b/app/views/play/level/tome/Spell.coffee @@ -19,6 +19,7 @@ module.exports = class Spell @supermodel = options.supermodel @skipProtectAPI = options.skipProtectAPI @worker = options.worker + @levelID = options.levelID p = options.programmableMethod @languages = p.languages ? {} diff --git a/app/views/play/level/tome/SpellView.coffee b/app/views/play/level/tome/SpellView.coffee index 8a4c38f89..163e0ec01 100644 --- a/app/views/play/level/tome/SpellView.coffee +++ b/app/views/play/level/tome/SpellView.coffee @@ -414,7 +414,7 @@ module.exports = class SpellView extends CocoView for aetherProblem, problemIndex in aether.getAllProblems() continue if key = aetherProblem.userInfo?.key and key of seenProblemKeys seenProblemKeys[key] = true if key - @problems.push problem = new Problem aether, aetherProblem, @ace, isCast and problemIndex is 0, isCast + @problems.push problem = new Problem aether, aetherProblem, @ace, isCast and problemIndex is 0, isCast, @spell.levelID annotations.push problem.annotation if problem.annotation @aceSession.setAnnotations annotations @highlightCurrentLine aether.flow unless _.isEmpty aether.flow diff --git a/app/views/play/level/tome/TomeView.coffee b/app/views/play/level/tome/TomeView.coffee index e0335cd70..4fe38c061 100644 --- a/app/views/play/level/tome/TomeView.coffee +++ b/app/views/play/level/tome/TomeView.coffee @@ -132,6 +132,7 @@ module.exports = class TomeView extends CocoView worker: @worker language: language spectateView: @options.spectateView + levelID: @options.levelID for thangID, spellKeys of @thangSpells thang = world.getThangByID thangID diff --git a/server/commons/mapping.coffee b/server/commons/mapping.coffee index 25e72e93d..f9751dc3e 100644 --- a/server/commons/mapping.coffee +++ b/server/commons/mapping.coffee @@ -8,6 +8,7 @@ module.exports.handlers = 'patch': 'patches/patch_handler' 'thang_type': 'levels/thangs/thang_type_handler' 'user': 'users/user_handler' + 'user_code_problem': 'user_code_problems/user_code_problem_handler' 'user_remark': 'users/remarks/user_remark_handler' 'mail_sent': 'mail/sent/mail_sent_handler' 'achievement': 'achievements/achievement_handler' diff --git a/server/routes/db.coffee b/server/routes/db.coffee index 4005684ed..8791d3f91 100644 --- a/server/routes/db.coffee +++ b/server/routes/db.coffee @@ -28,7 +28,7 @@ module.exports.setup = (app) -> return errors.unauthorized(res, 'Must have an identity to do anything with the db. Do you have cookies enabled?') unless req.user try - moduleName = module.replace '.', '_' + moduleName = module.replace new RegExp('\\.', 'g'), '_' name = handlers[moduleName] handler = require('../' + name) return handler.getLatestVersion(req, res, parts[1], parts[3]) if parts[2] is 'version' diff --git a/server/user_code_problems/UserCodeProblem.coffee b/server/user_code_problems/UserCodeProblem.coffee new file mode 100644 index 000000000..f03168b34 --- /dev/null +++ b/server/user_code_problems/UserCodeProblem.coffee @@ -0,0 +1,10 @@ +mongoose = require 'mongoose' +plugins = require '../plugins/plugins' + +UserCodeProblemSchema = new mongoose.Schema({ + created: + type: Date + 'default': Date.now +}, {strict: false}) + +module.exports = UserCodeProblem = mongoose.model('user.code.problem', UserCodeProblemSchema) diff --git a/server/user_code_problems/user_code_problem_handler.coffee b/server/user_code_problems/user_code_problem_handler.coffee new file mode 100644 index 000000000..dbd99aa79 --- /dev/null +++ b/server/user_code_problems/user_code_problem_handler.coffee @@ -0,0 +1,25 @@ +UserCodeProblem = require './UserCodeProblem' +Handler = require '../commons/Handler' + +class UserCodeProblemHandler extends Handler + modelClass: UserCodeProblem + jsonSchema: require '../../app/schemas/models/user_code_problem' + editableProperties: [ + 'code' + 'codeSnippet' + 'errHint' + 'errId' + 'errLevel' + 'errMessage' + 'errRange' + 'errType' + 'language' + 'levelID' + ] + + makeNewInstance: (req) -> + ucp = super(req) + ucp.set('creator', req.user._id) + ucp + +module.exports = new UserCodeProblemHandler() diff --git a/test/app/views/play/level/tome/Problem.spec.coffee b/test/app/views/play/level/tome/Problem.spec.coffee new file mode 100644 index 000000000..cf663225c --- /dev/null +++ b/test/app/views/play/level/tome/Problem.spec.coffee @@ -0,0 +1,91 @@ +Problem = require 'views/play/level/tome/Problem' + +describe 'Problem', -> + # boilerplate problem params + ace = { + getSession: -> { + getDocument: -> { + createAnchor: -> + } + addMarker: -> + } + } + aether = { + raw: "this.say('hi');\nthis.sad('bye');" + language: { id: 'javascript' } + } + aetherProblem = { + hint: 'did you mean say instead of sad?' + id: 'unknown_ReferenceError' + level: 'error' + message: 'Line 1: tmp2[tmp3] is not a function' + range: [ + { row: 1 } + { row: 1 } + ] + type: 'runtime' + } + levelID = 'awesome' + + it 'save user code problem', -> + new Problem aether, aetherProblem, ace, false, true, levelID + expect(jasmine.Ajax.requests.count()).toBe(1) + + request = jasmine.Ajax.requests.mostRecent() + expect(request.url).toEqual("/db/user.code.problem") + + params = JSON.parse(request.params) + expect(params.code).toEqual(aether.raw) + expect(params.codeSnippet).toEqual("this.sad('bye');") + expect(params.errHint).toEqual(aetherProblem.hint) + expect(params.errId).toEqual(aetherProblem.id) + expect(params.errLevel).toEqual(aetherProblem.level) + expect(params.errMessage).toEqual(aetherProblem.message) + expect(params.errRange).toEqual(aetherProblem.range) + expect(params.errType).toEqual(aetherProblem.type) + expect(params.language).toEqual(aether.language.id) + expect(params.levelID).toEqual(levelID) + + it 'save user code problem no range', -> + aetherProblem.range = null + new Problem aether, aetherProblem, ace, false, true, levelID + expect(jasmine.Ajax.requests.count()).toBe(1) + + request = jasmine.Ajax.requests.mostRecent() + expect(request.url).toEqual("/db/user.code.problem") + + params = JSON.parse(request.params) + expect(params.code).toEqual(aether.raw) + expect(params.errHint).toEqual(aetherProblem.hint) + expect(params.errId).toEqual(aetherProblem.id) + expect(params.errLevel).toEqual(aetherProblem.level) + expect(params.errMessage).toEqual(aetherProblem.message) + expect(params.errType).toEqual(aetherProblem.type) + expect(params.language).toEqual(aether.language.id) + expect(params.levelID).toEqual(levelID) + + # Difference when no range + expect(params.codeSnippet).toBeUndefined() + expect(params.errRange).toBeUndefined() + + it 'save user code problem multi-line snippet', -> + aether.raw = "this.say('hi');\nthis.sad\n('bye');" + aetherProblem.range = [ { row: 1 }, { row: 2 } ] + + new Problem aether, aetherProblem, ace, false, true, levelID + expect(jasmine.Ajax.requests.count()).toBe(1) + + request = jasmine.Ajax.requests.mostRecent() + expect(request.url).toEqual("/db/user.code.problem") + + params = JSON.parse(request.params) + expect(params.code).toEqual(aether.raw) + expect(params.codeSnippet).toEqual("this.sad\n('bye');") + expect(params.errHint).toEqual(aetherProblem.hint) + expect(params.errId).toEqual(aetherProblem.id) + expect(params.errLevel).toEqual(aetherProblem.level) + expect(params.errMessage).toEqual(aetherProblem.message) + expect(params.errRange).toEqual(aetherProblem.range) + expect(params.errType).toEqual(aetherProblem.type) + expect(params.language).toEqual(aether.language.id) + expect(params.levelID).toEqual(levelID) From 827f6ee8b883187c262d3d55c93b25ac3db64a21 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Thu, 14 Aug 2014 13:41:32 -0700 Subject: [PATCH 22/37] Added a swap button, as well as moving my testing to the demo view and adding some specifications, fixing bugs and tweaking interactions along the way. --- app/Router.coffee | 1 - app/styles/game-menu/inventory-view.sass | 44 +++--- app/templates/game-menu/inventory-view.jade | 4 +- app/views/DemoView.coffee | 1 + app/views/game-menu/InventoryView.coffee | 132 ++++++++++++------ .../views/game-menu/InventoryView.spec.coffee | 71 ++++++++++ .../views/game-menu/InventoryView.demo.coffee | 17 +++ 7 files changed, 204 insertions(+), 66 deletions(-) create mode 100644 test/app/views/game-menu/InventoryView.spec.coffee create mode 100644 test/demo/views/game-menu/InventoryView.demo.coffee diff --git a/app/Router.coffee b/app/Router.coffee index 98229b552..2fda8dbc7 100644 --- a/app/Router.coffee +++ b/app/Router.coffee @@ -15,7 +15,6 @@ module.exports = class CocoRouter extends Backbone.Router routes: '': go('HomeView') - 'items': go('game-menu/InventoryView') 'about': go('AboutView') diff --git a/app/styles/game-menu/inventory-view.sass b/app/styles/game-menu/inventory-view.sass index 3cec60ad8..afb9e6f02 100644 --- a/app/styles/game-menu/inventory-view.sass +++ b/app/styles/game-menu/inventory-view.sass @@ -1,17 +1,19 @@ $selected-area-height: 150px +@import "../bootstrap/mixins" + +//#inventory-view * + #inventory-view position: relative height: 600px - background-color: white - user-select: none + +user-select(none) h3 margin: 0 #equipped - padding: 10px - width: 74% + width: 75% position: absolute left: 0 top: 0 @@ -24,7 +26,7 @@ $selected-area-height: 150px .panel text-align: center - width: 31% + width: 31.3% margin: 5px 2% 5px 0 float: left cursor: pointer @@ -42,29 +44,23 @@ $selected-area-height: 150px font-size: 12px #available-equipment - width: 24% - padding: 10px + width: 25% position: absolute - right: 1% + right: 0 top: 0 bottom: $selected-area-height + 10 overflow: scroll - user-select: none h3 margin-bottom: 5px - + .list-group-item.active background-color: #e0f0f5 .list-group-item.equipped display: none - .item-mixin - &.active - background-color: lightblue - .well - padding: 5px + .item-view cursor: pointer #selected-items @@ -73,13 +69,17 @@ $selected-area-height: 150px left: 0 right: 0 bottom: 0 + text-align: center #selected-equipped-item, #selected-available-item + text-align: left position: absolute bottom: 0 top: 0 overflow: scroll padding: 10px + height: 100% + width: 49% img width: 100px @@ -90,8 +90,16 @@ $selected-area-height: 150px #selected-equipped-item left: 0 - width: 48.5% #selected-available-item - right: 2% - width: 48.5% + right: 0 + + $swap-item-height: 40px + + #swap-button + position: relative + top: ($selected-area-height / 2) - ($swap-item-height / 2) + height: $swap-item-height + font-size: 24px + line-height: 24px + display: inline-block \ No newline at end of file diff --git a/app/templates/game-menu/inventory-view.jade b/app/templates/game-menu/inventory-view.jade index 7bf5182ee..0f474aa01 100644 --- a/app/templates/game-menu/inventory-view.jade +++ b/app/templates/game-menu/inventory-view.jade @@ -16,7 +16,7 @@ div#equipped - } div#available-equipment - h3 Available + h3 Stash for item in items .list-group-item(class=item.classes, data-item-id=item.id) @@ -25,3 +25,5 @@ div#selected-items .item-view-stub #selected-available-item.well .item-view-stub + button#swap-button.btn.btn-danger + span.glyphicon.glyphicon-transfer diff --git a/app/views/DemoView.coffee b/app/views/DemoView.coffee index 24fe9090d..3e356e631 100644 --- a/app/views/DemoView.coffee +++ b/app/views/DemoView.coffee @@ -87,6 +87,7 @@ module.exports = DemoView = class DemoView extends RootView else @$el.find('#demo-area').empty().append(view.$el) view.afterInsert() + window.currentDemoView = view # TODO, maybe handle root views differently than modal views differently than everything else? getAllDemoFiles: -> diff --git a/app/views/game-menu/InventoryView.coffee b/app/views/game-menu/InventoryView.coffee index c327f9271..4ba26573d 100644 --- a/app/views/game-menu/InventoryView.coffee +++ b/app/views/game-menu/InventoryView.coffee @@ -5,13 +5,6 @@ ThangType = require 'models/ThangType' CocoCollection = require 'collections/CocoCollection' ItemView = require './ItemView' -DEFAULT_EQUIPMENT = { - 'right-hand': '53e21249b82921000051ce11' - 'feet':'53e214f153457600003e3eab' - 'eyes': '53e2167653457600003e3eb3' - 'left-hand': '53e22aa153457600003e3ef5' -} - module.exports = class InventoryView extends CocoView id: 'inventory-view' className: 'tab-pane' @@ -23,6 +16,7 @@ module.exports = class InventoryView extends CocoView 'click #available-equipment .list-group-item': 'onAvailableItemClick' 'dblclick #available-equipment .list-group-item': 'onAvailableItemDoubleClick' 'dblclick .item-slot .item-view': 'onEquippedItemDoubleClick' + 'click #swap-button': 'onClickSwapButton' shortcuts: 'esc': 'clearSelection' @@ -30,7 +24,7 @@ module.exports = class InventoryView extends CocoView initialize: (options) -> super(arguments...) @items = new CocoCollection([], { model: ThangType }) - @equipment = options.equipment or DEFAULT_EQUIPMENT + @equipment = options.equipment or {} @items.url = '/db/thang.type?view=items&project=name,description,components,original' @supermodel.loadCollection(@items, 'items') @@ -87,28 +81,64 @@ module.exports = class InventoryView extends CocoView onItemSlotClick: (e) -> slot = $(e.target).closest('.panel') wasActive = slot.hasClass('panel-info') - @$el.find('#equipped .panel').removeClass('panel-info') - @$el.find('#available-equipment .list-group-item').removeClass('active') if slot.hasClass('disabled') - slot.addClass('panel-info') # unless wasActive + @unselectAllSlots() + @unselectAllAvailableEquipment() if slot.hasClass('disabled') + @selectSlot(slot) unless wasActive and not $(e.target).closest('.item-view')[0] @onSelectionChanged() onAvailableItemClick: (e) -> - itemEl = $(e.target).closest('.list-group-item') - @$el.find('#available-equipment .list-group-item').removeClass('active') - itemEl.addClass('active') + itemContainer = $(e.target).closest('.list-group-item') + @unselectAllAvailableEquipment() + @selectAvailableItem(itemContainer) @onSelectionChanged() - onAvailableItemDoubleClick: -> - slot = @$el.find('#equipped .item-slot.panel-info') - slot = $('.panel:not(.disabled):first') if not slot.length + onAvailableItemDoubleClick: (e) -> + slot = @getSelectedSlot() + slot = @$el.find('.panel:not(.disabled):first') if not slot.length @unequipItemFromSlot(slot) @equipSelectedItemToSlot(slot) @onSelectionChanged() onEquippedItemDoubleClick: (e) -> + @unselectAllAvailableEquipment() slot = $(e.target).closest('.item-slot') - @unequipItemFromSlot(slot) + @selectAvailableItem(@unequipItemFromSlot(slot)) @onSelectionChanged() + + onClickSwapButton: -> + slot = @getSelectedSlot() + selectedItemContainer = @$el.find('#available-equipment .list-group-item.active') + return unless slot[0] or selectedItemContainer[0] + slot = @$el.find('.panel:not(.disabled):first') if not slot.length + itemContainer = @unequipItemFromSlot(slot) + @equipSelectedItemToSlot(slot) + @selectAvailableItem(itemContainer) + @selectSlot(slot) + @onSelectionChanged() + + getSelectedSlot: -> + @$el.find('#equipped .item-slot.panel-info') + + unselectAllAvailableEquipment: -> + @$el.find('#available-equipment .list-group-item').removeClass('active') + + unselectAllSlots: -> + @$el.find('#equipped .panel').removeClass('panel-info') + + selectSlot: (slot) -> + slot.addClass('panel-info') + + getSlot: (name) -> + @$el.find(".item-slot[data-slot=#{name}]") + + getSelectedAvailableItemContainer: -> + @$el.find('#available-equipment .list-group-item.active') + + getAvailableItemContainer: (itemID) -> + @$el.find("#available-equipment .list-group-item[data-item-id='#{itemID}']") + + selectAvailableItem: (itemContainer) -> + itemContainer?.addClass('active') unequipItemFromSlot: (slot) -> itemIDToUnequip = slot.find('.item-view').data('item-id') @@ -117,15 +147,15 @@ module.exports = class InventoryView extends CocoView for el in @$el.find('#available-equipment .list-group-item') itemID = $(el).find('.item-view').data('item-id') if itemID is itemIDToUnequip - $(el).removeClass('equipped') + return $(el).removeClass('equipped') equipSelectedItemToSlot: (slot) -> - selectedItemContainer = @$el.find('#available-equipment .list-group-item.active') + selectedItemContainer = @getSelectedAvailableItemContainer() newItemHTML = selectedItemContainer.html() - @$el.find('#available-equipment .list-group-item.active').addClass('equipped') - container = slot.find('.panel-body') - container.html(newItemHTML) - container.find('.item-view').data('item-id', selectedItemContainer.find('.item-view').data('item-id')) + selectedItemContainer .addClass('equipped') + slotContainer = slot.find('.panel-body') + slotContainer.html(newItemHTML) + slotContainer.find('.item-view').data('item-id', selectedItemContainer.find('.item-view').data('item-id')) @$el.find('.list-group-item').removeClass('active') onSelectionChanged: -> @@ -141,19 +171,10 @@ module.exports = class InventoryView extends CocoView selectedSlotItemID = selectedSlot.find('.item-view').data('item-id') if selectedSlotItemID item = _.find @items.models, {id:selectedSlotItemID} - - if not @selectedEquippedItemView - @selectedEquippedItemView = new ItemView({ - item: item, includes: {name: true, stats: true}}) - @insertSubView(@selectedEquippedItemView, @$el.find('#selected-equipped-item .item-view-stub')) - - else - @selectedEquippedItemView.$el.show() - @selectedEquippedItemView.item = item - @selectedEquippedItemView.render() + @showSelectedSlotItem(item) else - @selectedEquippedItemView?.$el.hide() + @hideSelectedSlotItem() else @$el.find('#available-equipment .list-group-item').show() @@ -170,21 +191,40 @@ module.exports = class InventoryView extends CocoView if slotName not in allowedSlots $(slotEl).addClass('disabled') - # updated selected item view - if not @selectedAvailableItemView - @selectedAvailableItemView = new ItemView({ - item: item, includes: {name: true, stats: true}}) - @insertSubView(@selectedAvailableItemView, @$el.find('#selected-available-item .item-view-stub')) - - else - @selectedAvailableItemView.$el.show() - @selectedAvailableItemView.item = item - @selectedAvailableItemView.render() + @showSelectedAvailableItem(item) else - @selectedAvailableItemView?.$el.hide() + @hideSelectedAvailableItem() @delegateEvents() + + showSelectedSlotItem: (item) -> + if not @selectedEquippedItemView + @selectedEquippedItemView = new ItemView({ + item: item, includes: {name: true, stats: true}}) + @insertSubView(@selectedEquippedItemView, @$el.find('#selected-equipped-item .item-view-stub')) + + else + @selectedEquippedItemView.$el.show() + @selectedEquippedItemView.item = item + @selectedEquippedItemView.render() + + hideSelectedSlotItem: -> + @selectedEquippedItemView?.$el.hide() + + showSelectedAvailableItem: (item) -> + if not @selectedAvailableItemView + @selectedAvailableItemView = new ItemView({ + item: item, includes: {name: true, stats: true}}) + @insertSubView(@selectedAvailableItemView, @$el.find('#selected-available-item .item-view-stub')) + + else + @selectedAvailableItemView.$el.show() + @selectedAvailableItemView.item = item + @selectedAvailableItemView.render() + + hideSelectedAvailableItem: -> + @selectedAvailableItemView?.$el.hide() getCurrentEquipmentConfig: -> config = {} diff --git a/test/app/views/game-menu/InventoryView.spec.coffee b/test/app/views/game-menu/InventoryView.spec.coffee new file mode 100644 index 000000000..3e66b5035 --- /dev/null +++ b/test/app/views/game-menu/InventoryView.spec.coffee @@ -0,0 +1,71 @@ +InventoryView = require 'views/game-menu/InventoryView' + +thangTypes = [ + {"_id":"boots-id","name":"Boots","original":"boots","components":[{"original":"524b85837fc0f6d519000020","majorVersion":0},{"original":"524b7b857fc0f6d519000012","majorVersion":0},{"original":"524b4150ff92f1f4f8000024","majorVersion":0},{"original":"53e12043b82921000051cdf9","majorVersion":0,"config":{"slots":["feet"],"programmableProperties":["move","targetPos"],"moreProgrammableProperties":[],"extraHUDProperties":["maxSpeed"],"stats":{"maxSpeed":{"factor":1}}}},{"original":"524b7b8c7fc0f6d519000013","majorVersion":0,"config":{"locomotionType":"running","maxSpeed":5,"maxAcceleration":100}},{"original":"524b75ad7fc0f6d519000001","majorVersion":0,"config":{"pos":{"x":39.08,"y":20.72,"z":0.5},"width":1,"height":1,"depth":1,"shape":"ellipsoid"}},{"original":"524b7b7c7fc0f6d519000011","majorVersion":0}]}, + {"_id":"boots-of-leaping-id","name":"Boots of Leaping","original":"boots-of-leaping","components":[{"original":"524b85837fc0f6d519000020","majorVersion":0},{"original":"524b7b857fc0f6d519000012","majorVersion":0},{"original":"524b4150ff92f1f4f8000024","majorVersion":0},{"original":"53e12043b82921000051cdf9","majorVersion":0,"config":{"ownerID":"Tharin","slots":["feet"],"programmableProperties":["move","targetPos","jumpTo"],"moreProgrammableProperties":["jump"],"extraHUDProperties":["maxSpeed"],"stats":{"maxSpeed":{"factor":1.2}}}},{"original":"524b7b8c7fc0f6d519000013","majorVersion":0,"config":{"locomotionType":"running","maxSpeed":6,"maxAcceleration":100}},{"original":"524b1f54d768d916b5000001","majorVersion":0,"config":{"jumpHeight":3}},{"original":"5275392d69abdcb12401441e","majorVersion":0,"config":{"jumpSpeedFactor":1.5}},{"original":"524b75ad7fc0f6d519000001","majorVersion":0,"config":{"pos":{"x":39.08,"y":20.72,"z":0.5},"width":1,"height":1,"depth":1,"shape":"ellipsoid"}},{"original":"524b7b7c7fc0f6d519000011","majorVersion":0}]}, + {"_id":"crossbow-id","name":"Crossbow","original":"crossbow","components":[{"original":"524b85837fc0f6d519000020","majorVersion":0},{"original":"524b517fff92f1f4f8000046","majorVersion":0},{"original":"524b7b747fc0f6d519000010","majorVersion":0,"config":{"team":"humans"}},{"original":"524b7bc67fc0f6d51900001a","majorVersion":0,"config":{"missileThangID":"Arrow"}},{"original":"524b7ba57fc0f6d519000016","majorVersion":0,"config":{"attackDamage":5,"attackRange":20,"cooldown":0.6,"chasesWhenAttackingOutOfRange":true}},{"original":"524b3e3fff92f1f4f800000d","majorVersion":0},{"original":"524cbdc03ea855e0ab0000bb","majorVersion":0},{"original":"524b4150ff92f1f4f8000024","majorVersion":0},{"original":"53e12043b82921000051cdf9","majorVersion":0,"config":{"slots":["right-hand"],"programmableProperties":["attack","target","attackRange"],"moreProgrammableProperties":["attackXY","targetPos"],"extraHUDProperties":["attackDamage","attackRange"]}},{"original":"524b75ad7fc0f6d519000001","majorVersion":0,"config":{"pos":{"x":41.105000000000004,"y":31.6,"z":0.125},"width":1.5,"height":0.75,"depth":0.25,"shape":"box"}},{"original":"524b7b7c7fc0f6d519000011","majorVersion":0},{"original":"524b457bff92f1f4f8000031","majorVersion":0}]}, + {"_id":"crude-glasses-id","name":"Crude Glasses","original":"crude-glasses","components":[{"original":"524b7b747fc0f6d519000010","majorVersion":0,"config":{"team":"humans"}},{"original":"524b4150ff92f1f4f8000024","majorVersion":0},{"original":"53e12043b82921000051cdf9","majorVersion":0,"config":{"slots":["eyes"],"programmableProperties":["pos","getEnemies"],"moreProgrammableProperties":["getItems","getFriends"]}},{"original":"524b75ad7fc0f6d519000001","majorVersion":0,"config":{"pos":{"x":33.230000000000004,"y":20.75,"z":2},"width":1,"height":2,"depth":1,"shape":"ellipsoid"}},{"original":"524b457bff92f1f4f8000031","majorVersion":0,"config":{"visualRange":50}}]} +] + +describe 'InventoryView', -> + inventoryView = null + + beforeEach (done) -> + equipment = { 'feet':'boots', 'eyes': 'crude-glasses' } + inventoryView = new InventoryView({ equipment: equipment }) + responses = + '/db/thang.type?view=items': thangTypes + jasmine.Ajax.requests.sendResponses(responses) + _.defer -> + inventoryView.render() + done() + + it 'selects a slot when you click it', -> + inventoryView.getSlot('eyes').click() + expect(inventoryView.getSelectedSlot().data('slot')).toBe('eyes') + + it 'unselects a selected slot when you click it', -> + inventoryView.getSlot('eyes').click().click() + expect(inventoryView.getSelectedSlot().data('slot')).toBeUndefined() + + it 'selects an available item when you click it', -> + inventoryView.getAvailableItemContainer('boots-of-leaping-id').click() + expect(inventoryView.getSelectedAvailableItemContainer().data('item-id')).toBe('boots-of-leaping-id') + + it 'equips an available item when you double click it', -> + inventoryView.getAvailableItemContainer('crossbow-id').click().dblclick() + expect(inventoryView.getCurrentEquipmentConfig()['right-hand']).toBeTruthy() + + it 'unequips an itm when you double click it', -> + inventoryView.getSlot('eyes').find('.item-view').click().dblclick() + expect(inventoryView.getCurrentEquipmentConfig().eyes).toBeUndefined() + + describe 'swap button', -> + it 'does nothing if nothing is selected', -> + inventoryView.$el.find('#swap-button').click() + expect(inventoryView.getSelectedSlot()[0]).toBeFalsy() + expect(inventoryView.getSelectedAvailableItemContainer()[0]).toBeFalsy() + + it 'unequips and selects the unequipped item if just an equipped slot is chosen', -> + expect(inventoryView.getCurrentEquipmentConfig().eyes).toBeTruthy() + slot = inventoryView.getSlot('eyes') + inventoryView.selectSlot(slot) + inventoryView.$el.find('#swap-button').click() + expect(inventoryView.getCurrentEquipmentConfig().eyes).toBeUndefined() + expect(inventoryView.getSelectedAvailableItemContainer().data('item-id')).toBe('crude-glasses-id') + + it 'equips the selected item if just an available item is selected', -> + expect(inventoryView.getCurrentEquipmentConfig()['right-hand']).toBeUndefined() + inventoryView.getAvailableItemContainer('crossbow-id').click() + inventoryView.$el.find('#swap-button').click() + expect(inventoryView.getCurrentEquipmentConfig()['right-hand']).toBeTruthy() + expect(inventoryView.getSelectedAvailableItemContainer().data('item-id')).toBeUndefined() + expect(inventoryView.getSelectedSlot().data('slot')).toBe('right-hand') + + it 'swaps items if both a slot and item are selected, and keeps them selected', -> + inventoryView.getAvailableItemContainer('boots-of-leaping-id').click() + inventoryView.getSlot('feet').click() + inventoryView.$el.find('#swap-button').click() + expect(inventoryView.getCurrentEquipmentConfig()['feet']).toBe('boots-of-leaping') + expect(inventoryView.getSelectedAvailableItemContainer().data('item-id')).toBe('boots-id') + expect(inventoryView.getSelectedSlot().data('slot')).toBe('feet') \ No newline at end of file diff --git a/test/demo/views/game-menu/InventoryView.demo.coffee b/test/demo/views/game-menu/InventoryView.demo.coffee new file mode 100644 index 000000000..3cf44ce7c --- /dev/null +++ b/test/demo/views/game-menu/InventoryView.demo.coffee @@ -0,0 +1,17 @@ +InventoryView = require 'views/game-menu/InventoryView' + +thangTypes = [ + {"_id":"53eb98ff1a100989a40ce46b","name":"Boots","original":"boots","components":[{"original":"524b85837fc0f6d519000020","majorVersion":0},{"original":"524b7b857fc0f6d519000012","majorVersion":0},{"original":"524b4150ff92f1f4f8000024","majorVersion":0},{"original":"53e12043b82921000051cdf9","majorVersion":0,"config":{"slots":["feet"],"programmableProperties":["move","targetPos"],"moreProgrammableProperties":[],"extraHUDProperties":["maxSpeed"],"stats":{"maxSpeed":{"factor":1}}}},{"original":"524b7b8c7fc0f6d519000013","majorVersion":0,"config":{"locomotionType":"running","maxSpeed":5,"maxAcceleration":100}},{"original":"524b75ad7fc0f6d519000001","majorVersion":0,"config":{"pos":{"x":39.08,"y":20.72,"z":0.5},"width":1,"height":1,"depth":1,"shape":"ellipsoid"}},{"original":"524b7b7c7fc0f6d519000011","majorVersion":0}]}, + {"_id":"53eb98851a100989a40ce460","name":"Boots of Leaping","original":"boots-of-leaping","components":[{"original":"524b85837fc0f6d519000020","majorVersion":0},{"original":"524b7b857fc0f6d519000012","majorVersion":0},{"original":"524b4150ff92f1f4f8000024","majorVersion":0},{"original":"53e12043b82921000051cdf9","majorVersion":0,"config":{"ownerID":"Tharin","slots":["feet"],"programmableProperties":["move","targetPos","jumpTo"],"moreProgrammableProperties":["jump"],"extraHUDProperties":["maxSpeed"],"stats":{"maxSpeed":{"factor":1.2}}}},{"original":"524b7b8c7fc0f6d519000013","majorVersion":0,"config":{"locomotionType":"running","maxSpeed":6,"maxAcceleration":100}},{"original":"524b1f54d768d916b5000001","majorVersion":0,"config":{"jumpHeight":3}},{"original":"5275392d69abdcb12401441e","majorVersion":0,"config":{"jumpSpeedFactor":1.5}},{"original":"524b75ad7fc0f6d519000001","majorVersion":0,"config":{"pos":{"x":39.08,"y":20.72,"z":0.5},"width":1,"height":1,"depth":1,"shape":"ellipsoid"}},{"original":"524b7b7c7fc0f6d519000011","majorVersion":0}]}, + {"_id":"53e2288553457600003e3ee2","name":"Crossbow","original":"crossbow","components":[{"original":"524b85837fc0f6d519000020","majorVersion":0},{"original":"524b517fff92f1f4f8000046","majorVersion":0},{"original":"524b7b747fc0f6d519000010","majorVersion":0,"config":{"team":"humans"}},{"original":"524b7bc67fc0f6d51900001a","majorVersion":0,"config":{"missileThangID":"Arrow"}},{"original":"524b7ba57fc0f6d519000016","majorVersion":0,"config":{"attackDamage":5,"attackRange":20,"cooldown":0.6,"chasesWhenAttackingOutOfRange":true}},{"original":"524b3e3fff92f1f4f800000d","majorVersion":0},{"original":"524cbdc03ea855e0ab0000bb","majorVersion":0},{"original":"524b4150ff92f1f4f8000024","majorVersion":0},{"original":"53e12043b82921000051cdf9","majorVersion":0,"config":{"slots":["right-hand"],"programmableProperties":["attack","target","attackRange"],"moreProgrammableProperties":["attackXY","targetPos"],"extraHUDProperties":["attackDamage","attackRange"]}},{"original":"524b75ad7fc0f6d519000001","majorVersion":0,"config":{"pos":{"x":41.105000000000004,"y":31.6,"z":0.125},"width":1.5,"height":0.75,"depth":0.25,"shape":"box"}},{"original":"524b7b7c7fc0f6d519000011","majorVersion":0},{"original":"524b457bff92f1f4f8000031","majorVersion":0}]}, + {"_id":"53ecec87415ce434054f6aac","name":"Crude Glasses","original":"crude-glasses","components":[{"original":"524b7b747fc0f6d519000010","majorVersion":0,"config":{"team":"humans"}},{"original":"524b4150ff92f1f4f8000024","majorVersion":0},{"original":"53e12043b82921000051cdf9","majorVersion":0,"config":{"slots":["eyes"],"programmableProperties":["pos","getEnemies"],"moreProgrammableProperties":["getItems","getFriends"]}},{"original":"524b75ad7fc0f6d519000001","majorVersion":0,"config":{"pos":{"x":33.230000000000004,"y":20.75,"z":2},"width":1,"height":2,"depth":1,"shape":"ellipsoid"}},{"original":"524b457bff92f1f4f8000031","majorVersion":0,"config":{"visualRange":50}}]} +] + +module.exports = -> + equipment = { 'feet':'boots', 'eyes': 'crude-glasses' } + view = new InventoryView({ equipment: equipment}) + view.render() + responses = + '/db/thang.type?view=items': thangTypes + jasmine.Ajax.requests.sendResponses(responses) + return view \ No newline at end of file From 2060bb5ac569b07a16bd4d6a361b19e3ce9eff44 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Thu, 14 Aug 2014 14:07:20 -0700 Subject: [PATCH 23/37] Turning off a test that for some reason is breaking on Travis but nowhere else. --- .../editor/component/ThangComponentsEditView.spec.coffee | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/app/views/editor/component/ThangComponentsEditView.spec.coffee b/test/app/views/editor/component/ThangComponentsEditView.spec.coffee index e9f25bf33..ddd9272ed 100644 --- a/test/app/views/editor/component/ThangComponentsEditView.spec.coffee +++ b/test/app/views/editor/component/ThangComponentsEditView.spec.coffee @@ -45,8 +45,9 @@ describe 'ThangComponentsEditView', -> success = jasmine.Ajax.requests.sendResponses(responses) expect(success).toBeTruthy() expect(_.size(view.subviews)).toBe(3) - - it 'adds dependencies to its components list', -> + + # TODO: Figure out why this is breaking karma but not always + xit 'adds dependencies to its components list', -> jasmine.Ajax.requests.sendResponses(responses) componentOriginals = (c.original for c in view.components) expect('A' in componentOriginals).toBeTruthy() From 9404c40b47a0032b237119763e799ba631bace96 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Thu, 14 Aug 2014 14:22:02 -0700 Subject: [PATCH 24/37] Another stab at fixing the tests. --- .../ThangComponentsEditView.spec.coffee | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/test/app/views/editor/component/ThangComponentsEditView.spec.coffee b/test/app/views/editor/component/ThangComponentsEditView.spec.coffee index ddd9272ed..dba8d8443 100644 --- a/test/app/views/editor/component/ThangComponentsEditView.spec.coffee +++ b/test/app/views/editor/component/ThangComponentsEditView.spec.coffee @@ -35,27 +35,31 @@ describe 'ThangComponentsEditView', -> supermodel.registerModel(componentC) view = new ThangComponentEditView({ components: [], supermodel: supermodel }) jasmine.Ajax.requests.sendResponses { '/db/thang.type': [] } - _.delay -> + _.defer -> view.render() view.componentsTreema.set('/', [ { original: 'C', majorVersion: 0 }]) spyOn(window, 'noty') - done() + success = jasmine.Ajax.requests.sendResponses(responses) + expect(success).toBeTruthy() + _.defer -> + done() + + afterEach -> + view.destroy() it 'loads dependencies when you add a component with the left side treema', -> - success = jasmine.Ajax.requests.sendResponses(responses) - expect(success).toBeTruthy() expect(_.size(view.subviews)).toBe(3) # TODO: Figure out why this is breaking karma but not always - xit 'adds dependencies to its components list', -> - jasmine.Ajax.requests.sendResponses(responses) + it 'adds dependencies to its components list', -> +# jasmine.Ajax.requests.sendResponses(responses) componentOriginals = (c.original for c in view.components) expect('A' in componentOriginals).toBeTruthy() expect('B' in componentOriginals).toBeTruthy() expect('C' in componentOriginals).toBeTruthy() it 'removes components that are dependent on a removed component', -> - jasmine.Ajax.requests.sendResponses(responses) +# jasmine.Ajax.requests.sendResponses(responses) view.components = (c for c in view.components when c.original isnt 'A') view.onComponentsChanged() expect(view.components.length).toBe(0) From 0f983bdcf1b88537494bcf4ddc28a63bec435c90 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Thu, 14 Aug 2014 15:09:10 -0700 Subject: [PATCH 25/37] Crude steps towards using your hero equipment in items levels. --- app/lib/LevelLoader.coffee | 15 +++- app/models/Level.coffee | 37 ++++++-- app/schemas/models/level_session.coffee | 11 ++- .../component/ThangComponentsEditView.coffee | 6 +- app/views/editor/level/LevelEditView.coffee | 2 +- .../editor/level/thangs/ThangsTabView.coffee | 4 +- app/views/game-menu/InventoryView.coffee | 89 ++++++++++--------- bin/coco-brunch | 2 +- server/levels/sessions/LevelSession.coffee | 2 +- 9 files changed, 108 insertions(+), 60 deletions(-) diff --git a/app/lib/LevelLoader.coffee b/app/lib/LevelLoader.coffee index 60f93cb21..5a04c070d 100644 --- a/app/lib/LevelLoader.coffee +++ b/app/lib/LevelLoader.coffee @@ -31,6 +31,7 @@ module.exports = class LevelLoader extends CocoClass @opponentSessionID = options.opponentSessionID @team = options.team @headless = options.headless + @inLevelEditor = options.inLevelEditor @spectateMode = options.spectateMode ? false @worldNecessities = [] @@ -83,6 +84,7 @@ module.exports = class LevelLoader extends CocoClass for itemThangType in _.values(heroConfig.inventory) url = "/db/thang.type/#{itemThangType}/version?project=name,components,original" @worldNecessities.push @maybeLoadURL(url, ThangType, 'thang') + @populateHero() if @level?.loaded # Supermodel (Level) Loading @@ -96,6 +98,7 @@ module.exports = class LevelLoader extends CocoClass onLevelLoaded: -> @populateLevel() + @populateHero() if @session?.loaded populateLevel: -> thangIDs = [] @@ -149,6 +152,16 @@ module.exports = class LevelLoader extends CocoClass @worldNecessities = @worldNecessities.concat worldNecessities + populateHero: -> + return if @inLevelEditor + return unless @level.get('type') is 'hero' and hero = _.find @level.get('thangs'), id: 'Hero Placeholder' + heroConfig = @session.get('heroConfig') + hero.thangType = heroConfig.thangType + hero.inventory = heroConfig.inventory # Will take effect in Level's denormalizeThang + hero.placeholderComponents = hero.components # Will be replaced in Level's denormalizeThang + hero.components = [] + #hero.id = ... ? # What do we want to do about this? + loadItemThangsEquippedByLevelThang: (levelThang) -> return unless levelThang.components for component in levelThang.components @@ -178,7 +191,7 @@ module.exports = class LevelLoader extends CocoClass levelThang = $.extend true, {}, levelThang @level.denormalizeThang(levelThang, @supermodel) equipsComponent = _.find levelThang.components, {original: LevelComponent.EquipsID} - inventory = equipsComponent.config?.inventory + inventory = equipsComponent?.config?.inventory continue unless inventory for itemThangType in _.values inventory url = "/db/thang.type/#{itemThangType}/version?project=name,components,original" diff --git a/app/models/Level.coffee b/app/models/Level.coffee index d2972366b..27210b1a6 100644 --- a/app/models/Level.coffee +++ b/app/models/Level.coffee @@ -9,8 +9,7 @@ module.exports = class Level extends CocoModel urlRoot: '/db/level' serialize: (supermodel) -> - # o = _.cloneDeep @attributes # slow in level editor when there are hundreds of Thangs - o = $.extend true, {}, @attributes + o = @denormalize supermodel # Figure out Components o.levelComponents = _.cloneDeep (lc.attributes for lc in supermodel.getModels LevelComponent) @@ -31,8 +30,10 @@ module.exports = class Level extends CocoModel denormalize: (supermodel) -> o = $.extend true, {}, @attributes - for levelThang in o.thangs - @denormalizeThang(levelThang, supermodel) + if @get('type') is 'hero' + # TOOD: figure out if/when/how we are doing this for non-Hero levels that aren't expecting denormalization. + for levelThang in o.thangs + @denormalizeThang(levelThang, supermodel) o denormalizeThang: (levelThang, supermodel) -> @@ -41,16 +42,38 @@ module.exports = class Level extends CocoModel configs = {} for thangComponent in levelThang.components configs[thangComponent.original] = thangComponent + placeholders = {} + for thangComponent in levelThang.placeholderComponents ? [] + placeholders[thangComponent.original] = thangComponent for defaultThangComponent in thangType.get('components') if levelThangComponent = configs[defaultThangComponent.original] - # take the thang type default components and merge level-specific component config into it + # Take the ThangType default Components and merge level-specific Component config into it copy = $.extend true, {}, defaultThangComponent.config levelThangComponent.config = _.merge copy, levelThangComponent.config else - # just add the component as is - levelThang.components.push $.extend true, {}, defaultThangComponent + # Just add the Component as is + levelThangComponent = $.extend true, {}, defaultThangComponent + levelThang.components.push levelThangComponent + + if placeholderComponent = placeholders[defaultThangComponent.original] + placeholderConfig = placeholderComponent.config ? {} + if placeholderConfig.pos # Pull in Physical pos x and y + levelThangComponent.config.pos ?= {} + levelThangComponent.config.pos.x = placeholderConfig.pos.x + levelThangComponent.config.pos.y = placeholderConfig.pos.y + else if placeholderConfig.team # Pull in Allied team + levelThangComponent.config.team = placeholderConfig.team + else if placeholderConfig.programmableMethods + # Take the ThangType default Programmable and merge level-specific Component config into it + copy = $.extend true, {}, placeholderConfig + levelThangComponent.config = _.merge copy, levelThangComponent.config + + if levelThang.inventory and equips = _.find levelThang.components, {original: LevelComponent.EquipsID} + # inventory is assigned from the LevelSession in LevelLoader's populateHero + equips.config.inventory = $.extend true, {}, levelThang.inventory + sortSystems: (levelSystems, systemModels) -> [sorted, originalsSeen] = [[], {}] diff --git a/app/schemas/models/level_session.coffee b/app/schemas/models/level_session.coffee index 575937993..235052c53 100644 --- a/app/schemas/models/level_session.coffee +++ b/app/schemas/models/level_session.coffee @@ -55,10 +55,13 @@ _.extend LevelSessionSchema.properties, screenshot: type: 'string' - - heroConfig: c.object {}, - inventory: c.object() - thangType: c.objectId() + + heroConfig: c.object {description: 'Which hero the player is using, equipped with what inventory.'}, + inventory: + type: 'object' + description: 'The inventory of the hero: slots to item ThangTypes.' + additionalProperties: c.objectId(description: 'An item ThangType.') + thangType: c.objectId(links: [{rel: 'db', href: '/db/thang.type/{($)}/version'}], title: 'Thang Type', description: 'The ThangType of the hero.', format: 'thang-type') state: c.object {}, complete: diff --git a/app/views/editor/component/ThangComponentsEditView.coffee b/app/views/editor/component/ThangComponentsEditView.coffee index 2459439c9..eb72a84f4 100644 --- a/app/views/editor/component/ThangComponentsEditView.coffee +++ b/app/views/editor/component/ThangComponentsEditView.coffee @@ -12,8 +12,8 @@ nodes = require '../level/treema_nodes' ThangType = require 'models/ThangType' CocoCollection = require 'collections/CocoCollection' -class ThangTypeSearchCollection extends CocoCollection - url: '/db/thang.type?project=original,name,version,slug,kind,components' +class ItemThangTypeSearchCollection extends CocoCollection + url: '/db/thang.type?view=items&project=original,name,version,slug,kind,components' model: ThangType module.exports = class ThangComponentsEditView extends CocoView @@ -32,7 +32,7 @@ module.exports = class ThangComponentsEditView extends CocoView @level = options.level @loadComponents(@components) # Need to grab the ThangTypes so that we can autocomplete items in inventory based on them. - @thangTypes = @supermodel.loadCollection(new ThangTypeSearchCollection(), 'thangs').model + @itemThangTypes = @supermodel.loadCollection(new ItemThangTypeSearchCollection(), 'thangs').model loadComponents: (components) -> for componentRef in components diff --git a/app/views/editor/level/LevelEditView.coffee b/app/views/editor/level/LevelEditView.coffee index bf6a3166d..f7ee96c76 100644 --- a/app/views/editor/level/LevelEditView.coffee +++ b/app/views/editor/level/LevelEditView.coffee @@ -47,7 +47,7 @@ module.exports = class LevelEditView extends RootView super options @supermodel.shouldSaveBackups = (model) -> model.constructor.className in ['Level', 'LevelComponent', 'LevelSystem', 'ThangType'] - @levelLoader = new LevelLoader supermodel: @supermodel, levelID: @levelID, headless: true + @levelLoader = new LevelLoader supermodel: @supermodel, levelID: @levelID, headless: true, inLevelEditor: true @level = @levelLoader.level @files = new DocumentFiles(@levelLoader.level) @supermodel.loadCollection(@files, 'file_names') diff --git a/app/views/editor/level/thangs/ThangsTabView.coffee b/app/views/editor/level/thangs/ThangsTabView.coffee index 5bf39f4e4..e6537a84f 100644 --- a/app/views/editor/level/thangs/ThangsTabView.coffee +++ b/app/views/editor/level/thangs/ThangsTabView.coffee @@ -335,8 +335,8 @@ module.exports = class ThangsTabView extends CocoView adjustThangPos: (sprite, thang, pos) -> snap = sprite?.data?.snap or sprite?.thangType?.get('snap') or {x: 0.01, y: 0.01} # Centimeter resolution by default - pos.x = Math.round((pos.x - thang.width / 2) / snap.x) * snap.x + thang.width / 2 - pos.y = Math.round((pos.y - thang.height / 2) / snap.y) * snap.y + thang.height / 2 + pos.x = Math.round((pos.x - (thang.width ? 1) / 2) / snap.x) * snap.x + (thang.width ? 1) / 2 + pos.y = Math.round((pos.y - (thang.height ? 1) / 2) / snap.y) * snap.y + (thang.height ? 1) / 2 pos.z = thang.depth / 2 thang.pos = pos @surface.spriteBoss.update true # Make sure Obstacle layer resets cache diff --git a/app/views/game-menu/InventoryView.coffee b/app/views/game-menu/InventoryView.coffee index 4ba26573d..ab74fa46d 100644 --- a/app/views/game-menu/InventoryView.coffee +++ b/app/views/game-menu/InventoryView.coffee @@ -9,32 +9,32 @@ module.exports = class InventoryView extends CocoView id: 'inventory-view' className: 'tab-pane' template: template - slots: ["head","eyes","neck","torso","wrists","gloves","left-ring","right-ring","right-hand","left-hand","waist","feet","spellbook","programming-book","pet","minion","misc-0","misc-1","misc-2","misc-3","misc-4"] - + slots: ['head', 'eyes', 'neck', 'torso', 'wrists', 'gloves', 'left-ring', 'right-ring', 'right-hand', 'left-hand', 'waist', 'feet', 'spellbook', 'programming-book', 'pet', 'minion', 'misc-0', 'misc-1', 'misc-2', 'misc-3', 'misc-4'] + events: 'click .item-slot': 'onItemSlotClick' 'click #available-equipment .list-group-item': 'onAvailableItemClick' 'dblclick #available-equipment .list-group-item': 'onAvailableItemDoubleClick' 'dblclick .item-slot .item-view': 'onEquippedItemDoubleClick' 'click #swap-button': 'onClickSwapButton' - + shortcuts: 'esc': 'clearSelection' - + initialize: (options) -> super(arguments...) - @items = new CocoCollection([], { model: ThangType }) - @equipment = options.equipment or {} + @items = new CocoCollection([], {model: ThangType}) + @equipment = options.equipment or @options.session?.get('heroConfig')?.inventory or {} @items.url = '/db/thang.type?view=items&project=name,description,components,original' @supermodel.loadCollection(@items, 'items') - + onLoaded: -> super() getRenderData: (context={}) -> context = super(context) context.equipped = _.values(@equipment) - context.items = @items.models + context.items = @items.models for item in @items.models item.classes = item.getAllowedSlots() @@ -50,7 +50,7 @@ module.exports = class InventoryView extends CocoView afterRender: -> super() return unless @supermodel.finished() - + keys = (item.id for item in @items.models) itemMap = _.zipObject keys, @items.models @@ -58,7 +58,7 @@ module.exports = class InventoryView extends CocoView for slottedItemStub in @$el.find('.replace-me') itemID = $(slottedItemStub).data('item-id') item = itemMap[itemID] - itemView = new ItemView({item:item, includes:{name:true}}) + itemView = new ItemView({item: item, includes: {name: true}}) itemView.render() $(slottedItemStub).replaceWith(itemView.$el) @registerSubView(itemView) @@ -66,13 +66,13 @@ module.exports = class InventoryView extends CocoView for availableItemEl in @$el.find('#available-equipment .list-group-item') itemID = $(availableItemEl).data('item-id') item = itemMap[itemID] - itemView = new ItemView({item:item, includes:{name:true}}) + itemView = new ItemView({item: item, includes: {name: true}}) itemView.render() $(availableItemEl).append(itemView.$el) @registerSubView(itemView) - + @delegateEvents() - + clearSelection: -> @$el.find('.panel-info').removeClass('panel-info') @$el.find('.list-group-item').removeClass('active') @@ -85,7 +85,7 @@ module.exports = class InventoryView extends CocoView @unselectAllAvailableEquipment() if slot.hasClass('disabled') @selectSlot(slot) unless wasActive and not $(e.target).closest('.item-view')[0] @onSelectionChanged() - + onAvailableItemClick: (e) -> itemContainer = $(e.target).closest('.list-group-item') @unselectAllAvailableEquipment() @@ -98,7 +98,7 @@ module.exports = class InventoryView extends CocoView @unequipItemFromSlot(slot) @equipSelectedItemToSlot(slot) @onSelectionChanged() - + onEquippedItemDoubleClick: (e) -> @unselectAllAvailableEquipment() slot = $(e.target).closest('.item-slot') @@ -115,31 +115,31 @@ module.exports = class InventoryView extends CocoView @selectAvailableItem(itemContainer) @selectSlot(slot) @onSelectionChanged() - - getSelectedSlot: -> + + getSelectedSlot: -> @$el.find('#equipped .item-slot.panel-info') - - unselectAllAvailableEquipment: -> + + unselectAllAvailableEquipment: -> @$el.find('#available-equipment .list-group-item').removeClass('active') - + unselectAllSlots: -> @$el.find('#equipped .panel').removeClass('panel-info') - + selectSlot: (slot) -> slot.addClass('panel-info') - + getSlot: (name) -> @$el.find(".item-slot[data-slot=#{name}]") - + getSelectedAvailableItemContainer: -> @$el.find('#available-equipment .list-group-item.active') - + getAvailableItemContainer: (itemID) -> @$el.find("#available-equipment .list-group-item[data-item-id='#{itemID}']") - + selectAvailableItem: (itemContainer) -> itemContainer?.addClass('active') - + unequipItemFromSlot: (slot) -> itemIDToUnequip = slot.find('.item-view').data('item-id') return unless itemIDToUnequip @@ -157,22 +157,22 @@ module.exports = class InventoryView extends CocoView slotContainer.html(newItemHTML) slotContainer.find('.item-view').data('item-id', selectedItemContainer.find('.item-view').data('item-id')) @$el.find('.list-group-item').removeClass('active') - + onSelectionChanged: -> @$el.find('.item-slot').show() - + selectedSlot = @$el.find('.panel.panel-info') selectedItem = @$el.find('#available-equipment .list-group-item.active') - + if selectedSlot.length @$el.find('#available-equipment .list-group-item').hide() @$el.find("#available-equipment .list-group-item.#{selectedSlot.data('slot')}").show() - + selectedSlotItemID = selectedSlot.find('.item-view').data('item-id') if selectedSlotItemID item = _.find @items.models, {id:selectedSlotItemID} @showSelectedSlotItem(item) - + else @hideSelectedSlotItem() @@ -183,7 +183,7 @@ module.exports = class InventoryView extends CocoView @$el.find('.item-slot').removeClass('disabled') if selectedItem.length item = _.find @items.models, {id:selectedItem.find('.item-view').data('item-id')} - + # update which slots are enabled allowedSlots = item.getAllowedSlots() for slotEl in @$el.find('.item-slot') @@ -192,12 +192,12 @@ module.exports = class InventoryView extends CocoView $(slotEl).addClass('disabled') @showSelectedAvailableItem(item) - + else @hideSelectedAvailableItem() - + @delegateEvents() - + showSelectedSlotItem: (item) -> if not @selectedEquippedItemView @selectedEquippedItemView = new ItemView({ @@ -208,10 +208,10 @@ module.exports = class InventoryView extends CocoView @selectedEquippedItemView.$el.show() @selectedEquippedItemView.item = item @selectedEquippedItemView.render() - + hideSelectedSlotItem: -> @selectedEquippedItemView?.$el.hide() - + showSelectedAvailableItem: (item) -> if not @selectedAvailableItemView @selectedAvailableItemView = new ItemView({ @@ -222,7 +222,7 @@ module.exports = class InventoryView extends CocoView @selectedAvailableItemView.$el.show() @selectedAvailableItemView.item = item @selectedAvailableItemView.render() - + hideSelectedAvailableItem: -> @selectedAvailableItemView?.$el.hide() @@ -234,5 +234,14 @@ module.exports = class InventoryView extends CocoView continue unless slotItemID item = _.find @items.models, {id:slotItemID} config[slotName] = item.get('original') - - config \ No newline at end of file + + config + + onHidden: -> + inventory = @getCurrentEquipmentConfig() + heroConfig = @options.session.get('heroConfig') ? {} + unless _.isEqual inventory, heroConfig.inventory + heroConfig.inventory = inventory + heroConfig.thangType ?= '529ffbf1cf1818f2be000001' # Temp: assign Tharin as the hero + @options.session.set 'heroConfig', heroConfig + @options.session.patch() diff --git a/bin/coco-brunch b/bin/coco-brunch index 9afe5e7c7..d06dab2e8 100755 --- a/bin/coco-brunch +++ b/bin/coco-brunch @@ -9,7 +9,7 @@ import sys current_directory = os.path.dirname(os.path.realpath(sys.argv[0])) coco_path = os.getenv("COCO_DIR",os.path.join(current_directory,os.pardir)) brunch_path = coco_path + os.sep + "node_modules" + os.sep + ".bin" + os.sep + "brunch" -subprocess.Popen("ulimit -n 100000",shell=True) +subprocess.Popen("ulimit -n 10000", shell=True) while True: print("Starting brunch. After the first compile, it'll keep running and watch for changes.") call(brunch_path + " w",shell=True,cwd=coco_path) diff --git a/server/levels/sessions/LevelSession.coffee b/server/levels/sessions/LevelSession.coffee index 81f23a7e7..329914f01 100644 --- a/server/levels/sessions/LevelSession.coffee +++ b/server/levels/sessions/LevelSession.coffee @@ -45,7 +45,7 @@ LevelSessionSchema.pre 'save', (next) -> LevelSessionSchema.statics.privateProperties = ['code', 'submittedCode', 'unsubscribed'] LevelSessionSchema.statics.editableProperties = ['multiplayer', 'players', 'code', 'codeLanguage', 'completed', 'state', 'levelName', 'creatorName', 'levelID', 'screenshot', - 'chat', 'teamSpells', 'submitted', 'submittedCodeLanguage', 'unsubscribed', 'playtime'] + 'chat', 'teamSpells', 'submitted', 'submittedCodeLanguage', 'unsubscribed', 'playtime', 'heroConfig'] LevelSessionSchema.statics.jsonSchema = jsonschema LevelSessionSchema.index {user: 1, changed: -1}, {sparse: true, name: 'last played index'} From 9752c4b18ad87499c870fe65a64c5bd05ca87c28 Mon Sep 17 00:00:00 2001 From: Matt Lott Date: Thu, 14 Aug 2014 15:47:02 -0700 Subject: [PATCH 26/37] Updating user_code_problem schema types --- app/schemas/models/user_code_problem.coffee | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/app/schemas/models/user_code_problem.coffee b/app/schemas/models/user_code_problem.coffee index 38ac00ceb..12273de02 100644 --- a/app/schemas/models/user_code_problem.coffee +++ b/app/schemas/models/user_code_problem.coffee @@ -9,16 +9,16 @@ _.extend UserCodeProblemSchema.properties, creator: c.objectId(links: [{rel: 'extra', href: '/db/user/{($)}'}]) created: c.date({title: 'Created', readOnly: true}) - code: String - codeSnippet: String - errHint: String - errId: String - errLevel: String - errMessage: String - errRange: [] - errType: String - language: String - levelID: String + code: {type: 'string'} + codeSnippet: {type: 'string'} + errHint: {type: 'string'} + errId: {type: 'string'} + errLevel: {type: 'string'} + errMessage: {type: 'string'} + errRange: {type: 'array'} + errType: {type: 'string'} + language: {type: 'string'} + levelID: {type: 'string'} c.extendBasicProperties UserCodeProblemSchema, 'user.code.problem' From 69c22db43443303d72636cf27566754f2b515594 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Thu, 14 Aug 2014 16:34:55 -0700 Subject: [PATCH 27/37] Moved Hero Placeholder replacement logic to Level's denormalizeThang. --- app/lib/LevelLoader.coffee | 8 +++---- app/models/Level.coffee | 27 ++++++++++++++--------- app/views/play/SpectateView.coffee | 4 ++-- app/views/play/level/PlayLevelView.coffee | 4 ++-- 4 files changed, 23 insertions(+), 20 deletions(-) diff --git a/app/lib/LevelLoader.coffee b/app/lib/LevelLoader.coffee index 5a04c070d..7c7ead9ea 100644 --- a/app/lib/LevelLoader.coffee +++ b/app/lib/LevelLoader.coffee @@ -156,11 +156,9 @@ module.exports = class LevelLoader extends CocoClass return if @inLevelEditor return unless @level.get('type') is 'hero' and hero = _.find @level.get('thangs'), id: 'Hero Placeholder' heroConfig = @session.get('heroConfig') - hero.thangType = heroConfig.thangType - hero.inventory = heroConfig.inventory # Will take effect in Level's denormalizeThang - hero.placeholderComponents = hero.components # Will be replaced in Level's denormalizeThang - hero.components = [] + hero.thangType = heroConfig.thangType # Will mutate the level, but we're okay showing the last-used Hero here #hero.id = ... ? # What do we want to do about this? + # Actually, swapping out inventory and placeholder Components is done in Level's denormalizeThang loadItemThangsEquippedByLevelThang: (levelThang) -> return unless levelThang.components @@ -333,7 +331,7 @@ module.exports = class LevelLoader extends CocoClass @initialized = true @world = new World() @world.levelSessionIDs = if @opponentSessionID then [@sessionID, @opponentSessionID] else [@sessionID] - serializedLevel = @level.serialize(@supermodel) + serializedLevel = @level.serialize(@supermodel, @session) @world.loadFromLevel serializedLevel, false console.log 'World has been initialized from level loader.' diff --git a/app/models/Level.coffee b/app/models/Level.coffee index 27210b1a6..2d4ff0ff3 100644 --- a/app/models/Level.coffee +++ b/app/models/Level.coffee @@ -8,8 +8,8 @@ module.exports = class Level extends CocoModel @schema: require 'schemas/models/level' urlRoot: '/db/level' - serialize: (supermodel) -> - o = @denormalize supermodel + serialize: (supermodel, session) -> + o = @denormalize supermodel, session # Figure out Components o.levelComponents = _.cloneDeep (lc.attributes for lc in supermodel.getModels LevelComponent) @@ -28,23 +28,28 @@ module.exports = class Level extends CocoModel o - denormalize: (supermodel) -> + denormalize: (supermodel, session) -> o = $.extend true, {}, @attributes if @get('type') is 'hero' # TOOD: figure out if/when/how we are doing this for non-Hero levels that aren't expecting denormalization. for levelThang in o.thangs - @denormalizeThang(levelThang, supermodel) + @denormalizeThang(levelThang, supermodel, session) o - denormalizeThang: (levelThang, supermodel) -> + denormalizeThang: (levelThang, supermodel, session) -> levelThang.components ?= [] thangType = supermodel.getModelByOriginal(ThangType, levelThang.thangType) + + # Empty out placeholder Components and store their values if we're the hero placeholder. + placeholders = {} + if levelThang.id is 'Hero Placeholder' + for thangComponent in levelThang.components ? [] + placeholders[thangComponent.original] = thangComponent + levelThang.components = [] + configs = {} for thangComponent in levelThang.components configs[thangComponent.original] = thangComponent - placeholders = {} - for thangComponent in levelThang.placeholderComponents ? [] - placeholders[thangComponent.original] = thangComponent for defaultThangComponent in thangType.get('components') if levelThangComponent = configs[defaultThangComponent.original] @@ -70,9 +75,9 @@ module.exports = class Level extends CocoModel copy = $.extend true, {}, placeholderConfig levelThangComponent.config = _.merge copy, levelThangComponent.config - if levelThang.inventory and equips = _.find levelThang.components, {original: LevelComponent.EquipsID} - # inventory is assigned from the LevelSession in LevelLoader's populateHero - equips.config.inventory = $.extend true, {}, levelThang.inventory + if levelThang.id is 'Hero Placeholder' and equips = _.find levelThang.components, {original: LevelComponent.EquipsID} + inventory = session?.get('heroConfig')?.inventory + equips.config.inventory = $.extend true, {}, inventory if inventory sortSystems: (levelSystems, systemModels) -> diff --git a/app/views/play/SpectateView.coffee b/app/views/play/SpectateView.coffee index 1cea2b868..bda2cce7e 100644 --- a/app/views/play/SpectateView.coffee +++ b/app/views/play/SpectateView.coffee @@ -90,7 +90,7 @@ module.exports = class SpectateLevelView extends RootView application.router.navigate "/play?not_found=#{@levelID}", {trigger: true} setLevel: (@level, @supermodel) -> - serializedLevel = @level.serialize @supermodel + serializedLevel = @level.serialize @supermodel, @session @god?.setLevel serializedLevel if @world @world.loadFromLevel serializedLevel, false @@ -155,7 +155,7 @@ module.exports = class SpectateLevelView extends RootView #at this point, all requisite data is loaded, and sessions are not denormalized team = @world.teamForPlayer(0) @loadOpponentTeam(team) - @god.setLevel @level.serialize @supermodel + @god.setLevel @level.serialize @supermodel, @session @god.setLevelSessionIDs if @otherSession then [@session.id, @otherSession.id] else [@session.id] @god.setWorldClassMap @world.classMap @setTeam team diff --git a/app/views/play/level/PlayLevelView.coffee b/app/views/play/level/PlayLevelView.coffee index 391c99f4c..604625705 100644 --- a/app/views/play/level/PlayLevelView.coffee +++ b/app/views/play/level/PlayLevelView.coffee @@ -104,7 +104,7 @@ module.exports = class PlayLevelView extends RootView @supermodel.collections = givenSupermodel.collections @supermodel.shouldSaveBackups = givenSupermodel.shouldSaveBackups - serializedLevel = @level.serialize @supermodel + serializedLevel = @level.serialize @supermodel, @session @god?.setLevel serializedLevel if @world @world.loadFromLevel serializedLevel, false @@ -213,7 +213,7 @@ module.exports = class PlayLevelView extends RootView @session.set 'multiplayer', false setupGod: -> - @god.setLevel @level.serialize @supermodel + @god.setLevel @level.serialize @supermodel, @session @god.setLevelSessionIDs if @otherSession then [@session.id, @otherSession.id] else [@session.id] @god.setWorldClassMap @world.classMap From 45e4079c2b7cae84da72d774237422ec58d885c7 Mon Sep 17 00:00:00 2001 From: Dominik Kundel Date: Fri, 15 Aug 2014 01:55:11 +0200 Subject: [PATCH 28/37] bumbed up zatanna to fix autocomplete issues --- bower.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bower.json b/bower.json index 69204f667..06a1d55b4 100644 --- a/bower.json +++ b/bower.json @@ -44,7 +44,7 @@ "bootstrap": "~3.1.1", "validated-backbone-mediator": "~0.1.3", "jquery.browser": "~0.0.6", - "zatanna": "~0.0.4", + "zatanna": "~0.0.5", "modernizr": "~2.8.3" }, "overrides": { From 755a86e3d3955567e6568f388fa0a4c20a7d526d Mon Sep 17 00:00:00 2001 From: Dominik Kundel Date: Fri, 15 Aug 2014 01:56:01 +0200 Subject: [PATCH 29/37] moving some styling --- .../play/level/tome/spell_palette_entry.sass | 72 +++++++++++++++++ app/styles/play/level/tome/tome.sass | 78 ------------------- app/views/play/level/tome/SpellView.coffee | 3 +- 3 files changed, 73 insertions(+), 80 deletions(-) diff --git a/app/styles/play/level/tome/spell_palette_entry.sass b/app/styles/play/level/tome/spell_palette_entry.sass index f6afd320e..489fcab54 100644 --- a/app/styles/play/level/tome/spell_palette_entry.sass +++ b/app/styles/play/level/tome/spell_palette_entry.sass @@ -30,3 +30,75 @@ &.undefined color: rgb(197, 6, 11) +.spell-palette-popover.popover + // Only those popovers which are our direct children (spell documentation) + max-width: 600px + + &.pinned + left: auto !important + top: 50px !important + right: 45% + // bottom: 151px + @include user-select(text) + // Wish I could set max-width and max-height (and override Bootstrap's stuff) + // but without explicitly setting height, child overflow-y: scroll doesn't work + min-width: 45% + height: 60% + + .arrow + display: none + + .close + position: absolute + top: 5% + right: 5% + font-size: 28px + font-weight: bold + @include opacity(0.6) + text-shadow: 0 1px 0 white + + &:hover + @include opacity(1) + + padding: 10px 10px 30px 10px + border-image: url(/images/level/popover_background.png) 18 fill round + border-width: 15px + @include box-shadow(0 0 0 #000) + + h1:not(.not-code), h2:not(.not-code), h3:not(.not-code), h4:not(.not-code), h5:not(.not-code), h6:not(.not-code) + font-family: Menlo, Monaco, Consolas, "Courier New", monospace + + .popover-title + background-color: transparent + margin: 0 14px + padding: 8px 0 + border-bottom-color: #ccc + + .popover-content + max-height: 100% + overflow-y: auto + margin-right: 10px + img + float: right + + &.top .arrow + bottom: -2% + &.bottom .arrow + top: -2% + &.left .arrow + right: 0% + &.right .arrow + left: -3% + +html.no-borderimage + .spell-palette-popover.popover + background: transparent url(/images/level/popover_background.png) + background-size: 100% 100% + border: 0 + +html.fullscreen-editor + .spell-palette-popover.popover.pinned + min-width: 600px + bottom: inherit + right: 50% + margin-right: -300px \ No newline at end of file diff --git a/app/styles/play/level/tome/tome.sass b/app/styles/play/level/tome/tome.sass index d3db84cd2..64f0321b9 100644 --- a/app/styles/play/level/tome/tome.sass +++ b/app/styles/play/level/tome/tome.sass @@ -73,7 +73,6 @@ // Set z-index of autocomplete popup smaller than the one of popovers .ace_editor.ace_autocomplete z-index: 20 !important - border-color: red !important html.no-borderimage #tome-view @@ -89,80 +88,3 @@ html.no-borderimage bottom: inherit right: 50% margin-right: -300px - - -// NEED TO MOVE THIS -// -------------------------------- - -.spell-palette-popover.popover - // Only those popovers which are our direct children (spell documentation) - max-width: 600px - - &.pinned - left: auto !important - top: 50px !important - right: 45% - // bottom: 151px - @include user-select(text) - // Wish I could set max-width and max-height (and override Bootstrap's stuff) - // but without explicitly setting height, child overflow-y: scroll doesn't work - min-width: 45% - height: 60% - - .arrow - display: none - - .close - position: absolute - top: 5% - right: 5% - font-size: 28px - font-weight: bold - @include opacity(0.6) - text-shadow: 0 1px 0 white - - &:hover - @include opacity(1) - - padding: 10px 10px 30px 10px - border-image: url(/images/level/popover_background.png) 18 fill round - border-width: 15px - @include box-shadow(0 0 0 #000) - - h1:not(.not-code), h2:not(.not-code), h3:not(.not-code), h4:not(.not-code), h5:not(.not-code), h6:not(.not-code) - font-family: Menlo, Monaco, Consolas, "Courier New", monospace - - .popover-title - background-color: transparent - margin: 0 14px - padding: 8px 0 - border-bottom-color: #ccc - - .popover-content - max-height: 100% - overflow-y: auto - margin-right: 10px - img - float: right - - &.top .arrow - bottom: -2% - &.bottom .arrow - top: -2% - &.left .arrow - right: 0% - &.right .arrow - left: -3% - -html.no-borderimage - .spell-palette-popover.popover - background: transparent url(/images/level/popover_background.png) - background-size: 100% 100% - border: 0 - -html.fullscreen-editor - .spell-palette-popover.popover.pinned - min-width: 600px - bottom: inherit - right: 50% - margin-right: -300px \ No newline at end of file diff --git a/app/views/play/level/tome/SpellView.coffee b/app/views/play/level/tome/SpellView.coffee index 2169e6f91..db292efa6 100644 --- a/app/views/play/level/tome/SpellView.coffee +++ b/app/views/play/level/tome/SpellView.coffee @@ -201,11 +201,10 @@ module.exports = class SpellView extends CocoView tabTrigger: doc.snippets[e.language].tab snippetEntries.push entry - # window.zatanna = @zatanna + # window.zatannaInstance = @zatanna # window.snippetEntries = snippetEntries lang = @editModes[e.language].substr 'ace/mode/'.length @zatanna.addSnippets snippetEntries, lang - window.aceEditor = @ace onMultiplayerChanged: -> if @session.get('multiplayer') From 68828b67bb5052efa0dd3f7136742ab2694631a7 Mon Sep 17 00:00:00 2001 From: Dominik Kundel Date: Fri, 15 Aug 2014 02:04:46 +0200 Subject: [PATCH 30/37] removed console.log --- app/views/play/level/tome/SpellView.coffee | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/views/play/level/tome/SpellView.coffee b/app/views/play/level/tome/SpellView.coffee index db292efa6..45b201e26 100644 --- a/app/views/play/level/tome/SpellView.coffee +++ b/app/views/play/level/tome/SpellView.coffee @@ -130,10 +130,8 @@ module.exports = class SpellView extends CocoView # Maybe we could temporarily set ourselves to read-only if we somehow know that a script is active? exec: => if @scriptRunning - console.log '>>>> BOOM <<<<' Backbone.Mediator.publish 'level:shift-space-pressed' else - console.log '>>>> BAEM <<<<' @ace.insert ' ' addCommand From 2cbbb1c0dc1cbaff175f647856bdb6669e6720c9 Mon Sep 17 00:00:00 2001 From: Imperadeiro98 Date: Fri, 15 Aug 2014 11:32:30 +0100 Subject: [PATCH 31/37] Update pt-PT.coffee --- app/locale/pt-PT.coffee | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/app/locale/pt-PT.coffee b/app/locale/pt-PT.coffee index f32a9d262..61bf857aa 100644 --- a/app/locale/pt-PT.coffee +++ b/app/locale/pt-PT.coffee @@ -179,14 +179,14 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: new_password: "Nova Palavra-passe" new_password_verify: "Verificar" email_subscriptions: "Subscrições de E-mail" -# email_subscriptions_none: "No Email Subscriptions." + email_subscriptions_none: "Sem Subscições de E-mail." email_announcements: "Anúncios" email_announcements_description: "Receba e-mails sobre as últimas novidades e desenvolvimentos no CodeCombat." email_notifications: "Notificações" email_notifications_summary: "Controle, de uma forma personalizada e automática, os e-mails de notificações relacionados com a sua atividade no CodeCombat." email_any_notes: "Quaisquer Notificações" email_any_notes_description: "Desative para parar de receber todos os e-mails de notificação de atividade." -# email_news: "News" + email_news: "Notícias" email_recruit_notes: "Oportunidades de Emprego" email_recruit_notes_description: "Se joga muito bem, podemos contactá-lo para lhe arranjar um (melhor) emprego." contributor_emails: "Subscrições de E-mail (Contribuintes)" @@ -532,8 +532,8 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: # thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." # article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" # article_editor_suffix: "and help CodeCombat players get the most out of their playtime." -# find_us: "Find us on these sites" -# contribute_to_the_project: "Contribute to the project" + find_us: "Encontre-nos nestes sítios" + contribute_to_the_project: "Contribua para o projeto" editor: main_title: "Editores do CodeCombat" @@ -549,7 +549,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: contact_us: "Contacte-nos!" hipchat_prefix: "Pode também encontrar-nos na nossa" hipchat_url: "sala HipChat." -# back: "Back" + back: "Voltar" revert: "Reverter" revert_models: "Reverter Modelos" pick_a_terrain: "Escolha Um Terreno" @@ -601,10 +601,10 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: level_search_title: "Procurar Níveis Aqui" achievement_search_title: "Procurar Conquistas" read_only_warning2: "Nota: não pode guardar nenhuma edição feita aqui, porque não tem sessão iniciada." -# no_achievements: "No achievements have been added for this level yet." + no_achievements: "Ainda não foram adicionadas conquistas a este nível." # achievement_query_misc: "Key achievement off of miscellanea" # achievement_query_goals: "Key achievement off of level goals" -# level_completion: "Level Completion" + level_completion: "Completação do Nível" article: edit_btn_preview: "Pré-visualizar" @@ -613,7 +613,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: general: and: "e" name: "Nome" -# date: "Date" + date: "Data" body: "Corpo" version: "Versão" commit_msg: "Enviar Mensagem" @@ -662,7 +662,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: nick_description: "Feiticeiro da programção, mago da motivação excêntrico e experimentador de pernas para o ar. O Nick pode fazer qualquer coisa e escolhe construir o CodeCombat." jeremy_description: "Mago do suporte ao cliente, testador do uso e organizador da comunidade; provavelmente já falou com o Jeremy." michael_description: "Programador, administrador do sistema e técnico de graduação prodígio, o Michael é a pessoa que mantém os nossos servidores online." -# matt_description: "Bicyclist, Software Engineer, reader of heroic fantasy, connoisseur of peanut butter, sipper of coffee." + matt_description: "Ciclista, engenheiro de software, leitor de fantasia heróica, apreciador de manteiga de amendoim e de café." legal: page_title: "Legal" From 4a133f69980d5d505867a77594312087f0811b87 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Fri, 15 Aug 2014 09:43:39 -0700 Subject: [PATCH 32/37] Added popovers to community social link logos. --- app/templates/community.jade | 12 ++++++------ app/views/CommunityView.coffee | 5 ++++- app/views/editor/level/modals/SaveLevelModal.coffee | 2 +- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/app/templates/community.jade b/app/templates/community.jade index 66f67f5e7..430b2621f 100644 --- a/app/templates/community.jade +++ b/app/templates/community.jade @@ -48,22 +48,22 @@ block content .logo-row a(href="http://blog.codecombat.com") - img(src="/images/pages/community/logo_sett.png") + img(src="/images/pages/community/logo_sett.png", data-content="Read the CodeCombat blog on Sett") a(href="http://discourse.codecombat.com") - img(src="/images/pages/community/logo_discourse.png") + img(src="/images/pages/community/logo_discourse.png", data-content="Join the discussion on our Discourse forum") a(href="https://www.facebook.com/codecombat") - img(src="/images/pages/community/logo_facebook.png") + img(src="/images/pages/community/logo_facebook.png", data-content="Like CodeCombat on Facebook") a(href="https://twitter.com/CodeCombat") - img(src="/images/pages/community/logo_twitter.png") + img(src="/images/pages/community/logo_twitter.png", data-content="Follow CodeCombat on Twitter") a(href="https://plus.google.com/115285980638641924488/posts") - img(src="/images/pages/community/logo_g+.png") + img(src="/images/pages/community/logo_g+.png", data-content="Join CodeCombat on Google+") a(href="http://www.hipchat.com/g3plnOKqa") - img(src="/images/pages/community/logo_hipchat.png") + img(src="/images/pages/community/logo_hipchat.png", data-content="Chat with us in the public CodeCombat HipChat room") .half-width diff --git a/app/views/CommunityView.coffee b/app/views/CommunityView.coffee index 8f61e1a24..9431dd2fc 100644 --- a/app/views/CommunityView.coffee +++ b/app/views/CommunityView.coffee @@ -18,4 +18,7 @@ module.exports = class CommunityView extends RootView else summary = $.i18n.t("contribute.#{characterClass}_summary") explanation = "

#{title} #{titleDescription}

#{summary}" - $(@).popover(placement: 'bottom', trigger: 'hover', container: 'body', content: explanation, html: true) + $(@).find('img').popover(placement: 'bottom', trigger: 'hover', container: 'body', content: explanation, html: true) + + @$el.find('.logo-row img').each -> + $(@).popover(placement: 'bottom', trigger: 'hover', container: 'body') diff --git a/app/views/editor/level/modals/SaveLevelModal.coffee b/app/views/editor/level/modals/SaveLevelModal.coffee index 316283ecf..b41bdaab4 100644 --- a/app/views/editor/level/modals/SaveLevelModal.coffee +++ b/app/views/editor/level/modals/SaveLevelModal.coffee @@ -47,7 +47,7 @@ module.exports = class SaveLevelModal extends SaveVersionModal shouldSaveEntity: (m) -> return false unless m.hasWriteAccess() - if not m.get('system') and m.type() is 'LevelComponent' + if m.get('system') is 'ai' and m.get('name') is 'Jitters' and m.type() is 'LevelComponent' # Trying to debug the occasional phantom all-Components-must-be-saved bug console.log "Should we save", m.get('system'), m.get('name'), m, "? localChanges:", m.hasLocalChanges(), "version:", m.get('version'), 'isPublished:', m.isPublished(), 'collection:', m.collection return false From 34207d28c90c8c1593a213498395d4a8e5f2b238 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Thu, 14 Aug 2014 16:40:35 -0700 Subject: [PATCH 33/37] Streamifying and optimizing the recalculating of stats scripts. --- scripts/recalculateStatistics.coffee | 4 + scripts/setupAchievements.coffee | 10 +- server/users/user_handler.coffee | 189 ++++++++++++++++++++------- 3 files changed, 148 insertions(+), 55 deletions(-) diff --git a/scripts/recalculateStatistics.coffee b/scripts/recalculateStatistics.coffee index 7177acf9d..7c54478af 100644 --- a/scripts/recalculateStatistics.coffee +++ b/scripts/recalculateStatistics.coffee @@ -28,15 +28,19 @@ whenAllFinished = -> async.parallel [ # Misc (c) -> report UserHandler.recalculateStats, 'gamesCompleted', c + # Edits (c) -> report UserHandler.recalculateStats, 'articleEdits', c (c) -> report UserHandler.recalculateStats, 'levelEdits', c (c) -> report UserHandler.recalculateStats, 'levelComponentEdits', c (c) -> report UserHandler.recalculateStats, 'levelSystemEdits', c (c) -> report UserHandler.recalculateStats, 'thangTypeEdits', c + # Patches (c) -> report UserHandler.recalculateStats, 'patchesContributed', c (c) -> report UserHandler.recalculateStats, 'patchesSubmitted', c + + # Patches in memory (c) -> report UserHandler.recalculateStats, 'totalTranslationPatches', c (c) -> report UserHandler.recalculateStats, 'totalMiscPatches', c diff --git a/scripts/setupAchievements.coffee b/scripts/setupAchievements.coffee index 42cfb4e9f..54e7a6f5f 100644 --- a/scripts/setupAchievements.coffee +++ b/scripts/setupAchievements.coffee @@ -31,7 +31,7 @@ unlockableAchievements = worth: 10 collection: 'users' userField: '_id' - category: 'miscellaneous' + category: 'misc' difficulty: 1 recalculable: true @@ -42,7 +42,7 @@ unlockableAchievements = worth: 20 collection: 'users' userField: '_id' - category: 'levels' + category: 'level' difficulty: 1 recalculable: true @@ -53,7 +53,7 @@ unlockableAchievements = worth: 50 collection: 'users' userField: '_id' - category: 'levels' + category: 'level' difficulty: 2 recalculable: true @@ -64,7 +64,7 @@ unlockableAchievements = worth: 500 collection: 'users' userField: '_id' - category: 'levels' + category: 'level' difficulty: 3 recalculable: true @@ -189,7 +189,7 @@ repeatableAchievements = worth: 1 collection: 'users' userField: '_id' - category: 'miscellaneous' + category: 'ladder' difficulty: 1 proportionalTo: 'simulatedBy' function: diff --git a/server/users/user_handler.coffee b/server/users/user_handler.coffee index c87073cd8..3fe79fde9 100644 --- a/server/users/user_handler.coffee +++ b/server/users/user_handler.coffee @@ -391,22 +391,45 @@ UserHandler = class UserHandler extends Handler countEdits = (model, done) -> statKey = User.statsMapping.edits[model.modelName] return done(new Error 'Could not resolve statKey for model') unless statKey? - User.find {}, (err, users) -> - async.eachSeries users, ((user, doneWithUser) -> - userObjectID = user.get('_id') - userStringID = userObjectID.toHexString() + + total = 100000 + User.count {anonymous:false}, (err, count) -> total = count + + stream = User.find({anonymous:false}).sort('_id').limit(10).stream() + numberRunning = 0 + numberRan = 0 + streamClosed = false + t0 = new Date().getTime() + + stream.on 'close', -> streamClosed = true + + stream.on 'data', (user) -> + numberRunning += 1 + stream.pause() if numberRunning > 20 + userObjectID = user.get('_id') + userStringID = userObjectID.toHexString() - model.count {$or: [creator: userObjectID, creator: userStringID]}, (err, count) -> - if count - update = $set: {} - update.$set[statKey] = count - else - update = $unset: {} - update.$unset[statKey] = '' - User.findByIdAndUpdate user.get('_id'), update, (err) -> - log.error err if err? - doneWithUser() - ), done + model.count {$or: [creator: userObjectID, creator: userStringID]}, (err, count) -> + if count + update = $set: {} + update.$set[statKey] = count + else + update = $unset: {} + update.$unset[statKey] = '' + User.findByIdAndUpdate user.get('_id'), update, (err) -> + log.error err if err? + numberRan += 1 + pctDone = (100 * numberRan / total).toFixed(2) + console.log "Counted #{statKey} edits for user #{user.get('name') or '???'} (#{user.get('_id')}) (#{pctDone}%)" + numberRunning -= 1 + + if streamClosed and not numberRunning + t1 = new Date().getTime() + runningTime = ((t1-t0)/1000/60/60).toFixed(2) + console.log "we finished in #{runningTime} hours" + return done() + + stream.resume() # I don't like leaking big variables, could remove this for readability # Meant for passing into MongoDB @@ -431,53 +454,119 @@ UserHandler = class UserHandler extends Handler update[method][statName] = count or '' User.findByIdAndUpdate user.get('_id'), update, doneUpdatingUser - User.find {}, (err, users) -> - async.eachSeries users, ((user, doneWithUser) -> - userObjectID = user.get '_id' - userStringID = userObjectID.toHexString() - # Extend query with a patch ownership test - _.extend query, {$or: [{creator: userObjectID}, {creator: userStringID}]} + total = 100000 + User.count {anonymous:false}, (err, count) -> total = count - count = 0 - stream = Patch.where(query).stream() - stream.on 'data', (doc) -> ++count if filter doc - stream.on 'error', (err) -> - updateUser user, count, doneWithUser - log.error "Recalculating #{statName} for user #{user} stopped prematurely because of error" - stream.on 'close', -> - updateUser user, count, doneWithUser - ), done + userStream = User.find({anonymous:false}).sort('_id').stream() + numberRunning = 0 + numberRan = 0 + streamClosed = false + t0 = new Date().getTime() + + userStream.on 'close', -> streamClosed = true + + userStream.on 'data', (user) -> + numberRunning += 1 + userStream.pause() if numberRunning > 8 + userObjectID = user.get '_id' + userStringID = userObjectID.toHexString() + # Extend query with a patch ownership test + _.extend query, {creator: userObjectID} + + count = 0 + patchStream = Patch.where(query).stream() + patchStream.on 'data', (doc) -> ++count if filter doc +# stream.on 'error', (err) -> +# updateUser user, count, doneWithUser +# log.error "Recalculating #{statName} for user #{user} stopped prematurely because of error" + patchStream.on 'close', -> + updateUser user, count, -> + numberRan += 1 + numberRunning -= 1 + pctDone = (100 * numberRan / total).toFixed(2) + console.log "Counted #{count} #{statName} for user #{user.get('name') or '???'} (#{user.get('_id')}) (#{pctDone}%)" + if streamClosed and not numberRunning + t1 = new Date().getTime() + runningTime = ((t1-t0)/1000/60/60).toFixed(2) + console.log "we finished in #{runningTime} hours" + return done() + userStream.resume() + countPatchesByUsers = (query, statName, done) -> Patch = require '../patches/Patch' - User.find {}, (err, users) -> - async.eachSeries users, ((user, doneWithUser) -> - userObjectID = user.get '_id' - userStringID = userObjectID.toHexString() - # Extend query with a patch ownership test - _.extend query, {$or: [{creator: userObjectID}, {creator: userStringID}]} + total = 100000 + User.count {anonymous:false}, (err, count) -> total = count + + stream = User.find({anonymous:false}).sort('_id').stream() + numberRunning = 0 + numberRan = 0 + streamClosed = false + t0 = new Date().getTime() + + stream.on 'close', -> streamClosed = true + + stream.on 'data', (user) -> + numberRunning += 1 + stream.pause() if numberRunning > 50 + userObjectID = user.get '_id' + userStringID = userObjectID.toHexString() + # Extend query with a patch ownership test + _.extend query, {$or: [{creator: userObjectID}, {creator: userStringID}]} + + Patch.count query, (err, count) -> + method = if count then '$set' else '$unset' + update = {} + update[method] = {} + update[method][statName] = count or '' + User.findByIdAndUpdate user.get('_id'), update, -> + numberRan += 1 + numberRunning -= 1 + pctDone = (100 * numberRan / total).toFixed(2) + console.log "Counted #{statName} patches for user #{user.get('name') or '???'} (#{user.get('_id')}) (#{pctDone}%)" + if streamClosed and not numberRunning + t1 = new Date().getTime() + runningTime = ((t1-t0)/1000/60/60).toFixed(2) + console.log "we finished in #{runningTime} hours" + return done() + stream.resume() - Patch.count query, (err, count) -> - method = if count then '$set' else '$unset' - update = {} - update[method] = {} - update[method][statName] = count or '' - User.findByIdAndUpdate user.get('_id'), update, doneWithUser - ), done statRecalculators: gamesCompleted: (done) -> LevelSession = require '../levels/sessions/LevelSession' - User.find {}, (err, users) -> - async.eachSeries users, ((user, doneWithUser) -> - userID = user.get('_id').toHexString() + total = 1000000 + User.count {}, (err, count) -> total = count - LevelSession.count {creator: userID, 'state.completed': true}, (err, count) -> - update = if count then {$set: 'stats.gamesCompleted': count} else {$unset: 'stats.gamesCompleted': ''} - User.findByIdAndUpdate user.get('_id'), update, doneWithUser - ), done + stream = User.find().sort('_id').stream() + numberRunning = 0 + numberRan = 0 + streamClosed = false + t0 = new Date().getTime() + + stream.on 'close', -> streamClosed = true + + stream.on 'data', (user) -> + numberRunning += 1 + stream.pause() if numberRunning > 100 + userID = user.get('_id').toHexString() + + LevelSession.count {creator: userID, 'state.complete': true}, (err, count) -> + update = if count then {$set: 'stats.gamesCompleted': count} else {$unset: 'stats.gamesCompleted': ''} + User.findByIdAndUpdate user.get('_id'), update, -> + numberRan += 1 + numberRunning -= 1 + pctDone = (100 * numberRan / total).toFixed(2) + console.log "Counted #{count} levels played for user #{user.get('name') or '???'} (#{user.get('_id')}) (#{pctDone}%)" + if streamClosed and not numberRunning + t1 = new Date().getTime() + runningTime = ((t1-t0)/1000/60/60).toFixed(2) + console.log "we finished in #{runningTime} hours" + return done() + stream.resume() + articleEdits: (done) -> Article = require '../articles/Article' From 4f22723084848281d1279851036fc93e25ff3854 Mon Sep 17 00:00:00 2001 From: Ruben Vereecken Date: Thu, 14 Aug 2014 19:17:44 +0200 Subject: [PATCH 34/37] Added Query streams wherever possible to ease server load. --- .../earned_achievement_handler.coffee | 119 ++++++------ server/users/user_handler.coffee | 173 ++++++------------ 2 files changed, 122 insertions(+), 170 deletions(-) diff --git a/server/achievements/earned_achievement_handler.coffee b/server/achievements/earned_achievement_handler.coffee index 0926bcd28..fadc43dff 100644 --- a/server/achievements/earned_achievement_handler.coffee +++ b/server/achievements/earned_achievement_handler.coffee @@ -43,73 +43,82 @@ class EarnedAchievementHandler extends Handler callback?(new Error 'No achievements to recalculate') unless achievements.length log.info "Recalculating a total of #{achievements.length} achievements..." - # Fetch every single user - User.find {}, (err, users) -> - callback?(err) if err? - log.info "for a total of #{users.length} users." + # Fetch every single user. This tends to get big so do it in a streaming fashion. + userStream = User.find().stream() + streamFinished = false + usersTotal = 0 + usersFinished = 0 + doneWithUser = -> + ++usersFinished + onFinished?() if streamFinished and usersFinished is usersTotal + userStream.on 'error', (err) -> log.error err + userStream.on 'close', -> streamFinished = true + userStream.on 'data', (user) -> + ++usersTotal - async.each users, ((user, doneWithUser) -> - # Keep track of a user's already achieved in order to set the notified values correctly - userID = user.get('_id').toHexString() + # Keep track of a user's already achieved in order to set the notified values correctly + userID = user.get('_id').toHexString() - # Fetch all of a user's earned achievements - EarnedAchievement.find {user: userID}, (err, alreadyEarned) -> - alreadyEarnedIDs = [] - previousPoints = 0 - async.each alreadyEarned, ((earned, doneWithEarned) -> - if (_.find achievements, (single) -> earned.get('achievement') is single.get('_id').toHexString()) # if already earned - alreadyEarnedIDs.push earned.get('achievement') - previousPoints += earned.get 'earnedPoints' - doneWithEarned() - ), -> # After checking already achieved - # TODO maybe also delete earned? Make sure you don't delete too many + # Fetch all of a user's earned achievements + EarnedAchievement.find {user: userID}, (err, alreadyEarned) -> + alreadyEarnedIDs = [] + previousPoints = 0 + async.each alreadyEarned, ((earned, doneWithEarned) -> + if (_.find achievements, (single) -> earned.get('achievement') is single.get('_id').toHexString()) # if already earned + alreadyEarnedIDs.push earned.get('achievement') + previousPoints += earned.get 'earnedPoints' + doneWithEarned() + ), -> # After checking already achieved + # TODO maybe also delete earned? Make sure you don't delete too many - newTotalPoints = 0 + newTotalPoints = 0 - async.each achievements, ((achievement, doneWithAchievement) -> - return doneWithAchievement() unless achievement.isRecalculable() + async.each achievements, ((achievement, doneWithAchievement) -> + return doneWithAchievement() unless achievement.isRecalculable() - isRepeatable = achievement.get('proportionalTo')? - model = mongoose.modelNameByCollection(achievement.get('collection')) - return doneWithAchievement new Error "Model with collection '#{achievement.get 'collection'}' doesn't exist." unless model? + isRepeatable = achievement.get('proportionalTo')? + model = mongoose.modelNameByCollection(achievement.get('collection')) + return doneWithAchievement new Error "Model with collection '#{achievement.get 'collection'}' doesn't exist." unless model? - finalQuery = _.clone achievement.get 'query' - finalQuery.$or = [{}, {}] # Allow both ObjectIDs or hex string IDs - finalQuery.$or[0][achievement.userField] = userID - finalQuery.$or[1][achievement.userField] = mongoose.Types.ObjectId userID + finalQuery = _.clone achievement.get 'query' + finalQuery.$or = [{}, {}] # Allow both ObjectIDs or hex string IDs + finalQuery.$or[0][achievement.userField] = userID + finalQuery.$or[1][achievement.userField] = mongoose.Types.ObjectId userID - model.findOne finalQuery, (err, something) -> - return doneWithAchievement() if _.isEmpty something + model.findOne finalQuery, (err, something) -> + return doneWithAchievement() if _.isEmpty something - #log.debug "Matched an achievement: #{achievement.get 'name'} for #{user.get 'name'}" + #log.debug "Matched an achievement: #{achievement.get 'name'} for #{user.get 'name'}" - earned = - user: userID - achievement: achievement._id.toHexString() - achievementName: achievement.get 'name' - notified: achievement._id in alreadyEarnedIDs + earned = + user: userID + achievement: achievement._id.toHexString() + achievementName: achievement.get 'name' + notified: achievement._id in alreadyEarnedIDs - if isRepeatable - earned.achievedAmount = something.get(achievement.get 'proportionalTo') - earned.previouslyAchievedAmount = 0 + if isRepeatable + earned.achievedAmount = something.get(achievement.get 'proportionalTo') + earned.previouslyAchievedAmount = 0 - expFunction = achievement.getExpFunction() - newPoints = expFunction(earned.achievedAmount) * achievement.get('worth') - else - newPoints = achievement.get 'worth' + expFunction = achievement.getExpFunction() + newPoints = expFunction(earned.achievedAmount) * achievement.get('worth') + else + newPoints = achievement.get 'worth' - earned.earnedPoints = newPoints - newTotalPoints += newPoints + earned.earnedPoints = newPoints + newTotalPoints += newPoints + + EarnedAchievement.update {achievement:earned.achievement, user:earned.user}, earned, {upsert: true}, (err) -> + doneWithAchievement err + ), -> # Wrap up a user, save points + # Since some achievements cannot be recalculated it's important to deduct the old amount of exp + # and add the new amount, instead of just setting to the new amount + return doneWithUser() unless newTotalPoints + log.debug "Matched a total of #{newTotalPoints} new points" + log.debug "Incrementing score for these achievements with #{newTotalPoints - previousPoints}" + User.update {_id: userID}, {$inc: points: newTotalPoints - previousPoints}, {}, (err) -> + log.error err if err? + doneWithUser() - EarnedAchievement.update {achievement:earned.achievement, user:earned.user}, earned, {upsert: true}, (err) -> - doneWithAchievement err - ), -> # Wrap up a user, save points - # Since some achievements cannot be recalculated it's important to deduct the old amount of exp - # and add the new amount, instead of just setting to the new amount - return doneWithUser() unless newTotalPoints - log.debug "Matched a total of #{newTotalPoints} new points" - log.debug "Incrementing score for these achievements with #{newTotalPoints - previousPoints}" - User.update {_id: userID}, {$inc: points: newTotalPoints - previousPoints}, {}, doneWithUser - ), onFinished module.exports = new EarnedAchievementHandler() diff --git a/server/users/user_handler.coffee b/server/users/user_handler.coffee index 3fe79fde9..85886726d 100644 --- a/server/users/user_handler.coffee +++ b/server/users/user_handler.coffee @@ -208,7 +208,7 @@ UserHandler = class UserHandler extends Handler @sendSuccess(res, {result: 'success'}) avatar: (req, res, id) -> - @modelClass.findBySlugOrId(id).exec (err, document) => + @modelClass.findById(id).exec (err, document) => return @sendDatabaseError(res, err) if err return @sendNotFoundError(res) unless document photoURL = document?.get('photoURL') @@ -232,7 +232,7 @@ UserHandler = class UserHandler extends Handler IDify: (idOrSlug, done) -> return done null, idOrSlug if Handler.isID idOrSlug - User.findBySlug idOrSlug, (err, user) -> done err, user?.get '_id' + User.getBySlug idOrSlug, (err, user) -> done err, user?.get '_id' getLevelSessions: (req, res, userIDOrSlug) -> @IDify userIDOrSlug, (err, userID) => @@ -391,21 +391,17 @@ UserHandler = class UserHandler extends Handler countEdits = (model, done) -> statKey = User.statsMapping.edits[model.modelName] return done(new Error 'Could not resolve statKey for model') unless statKey? - - total = 100000 - User.count {anonymous:false}, (err, count) -> total = count - - stream = User.find({anonymous:false}).sort('_id').limit(10).stream() - numberRunning = 0 - numberRan = 0 - streamClosed = false - t0 = new Date().getTime() - - stream.on 'close', -> streamClosed = true - - stream.on 'data', (user) -> - numberRunning += 1 - stream.pause() if numberRunning > 20 + userStream = User.find().stream() + streamFinished = false + usersTotal = 0 + usersFinished = 0 + doneWithUser = (err) -> + log.error err if err? + ++usersFinished + done?() if streamFinished and usersFinished is usersTotal + userStream.on 'error', (err) -> log.error err + userStream.on 'close', -> streamFinished = true + userStream.on 'data', (user) -> userObjectID = user.get('_id') userStringID = userObjectID.toHexString() @@ -418,18 +414,7 @@ UserHandler = class UserHandler extends Handler update.$unset[statKey] = '' User.findByIdAndUpdate user.get('_id'), update, (err) -> log.error err if err? - numberRan += 1 - pctDone = (100 * numberRan / total).toFixed(2) - console.log "Counted #{statKey} edits for user #{user.get('name') or '???'} (#{user.get('_id')}) (#{pctDone}%)" - numberRunning -= 1 - - if streamClosed and not numberRunning - t1 = new Date().getTime() - runningTime = ((t1-t0)/1000/60/60).toFixed(2) - console.log "we finished in #{runningTime} hours" - return done() - - stream.resume() + doneWithUser() # I don't like leaking big variables, could remove this for readability # Meant for passing into MongoDB @@ -454,62 +439,45 @@ UserHandler = class UserHandler extends Handler update[method][statName] = count or '' User.findByIdAndUpdate user.get('_id'), update, doneUpdatingUser - total = 100000 - User.count {anonymous:false}, (err, count) -> total = count - - userStream = User.find({anonymous:false}).sort('_id').stream() - numberRunning = 0 - numberRan = 0 - streamClosed = false - t0 = new Date().getTime() - - userStream.on 'close', -> streamClosed = true - - userStream.on 'data', (user) -> - numberRunning += 1 - userStream.pause() if numberRunning > 8 + userStream = User.find().stream() + streamFinished = false + usersTotal = 0 + usersFinished = 0 + doneWithUser = (err) -> + log.error err if err? + ++usersFinished + done?() if streamFinished and usersFinished is usersTotal + userStream.on 'error', (err) -> log.error err + userStream.on 'close', -> streamFinished = true + userStream.on 'data', (user) -> userObjectID = user.get '_id' userStringID = userObjectID.toHexString() # Extend query with a patch ownership test - _.extend query, {creator: userObjectID} + _.extend query, {$or: [{creator: userObjectID}, {creator: userStringID}]} count = 0 - patchStream = Patch.where(query).stream() - patchStream.on 'data', (doc) -> ++count if filter doc -# stream.on 'error', (err) -> -# updateUser user, count, doneWithUser -# log.error "Recalculating #{statName} for user #{user} stopped prematurely because of error" - patchStream.on 'close', -> - updateUser user, count, -> - numberRan += 1 - numberRunning -= 1 - pctDone = (100 * numberRan / total).toFixed(2) - console.log "Counted #{count} #{statName} for user #{user.get('name') or '???'} (#{user.get('_id')}) (#{pctDone}%)" - if streamClosed and not numberRunning - t1 = new Date().getTime() - runningTime = ((t1-t0)/1000/60/60).toFixed(2) - console.log "we finished in #{runningTime} hours" - return done() - userStream.resume() - + stream = Patch.where(query).stream() + stream.on 'data', (doc) -> ++count if filter doc + stream.on 'error', (err) -> + updateUser user, count, doneWithUser + log.error "Recalculating #{statName} for user #{user} stopped prematurely because of error" + stream.on 'close', -> + updateUser user, count, doneWithUser countPatchesByUsers = (query, statName, done) -> Patch = require '../patches/Patch' - total = 100000 - User.count {anonymous:false}, (err, count) -> total = count - - stream = User.find({anonymous:false}).sort('_id').stream() - numberRunning = 0 - numberRan = 0 - streamClosed = false - t0 = new Date().getTime() - - stream.on 'close', -> streamClosed = true - - stream.on 'data', (user) -> - numberRunning += 1 - stream.pause() if numberRunning > 50 + userStream = User.find().stream() + streamFinished = false + usersTotal = 0 + usersFinished = 0 + doneWithUser = (err) -> + log.error err if err? + ++usersFinished + done?() if streamFinished and usersFinished is usersTotal + userStream.on 'error', (err) -> log.error err + userStream.on 'close', -> streamFinished = true + userStream.on 'data', (user) -> userObjectID = user.get '_id' userStringID = userObjectID.toHexString() # Extend query with a patch ownership test @@ -520,53 +488,28 @@ UserHandler = class UserHandler extends Handler update = {} update[method] = {} update[method][statName] = count or '' - User.findByIdAndUpdate user.get('_id'), update, -> - numberRan += 1 - numberRunning -= 1 - pctDone = (100 * numberRan / total).toFixed(2) - console.log "Counted #{statName} patches for user #{user.get('name') or '???'} (#{user.get('_id')}) (#{pctDone}%)" - if streamClosed and not numberRunning - t1 = new Date().getTime() - runningTime = ((t1-t0)/1000/60/60).toFixed(2) - console.log "we finished in #{runningTime} hours" - return done() - stream.resume() - + User.findByIdAndUpdate user.get('_id'), update, doneWithUser statRecalculators: gamesCompleted: (done) -> LevelSession = require '../levels/sessions/LevelSession' - total = 1000000 - User.count {}, (err, count) -> total = count - - stream = User.find().sort('_id').stream() - numberRunning = 0 - numberRan = 0 - streamClosed = false - t0 = new Date().getTime() - - stream.on 'close', -> streamClosed = true - - stream.on 'data', (user) -> - numberRunning += 1 - stream.pause() if numberRunning > 100 + userStream = User.find().stream() + streamFinished = false + usersTotal = 0 + usersFinished = 0 + doneWithUser = (err) -> + log.error err if err? + ++usersFinished + done?() if streamFinished and usersFinished is usersTotal + userStream.on 'error', (err) -> log.error err + userStream.on 'close', -> streamFinished = true + userStream.on 'data', (user) -> userID = user.get('_id').toHexString() - LevelSession.count {creator: userID, 'state.complete': true}, (err, count) -> + LevelSession.count {creator: userID, 'state.completed': true}, (err, count) -> update = if count then {$set: 'stats.gamesCompleted': count} else {$unset: 'stats.gamesCompleted': ''} - User.findByIdAndUpdate user.get('_id'), update, -> - numberRan += 1 - numberRunning -= 1 - pctDone = (100 * numberRan / total).toFixed(2) - console.log "Counted #{count} levels played for user #{user.get('name') or '???'} (#{user.get('_id')}) (#{pctDone}%)" - if streamClosed and not numberRunning - t1 = new Date().getTime() - runningTime = ((t1-t0)/1000/60/60).toFixed(2) - console.log "we finished in #{runningTime} hours" - return done() - stream.resume() - + User.findByIdAndUpdate user.get('_id'), update, doneWithUser articleEdits: (done) -> Article = require '../articles/Article' From ca830235914f53148af7c46d1b57db125410b3ba Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Fri, 15 Aug 2014 09:32:58 -0700 Subject: [PATCH 35/37] Tweaked the earned achievement recalculator. --- .../earned_achievement_handler.coffee | 28 +++++++++++++++---- 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/server/achievements/earned_achievement_handler.coffee b/server/achievements/earned_achievement_handler.coffee index fadc43dff..50796fe38 100644 --- a/server/achievements/earned_achievement_handler.coffee +++ b/server/achievements/earned_achievement_handler.coffee @@ -29,7 +29,15 @@ class EarnedAchievementHandler extends Handler achievementIDs = (thing for thing in callbackOrSlugsOrIDs when Handler.isID(thing)) else # just a callback callback = callbackOrSlugsOrIDs - onFinished = -> callback arguments... + t0 = new Date().getTime() + total = 100000 + User.count {anonymous:false}, (err, count) -> total = count + + onFinished = -> + t1 = new Date().getTime() + runningTime = ((t1-t0)/1000/60/60).toFixed(2) + console.log "we finished in #{runningTime} hours" + callback arguments... filter = {} filter.$or = [ @@ -44,17 +52,23 @@ class EarnedAchievementHandler extends Handler log.info "Recalculating a total of #{achievements.length} achievements..." # Fetch every single user. This tends to get big so do it in a streaming fashion. - userStream = User.find().stream() + userStream = User.find().sort('_id').stream() streamFinished = false usersTotal = 0 usersFinished = 0 + numberRunning = 0 doneWithUser = -> ++usersFinished + numberRunning -= 1 + userStream.resume() + onFinished?() if streamFinished and usersFinished is usersTotal userStream.on 'error', (err) -> log.error err userStream.on 'close', -> streamFinished = true userStream.on 'data', (user) -> ++usersTotal + numberRunning += 1 + userStream.pause() if numberRunning > 20 # Keep track of a user's already achieved in order to set the notified values correctly userID = user.get('_id').toHexString() @@ -113,12 +127,14 @@ class EarnedAchievementHandler extends Handler ), -> # Wrap up a user, save points # Since some achievements cannot be recalculated it's important to deduct the old amount of exp # and add the new amount, instead of just setting to the new amount - return doneWithUser() unless newTotalPoints - log.debug "Matched a total of #{newTotalPoints} new points" - log.debug "Incrementing score for these achievements with #{newTotalPoints - previousPoints}" + return doneWithUser(user) unless newTotalPoints +# log.debug "Matched a total of #{newTotalPoints} new points" +# log.debug "Incrementing score for these achievements with #{newTotalPoints - previousPoints}" + pctDone = (100 * usersFinished / total).toFixed(2) + console.log "Updated points to #{newTotalPoints}(+#{newTotalPoints - previousPoints}) for #{user.get('name') or '???'} (#{user.get('_id')}) (#{pctDone}%)" User.update {_id: userID}, {$inc: points: newTotalPoints - previousPoints}, {}, (err) -> log.error err if err? - doneWithUser() + doneWithUser(user) module.exports = new EarnedAchievementHandler() From 7db821309a85996a55a73fa44ce709e65428fcf4 Mon Sep 17 00:00:00 2001 From: Scott Erickson Date: Fri, 15 Aug 2014 10:10:03 -0700 Subject: [PATCH 36/37] Tweaked isRecalculable. --- server/achievements/Achievement.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/achievements/Achievement.coffee b/server/achievements/Achievement.coffee index 4fae21adf..07a492a7c 100644 --- a/server/achievements/Achievement.coffee +++ b/server/achievements/Achievement.coffee @@ -29,7 +29,7 @@ AchievementSchema.methods.getExpFunction = -> parameters = @get('function')?.parameters or jsonschema.properties.function.default.parameters return utils.functionCreators[kind](parameters) if kind of utils.functionCreators -AchievementSchema.methods.isRecalculable = -> @get('recalculable') is true +AchievementSchema.methods.isRecalculable = -> @get('recalculable') isnt false AchievementSchema.statics.jsonschema = jsonschema AchievementSchema.statics.earnedAchievements = {} From f1a9848366114085315d46c9da125f5de7b32d57 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Fri, 15 Aug 2014 10:27:36 -0700 Subject: [PATCH 37/37] Fixed a couple errors. --- app/styles/community.sass | 13 +++++++------ app/views/editor/level/thangs/ThangsTabView.coffee | 2 +- app/views/kinds/RootView.coffee | 5 +++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/styles/community.sass b/app/styles/community.sass index ec7f5118e..cfb7efb4f 100644 --- a/app/styles/community.sass +++ b/app/styles/community.sass @@ -26,9 +26,10 @@ .lower-titles text-align: center - img - border-radius: 20px - @include transition( (background-color 0.2s linear, box-shadow 0.2s linear) ) - &:hover - background-color: #7abee3 - box-shadow: 0 0 20px #7abee3 + .logo-row, .community-columns + img + border-radius: 20px + @include transition( (background-color 0.2s linear, box-shadow 0.2s linear) ) + &:hover + background-color: #7abee3 + box-shadow: 0 0 20px #7abee3 diff --git a/app/views/editor/level/thangs/ThangsTabView.coffee b/app/views/editor/level/thangs/ThangsTabView.coffee index e6537a84f..2d1ddf0de 100644 --- a/app/views/editor/level/thangs/ThangsTabView.coffee +++ b/app/views/editor/level/thangs/ThangsTabView.coffee @@ -441,7 +441,7 @@ module.exports = class ThangsTabView extends CocoView else # Mediator event window.thangsTreema = @thangsTreema thangData = @thangsTreema.get "id=#{e.thangID}" - @editThangView = new LevelThangEditView thangData: thangData, level: @level, world: @world + @editThangView = new LevelThangEditView thangData: thangData, level: @level, world: @world, supermodel: @supermodel # supermodel needed for checkForMissingSystems @insertSubView @editThangView @$el.find('.thangs-column').hide() Backbone.Mediator.publish 'level:view-switched', e diff --git a/app/views/kinds/RootView.coffee b/app/views/kinds/RootView.coffee index a5dac5e7e..59603ccd1 100644 --- a/app/views/kinds/RootView.coffee +++ b/app/views/kinds/RootView.coffee @@ -6,6 +6,7 @@ CocoView = require './CocoView' {logoutUser, me} = require('lib/auth') locale = require 'locale/locale' +Achievement = require 'models/Achievement' AchievementPopup = require 'views/achievements/AchievementPopup' utils = require 'lib/utils' @@ -19,7 +20,7 @@ filterKeyboardEvents = (allowedEvents, func) -> module.exports = class RootView extends CocoView showBackground: true - + events: 'click #logout-button': 'logoutAccount' 'change .language-dropdown': 'onLanguageChanged' @@ -71,7 +72,7 @@ module.exports = class RootView extends CocoView c = super() c.showBackground = @showBackground c - + afterRender: -> super(arguments...) @chooseTab(location.hash.replace('#', '')) if location.hash