mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-28 01:55:38 -05:00
Merge branch 'master' of https://github.com/codecombat/codecombat
This commit is contained in:
commit
ddea7d1531
10 changed files with 182 additions and 46 deletions
|
@ -62,6 +62,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
|
|||
@actionQueue = []
|
||||
@marks = {}
|
||||
@labels = {}
|
||||
@handledAoEs = {}
|
||||
@age = 0
|
||||
@displayObject = new createjs.Container()
|
||||
if @thangType.get('actions')
|
||||
|
@ -178,9 +179,35 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
|
|||
@updateAction()
|
||||
@updateStats()
|
||||
@updateGold()
|
||||
@showAreaOfEffects()
|
||||
@updateMarks()
|
||||
@updateLabels()
|
||||
|
||||
showAreaOfEffects: ->
|
||||
return unless @thang?.currentEvents
|
||||
for event in @thang.currentEvents
|
||||
continue unless event.startsWith 'aoe-'
|
||||
continue if @handledAoEs[event]
|
||||
|
||||
@handledAoEs[event] = true
|
||||
args = JSON.parse(event[4...])
|
||||
pos = @options.camera.worldToSurface {x:args[0], y:args[1]}
|
||||
circle = new createjs.Shape()
|
||||
circle.graphics.beginFill(args[3]).drawCircle(0, 0, args[2]*Camera.PPM)
|
||||
circle.x = pos.x
|
||||
circle.y = pos.y
|
||||
circle.scaleY = @options.camera.y2x * 0.7
|
||||
circle.scaleX = 0.7
|
||||
circle.alpha = 0.2
|
||||
circle
|
||||
@options.groundLayer.addChild circle
|
||||
createjs.Tween.get(circle)
|
||||
.to({alpha: 0.6, scaleY: @options.camera.y2x, scaleX: 1}, 100, createjs.Ease.circOut)
|
||||
.to({alpha: 0, scaleY: 0, scaleX: 0}, 700, createjs.Ease.circIn)
|
||||
.call =>
|
||||
@options.groundLayer.removeChild circle
|
||||
delete @handledAoEs[event]
|
||||
|
||||
cache: ->
|
||||
bounds = @imageObject.getBounds()
|
||||
@displayObject.cache 0, 0, bounds.width, bounds.height
|
||||
|
|
|
@ -44,4 +44,4 @@ module.exports.hslToHex = (hsl) ->
|
|||
toHex = (n) ->
|
||||
h = Math.floor(n).toString(16)
|
||||
h = '0'+h if h.length is 1
|
||||
h
|
||||
h
|
||||
|
|
|
@ -81,6 +81,7 @@ module.exports = nativeDescription: "English", englishDescription: "English", tr
|
|||
campaign_player_created: "Player-Created"
|
||||
campaign_player_created_description: "... in which you battle against the creativity of your fellow <a href=\"/contribute#artisan\">Artisan Wizards</a>."
|
||||
level_difficulty: "Difficulty: "
|
||||
play_as: "Play As "
|
||||
|
||||
contact:
|
||||
contact_us: "Contact CodeCombat"
|
||||
|
@ -275,6 +276,7 @@ module.exports = nativeDescription: "English", englishDescription: "English", tr
|
|||
commit_msg: "Commit Message"
|
||||
history: "History"
|
||||
version_history_for: "Version History for: "
|
||||
result: "Result"
|
||||
results: "Results"
|
||||
description: "Description"
|
||||
or: "or"
|
||||
|
@ -282,6 +284,17 @@ module.exports = nativeDescription: "English", englishDescription: "English", tr
|
|||
password: "Password"
|
||||
message: "Message"
|
||||
code: "Code"
|
||||
ladder: "Ladder"
|
||||
when: "When"
|
||||
rank: "Rank"
|
||||
score: "Score"
|
||||
win: "Win"
|
||||
loss: "Loss"
|
||||
tie: "Tie"
|
||||
easy: "Easy"
|
||||
medium: "Medium"
|
||||
hard: "Hard"
|
||||
|
||||
|
||||
about:
|
||||
who_is_codecombat: "Who is CodeCombat?"
|
||||
|
@ -475,3 +488,35 @@ module.exports = nativeDescription: "English", englishDescription: "English", tr
|
|||
ambassador_title_description: "(Support)"
|
||||
counselor_title: "Counselor"
|
||||
counselor_title_description: "(Expert/Teacher)"
|
||||
|
||||
ladder:
|
||||
please_login: "Please log in first before playing a ladder game."
|
||||
my_matches: "My Matches"
|
||||
simulate: "Simulate"
|
||||
simulation_explanation: "By simulating games you can get your game ranked faster!"
|
||||
simulate_games: "Simulate Games!"
|
||||
simulate_all: "RESET AND SIMULATE GAMES"
|
||||
leaderboard: "Leaderboard"
|
||||
battle_as: "Battle as "
|
||||
summary_your: "Your "
|
||||
summary_matches: "Matches - "
|
||||
summary_wins: " Wins, "
|
||||
summary_losses: " Losses"
|
||||
rank_no_code: "No New Code to Rank"
|
||||
rank_my_game: "Rank My Game!"
|
||||
rank_submitting: "Submitting..."
|
||||
rank_submitted: "Submitted for Ranking"
|
||||
rank_failed: "Failed to Rank"
|
||||
rank_being_ranked: "Game Being Ranked"
|
||||
code_being_simulated: "Your new code is being simulated by other players for ranking. This will refresh as new matches come in."
|
||||
no_ranked_matches_pre: "No ranked matches for the "
|
||||
no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
|
||||
choose_opponent: "Choose an Opponent"
|
||||
tutorial_play: "Play Tutorial"
|
||||
tutorial_recommended: "Recommended if you've never played before"
|
||||
tutorial_skip: "Skip Tutorial"
|
||||
tutorial_not_sure: "Not sure what's going on?"
|
||||
tutorial_play_first: "Play the Tutorial first."
|
||||
simple_ai: "Simple AI"
|
||||
warmup: "Warmup"
|
||||
vs: "VS"
|
||||
|
|
|
@ -269,12 +269,23 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
|
|||
commit_msg: "Commit Bericht"
|
||||
history: "Geschiedenis"
|
||||
version_history_for: "Versie geschiedenis voor: "
|
||||
result: "Resultaat"
|
||||
results: "Resultaten"
|
||||
description: "Beschrijving"
|
||||
or: "of"
|
||||
email: "Email"
|
||||
message: "Bericht"
|
||||
code: "Code"
|
||||
ladder: "Ladder"
|
||||
when: "Wanneer"
|
||||
rank: "Rang"
|
||||
score: "Score"
|
||||
win: "Win"
|
||||
loss: "Verlies"
|
||||
tie: "Gelijk"
|
||||
easy: "Gemakkelijk"
|
||||
medium: "Medium"
|
||||
hard: "Moeilijk"
|
||||
|
||||
about:
|
||||
who_is_codecombat: "Wie is CodeCombat?"
|
||||
|
@ -468,3 +479,35 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
|
|||
ambassador_title_description: "(Ondersteuning)"
|
||||
counselor_title: "Raadgever"
|
||||
counselor_title_description: "(Expert/Leraar)"
|
||||
|
||||
ladder:
|
||||
please_login: "Log alstublieft eerst in voordat u een ladderspel speelt."
|
||||
my_matches: "Mijn Wedstrijden"
|
||||
simulate: "Simuleer"
|
||||
simulation_explanation: "Door spellen te simuleren kan je zelf sneller beoordeeld worden!"
|
||||
simulate_games: "Simuleer spellen!"
|
||||
simulate_all: "RESET EN SIMULEER SPELLEN"
|
||||
leaderboard: "Leaderboard"
|
||||
battle_as: "Vecht als "
|
||||
summary_your: "Jouw "
|
||||
summary_matches: "Wedstrijden - "
|
||||
summary_wins: " Overwinningen, "
|
||||
summary_losses: " Nederlagen"
|
||||
rank_no_code: "Geen nieuwe code om te Beoordelen!"
|
||||
rank_my_game: "Beoordeel mijn spel!"
|
||||
rank_submitting: "Verzenden..."
|
||||
rank_submitted: "Verzonden voor Beoordeling"
|
||||
rank_failed: "Beoordeling mislukt"
|
||||
rank_being_ranked: "Spel wordt Beoordeeld"
|
||||
code_being_simulated: "Uw nieuwe code wordt gesimuleerd door andere spelers om te beoordelen. Dit wordt vernieuwd zodra nieuwe matches binnenkomen."
|
||||
no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het"
|
||||
no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen."
|
||||
choose_opponent: "Kies een tegenstander"
|
||||
tutorial_play: "Speel de Tutorial"
|
||||
tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld"
|
||||
tutorial_skip: "Sla Tutorial over"
|
||||
tutorial_not_sure: "Niet zeker wat er aan de gang is?"
|
||||
tutorial_play_first: "Speel eerst de Tutorial."
|
||||
simple_ai: "Simpele AI"
|
||||
warmup: "Opwarming"
|
||||
vs: "tegen"
|
||||
|
|
11
app/templates/editor/level/versions.jade
Normal file
11
app/templates/editor/level/versions.jade
Normal file
|
@ -0,0 +1,11 @@
|
|||
extends /templates/modal/modal_base
|
||||
include /templates/kinds/versions
|
||||
|
||||
block modal-header-content
|
||||
h3(data-i18n="general.version_history") Version History
|
||||
|
||||
block modal-body-content
|
||||
if dataList
|
||||
+version-history-body()
|
||||
|
||||
block modal-footer-content
|
|
@ -10,7 +10,7 @@ block content
|
|||
if me.get('anonymous')
|
||||
div#must-log-in
|
||||
p
|
||||
strong Please log in first before playing a ladder game.
|
||||
strong(data-i18n="ladder.please_login") Please log in first before playing a ladder game.
|
||||
button.btn.btn-primary(data-toggle="coco-modal", data-target="modal/login", data-i18n="login.log_in") Log In
|
||||
button.btn.btn-primary(data-toggle="coco-modal", data-target="modal/signup", data-i18n="login.sign_up") Create Account
|
||||
|
||||
|
@ -21,7 +21,7 @@ block content
|
|||
for team in teams
|
||||
div.column.col-md-4
|
||||
a(style="background-color: #{team.primaryColor}", data-team=team.id).play-button.btn.btn-danger.btn-block.btn-lg
|
||||
span Play As
|
||||
span(data-i18n="play.play_as") Play As
|
||||
span= team.name
|
||||
div.column.col-md-2
|
||||
|
||||
|
@ -29,11 +29,11 @@ block content
|
|||
|
||||
ul.nav.nav-pills
|
||||
li.active
|
||||
a(href="#ladder", data-toggle="tab") Ladder
|
||||
a(href="#ladder", data-toggle="tab", data-i18n="general.ladder") Ladder
|
||||
li
|
||||
a(href="#my-matches", data-toggle="tab") My Matches
|
||||
a(href="#my-matches", data-toggle="tab", data-i18n="ladder.my_matches") My Matches
|
||||
li
|
||||
a(href="#simulate", data-toggle="tab") Simulate
|
||||
a(href="#simulate", data-toggle="tab", data-i18n="ladder.simulate") Simulate
|
||||
|
||||
div.tab-content
|
||||
.tab-pane.active.well#ladder
|
||||
|
@ -45,9 +45,9 @@ block content
|
|||
if simulationStatus
|
||||
| #{simulationStatus}
|
||||
else
|
||||
| By simulating games you can get your game ranked faster!
|
||||
span(data-i18n="ladder.simulation_explanation") By simulating games you can get your game ranked faster!
|
||||
p
|
||||
button.btn.btn-warning.btn-lg.highlight#simulate-button() Simulate Games!
|
||||
button(data-i18n="ladder.simulate_games").btn.btn-warning.btn-lg.highlight#simulate-button Simulate Games!
|
||||
if me.isAdmin()
|
||||
p
|
||||
button.btn.btn-danger.btn-lg.highlight#simulate-all-button() RESET AND SIMULATE GAMES
|
||||
button(data-i18n="ladder.simulate_all").btn.btn-danger.btn-lg.highlight#simulate-all-button RESET AND SIMULATE GAMES
|
|
@ -5,11 +5,11 @@ div#columns.row
|
|||
tr
|
||||
th(colspan=4, style="color: #{team.primaryColor}")
|
||||
span= team.name
|
||||
span Leaderboard
|
||||
span(data-i18n="ladder.leaderboard") Leaderboard
|
||||
tr
|
||||
th Rank
|
||||
th Score
|
||||
th.name-col-cell Name
|
||||
th(data-i18n="general.rank") Rank
|
||||
th(data-i18n="general.score") Score
|
||||
th(data-i18n="general.name").name-col-cell Name
|
||||
th
|
||||
|
||||
for session, rank in team.leaderboard.topPlayers.models
|
||||
|
@ -20,4 +20,5 @@ div#columns.row
|
|||
td.name-col-cell= session.get('creatorName') || "Anonymous"
|
||||
td
|
||||
a(href="/play/level/#{level.get('slug') || level.id}/?team=#{team.otherTeam}&opponent=#{session.id}")
|
||||
span Battle as #{team.otherTeam}!
|
||||
span(data-i18n="ladder.battle_as") Battle as
|
||||
| #{team.otherTeam}!
|
|
@ -11,16 +11,22 @@ div#columns.row
|
|||
|
||||
tr
|
||||
th(colspan=4, style="color: #{team.primaryColor}")
|
||||
span Your #{team.name} Matches - #{team.wins} Wins, #{team.losses} Losses
|
||||
span(data-i18n="ladder.summary_your") Your
|
||||
|#{team.name}
|
||||
span(data-i18n="ladder.summary_matches") Matches -
|
||||
|#{team.wins}
|
||||
span(data-i18n="ladder.summary_wins") Wins,
|
||||
|#{team.losses}
|
||||
span(data-i18n="ladder.summary_losses") Losses
|
||||
|
||||
if team.session
|
||||
button.btn.btn-sm.btn-warning.pull-right.rank-button(data-session-id=team.session.id)
|
||||
span.unavailable.hidden No New Code to Rank
|
||||
span.rank.hidden Rank My Game!
|
||||
span.submitting.hidden Submitting...
|
||||
span.submitted.hidden Submitted for Ranking
|
||||
span.failed.hidden Failed to Rank
|
||||
span.ranking.hidden Game Being Ranked
|
||||
span(data-i18n="ladder.rank_no_code").unavailable.hidden No New Code to Rank
|
||||
span(data-i18n="ladder.rank_my_game").rank.hidden Rank My Game!
|
||||
span(data-i18n="ladder.rank_submitting").submitting.hidden Submitting...
|
||||
span(data-i18n="ladder.rank_submitted").submitted.hidden Submitted for Ranking
|
||||
span(data-i18n="ladder.rank_failed").failed.hidden Failed to Rank
|
||||
span(data-i18n="ladder.rank_being_ranked").ranking.hidden Game Being Ranked
|
||||
|
||||
if team.chartData
|
||||
tr
|
||||
|
@ -28,19 +34,19 @@ div#columns.row
|
|||
img(src="https://chart.googleapis.com/chart?chs=450x125&cht=lxy&chco=#{team.chartColor}&chtt=Score%3A+#{team.currentScore}&chts=#{team.chartColor},16,r&chf=a,s,000000FF&chls=2&chm=o,#{team.chartColor},0,4&chd=t:#{team.chartData}")
|
||||
|
||||
tr
|
||||
th Result
|
||||
th Opponent
|
||||
th When
|
||||
th(data-i18n="general.result") Result
|
||||
th(data-i18n="general.opponent") Opponent
|
||||
th(data-i18n="general.when") When
|
||||
th
|
||||
for match in team.matches
|
||||
tr(class=(match.stale ? "stale " : "") + match.state)
|
||||
td.state-cell
|
||||
if match.state === 'win'
|
||||
span.win Win
|
||||
span(data-i18n="general.win").win Win
|
||||
if match.state === 'loss'
|
||||
span.loss Loss
|
||||
span(data-i18n="general.loss").loss Loss
|
||||
if match.state === 'tie'
|
||||
span.tie Tie
|
||||
span(data-i18n="general.tie").tie Tie
|
||||
td.name-cell= match.opponentName || "Anonymous"
|
||||
td.time-cell= match.when
|
||||
td.battle-cell
|
||||
|
@ -51,10 +57,12 @@ div#columns.row
|
|||
tr
|
||||
if team.isRanking
|
||||
td(colspan=4).alert.alert-info
|
||||
| Your new code is being simulated by other players for ranking.
|
||||
| This will refresh as new matches come in.
|
||||
span(data-i18n="ladder.code_being_simulated")
|
||||
| Your new code is being simulated by other players for ranking.
|
||||
| This will refresh as new matches come in.
|
||||
else
|
||||
td(colspan=4).alert.alert-warning
|
||||
| No ranked matches for the #{team.name} team!
|
||||
| Play against some competitors and then come back here to get your game ranked.
|
||||
span(data-i18n="ladder.no_ranked_matches_pre") No ranked matches for the
|
||||
| #{team.name}
|
||||
span(data-i18n="ladder.no_ranked_matches_post") team! Play against some competitors and then come back here to get your game ranked.
|
||||
|
||||
|
|
|
@ -1,23 +1,23 @@
|
|||
extends /templates/modal/modal_base
|
||||
|
||||
block modal-header-content
|
||||
h3 Choose an Opponent
|
||||
h3(data-i18n="ladder.choose_opponent") Choose an Opponent
|
||||
|
||||
block modal-body-content
|
||||
|
||||
div#noob-view.secret
|
||||
a(href="/play/level/#{levelID}-tutorial").btn.btn-success.btn-block.btn-lg
|
||||
p
|
||||
strong Play Tutorial
|
||||
span Recommended if you've never played before
|
||||
span.btn.btn-primary.btn-block.btn-lg#skip-tutorial-button Skip Tutorial
|
||||
strong(data-i18n="ladder.tutorial_play") Play Tutorial
|
||||
span(data-i18n="ladder.tutorial_recommended") Recommended if you've never played before
|
||||
span.btn.btn-primary.btn-block.btn-lg#skip-tutorial-button(data-i18n="ladder.tutorial_skip") Skip Tutorial
|
||||
|
||||
div#normal-view
|
||||
|
||||
p.tutorial-suggestion
|
||||
strong Not sure what's going on?
|
||||
strong(data-i18n="ladder.tutorial_not_sure") Not sure what's going on?
|
||||
|
|
||||
a(href="/play/level/#{levelID}-tutorial") Play the tutorial first.
|
||||
a(href="/play/level/#{levelID}-tutorial", data-i18n="ladder.tutorial_play_first") Play the tutorial first.
|
||||
|
||||
a(href="/play/level/#{levelID}?team=#{teamID}")
|
||||
div.play-option
|
||||
|
@ -28,10 +28,10 @@ block modal-body-content
|
|||
div.my-name.name-label.only-one
|
||||
span= myName
|
||||
div.opponent-name.name-label
|
||||
span Simple AI
|
||||
span(data-i18n="ladder.simple_ai") Simple AI
|
||||
div.difficulty
|
||||
span Warmup
|
||||
div.vs VS
|
||||
span(data-i18n="ladder.warmup") Warmup
|
||||
div(data-i18n="ladder.vs").vs VS
|
||||
|
||||
if challengers.easy
|
||||
a(href="/play/level/#{levelID}?team=#{teamID}&opponent=#{challengers.easy.sessionID}")
|
||||
|
@ -45,8 +45,8 @@ block modal-body-content
|
|||
div.opponent-name.name-label
|
||||
span= challengers.easy.opponentName
|
||||
div.difficulty
|
||||
span Easy
|
||||
div.vs VS
|
||||
span(data-i18n="general.easy") Easy
|
||||
div(data-i18n="ladder.vs").vs VS
|
||||
|
||||
if challengers.medium
|
||||
a(href="/play/level/#{levelID}?team=#{teamID}&opponent=#{challengers.medium.sessionID}")
|
||||
|
@ -60,8 +60,8 @@ block modal-body-content
|
|||
div.opponent-name.name-label
|
||||
span= challengers.medium.opponentName
|
||||
div.difficulty
|
||||
span Medium
|
||||
div.vs VS
|
||||
span(data-i18n="general.medium") Medium
|
||||
div(data-i18n="ladder.vs").vs VS
|
||||
|
||||
if challengers.hard
|
||||
a(href="/play/level/#{levelID}?team=#{teamID}&opponent=#{challengers.hard.sessionID}")
|
||||
|
@ -75,7 +75,7 @@ block modal-body-content
|
|||
div.opponent-name.name-label
|
||||
span= challengers.hard.opponentName
|
||||
div.difficulty
|
||||
span Hard
|
||||
div.vs VS
|
||||
span(data-i18n="general.hard") Hard
|
||||
div(data-i18n="ladder.vs").vs VS
|
||||
|
||||
block modal-footer
|
|
@ -128,6 +128,7 @@ module.exports = class PlayLevelView extends View
|
|||
|
||||
onLevelLoaderProgressChanged: ->
|
||||
return if @seenDocs
|
||||
return unless @levelLoader.session.loaded and @levelLoader.level.loaded
|
||||
return unless showFrequency = @levelLoader.level.get('showsGuide')
|
||||
session = @levelLoader.session
|
||||
diff = new Date().getTime() - new Date(session.get('created')).getTime()
|
||||
|
|
Loading…
Reference in a new issue