mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-24 08:08:15 -05:00
Merge branch 'master' of https://github.com/codecombat/codecombat
This commit is contained in:
commit
034a18c960
13 changed files with 1213 additions and 1206 deletions
|
@ -22,6 +22,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
|
|||
healthBar: null
|
||||
marks: null
|
||||
labels: null
|
||||
ranges: null
|
||||
|
||||
options:
|
||||
resolutionFactor: 4
|
||||
|
@ -62,6 +63,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
|
|||
@actionQueue = []
|
||||
@marks = {}
|
||||
@labels = {}
|
||||
@ranges = []
|
||||
@handledAoEs = {}
|
||||
@age = 0
|
||||
@scaleFactor = @targetScaleFactor = 1
|
||||
|
@ -250,6 +252,12 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
|
|||
return
|
||||
scaleX = if @getActionProp 'flipX' then -1 else 1
|
||||
scaleY = if @getActionProp 'flipY' then -1 else 1
|
||||
if @thangType.get('name') is 'Arrow'
|
||||
# scale the arrow so it appears longer when flying parallel to horizon
|
||||
angle = @getRotation()
|
||||
angle = -angle if angle < 0
|
||||
angle = 180 - angle if angle > 90
|
||||
scaleX = 0.5 + 0.5 * (90 - angle) / 90
|
||||
scaleFactorX = @thang.scaleFactorX ? @scaleFactor
|
||||
scaleFactorY = @thang.scaleFactorY ? @scaleFactor
|
||||
@imageObject.scaleX = @originalScaleX * scaleX * scaleFactorX
|
||||
|
@ -425,9 +433,17 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
|
|||
allProps = allProps.concat (@thang.programmableProperties ? [])
|
||||
allProps = allProps.concat (@thang.moreProgrammableProperties ? [])
|
||||
|
||||
@addMark('voiceradius') if 'voiceRange' in allProps
|
||||
@addMark('visualradius') if 'visualRange' in allProps
|
||||
@addMark('attackradius') if 'attackRange' in allProps
|
||||
for property in allProps
|
||||
if m = property.match /.*Range$/
|
||||
if @thang[m[0]]? and @thang[m[0]] < 9001
|
||||
@ranges.push
|
||||
name: m[0]
|
||||
radius: @thang[m[0]]
|
||||
|
||||
@ranges = _.sortBy @ranges, 'radius'
|
||||
@ranges.reverse()
|
||||
|
||||
@addMark range.name for range in @ranges
|
||||
|
||||
@addMark('bounds').toggle true if @thang?.drawsBounds
|
||||
@addMark('shadow').toggle true unless @thangType.get('shadow') is 0
|
||||
|
@ -438,13 +454,9 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
|
|||
@marks.repair?.toggle @thang?.errorsOut
|
||||
|
||||
if @selected
|
||||
@marks.voiceradius?.toggle true
|
||||
@marks.visualradius?.toggle true
|
||||
@marks.attackradius?.toggle true
|
||||
@marks[range['name']].toggle true for range in @ranges
|
||||
else
|
||||
@marks.voiceradius?.toggle false
|
||||
@marks.visualradius?.toggle false
|
||||
@marks.attackradius?.toggle false
|
||||
@marks[range['name']].toggle false for range in @ranges
|
||||
|
||||
mark.update() for name, mark of @marks
|
||||
#@thang.effectNames = ['berserk', 'confuse', 'control', 'curse', 'fear', 'poison', 'paralyze', 'regen', 'sleep', 'slow', 'haste']
|
||||
|
|
|
@ -55,9 +55,7 @@ module.exports = class Mark extends CocoClass
|
|||
if @name is 'bounds' then @buildBounds()
|
||||
else if @name is 'shadow' then @buildShadow()
|
||||
else if @name is 'debug' then @buildDebug()
|
||||
else if @name is 'voiceradius' then @buildRadius('voice')
|
||||
else if @name is 'visualradius' then @buildRadius('visual')
|
||||
else if @name is 'attackradius' then @buildRadius('attack')
|
||||
else if @name.match(".*Range$") then @buildRadius(@name)
|
||||
else if @thangType then @buildSprite()
|
||||
else console.error "Don't know how to build mark for", @name
|
||||
@mark?.mouseEnabled = false
|
||||
|
@ -117,51 +115,40 @@ module.exports = class Mark extends CocoClass
|
|||
@mark.layerIndex = 10
|
||||
#@mark.cache 0, 0, diameter, diameter # not actually faster than simple ellipse draw
|
||||
|
||||
buildRadius: (type) ->
|
||||
return if type is 'voice' and @sprite.thang.voiceRange > 9000
|
||||
return if type is 'visual' and @sprite.thang.visualRange > 9000
|
||||
return if type is 'attack' and @sprite.thang.attackRange > 9000
|
||||
|
||||
buildRadius: (range) ->
|
||||
alpha = 0.35
|
||||
colors =
|
||||
voice: "rgba(0, 145, 0, alpha)"
|
||||
visual: "rgba(0, 0, 145, alpha)"
|
||||
attack: "rgba(145, 0, 0, alpha)"
|
||||
voiceRange: "rgba(0, 145, 0, #{alpha})"
|
||||
visualRange: "rgba(0, 0, 145, #{alpha})"
|
||||
attackRange: "rgba(145, 0, 0, #{alpha})"
|
||||
|
||||
color = colors[type]
|
||||
# Fallback colors which work on both dungeon and grass tiles
|
||||
extracolors = [
|
||||
"rgba(145, 0, 145, #{alpha})"
|
||||
"rgba(0, 145, 145, #{alpha})"
|
||||
"rgba(145, 105, 0, #{alpha})"
|
||||
"rgba(225, 125, 0, #{alpha})"
|
||||
]
|
||||
|
||||
# Find the index of this range, to find the next-smallest radius
|
||||
rangeNames = @sprite.ranges.map((range, index) ->
|
||||
range['name']
|
||||
)
|
||||
i = rangeNames.indexOf(range)
|
||||
|
||||
@mark = new createjs.Shape()
|
||||
@mark.graphics.beginFill color.replace('alpha', 0.4)
|
||||
|
||||
if type is 'voice'
|
||||
r = @sprite.thang.voiceRange
|
||||
ranges = [
|
||||
r,
|
||||
if 'visualradius' of @sprite.marks and @sprite.thang.visualRange < 9001 then @sprite.thang.visualRange else 0,
|
||||
if 'attackradius' of @sprite.marks and @sprite.thang.attackRange < 9001 then @sprite.thang.attackRange else 0
|
||||
]
|
||||
else if type is 'visual'
|
||||
r = @sprite.thang.visualRange
|
||||
ranges = [
|
||||
r,
|
||||
if 'attackradius' of @sprite.marks and @sprite.thang.attackRange < 9001 then @sprite.thang.attackRange else 0,
|
||||
if 'voiceradius' of @sprite.marks and @sprite.thang.voiceRange < 9001 then @sprite.thang.voiceRange else 0,
|
||||
]
|
||||
else if type is 'attack'
|
||||
r = @sprite.thang.attackRange
|
||||
ranges = [
|
||||
r,
|
||||
if 'voiceradius' of @sprite.marks and @sprite.thang.voiceRange < 9001 then @sprite.thang.voiceRange else 0,
|
||||
if 'visualradius' of @sprite.marks and @sprite.thang.visualRange < 9001 then @sprite.thang.visualRange else 0
|
||||
]
|
||||
|
||||
# Draw the outer circle
|
||||
@mark.graphics.drawCircle 0, 0, r * Camera.PPM
|
||||
|
||||
# Cut out the inner circle
|
||||
if Math.max(ranges['1'], ranges['2']) < r
|
||||
@mark.graphics.arc 0, 0, Math.max(ranges['1'], ranges['2']) * Camera.PPM, Math.PI*2, 0, true
|
||||
else if Math.min(ranges['1'], ranges['2']) < r
|
||||
@mark.graphics.arc 0, 0, Math.min(ranges['1'], ranges['2']) * Camera.PPM, Math.PI*2, 0, true
|
||||
if colors[range]?
|
||||
@mark.graphics.beginFill colors[range]
|
||||
else
|
||||
@mark.graphics.beginFill extracolors[i]
|
||||
|
||||
# Draw the outer circle
|
||||
@mark.graphics.drawCircle 0, 0, @sprite.thang[range] * Camera.PPM
|
||||
|
||||
# Cut out the hollow part if necessary
|
||||
if i+1 < @sprite.ranges.length
|
||||
@mark.graphics.arc 0, 0, @sprite.ranges[i+1]['radius'], Math.PI*2, 0, true
|
||||
|
||||
# Add perspective
|
||||
@mark.scaleY *= @camera.y2x
|
||||
|
|
1140
app/locale/en.coffee
1140
app/locale/en.coffee
File diff suppressed because it is too large
Load diff
1110
app/locale/nl.coffee
1110
app/locale/nl.coffee
File diff suppressed because it is too large
Load diff
|
@ -104,7 +104,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
diplomat_suggestion:
|
||||
title: "Pomóż w tłumaczeniu CodeCombat!"
|
||||
sub_heading: "Potrzebujemy twoich zdolności językowych."
|
||||
pitch_body: "Tworzymy CodeCombat w języku angielskim, jednak nasi gracze pochodzą z całego świata. Wielu z nich chciałoby zagrać zagrać w swoim języku, ponieważ nie znają angielskiego, więc jeśli znasz oba języki zostań Dyplomatą i pomóż w tłumaczeniu strony CodeCombat, jak i samej gry."
|
||||
pitch_body: "Tworzymy CodeCombat w języku angielskim, jednak nasi gracze pochodzą z całego świata. Wielu z nich chciałoby zagrać w swoim języku, ponieważ nie znają angielskiego, więc jeśli znasz oba języki zostań Dyplomatą i pomóż w tłumaczeniu strony CodeCombat, jak i samej gry."
|
||||
missing_translations: "Dopóki nie przetłumaczymy wszystkiego na polski, będziesz widział niektóre napisy w języku angielskim."
|
||||
learn_more: "Dowiedz się więcej o Dyplomatach"
|
||||
subscribe_as_diplomat: "Dołącz do Dyplomatów"
|
||||
|
@ -198,7 +198,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
multiplayer_title: "Ustawienia multiplayer"
|
||||
multiplayer_link_description: "Przekaż ten link, jeśli chcesz, by ktoś do ciebie dołączył."
|
||||
multiplayer_hint_label: "Podpowiedź:"
|
||||
multiplayer_hint: "Klikjnij link by zaznaczyć wszystko, potem wciśnij Cmd-C lub Ctrl-C by skopiować ten link."
|
||||
multiplayer_hint: "Kliknij link by zaznaczyć wszystko, potem wciśnij Cmd-C lub Ctrl-C by skopiować ten link."
|
||||
multiplayer_coming_soon: "Wkrótce więcej opcji multiplayer"
|
||||
guide_title: "Przewodnik"
|
||||
tome_minion_spells: "Czary twojego podopiecznego"
|
||||
|
@ -240,12 +240,12 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
main_title: "Edytory CodeCombat"
|
||||
main_description: "Stwórz własne poziomy, kampanie, jednostki i materiały edukacyjne. Zapewniamy wszystkie narzędzia, jakich będziesz potrzebował!"
|
||||
article_title: "Edytor artykułów"
|
||||
article_description: "Pisz artykuły, które dostarczą graczom wiedzy co do konceptów programistycznych, które będą mogli użyć w poziomach i kampaniach."
|
||||
article_description: "Pisz artykuły, które dostarczą graczom wiedzy co do konceptów programistycznych, których będą mogli użyć w poziomach i kampaniach."
|
||||
thang_title: "Edytor obiektów"
|
||||
thang_description: "Twórz jednostki, definiuj ich domyślną logikę, grafiki i dźwięki. Aktualnie wspiera wyłącznie importowanie grafik wektorowych wyeksportowanych przez Flash."
|
||||
level_title: "Edytor poziomów"
|
||||
level_description: "Zawiera narzędzia do skryptowania, przesyłania dźwięków i konstruowania spersonalizowanych logik, by móc tworzyć najrozmaitsze poziomy. Wszystko to, czego sami używamy!"
|
||||
security_notice: "Wiele ważnych fukncji nie jest obecnie domyślnie włączonych we wspomnianych edytorach. Wraz z ulepszeniem zabezpieczenia tych narzędzi, staną się one dostępne publicznie. Jeśli chciałbyś użyć ich już teraz, "
|
||||
security_notice: "Wiele ważnych funkcji nie jest obecnie domyślnie włączonych we wspomnianych edytorach. Wraz z ulepszeniem zabezpieczenia tych narzędzi, staną się one dostępne publicznie. Jeśli chciałbyś użyć ich już teraz, "
|
||||
contact_us: "skontaktuj się z nami!"
|
||||
hipchat_prefix: "Możesz nas też spotkać w naszym"
|
||||
hipchat_url: "pokoju HipChat."
|
||||
|
@ -259,7 +259,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
level_tab_systems: "Systemy"
|
||||
level_tab_thangs_title: "Aktualne obiekty"
|
||||
level_tab_thangs_conditions: "Warunki początkowe"
|
||||
level_tab_thangs_add: "Dodoaj obiekty"
|
||||
level_tab_thangs_add: "Dodaj obiekty"
|
||||
level_settings_title: "Ustawienia"
|
||||
level_component_tab_title: "Aktualne komponenty"
|
||||
level_component_btn_new: "Stwórz nowy komponent"
|
||||
|
@ -318,9 +318,9 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
who_is_codecombat: "Czym jest CodeCombat?"
|
||||
why_codecombat: "Dlaczego CodeCombat?"
|
||||
who_description_prefix: "założyli CodeCombat w 2013 roku. Stworzyliśmy również "
|
||||
who_description_suffix: "w roku 2008, doprowadzajac go do pierwszego miejsca wśród aplikacji do nauki zapisu chińskich i japońskich znaków zarówno wśród aplikacji internetowych, jak i aplikcji dla iOS."
|
||||
who_description_suffix: "w roku 2008, doprowadzajac go do pierwszego miejsca wśród aplikacji do nauki zapisu chińskich i japońskich znaków zarówno wśród aplikacji internetowych, jak i aplikacji dla iOS."
|
||||
who_description_ending: "Teraz nadszedł czas, by nauczyć ludzi programowania."
|
||||
why_paragraph_1: "Podczas tworzenia Skrittera, George nie umiał programować i ciągle towarzyszyła mu frustracja - nie mógł zaimplementować swoich pomysłów. Próbował się uczyć, lecz lekcje były zbyt wolne. Jego współlokator, chcąc się przebranżowić, spróbował Codeacademy, lecz \"nudziło go to.\" Każdego tygodnia któryś z kolegów podchodził do Codeacadem, by wkrótce potem zrezygnować. Zdaliśmy sobie sprawę, że mamy do czynienia z tym samym problemem, który rozwiązaliśmy Skritterem: ludzie uczący się umiejętności poprzez powolne, ciężkie lekcje, podczas gdy potrzebują oni szybkiej, energicznej praktyki. Wiemy, jak to naprawić."
|
||||
why_paragraph_1: "Podczas tworzenia Skrittera, George nie umiał programować i ciągle towarzyszyła mu frustracja - nie mógł zaimplementować swoich pomysłów. Próbował się uczyć, lecz lekcje były zbyt wolne. Jego współlokator, chcąc się przebranżowić, spróbował Codeacademy, lecz \"nudziło go to.\" Każdego tygodnia któryś z kolegów podchodził do Codeacademy, by wkrótce potem zrezygnować. Zdaliśmy sobie sprawę, że mamy do czynienia z tym samym problemem, który rozwiązaliśmy Skritterem: ludzie uczący się umiejętności poprzez powolne, ciężkie lekcje, podczas gdy potrzebują oni szybkiej, energicznej praktyki. Wiemy, jak to naprawić."
|
||||
why_paragraph_2: "Chcesz nauczyć się programowania? Nie potrzeba ci lekcji. Potrzeba ci pisania dużej ilości kodu w sposób sprawiający ci przyjemność."
|
||||
why_paragraph_3_prefix: "O to chodzi w programowaniu - musi sprawiać radość. Nie radość w stylu"
|
||||
why_paragraph_3_italic: "hura, nowa odznaka"
|
||||
|
@ -332,10 +332,10 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
why_ending_url: "Zostań czarodziejem już teraz!"
|
||||
george_description: "CEO, człowiek od biznesu, web designer, game designer, i mistrz wszystkich początkujących programistów."
|
||||
scott_description: "Programista niezwykły, software architect, czarodziej kuchenny i mistrz finansów. Scott to ten rozsądny."
|
||||
nick_description: "Programistyczny czarownik, ekscentryczny magik i eksperymentator pełną gębą. Nich może robić cokolwiek, a decyduje się pracować przy CodeCombat."
|
||||
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 nase 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!"
|
||||
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!"
|
||||
|
||||
legal:
|
||||
page_title: "Nota prawna"
|
||||
|
@ -356,7 +356,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
email_settings_url: "twoje ustawienia e-mail"
|
||||
email_description_suffix: "lub poprzez linki w e-mailach, które wysyłamy, możesz zmienić swoje ustawienia i w prosty sposób wypisać się z subskrypcji w dowolnym momencie."
|
||||
cost_title: "Koszty"
|
||||
cost_description: "W tym momencie CodeCombat jest w stu procentach darmowe! Jednym z naszych głównych celów jest, by utrzymac taki stan rzeczy, aby jak najwięcej ludzi miało dostęp do gry, bez względu na ich zasobnośc. Jeśli nadejdą gorsze dni, dopuszczamy możliwość wprowadzenia płatnych subskrypcji lub pobierania opłat za część zawartości, ale wolelibyśmy, by tak się nie stało. Przy odrobinie szczęścia, uda nam się podtrzymać obecną sytuację dzięki:"
|
||||
cost_description: "W tym momencie CodeCombat jest w stu procentach darmowe! Jednym z naszych głównych celów jest, by utrzymać taki stan rzeczy, aby jak najwięcej ludzi miało dostęp do gry, bez względu na ich zasobność. Jeśli nadejdą gorsze dni, dopuszczamy możliwość wprowadzenia płatnych subskrypcji lub pobierania opłat za część zawartości, ale wolelibyśmy, by tak się nie stało. Przy odrobinie szczęścia, uda nam się podtrzymać obecną sytuację dzięki:"
|
||||
recruitment_title: "Rekrutacji"
|
||||
recruitment_description_prefix: "Dzięki CodeCombat, staniesz się potężnym czarodziejem - nie tylko w grze, ale również w prawdziwym życiu."
|
||||
url_hire_programmers: "Firmy nie nadążają z zatrudnianiem programistów"
|
||||
|
@ -393,7 +393,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
|
|||
rights_description: "Opisy"
|
||||
rights_writings: "Teksty"
|
||||
rights_media: "Multimedia (dźwięki, muzyka) i jakiekolwiek inne typy prac i zasobów stworzonych specjalnie dla danego poziomu, które nie zostały publicznie udostępnione do tworzenia poziomów."
|
||||
rights_clarification: "Gwoli wyjaśnienia, wszystko, co jest dostępne w Edytorze Poziomów w celu tworzenia nowych poziomów podlega licencji CC, podczas gdy zasoby stworzone w Edytorze Poziomów lub przesłane w toku tworzenia poziomu - nie."
|
||||
rights_clarification: "Gwoli wyjaśnienia, wszystko, co jest dostępne w Edytorze Poziomów w celu tworzenia nowych poziomów, podlega licencji CC, podczas gdy zasoby stworzone w Edytorze Poziomów lub przesłane w toku tworzenia poziomu - nie."
|
||||
nutshell_title: "W skrócie"
|
||||
nutshell_description: "Wszelkie zasoby, które dostarczamy w Edytorze Poziomów są darmowe w użyciu w jakikolwiek sposób w celu tworzenia poziomów. Jednocześnie, zastrzegamy sobie prawo do ograniczenia rozpowszechniania poziomów (stworzonych przez codecombat.com) jako takich, aby mogła być za nie w przyszłości pobierana opłata, jeśli dojdzie do takiej konieczności."
|
||||
canonical: "Angielska wersja tego dokumentu jest ostateczna, kanoniczną wersją. Jeśli zachodzą jakieś rozbieżności pomiędzy tłumaczeniami, dokument anglojęzyczny ma pierwszeństwo."
|
||||
|
|
|
@ -75,13 +75,14 @@
|
|||
right: 0
|
||||
top: 0
|
||||
bottom: 0
|
||||
|
||||
|
||||
#thangs-list
|
||||
position: absolute
|
||||
position: relative
|
||||
right: 0
|
||||
top: 40px
|
||||
top: 0
|
||||
bottom: 0
|
||||
overflow: scroll
|
||||
height: 100%
|
||||
|
||||
h3
|
||||
margin: 0 -20px 0 0
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
#canvas-top-gradient.gradient
|
||||
|
||||
.add-thangs-palette.thangs-column
|
||||
h3(data-i18n="editor.level_tab_thangs_add") Add Thangs
|
||||
#thangs-header
|
||||
h3(data-i18n="editor.level_tab_thangs_add") Add Thangs
|
||||
#thangs-list
|
||||
for group in groups
|
||||
h4= group.name
|
||||
|
|
|
@ -5,7 +5,7 @@ block content
|
|||
h1#site-slogan(data-i18n="home.slogan") Learn to Code JavaScript by Playing a Game
|
||||
|
||||
#trailer-wrapper
|
||||
<iframe width="920" height="518" src="//www.youtube.com/embed/1zjaA13k-dA?rel=0&controls=0&modestbranding=1&showinfo=0&iv_load_policy=3&vq=hd720" frameborder="0" allowfullscreen></iframe>
|
||||
<iframe width="920" height="518" src="//www.youtube.com/embed/1zjaA13k-dA?rel=0&controls=0&modestbranding=1&showinfo=0&iv_load_policy=3&vq=hd720&wmode=transparent" frameborder="0" allowfullscreen></iframe>
|
||||
img(src="/images/pages/home/video_border.png")
|
||||
|
||||
hr
|
||||
|
|
|
@ -7,7 +7,7 @@ block modal-header-content
|
|||
block modal-body-content
|
||||
|
||||
.multiplayer-launch-wrapper
|
||||
<iframe id="multiplayer-video" width="640" height="360" src="//www.youtube.com/embed/wfc0U74LFCk?&rel=0&controls=0&modestbranding=1&showinfo=0&iv_load_policy=3&vq=hd720" frameborder="0" allowfullscreen></iframe>
|
||||
<iframe id="multiplayer-video" width="640" height="360" src="//www.youtube.com/embed/wfc0U74LFCk?&rel=0&controls=0&modestbranding=1&showinfo=0&iv_load_policy=3&vq=hd720&wmode=transparent" frameborder="0" allowfullscreen></iframe>
|
||||
img(src="/images/pages/home/video_border.png")
|
||||
|
||||
h3(data-i18n="multiplayer_launch.to_battle") To Battle, Developers!
|
||||
|
|
|
@ -58,6 +58,7 @@ div#columns.row
|
|||
span(data-i18n="ladder.watch_victory") Watch your victory
|
||||
else
|
||||
span(data-i18n="ladder.defeat_the") Defeat the
|
||||
|
|
||||
| #{team.otherTeam}
|
||||
|
||||
if !team.matches.length
|
||||
|
|
|
@ -104,12 +104,19 @@ module.exports = class ThangsTabView extends View
|
|||
context.groups = groups
|
||||
context
|
||||
|
||||
onWindowResize: (e) ->
|
||||
$('#thangs-list').height('100%')
|
||||
thangsHeaderHeight = $('#thangs-header').height()
|
||||
oldHeight = $('#thangs-list').height()
|
||||
$('#thangs-list').height(oldHeight - thangsHeaderHeight)
|
||||
|
||||
afterRender: ->
|
||||
return if @startsLoading
|
||||
super()
|
||||
$('.tab-content').click @selectAddThang
|
||||
$('#thangs-list').bind 'mousewheel', @preventBodyScrollingInThangList
|
||||
@$el.find('#extant-thangs-filter button:first').button('toggle')
|
||||
$(window).resize @onWindowResize
|
||||
|
||||
onFilterExtantThangs: (e) ->
|
||||
@$el.find('#extant-thangs-filter button.active').button('toggle')
|
||||
|
@ -145,6 +152,9 @@ module.exports = class ThangsTabView extends View
|
|||
@thangsTreema.open()
|
||||
@onThangsChanged() # Initialize the World with Thangs
|
||||
@initSurface()
|
||||
thangsHeaderHeight = $('#thangs-header').height()
|
||||
oldHeight = $('#thangs-list').height()
|
||||
$('#thangs-list').height(oldHeight - thangsHeaderHeight)
|
||||
|
||||
initSurface: ->
|
||||
surfaceCanvas = $('canvas#surface', @$el)
|
||||
|
|
|
@ -72,20 +72,15 @@ module.exports = class LadderView extends RootView
|
|||
@showPlayModal(hash) if @sessions.loaded
|
||||
|
||||
fetchSessionsAndRefreshViews: ->
|
||||
return if @destroyed or application.userIsIdle or @$el.find('#simulate.active').length or (new Date() - 2000 < @lastRefreshTime)
|
||||
@sessions.fetch({"success": @refreshViews})
|
||||
|
||||
refreshViews: =>
|
||||
return if @destroyed or application.userIsIdle
|
||||
if @$el.find("#ladder.active").length
|
||||
return if new Date() - 2000 < @lastLadderRefreshTime
|
||||
@lastLadderRefreshTime = new Date()
|
||||
@ladderTab.refreshLadder()
|
||||
console.log "Refreshing ladder."
|
||||
if @$el.find("#my-matches.active").length
|
||||
return if new Date() - 2000 < @lastMatchesRefreshTime
|
||||
@lastMatchesRefreshTime = new Date()
|
||||
@myMatchesTab.refreshMatches()
|
||||
console.log "Refreshing matches view."
|
||||
@lastRefreshTime = new Date()
|
||||
@ladderTab.refreshLadder()
|
||||
@myMatchesTab.refreshMatches()
|
||||
console.log "Refreshed sessions for ladder and matches."
|
||||
|
||||
onIdleChanged: (e) ->
|
||||
@refreshViews() unless e.idle
|
||||
|
|
|
@ -5,4 +5,4 @@ module.exports.setup = ->
|
|||
winston.add(winston.transports.Console,
|
||||
colorize: true,
|
||||
timestamp: true
|
||||
)
|
||||
)
|
||||
|
|
Loading…
Reference in a new issue