Merge branch 'master' into production
After Width: | Height: | Size: 1.2 KiB |
BIN
app/assets/images/common/button-background-success-active.png
Normal file
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.3 KiB |
BIN
app/assets/images/common/button-background-success-inactive.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.3 KiB |
BIN
app/assets/images/common/button-background-success-pressed.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
app/assets/images/pages/play/level-banner-complete.png
Normal file
After Width: | Height: | Size: 5.1 KiB |
BIN
app/assets/images/pages/play/level-banner-started.png
Normal file
After Width: | Height: | Size: 5 KiB |
Before Width: | Height: | Size: 9.1 KiB |
BIN
app/assets/images/pages/play/level/modal/victory_hero.png
Normal file
After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 82 KiB |
Before Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 76 KiB |
BIN
app/assets/images/pages/play/level/modal/victory_modal_shelf.png
Normal file
After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 9 KiB After Width: | Height: | Size: 17 KiB |
BIN
app/assets/images/pages/play/level/modal/xp_gems_parchment.png
Normal file
After Width: | Height: | Size: 10 KiB |
BIN
app/assets/images/pages/play/star.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
|
@ -376,7 +376,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
|
|
||||||
skill_docs:
|
skill_docs:
|
||||||
# writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this
|
# writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||||
# read_only: "read-only"
|
read_only: "schreibgeschützt"
|
||||||
action_name: "Name"
|
action_name: "Name"
|
||||||
action_cooldown: "Benötigt"
|
action_cooldown: "Benötigt"
|
||||||
action_specific_cooldown: "Cooldown"
|
action_specific_cooldown: "Cooldown"
|
||||||
|
@ -647,7 +647,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
archmage_attribute_1_pref: "Kentnisse in "
|
archmage_attribute_1_pref: "Kentnisse in "
|
||||||
archmage_attribute_1_suf: ", oder ein intensiver Lernwille. Der größte Teil unseres Codes ist in dieser Sprache geschrieben. Wenn du bereits mit Ruby oder Python vertraut bist, wirst du dich gleich zu hause fühlen. Es ist wie JavaScript, aber mit einer angenehmeren Syntax."
|
archmage_attribute_1_suf: ", oder ein intensiver Lernwille. Der größte Teil unseres Codes ist in dieser Sprache geschrieben. Wenn du bereits mit Ruby oder Python vertraut bist, wirst du dich gleich zu hause fühlen. Es ist wie JavaScript, aber mit einer angenehmeren Syntax."
|
||||||
archmage_attribute_2: "Vorhandene Erfahrung im Programmieren, und wichtig, Eigeninitiative. Wir werden dir helfen dich zurecht zu finden, aber wir haben leider nicht die Zeit dich intensiv anzulernen."
|
archmage_attribute_2: "Vorhandene Erfahrung im Programmieren, und wichtig, Eigeninitiative. Wir werden dir helfen dich zurecht zu finden, aber wir haben leider nicht die Zeit dich intensiv anzulernen."
|
||||||
# how_to_join: "How To Join"
|
how_to_join: "Wie du mitmachen kannst"
|
||||||
join_desc_1: "Jeder kann mithelfen! Schau dir unseren "
|
join_desc_1: "Jeder kann mithelfen! Schau dir unseren "
|
||||||
join_desc_2: "um anzufangen, und hake die Checkbox unten an um dich als mutiger Erzmagier einzutragen und über die neuesten Nachrichten per Email zu erhalten. Möchtest du dich darüber unterhalten was zu tun ist oder wie du dich besser beteiligen kannst? "
|
join_desc_2: "um anzufangen, und hake die Checkbox unten an um dich als mutiger Erzmagier einzutragen und über die neuesten Nachrichten per Email zu erhalten. Möchtest du dich darüber unterhalten was zu tun ist oder wie du dich besser beteiligen kannst? "
|
||||||
join_desc_3: ", oder finde uns in unserem "
|
join_desc_3: ", oder finde uns in unserem "
|
||||||
|
@ -809,10 +809,10 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
recently_played: "Kürzlich gespielt"
|
recently_played: "Kürzlich gespielt"
|
||||||
no_recent_games: "Keine Spiele in den letzten zwei Wochen gespielt."
|
no_recent_games: "Keine Spiele in den letzten zwei Wochen gespielt."
|
||||||
payments: "Zahlungen"
|
payments: "Zahlungen"
|
||||||
# service_apple: "Apple"
|
service_apple: "Apple"
|
||||||
# service_web: "Web"
|
service_web: "Web"
|
||||||
paid_on: "Gezahlt am"
|
paid_on: "Gezahlt am"
|
||||||
# service: "Service"
|
service: "Service"
|
||||||
price: "Preis"
|
price: "Preis"
|
||||||
gems: "Edelsteine"
|
gems: "Edelsteine"
|
||||||
status_subscribed: "Du hast momentan ein Abo für $9.99 USD pro Monat. Danke für deine unterstützung!"
|
status_subscribed: "Du hast momentan ein Abo für $9.99 USD pro Monat. Danke für deine unterstützung!"
|
||||||
|
@ -932,17 +932,17 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
||||||
art_title: "Grafiken/Musik - Creative Commons "
|
art_title: "Grafiken/Musik - Creative Commons "
|
||||||
art_description_prefix: "Gemeinsamer Inhalt ist verfügbar unter"
|
art_description_prefix: "Gemeinsamer Inhalt ist verfügbar unter"
|
||||||
cc_license_url: "Creative Commons Attribution 4.0 International License"
|
cc_license_url: "Creative Commons Attribution 4.0 International License"
|
||||||
# art_description_suffix: "Common content is anything made generally available by CodeCombat for the purpose of creating Levels. This includes:"
|
art_description_suffix: "Gemeinsamer Inhalt ist alles, was durch CodeCombat für den Zweck der Erstellung von Levels allgemein verfügbar gemacht wird. Dies beinhaltet:"
|
||||||
art_music: "Musik"
|
art_music: "Musik"
|
||||||
art_sound: "Sound"
|
art_sound: "Sound"
|
||||||
art_artwork: "Grafiken"
|
art_artwork: "Grafiken"
|
||||||
art_sprites: "Sprites"
|
art_sprites: "Sprites"
|
||||||
# art_other: "Any and all other non-code creative works that are made available when creating Levels."
|
art_other: "Jegliche oder alle kreative nicht-Code Arbeit, die zur Verfügung gestellt wird, wenn Level erstellt werden."
|
||||||
# art_access: "Currently there is no universal, easy system for fetching these assets. In general, fetch them from the URLs as used by the site, contact us for assistance, or help us in extending the site to make these assets more easily accessible."
|
# art_access: "Currently there is no universal, easy system for fetching these assets. In general, fetch them from the URLs as used by the site, contact us for assistance, or help us in extending the site to make these assets more easily accessible."
|
||||||
# art_paragraph_1: "For attribution, please name and link to codecombat.com near where the source is used or where appropriate for the medium. For example:"
|
# art_paragraph_1: "For attribution, please name and link to codecombat.com near where the source is used or where appropriate for the medium. For example:"
|
||||||
use_list_1: "Wenn in einem Film verwendet, nenne codecombat.com in den Credits/Abspann"
|
|
||||||
# use_list_2: "If used on a website, include a link near the usage, for example underneath an image, or in a general attributions page where you might also mention other Creative Commons works and open source software being used on the site. Something that's already clearly referencing CodeCombat, such as a blog post mentioning CodeCombat, does not need some separate attribution."
|
|
||||||
# art_paragraph_2: "If the content being used is created not by CodeCombat but instead by a user of codecombat.com, attribute them instead, and follow attribution directions provided in that resource's description if there are any."
|
# art_paragraph_2: "If the content being used is created not by CodeCombat but instead by a user of codecombat.com, attribute them instead, and follow attribution directions provided in that resource's description if there are any."
|
||||||
|
use_list_1: "Wenn in einem Film verwendet, nenne codecombat.com in den Credits/Abspann"
|
||||||
|
use_list_2: "Wenn auf einer Webseite verwendet, füge einen Link nahe bei der Verwendung ein, z.B. unter einem Bild oder in der generellen Beitragsseite, wo auch andere Creative Commons Werke und Open Source Software genannt wird, die auf der Seite verwendet wird. Wenn deutlich auf CodeCombat Bezug genommen wird, wie z.B. in einem Blogeintrag, in dem CodeCombat erwähnt wird, dann muss CodeCombat nicht separat belegt werden."
|
||||||
rights_title: "Rechte vorbehalten"
|
rights_title: "Rechte vorbehalten"
|
||||||
rights_desc: "Alle Rechte vorbehalten für die Level selbst. Dies beinhaltet"
|
rights_desc: "Alle Rechte vorbehalten für die Level selbst. Dies beinhaltet"
|
||||||
rights_scripts: "Skripte"
|
rights_scripts: "Skripte"
|
||||||
|
|
|
@ -222,6 +222,7 @@
|
||||||
reload_title: "Reload All Code?"
|
reload_title: "Reload All Code?"
|
||||||
reload_really: "Are you sure you want to reload this level back to the beginning?"
|
reload_really: "Are you sure you want to reload this level back to the beginning?"
|
||||||
reload_confirm: "Reload All"
|
reload_confirm: "Reload All"
|
||||||
|
victory: "Victory"
|
||||||
victory_title_prefix: ""
|
victory_title_prefix: ""
|
||||||
victory_title_suffix: " Complete"
|
victory_title_suffix: " Complete"
|
||||||
victory_sign_up: "Sign Up to Save Progress"
|
victory_sign_up: "Sign Up to Save Progress"
|
||||||
|
@ -234,6 +235,8 @@
|
||||||
victory_review: "Tell us more!" # Only in old-style levels.
|
victory_review: "Tell us more!" # Only in old-style levels.
|
||||||
victory_hour_of_code_done: "Are You Done?"
|
victory_hour_of_code_done: "Are You Done?"
|
||||||
victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code™!"
|
victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code™!"
|
||||||
|
victory_experience_gained: "XP Gained"
|
||||||
|
victory_gems_gained: "Gems Gained"
|
||||||
guide_title: "Guide"
|
guide_title: "Guide"
|
||||||
tome_minion_spells: "Your Minions' Spells" # Only in old-style levels.
|
tome_minion_spells: "Your Minions' Spells" # Only in old-style levels.
|
||||||
tome_read_only_spells: "Read-Only Spells" # Only in old-style levels.
|
tome_read_only_spells: "Read-Only Spells" # Only in old-style levels.
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
module.exports = nativeDescription: "українська мова", englishDescription: "Ukrainian", translation:
|
module.exports = nativeDescription: "Українська", englishDescription: "Ukrainian", translation:
|
||||||
home:
|
home:
|
||||||
slogan: "Навчіться програмувати, граючи у гру"
|
slogan: "Навчіться програмувати, граючи у гру"
|
||||||
no_ie: "На жаль, CodeCombat не працює в IE8 та старіших версіях!" # Warning that only shows up in IE8 and older
|
no_ie: "На жаль, CodeCombat не працює в IE8 та старіших версіях!" # Warning that only shows up in IE8 and older
|
||||||
|
@ -31,7 +31,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
about: "Про нас"
|
about: "Про нас"
|
||||||
contact: "Контакти"
|
contact: "Контакти"
|
||||||
twitter_follow: "Фоловити"
|
twitter_follow: "Фоловити"
|
||||||
teachers: "Учителі"
|
teachers: "Учителям"
|
||||||
|
|
||||||
modal:
|
modal:
|
||||||
close: "Закрити"
|
close: "Закрити"
|
||||||
|
@ -54,7 +54,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
players: "гравці" # Hover over a level on /play
|
players: "гравці" # Hover over a level on /play
|
||||||
hours_played: "годин зіграно" # Hover over a level on /play
|
hours_played: "годин зіграно" # Hover over a level on /play
|
||||||
items: "Предмети" # Tooltip on item shop button from /play
|
items: "Предмети" # Tooltip on item shop button from /play
|
||||||
unlock: "Розблокувати" # For purchasing items and heroes
|
unlock: "Відкрити" # For purchasing items and heroes
|
||||||
confirm: "Підтвердити"
|
confirm: "Підтвердити"
|
||||||
owned: "у власності" # For items you own
|
owned: "у власності" # For items you own
|
||||||
locked: "Заблоковано"
|
locked: "Заблоковано"
|
||||||
|
@ -97,7 +97,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
campaign_classic_algorithms_description: "... у якій ви вивчите найпопулярніші алгоритми комп’ютерних наук."
|
campaign_classic_algorithms_description: "... у якій ви вивчите найпопулярніші алгоритми комп’ютерних наук."
|
||||||
|
|
||||||
login:
|
login:
|
||||||
sign_up: "створити акаунт"
|
sign_up: "створення акаунту"
|
||||||
log_in: "Увійти"
|
log_in: "Увійти"
|
||||||
logging_in: "Вхід в акаунт"
|
logging_in: "Вхід в акаунт"
|
||||||
log_out: "Вийти"
|
log_out: "Вийти"
|
||||||
|
@ -171,7 +171,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
when: "Коли"
|
when: "Коли"
|
||||||
opponent: "Противник"
|
opponent: "Противник"
|
||||||
rank: "Звання"
|
rank: "Звання"
|
||||||
score: "Рахунок"
|
score: "Результат"
|
||||||
win: "Перемога"
|
win: "Перемога"
|
||||||
loss: "Поразка"
|
loss: "Поразка"
|
||||||
tie: "Нічия"
|
tie: "Нічия"
|
||||||
|
@ -260,7 +260,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
keyboard_shortcuts: "Клавіатурні скорочення"
|
keyboard_shortcuts: "Клавіатурні скорочення"
|
||||||
loading_ready: "Готово!"
|
loading_ready: "Готово!"
|
||||||
loading_start: "Розпочати рівень"
|
loading_start: "Розпочати рівень"
|
||||||
problem_alert_title: "Виправте свій код"
|
problem_alert_title: "Виправте код"
|
||||||
time_current: "Зараз:"
|
time_current: "Зараз:"
|
||||||
time_total: "Найбільше:"
|
time_total: "Найбільше:"
|
||||||
time_goto: "Перейти до:"
|
time_goto: "Перейти до:"
|
||||||
|
@ -293,7 +293,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
tip_talk_is_cheap: "Розмови – ніщо. Покажи мені код. - Лінус Торвальдс"
|
tip_talk_is_cheap: "Розмови – ніщо. Покажи мені код. - Лінус Торвальдс"
|
||||||
tip_first_language: "Найбільш катастрофічною річчю яку ви коли-небудь вчили є Ваша перша мова програмування. - Алан Кей"
|
tip_first_language: "Найбільш катастрофічною річчю яку ви коли-небудь вчили є Ваша перша мова програмування. - Алан Кей"
|
||||||
tip_hardware_problem: "П: Скільки програмістів треба аби замінити лампочку? В: Жодного, це апаратна проблема."
|
tip_hardware_problem: "П: Скільки програмістів треба аби замінити лампочку? В: Жодного, це апаратна проблема."
|
||||||
# tip_hofstadters_law: "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law."
|
tip_hofstadters_law: "Закон Гофштадтера: Це в будь-якому разі займе більше часу, навіть якщо ви берете до уваги закон Гофштадтера."
|
||||||
tip_premature_optimization: "Передчасна оптимізація – корінь усього зла. - Дональд Кнут"
|
tip_premature_optimization: "Передчасна оптимізація – корінь усього зла. - Дональд Кнут"
|
||||||
tip_brute_force: "Якщо ви сумніваєтесь, використовуйте перебір - Кен Томсон"
|
tip_brute_force: "Якщо ви сумніваєтесь, використовуйте перебір - Кен Томсон"
|
||||||
tip_extrapolation: "Існує 2 типи людей: які можуть екстраполюватись від неповних даних..."
|
tip_extrapolation: "Існує 2 типи людей: які можуть екстраполюватись від неповних даних..."
|
||||||
|
@ -319,11 +319,11 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
equipped_item: "Екіпіровано"
|
equipped_item: "Екіпіровано"
|
||||||
available_item: "Доступно"
|
available_item: "Доступно"
|
||||||
restricted_title: "Обмежено"
|
restricted_title: "Обмежено"
|
||||||
should_equip: "(екіпірування подвійним кліком)"
|
should_equip: "(предмети одягаються подвійним кліком)"
|
||||||
equipped: "(екіпіровано)"
|
equipped: "(екіпіровано)"
|
||||||
locked: "(заблоковано)"
|
locked: "(заблоковано)"
|
||||||
restricted: "(обмежено для цього рівні)"
|
restricted: "(обмежено для цього рівня)"
|
||||||
equip: "Екіпірувати"
|
equip: "Одягнути"
|
||||||
unequip: "Зняти"
|
unequip: "Зняти"
|
||||||
|
|
||||||
buy_gems:
|
buy_gems:
|
||||||
|
@ -345,8 +345,8 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
items: "Більше 250-ти бонусних предметів!"
|
items: "Більше 250-ти бонусних предметів!"
|
||||||
parents: "Батькам"
|
parents: "Батькам"
|
||||||
parents_title: "Ваша дитина вчитиметься програмувати."
|
parents_title: "Ваша дитина вчитиметься програмувати."
|
||||||
# parents_blurb1: "With CodeCombat, your child learns by writing real code. They start by learning simple commands, and progress to more advanced topics."
|
parents_blurb1: "Разом з CodeCombat ваша дитина писатиме реальний код. Почне з простих команд та поступово буде розвиватись до складніших тем."
|
||||||
# parents_blurb2: "For $9.99 USD/mo, they get new challenges every week and personal email support from professional programmers."
|
parents_blurb2: "За 9.99$ на місяць, вона отримуватиме нові завдання щотижня та персональні листи підтримки від професійних програмістів."
|
||||||
parents_blurb3: "Жодного ризику: 100% гарантія повернення грошей, легке скасування абонементу одним кліком."
|
parents_blurb3: "Жодного ризику: 100% гарантія повернення грошей, легке скасування абонементу одним кліком."
|
||||||
subscribe_button: "Взяти абонемент"
|
subscribe_button: "Взяти абонемент"
|
||||||
stripe_description: "Щомісячний абонемент"
|
stripe_description: "Щомісячний абонемент"
|
||||||
|
@ -366,9 +366,9 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
io_blurb: "Проста але дивна."
|
io_blurb: "Проста але дивна."
|
||||||
status: "Статус"
|
status: "Статус"
|
||||||
weapons: "Зброя"
|
weapons: "Зброя"
|
||||||
weapons_warrior: "Мечі - ближній бій, жодної магії"
|
weapons_warrior: "Мечі – ближній бій, жодної магії"
|
||||||
weapons_ranger: "Арбалети, стрілецька зброя - дистанційна атака, жодної магії"
|
weapons_ranger: "Стрілецька зброя – дистанційна атака, жодної магії"
|
||||||
weapons_wizard: "Жезли, чарівні палички - дистанційна атака, магія"
|
weapons_wizard: "Жезли – дистанційна атака, магія"
|
||||||
attack: "Ушкодження" # Can also translate as "Attack"
|
attack: "Ушкодження" # Can also translate as "Attack"
|
||||||
health: "Здоров’я"
|
health: "Здоров’я"
|
||||||
speed: "Швидкість"
|
speed: "Швидкість"
|
||||||
|
@ -391,12 +391,12 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
action_radius: "Радіус"
|
action_radius: "Радіус"
|
||||||
action_duration: "Тривалість"
|
action_duration: "Тривалість"
|
||||||
example: "Приклад"
|
example: "Приклад"
|
||||||
ex: "пр" # Abbreviation of "example"
|
ex: "типу" # Abbreviation of "example"
|
||||||
current_value: "Поточне значення"
|
current_value: "Поточне значення"
|
||||||
default_value: "Типове значення"
|
default_value: "Типове значення"
|
||||||
parameters: "Параметри"
|
parameters: "Параметри"
|
||||||
returns: "Повертає"
|
returns: "Повертає"
|
||||||
granted_by: "Забезпечується"
|
granted_by: "Забезпечує"
|
||||||
|
|
||||||
save_load:
|
save_load:
|
||||||
granularity_saved_games: "Збережено"
|
granularity_saved_games: "Збережено"
|
||||||
|
@ -412,20 +412,20 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
editor_config: "Редактор налашт."
|
editor_config: "Редактор налашт."
|
||||||
editor_config_title: "Редактор налаштувань"
|
editor_config_title: "Редактор налаштувань"
|
||||||
editor_config_level_language_label: "Мова цього рівня"
|
editor_config_level_language_label: "Мова цього рівня"
|
||||||
# editor_config_level_language_description: "Define the programming language for this particular level."
|
editor_config_level_language_description: "Вкажіть мову програмування конкретно для цього рівня."
|
||||||
editor_config_default_language_label: "Типова мова програмування"
|
editor_config_default_language_label: "Типова мова програмування"
|
||||||
# editor_config_default_language_description: "Define the programming language you want to code in when starting new levels."
|
editor_config_default_language_description: "Вкажіть мову яку хочете використовувати під час програмування нових рівнів."
|
||||||
editor_config_keybindings_label: "Комбінації клавіш"
|
editor_config_keybindings_label: "Комбінації клавіш"
|
||||||
editor_config_keybindings_default: "Типове (Ace)"
|
editor_config_keybindings_default: "Типові (Ace)"
|
||||||
editor_config_keybindings_description: "Додайте додаткові скорочення відомі Вам із загальних редакторів."
|
editor_config_keybindings_description: "Додайте додаткові скорочення відомі Вам із інших редакторів."
|
||||||
editor_config_livecompletion_label: "Автодоповнення в реальному часі"
|
editor_config_livecompletion_label: "Автодоповнення в реальному часі"
|
||||||
editor_config_livecompletion_description: "Показує поради автодоповнення під час друку."
|
editor_config_livecompletion_description: "Показує поради автодоповнення під час друку."
|
||||||
editor_config_invisibles_label: "Показати приховане"
|
editor_config_invisibles_label: "Показувати приховане"
|
||||||
editor_config_invisibles_description: "Відображення прихованого, такого як відступи та знаки табуляції."
|
editor_config_invisibles_description: "Відображення прихованого, кшталту відступів та знаків табуляції."
|
||||||
editor_config_indentguides_label: "Показати відступи провідників"
|
editor_config_indentguides_label: "Показувати лінії відступів"
|
||||||
editor_config_indentguides_description: "Відображення вертикальних ліній, щоб краще бачити відстань."
|
editor_config_indentguides_description: "Відображення вертикальних ліній відступів, щоби краще бачити відстань."
|
||||||
editor_config_behaviors_label: "Розумні привички"
|
editor_config_behaviors_label: "Розумні кавички"
|
||||||
editor_config_behaviors_description: "Автозаповнення дужок, фігурних дужок, та лапок."
|
editor_config_behaviors_description: "Автоматичне закриття дужок та лапок."
|
||||||
|
|
||||||
about:
|
about:
|
||||||
why_codecombat: "Чому CodeCombat?"
|
why_codecombat: "Чому CodeCombat?"
|
||||||
|
@ -437,12 +437,12 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
why_paragraph_2_suffix: "Ось чому CodeCombat - мультиплеєрна гра, а не гейміфікований курс уроків. Ми не зупинимося, доки ви не включитеся на повну, і це чудово. "
|
why_paragraph_2_suffix: "Ось чому CodeCombat - мультиплеєрна гра, а не гейміфікований курс уроків. Ми не зупинимося, доки ви не включитеся на повну, і це чудово. "
|
||||||
why_paragraph_3: "Якщо ви плануєте бути залежним від якоїсь гри, оберіть цю - і перетворіться на одного з чарівників ери інформаційних технологій."
|
why_paragraph_3: "Якщо ви плануєте бути залежним від якоїсь гри, оберіть цю - і перетворіться на одного з чарівників ери інформаційних технологій."
|
||||||
press_title: "Блоґерам/Пресі"
|
press_title: "Блоґерам/Пресі"
|
||||||
# press_paragraph_1_prefix: "Want to write about us? Feel free to download and use all of the resources included in our"
|
press_paragraph_1_prefix: "Хочете написати про нас? Не соромтесь завантажувати всі наші ресурси які включено до нашого "
|
||||||
# press_paragraph_1_link: "press packet"
|
press_paragraph_1_link: "набору-для-преси"
|
||||||
press_paragraph_1_suffix: ". Всі логотипи та зображення можна використовувати не зв’язуючись з нами напряму."
|
press_paragraph_1_suffix: ". Всі логотипи та зображення можна використовувати не зв’язуючись з нами напряму."
|
||||||
team: "Команда"
|
team: "Команда"
|
||||||
george_title: "Виконавчий директор"
|
george_title: "Виконавчий директор"
|
||||||
# george_blurb: "Businesser"
|
george_blurb: "Бізнесмен"
|
||||||
scott_title: "Програміст"
|
scott_title: "Програміст"
|
||||||
scott_blurb: "Розумник"
|
scott_blurb: "Розумник"
|
||||||
nick_title: "Програміст"
|
nick_title: "Програміст"
|
||||||
|
@ -450,7 +450,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
michael_title: "Програміст"
|
michael_title: "Програміст"
|
||||||
michael_blurb: "Сисадмін"
|
michael_blurb: "Сисадмін"
|
||||||
matt_title: "Програміст"
|
matt_title: "Програміст"
|
||||||
# matt_blurb: "Bicyclist"
|
matt_blurb: "Dелосипедист"
|
||||||
|
|
||||||
versions:
|
versions:
|
||||||
save_version_title: "Зберегти нову версію"
|
save_version_title: "Зберегти нову версію"
|
||||||
|
@ -486,13 +486,13 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
new_password: "Новий пароль"
|
new_password: "Новий пароль"
|
||||||
new_password_verify: "Підтвердження паролю"
|
new_password_verify: "Підтвердження паролю"
|
||||||
email_subscriptions: "Email-підписки"
|
email_subscriptions: "Email-підписки"
|
||||||
# email_subscriptions_none: "No Email Subscriptions."
|
email_subscriptions_none: "Жодних підписок."
|
||||||
email_announcements: "Оголошення"
|
email_announcements: "Оголошення"
|
||||||
email_announcements_description: "Отримувати електронні листи про останні новини CodeCombat."
|
email_announcements_description: "Отримувати електронні листи про останні новини CodeCombat."
|
||||||
email_notifications: "Сповіщення"
|
email_notifications: "Сповіщення"
|
||||||
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
||||||
email_any_notes: "Будь-які сповіщення"
|
email_any_notes: "Будь-які сповіщення"
|
||||||
# email_any_notes_description: "Disable to stop all activity notification emails."
|
email_any_notes_description: "Вимкніть аби заборонити сповіщення на email."
|
||||||
email_news: "Новини"
|
email_news: "Новини"
|
||||||
email_recruit_notes: "Ваканція роботи"
|
email_recruit_notes: "Ваканція роботи"
|
||||||
# email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job."
|
# email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job."
|
||||||
|
@ -544,11 +544,11 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
# 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_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."
|
# article_editor_suffix: "and help CodeCombat players get the most out of their playtime."
|
||||||
find_us: "Шукайте нас на цих сайтах"
|
find_us: "Шукайте нас на цих сайтах"
|
||||||
# social_blog: "Read the CodeCombat blog on Sett"
|
social_blog: "Читайте наш блоґ на Sett"
|
||||||
# social_discource: "Join the discussion on our Discourse forum"
|
social_discource: "Приєднайте до обговорення на форумі"
|
||||||
# social_facebook: "Like CodeCombat on Facebook"
|
social_facebook: "Поставте лайк CodeCombat на Facebook"
|
||||||
social_twitter: "Слідкувати за CodeCombat у Twitter"
|
social_twitter: "Слідкуйте за CodeCombat у Twitter"
|
||||||
social_gplus: "Приєднатись до CodeCombat у Google+"
|
social_gplus: "Приєднайтесь до CodeCombat у Google+"
|
||||||
# social_hipchat: "Chat with us in the public CodeCombat HipChat room"
|
# social_hipchat: "Chat with us in the public CodeCombat HipChat room"
|
||||||
contribute_to_the_project: "Прийняти участь в розробці"
|
contribute_to_the_project: "Прийняти участь в розробці"
|
||||||
|
|
||||||
|
@ -700,12 +700,12 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
# diplomat_launch_url: "launch in October"
|
# diplomat_launch_url: "launch in October"
|
||||||
# diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you."
|
# diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you."
|
||||||
# diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!"
|
# diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!"
|
||||||
# diplomat_i18n_page_prefix: "You can start translating our levels by going to our"
|
diplomat_i18n_page_prefix: "Ви можете почати переклад рівнів перейшовши на нашу "
|
||||||
# diplomat_i18n_page: "translations page"
|
diplomat_i18n_page: "сторінку перекладу"
|
||||||
# diplomat_i18n_page_suffix: ", or our interface and website on GitHub."
|
diplomat_i18n_page_suffix: ", або інтерфейсу та сайту перейшовши на GitHub."
|
||||||
diplomat_join_pref_github: "Знайдіть файл своєї мови "
|
diplomat_join_pref_github: "Знайдіть файл своєї мови "
|
||||||
diplomat_github_url: "на GitHub"
|
diplomat_github_url: "на GitHub"
|
||||||
# diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!"
|
diplomat_join_suf_github: ", відредагуйте його, на надішліть запит злиття (pull request). Також, також поставте прапорець нижче аби слідкувати за новинами локаліазції!"
|
||||||
more_about_diplomat: "Дізнатися, як стати Дипломатом"
|
more_about_diplomat: "Дізнатися, як стати Дипломатом"
|
||||||
diplomat_subscribe_desc: "Отримувати листи про розробки i18n та нові рівні для перекладу."
|
diplomat_subscribe_desc: "Отримувати листи про розробки i18n та нові рівні для перекладу."
|
||||||
# ambassador_summary: "We are trying to build a community, and every community needs a support team when there are troubles. We have got chats, emails, and social networks so that our users can get acquainted with the game. If you want to help people get involved, have fun, and learn some programming, then this class is for you."
|
# ambassador_summary: "We are trying to build a community, and every community needs a support team when there are troubles. We have got chats, emails, and social networks so that our users can get acquainted with the game. If you want to help people get involved, have fun, and learn some programming, then this class is for you."
|
||||||
|
@ -724,9 +724,9 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
translating_diplomats: "Наші перекладачі - Дипломати:"
|
translating_diplomats: "Наші перекладачі - Дипломати:"
|
||||||
helpful_ambassadors: "Наші незамінні Посланці:"
|
helpful_ambassadors: "Наші незамінні Посланці:"
|
||||||
|
|
||||||
# ladder:
|
ladder:
|
||||||
# please_login: "Please log in first before playing a ladder game."
|
# please_login: "Please log in first before playing a ladder game."
|
||||||
# my_matches: "My Matches"
|
my_matches: "Мої поєдинки"
|
||||||
# simulate: "Simulate"
|
# simulate: "Simulate"
|
||||||
# simulation_explanation: "By simulating games you can get your game ranked faster!"
|
# simulation_explanation: "By simulating games you can get your game ranked faster!"
|
||||||
# simulate_games: "Simulate Games!"
|
# simulate_games: "Simulate Games!"
|
||||||
|
@ -734,17 +734,17 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
# games_simulated_by: "Games simulated by you:"
|
# games_simulated_by: "Games simulated by you:"
|
||||||
# games_simulated_for: "Games simulated for you:"
|
# games_simulated_for: "Games simulated for you:"
|
||||||
# games_simulated: "Games simulated"
|
# games_simulated: "Games simulated"
|
||||||
# games_played: "Games played"
|
games_played: "Ігор зіграно"
|
||||||
# ratio: "Ratio"
|
ratio: "Співвідношення"
|
||||||
# leaderboard: "Leaderboard"
|
leaderboard: "Таблиця лідерів"
|
||||||
# battle_as: "Battle as "
|
battle_as: "Бій за "
|
||||||
# summary_your: "Your "
|
summary_your: "Твої "
|
||||||
# summary_matches: "Matches - "
|
summary_matches: "Поєдинки - "
|
||||||
# summary_wins: " Wins, "
|
summary_wins: " Перемоги, "
|
||||||
# summary_losses: " Losses"
|
summary_losses: " Поразки"
|
||||||
# rank_no_code: "No New Code to Rank"
|
# rank_no_code: "No New Code to Rank"
|
||||||
# rank_my_game: "Rank My Game!"
|
# rank_my_game: "Rank My Game!"
|
||||||
# rank_submitting: "Submitting..."
|
rank_submitting: "Відправлення..."
|
||||||
# rank_submitted: "Submitted for Ranking"
|
# rank_submitted: "Submitted for Ranking"
|
||||||
# rank_failed: "Failed to Rank"
|
# rank_failed: "Failed to Rank"
|
||||||
# rank_being_ranked: "Game Being Ranked"
|
# rank_being_ranked: "Game Being Ranked"
|
||||||
|
@ -753,20 +753,20 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
# code_being_simulated: "Your new code is being simulated by other players for ranking. This will refresh as new matches come in."
|
# 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_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."
|
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
|
||||||
# choose_opponent: "Choose an Opponent"
|
choose_opponent: "Оберіть противника"
|
||||||
# select_your_language: "Select your language!"
|
select_your_language: "Оберіть мову!"
|
||||||
# tutorial_play: "Play Tutorial"
|
# tutorial_play: "Play Tutorial"
|
||||||
# tutorial_recommended: "Recommended if you've never played before"
|
tutorial_recommended: "Рекомендовано, якщо ви взагалі раніше не грали"
|
||||||
# tutorial_skip: "Skip Tutorial"
|
# tutorial_skip: "Skip Tutorial"
|
||||||
# tutorial_not_sure: "Not sure what's going on?"
|
# tutorial_not_sure: "Not sure what's going on?"
|
||||||
# tutorial_play_first: "Play the Tutorial first."
|
# tutorial_play_first: "Play the Tutorial first."
|
||||||
# simple_ai: "Simple AI"
|
simple_ai: "Простий ШІ"
|
||||||
# warmup: "Warmup"
|
# warmup: "Warmup"
|
||||||
# friends_playing: "Friends Playing"
|
# friends_playing: "Friends Playing"
|
||||||
# log_in_for_friends: "Log in to play with your friends!"
|
# log_in_for_friends: "Log in to play with your friends!"
|
||||||
# social_connect_blurb: "Connect and play against your friends!"
|
# social_connect_blurb: "Connect and play against your friends!"
|
||||||
# invite_friends_to_battle: "Invite your friends to join you in battle!"
|
# invite_friends_to_battle: "Invite your friends to join you in battle!"
|
||||||
# fight: "Fight!"
|
fight: "В бій!"
|
||||||
# watch_victory: "Watch your victory"
|
# watch_victory: "Watch your victory"
|
||||||
# defeat_the: "Defeat the"
|
# defeat_the: "Defeat the"
|
||||||
# tournament_ends: "Tournament ends"
|
# tournament_ends: "Tournament ends"
|
||||||
|
@ -776,7 +776,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
# tournament_blurb_criss_cross: "Win bids, construct paths, outwit opponents, grab gems, and upgrade your career in our Criss-Cross tournament! Check out the details"
|
# tournament_blurb_criss_cross: "Win bids, construct paths, outwit opponents, grab gems, and upgrade your career in our Criss-Cross tournament! Check out the details"
|
||||||
# tournament_blurb_blog: "on our blog"
|
# tournament_blurb_blog: "on our blog"
|
||||||
# rules: "Rules"
|
# rules: "Rules"
|
||||||
# winners: "Winners"
|
winners: "Переможці"
|
||||||
|
|
||||||
user:
|
user:
|
||||||
stats: "Статистика"
|
stats: "Статистика"
|
||||||
|
@ -794,42 +794,42 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
favorite_postfix: "."
|
favorite_postfix: "."
|
||||||
|
|
||||||
achievements:
|
achievements:
|
||||||
# last_earned: "Last Earned"
|
last_earned: "Останні отримані"
|
||||||
# amount_achieved: "Amount"
|
amount_achieved: "Кількість"
|
||||||
achievement: "Досягнення"
|
achievement: "Досягнення"
|
||||||
# category_contributor: "Contributor"
|
category_contributor: "Співучасник"
|
||||||
# category_ladder: "Ladder"
|
category_ladder: "Драбина"
|
||||||
category_level: "Рівень"
|
category_level: "Рівень"
|
||||||
# category_miscellaneous: "Miscellaneous"
|
category_miscellaneous: "Різне"
|
||||||
category_levels: "Рівні"
|
category_levels: "Рівні"
|
||||||
# category_undefined: "Uncategorized"
|
category_undefined: "без категорії"
|
||||||
# current_xp_prefix: ""
|
current_xp_prefix: ""
|
||||||
current_xp_postfix: " загалом"
|
current_xp_postfix: " загалом"
|
||||||
# new_xp_prefix: ""
|
new_xp_prefix: ""
|
||||||
# new_xp_postfix: " earned"
|
new_xp_postfix: " зароблено"
|
||||||
# left_xp_prefix: ""
|
left_xp_prefix: ""
|
||||||
# left_xp_infix: " until level "
|
left_xp_infix: " до рівня "
|
||||||
# left_xp_postfix: ""
|
left_xp_postfix: ""
|
||||||
|
|
||||||
account:
|
account:
|
||||||
recently_played: "Нещодавні ігри"
|
recently_played: "Нещодавні ігри"
|
||||||
# no_recent_games: "No games played during the past two weeks."
|
no_recent_games: "На протязі останніх двох тижнів не зіграно жодної гри."
|
||||||
# payments: "Payments"
|
payments: "Платежі"
|
||||||
service_apple: "Apple"
|
service_apple: "Apple"
|
||||||
service_web: "Веб"
|
service_web: "Веб"
|
||||||
# paid_on: "Paid On"
|
paid_on: "Сплачено"
|
||||||
service: "Сервіс"
|
service: "Сервіс"
|
||||||
price: "Ціна"
|
price: "Ціна"
|
||||||
gems: "Cамоцвіти"
|
gems: "Cамоцвіти"
|
||||||
# status_subscribed: "You're currently subscribed at $9.99 USD/mo. Thanks for your support!"
|
# status_subscribed: "You're currently subscribed at $9.99 USD/mo. Thanks for your support!"
|
||||||
# status_unsubscribed_active: "You're not subscribed and won't be billed, but your account is still active for now."
|
# status_unsubscribed_active: "You're not subscribed and won't be billed, but your account is still active for now."
|
||||||
# status_unsubscribed: "Get access to new levels, heroes, items, and bonus gems with a CodeCombat subscription!"
|
status_unsubscribed: "Отримайте доступ до новних рівнів, героїв та бонусів з абонементом CodeCombat!"
|
||||||
|
|
||||||
loading_error:
|
loading_error:
|
||||||
could_not_load: "Помилка завантаження з сервера"
|
could_not_load: "Помилка завантаження з сервера"
|
||||||
connection_failure: "Помилка з’єднання."
|
connection_failure: "Помилка з’єднання."
|
||||||
unauthorized: "Вам потрібно увійти. Ви вимкнули куки?"
|
unauthorized: "Вам потрібно увійти. Ви вимкнули куки?"
|
||||||
forbidden: "Недостатнь прав."
|
forbidden: "Недостатньо прав."
|
||||||
not_found: "Не знайдено."
|
not_found: "Не знайдено."
|
||||||
not_allowed: "Недозволений метод."
|
not_allowed: "Недозволений метод."
|
||||||
timeout: "Час очікування сервера минув."
|
timeout: "Час очікування сервера минув."
|
||||||
|
@ -876,10 +876,10 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
# user_remark: "User Remark"
|
# user_remark: "User Remark"
|
||||||
# user_remarks: "User Remarks"
|
# user_remarks: "User Remarks"
|
||||||
versions: "Версії"
|
versions: "Версії"
|
||||||
# items: "Items"
|
items: "Предмети"
|
||||||
heroes: "Герої"
|
heroes: "Герої"
|
||||||
# wizard: "Wizard"
|
# wizard: "Wizard"
|
||||||
# achievement: "Achievement"
|
achievement: "Досягнення"
|
||||||
# clas: "CLAs"
|
# clas: "CLAs"
|
||||||
# play_counts: "Play Counts"
|
# play_counts: "Play Counts"
|
||||||
feedback: "Відгук"
|
feedback: "Відгук"
|
||||||
|
@ -898,13 +898,13 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
|
|
||||||
multiplayer:
|
multiplayer:
|
||||||
multiplayer_title: "Налаштування мультиплеєра" # We'll be changing this around significantly soon. Until then, it's not important to translate.
|
multiplayer_title: "Налаштування мультиплеєра" # We'll be changing this around significantly soon. Until then, it's not important to translate.
|
||||||
# multiplayer_toggle: "Enable multiplayer"
|
multiplayer_toggle: "Увімкнути мультиплеєр"
|
||||||
# multiplayer_toggle_description: "Allow others to join your game."
|
multiplayer_toggle_description: "Дозволити іншим приєднуватись до гри."
|
||||||
multiplayer_link_description: "Поділіться цим посиланням з будь-ким, щоб вони приєдналися до вас."
|
multiplayer_link_description: "Поділіться цим посиланням з будь-ким, щоб вони приєдналися до вас."
|
||||||
multiplayer_hint_label: "Підказка:"
|
multiplayer_hint_label: "Підказка:"
|
||||||
multiplayer_hint: "Натисніть на посилання, щоб обрати всіх, та натисніть Apple-C або Ctrl-C, щоб скопіювати посилання."
|
multiplayer_hint: "Натисніть на посилання, щоб обрати всіх, та натисніть Apple-C або Ctrl-C, щоб скопіювати посилання."
|
||||||
multiplayer_coming_soon: "Скоро - більше можливостей у мультиплеєрі!"
|
multiplayer_coming_soon: "Незабаром - більше можливостей у мультиплеєрі!"
|
||||||
# multiplayer_sign_in_leaderboard: "Sign in or create an account and get your solution on the leaderboard."
|
multiplayer_sign_in_leaderboard: "Увійдіть або створіть екаунт, аби помістити своє рішення до таблиці лідерів."
|
||||||
|
|
||||||
legal:
|
legal:
|
||||||
page_title: "Юридична інформація"
|
page_title: "Юридична інформація"
|
||||||
|
@ -915,7 +915,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
archmage_wiki_url: "нашу wiki для Архімагів,"
|
archmage_wiki_url: "нашу wiki для Архімагів,"
|
||||||
opensource_description_suffix: "щоб побачити списки ПЗ, яке робить цю гру можливою."
|
opensource_description_suffix: "щоб побачити списки ПЗ, яке робить цю гру можливою."
|
||||||
practices_title: "Шановні найкращі гравці"
|
practices_title: "Шановні найкращі гравці"
|
||||||
# practices_description: "These are our promises to you, the player, in slightly less legalese."
|
practices_description: "Це наші обіцянки до тебе, гравцю, дещо менш юридичною мовою."
|
||||||
privacy_title: "Конфіденційність"
|
privacy_title: "Конфіденційність"
|
||||||
privacy_description: "Ми не розповсюджуємо вашу персональну інформацію."
|
privacy_description: "Ми не розповсюджуємо вашу персональну інформацію."
|
||||||
security_title: "Безпека"
|
security_title: "Безпека"
|
||||||
|
@ -961,24 +961,24 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
nutshell_description: "Будь-які ресурси котрі ми надаємо в редакторі рівнів є безкоштовними для використання за вашим бажанням для створення рівнів. Але ми залишаємо за собою право обмежувати розповсюдження самих рівнів(котрі були створені на codecombat.com), тому вони зможуть заплатити в майбутньому, якщо в кінцевому результаті таке станеться."
|
nutshell_description: "Будь-які ресурси котрі ми надаємо в редакторі рівнів є безкоштовними для використання за вашим бажанням для створення рівнів. Але ми залишаємо за собою право обмежувати розповсюдження самих рівнів(котрі були створені на codecombat.com), тому вони зможуть заплатити в майбутньому, якщо в кінцевому результаті таке станеться."
|
||||||
canonical: "Англійська версія цього документа є остаточною та канонічною версією. Якщо тут є будь-які невідповідності в перекладі, англійська версія документа є пріоритетною."
|
canonical: "Англійська версія цього документа є остаточною та канонічною версією. Якщо тут є будь-які невідповідності в перекладі, англійська версія документа є пріоритетною."
|
||||||
|
|
||||||
# ladder_prizes:
|
ladder_prizes:
|
||||||
# title: "Tournament Prizes" # This section was for an old tournament and doesn't need new translations now.
|
title: "Нагороди за турнір" # This section was for an old tournament and doesn't need new translations now.
|
||||||
# blurb_1: "These prizes will be awarded according to"
|
blurb_1: "Цими призами буде нагороджено залежно від"
|
||||||
# blurb_2: "the tournament rules"
|
blurb_2: "правил турніру"
|
||||||
# blurb_3: "to the top human and ogre players."
|
blurb_3: "першості серед людей або оґрів."
|
||||||
# blurb_4: "Two teams means double the prizes!"
|
blurb_4: "Дві команди – подвоєння призів!"
|
||||||
# blurb_5: "(There will be two first place winners, two second-place winners, etc.)"
|
blurb_5: "(Два переможня на першому місці, два на другому, тощо.)"
|
||||||
# rank: "Rank"
|
rank: "Ранг"
|
||||||
# prizes: "Prizes"
|
prizes: "Призи"
|
||||||
# total_value: "Total Value"
|
total_value: "Загалом"
|
||||||
# in_cash: "in cash"
|
# in_cash: "in cash"
|
||||||
# custom_wizard: "Custom CodeCombat Wizard"
|
custom_wizard: "Власний чарівник CodeCombat"
|
||||||
# custom_avatar: "Custom CodeCombat avatar"
|
custom_avatar: "Власний аватар CodeCombat"
|
||||||
# heap: "for six months of \"Startup\" access"
|
# heap: "for six months of \"Startup\" access"
|
||||||
# credits: "credits"
|
# credits: "credits"
|
||||||
# one_month_coupon: "coupon: choose either Rails or HTML"
|
# one_month_coupon: "coupon: choose either Rails or HTML"
|
||||||
# one_month_discount: "discount, 30% off: choose either Rails or HTML"
|
# one_month_discount: "discount, 30% off: choose either Rails or HTML"
|
||||||
# license: "license"
|
license: "ліцензія"
|
||||||
# oreilly: "ebook of your choice"
|
# oreilly: "ebook of your choice"
|
||||||
|
|
||||||
wizard_settings:
|
wizard_settings:
|
||||||
|
@ -1121,7 +1121,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
|
||||||
# filter_experience_senior: "Senior"
|
# filter_experience_senior: "Senior"
|
||||||
# filter_experience_junior: "Junior"
|
# filter_experience_junior: "Junior"
|
||||||
# filter_experience_recent_grad: "Recent Grad"
|
# filter_experience_recent_grad: "Recent Grad"
|
||||||
# filter_experience_student: "College Student"
|
filter_experience_student: "Студент коледжу"
|
||||||
# filter_results: "results"
|
# filter_results: "results"
|
||||||
# start_hiring: "Start hiring."
|
# start_hiring: "Start hiring."
|
||||||
# reasons: "Three reasons you should hire through us:"
|
# reasons: "Three reasons you should hire through us:"
|
||||||
|
|
|
@ -4,10 +4,10 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
no_ie: "抱歉! Internet Explorer 8 等旧式预览器无法使用本网站。" # Warning that only shows up in IE8 and older
|
no_ie: "抱歉! Internet Explorer 8 等旧式预览器无法使用本网站。" # Warning that only shows up in IE8 and older
|
||||||
no_mobile: "CodeCombat 不是针对手机设备设计的,所以可能无法达到最好的体验!" # Warning that shows up on mobile devices
|
no_mobile: "CodeCombat 不是针对手机设备设计的,所以可能无法达到最好的体验!" # Warning that shows up on mobile devices
|
||||||
play: "开始游戏" # The big play button that just starts playing a level
|
play: "开始游戏" # The big play button that just starts playing a level
|
||||||
# try_it: "Try It" # Alternate wording for Play button
|
try_it: "尝试一下" # Alternate wording for Play button
|
||||||
old_browser: "噢, 你的浏览器太老了, 不能运行CodeCombat. 抱歉!" # Warning that shows up on really old Firefox/Chrome/Safari
|
old_browser: "噢, 你的浏览器太老了, 不能运行CodeCombat. 抱歉!" # Warning that shows up on really old Firefox/Chrome/Safari
|
||||||
old_browser_suffix: "你可以继续重试下去,但八成不起作用,更新浏览器吧亲~"
|
old_browser_suffix: "你可以继续重试下去,但八成不起作用,更新浏览器吧亲~"
|
||||||
# ipad_browser: "Bad news: CodeCombat doesn't run on iPad in the browser. Good news: our native iPad app is awaiting Apple approval."
|
ipad_browser: "坏消息: CodeCombat 无法在iPad的浏览器中运行。好消息:我们的iPad应用正在等待苹果公司审批。"
|
||||||
campaign: "战役模式"
|
campaign: "战役模式"
|
||||||
for_beginners: "适合初学者"
|
for_beginners: "适合初学者"
|
||||||
multiplayer: "多人游戏" # Not currently shown on home page
|
multiplayer: "多人游戏" # Not currently shown on home page
|
||||||
|
@ -58,7 +58,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
confirm: "确认"
|
confirm: "确认"
|
||||||
owned: "已拥有" # For items you own
|
owned: "已拥有" # For items you own
|
||||||
locked: "需解锁"
|
locked: "需解锁"
|
||||||
# purchasable: "Purchasable" # For a hero you unlocked but haven't purchased
|
purchasable: "可购买" # For a hero you unlocked but haven't purchased
|
||||||
available: "可用"
|
available: "可用"
|
||||||
skills_granted: "获得技能" # Property documentation details
|
skills_granted: "获得技能" # Property documentation details
|
||||||
heroes: "英雄" # Tooltip on hero shop button from /play
|
heroes: "英雄" # Tooltip on hero shop button from /play
|
||||||
|
@ -71,9 +71,9 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
buy_gems: "购买宝石"
|
buy_gems: "购买宝石"
|
||||||
campaign_forest: "森林战役"
|
campaign_forest: "森林战役"
|
||||||
campaign_dungeon: "地牢战役"
|
campaign_dungeon: "地牢战役"
|
||||||
# subscription_required: "Subscription Required"
|
subscription_required: "需订阅"
|
||||||
# free: "Free"
|
free: "免费"
|
||||||
# subscribed: "Subscribed"
|
subscribed: "已订阅"
|
||||||
older_campaigns: "旧的战役"
|
older_campaigns: "旧的战役"
|
||||||
anonymous: "匿名玩家"
|
anonymous: "匿名玩家"
|
||||||
level_difficulty: "难度:"
|
level_difficulty: "难度:"
|
||||||
|
@ -236,9 +236,9 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
tome_minion_spells: "助手的咒语" # Only in old-style levels.
|
tome_minion_spells: "助手的咒语" # Only in old-style levels.
|
||||||
tome_read_only_spells: "只读的咒语" # Only in old-style levels.
|
tome_read_only_spells: "只读的咒语" # Only in old-style levels.
|
||||||
tome_other_units: "其他单元" # Only in old-style levels.
|
tome_other_units: "其他单元" # Only in old-style levels.
|
||||||
# tome_cast_button_run: "Run"
|
tome_cast_button_run: "运行"
|
||||||
# tome_cast_button_running: "Running"
|
tome_cast_button_running: "正在运行"
|
||||||
# tome_cast_button_ran: "Ran"
|
tome_cast_button_ran: "运行过"
|
||||||
tome_submit_button: "提交"
|
tome_submit_button: "提交"
|
||||||
tome_reload_method: "重载该方法的原始代码" # Title text for individual method reload button.
|
tome_reload_method: "重载该方法的原始代码" # Title text for individual method reload button.
|
||||||
tome_select_method: "选择方法"
|
tome_select_method: "选择方法"
|
||||||
|
@ -246,7 +246,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
tome_select_a_thang: "选择人物来 "
|
tome_select_a_thang: "选择人物来 "
|
||||||
tome_available_spells: "可用的法术"
|
tome_available_spells: "可用的法术"
|
||||||
tome_your_skills: "你的技能"
|
tome_your_skills: "你的技能"
|
||||||
# tome_help: "Help"
|
tome_help: "帮助"
|
||||||
tome_current_method: "当前方法"
|
tome_current_method: "当前方法"
|
||||||
hud_continue_short: "继续"
|
hud_continue_short: "继续"
|
||||||
code_saved: "代码已保存"
|
code_saved: "代码已保存"
|
||||||
|
@ -324,27 +324,27 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
few_gems: "几个宝石"
|
few_gems: "几个宝石"
|
||||||
pile_gems: "一堆宝石"
|
pile_gems: "一堆宝石"
|
||||||
chest_gems: "一箱宝石"
|
chest_gems: "一箱宝石"
|
||||||
# purchasing: "Purchasing..."
|
purchasing: "正在付款..."
|
||||||
# declined: "Your card was declined"
|
declined: "您的卡片被拒绝"
|
||||||
# retrying: "Server error, retrying."
|
retrying: "服务器错误,请重试"
|
||||||
# prompt_title: "Not Enough Gems"
|
prompt_title: "没有足够数量的宝石"
|
||||||
# prompt_body: "Do you want to get more?"
|
prompt_body: "还需要更多吗?"
|
||||||
# prompt_button: "Enter Shop"
|
prompt_button: "进入商店"
|
||||||
|
|
||||||
# subscribe:
|
subscribe:
|
||||||
# subscribe_title: "Subscribe"
|
subscribe_title: "订阅"
|
||||||
# levels: "Unlock 17 extra levels! With 5 new ones every week!"
|
levels: "多解锁17个关卡!每周解锁5个新关卡!"
|
||||||
# heroes: "More powerful heroes!"
|
heroes: "更多强大的英雄!"
|
||||||
# gems: "3500 bonus gems every month!"
|
gems: "每月多3500宝石奖励!"
|
||||||
# items: "Over 250 bonus items!"
|
items: "超过250个物品奖励!"
|
||||||
# parents: "For Parents"
|
parents: "致家长"
|
||||||
# parents_title: "Your child will learn to code."
|
parents_title: "您的孩子将要学习编写程序。"
|
||||||
# parents_blurb1: "With CodeCombat, your child learns by writing real code. They start by learning simple commands, and progress to more advanced topics."
|
parents_blurb1: "通过使用CodeCombat,您的孩子将学习编写真正的程序代码。他们将学到简单指令,进而处理更复杂的问题。"
|
||||||
# parents_blurb2: "For $9.99 USD/mo, they get new challenges every week and personal email support from professional programmers."
|
parents_blurb2: "每月支付99美元,他们每周都会有新的挑战,并且通过电子邮件获得专业程序员的指导。"
|
||||||
# parents_blurb3: "No Risk: 100% money back guarantee, easy 1-click unsubscribe."
|
parents_blurb3: "无风险承诺:100%退款,一键退订。"
|
||||||
# subscribe_button: "Subscribe Now"
|
subscribe_button: "现在订阅"
|
||||||
# stripe_description: "Monthly Subscription"
|
stripe_description: "每月订阅"
|
||||||
# subscription_required_to_play: "You'll need a subscription to play this level."
|
subscription_required_to_play: "订阅后可开始本关"
|
||||||
|
|
||||||
choose_hero:
|
choose_hero:
|
||||||
choose_hero: "请选择您的英雄"
|
choose_hero: "请选择您的英雄"
|
||||||
|
@ -370,27 +370,27 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
range: "攻击范围" # As in "attack or visual range"
|
range: "攻击范围" # As in "attack or visual range"
|
||||||
blocks: "格挡" # As in "this shield blocks this much damage"
|
blocks: "格挡" # As in "this shield blocks this much damage"
|
||||||
skills: "技能"
|
skills: "技能"
|
||||||
# available_for_purchase: "Available for Purchase"
|
available_for_purchase: "可以购买"
|
||||||
# level_to_unlock: "Level to unlock:"
|
level_to_unlock: "未解锁关卡:"
|
||||||
# restricted_to_certain_heroes: "Only certain heroes can play this level."
|
restricted_to_certain_heroes: "只有特定的英雄可以进入本关。"
|
||||||
|
|
||||||
# skill_docs:
|
skill_docs:
|
||||||
# writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this
|
writable: "可写" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||||
# read_only: "read-only"
|
read_only: "只读"
|
||||||
# action_name: "name"
|
action_name: "名称"
|
||||||
# action_cooldown: "Takes"
|
action_cooldown: "释放时间"
|
||||||
# action_specific_cooldown: "Cooldown"
|
action_specific_cooldown: "冷却时间"
|
||||||
# action_damage: "Damage"
|
action_damage: "攻击力"
|
||||||
# action_range: "Range"
|
action_range: "范围"
|
||||||
# action_radius: "Radius"
|
action_radius: "半径"
|
||||||
# action_duration: "Duration"
|
action_duration: "持续时间"
|
||||||
# example: "Example"
|
example: "例程"
|
||||||
# ex: "ex" # Abbreviation of "example"
|
ex: "例如" # Abbreviation of "example"
|
||||||
# current_value: "Current Value"
|
current_value: "当前值"
|
||||||
# default_value: "Default value"
|
default_value: "默认值"
|
||||||
# parameters: "Parameters"
|
parameters: "参数"
|
||||||
# returns: "Returns"
|
returns: "返回值"
|
||||||
# granted_by: "Granted by"
|
granted_by: "技能来自"
|
||||||
|
|
||||||
save_load:
|
save_load:
|
||||||
granularity_saved_games: "保存"
|
granularity_saved_games: "保存"
|
||||||
|
@ -729,7 +729,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
games_simulated_for: "待你模拟玩的游戏:"
|
games_simulated_for: "待你模拟玩的游戏:"
|
||||||
games_simulated: "游戏已模拟"
|
games_simulated: "游戏已模拟"
|
||||||
games_played: "已玩过"
|
games_played: "已玩过"
|
||||||
# ratio: "Ratio"
|
ratio: "通过率"
|
||||||
leaderboard: "排行榜"
|
leaderboard: "排行榜"
|
||||||
battle_as: "我要加入这一方 "
|
battle_as: "我要加入这一方 "
|
||||||
summary_your: "你 "
|
summary_your: "你 "
|
||||||
|
@ -813,8 +813,8 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
# service_web: "Web"
|
# service_web: "Web"
|
||||||
# paid_on: "Paid On"
|
# paid_on: "Paid On"
|
||||||
# service: "Service"
|
# service: "Service"
|
||||||
# price: "Price"
|
price: "价格"
|
||||||
# gems: "Gems"
|
gems: "宝石"
|
||||||
# status_subscribed: "You're currently subscribed at $9.99 USD/mo. Thanks for your support!"
|
# status_subscribed: "You're currently subscribed at $9.99 USD/mo. Thanks for your support!"
|
||||||
# status_unsubscribed_active: "You're not subscribed and won't be billed, but your account is still active for now."
|
# status_unsubscribed_active: "You're not subscribed and won't be billed, but your account is still active for now."
|
||||||
# status_unsubscribed: "Get access to new levels, heroes, items, and bonus gems with a CodeCombat subscription!"
|
# status_unsubscribed: "Get access to new levels, heroes, items, and bonus gems with a CodeCombat subscription!"
|
||||||
|
@ -878,17 +878,17 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
|
||||||
# play_counts: "Play Counts"
|
# play_counts: "Play Counts"
|
||||||
feedback: "反馈"
|
feedback: "反馈"
|
||||||
|
|
||||||
# delta:
|
delta:
|
||||||
# added: "Added"
|
added: "被添加"
|
||||||
# modified: "Modified"
|
modified: "被修改"
|
||||||
# deleted: "Deleted"
|
deleted: "被删除"
|
||||||
# moved_index: "Moved Index"
|
moved_index: "被移动的索引"
|
||||||
# text_diff: "Text Diff"
|
text_diff: "文本变化"
|
||||||
# merge_conflict_with: "MERGE CONFLICT WITH"
|
# merge_conflict_with: "MERGE CONFLICT WITH"
|
||||||
# no_changes: "No Changes"
|
no_changes: "没有变化"
|
||||||
|
|
||||||
# guide:
|
guide:
|
||||||
# temp: "Temp"
|
temp: "临时"
|
||||||
|
|
||||||
multiplayer:
|
multiplayer:
|
||||||
multiplayer_title: "多人游戏设置" # We'll be changing this around significantly soon. Until then, it's not important to translate.
|
multiplayer_title: "多人游戏设置" # We'll be changing this around significantly soon. Until then, it's not important to translate.
|
||||||
|
|
|
@ -6,6 +6,9 @@ ThangType = require './ThangType'
|
||||||
module.exports = class Level extends CocoModel
|
module.exports = class Level extends CocoModel
|
||||||
@className: 'Level'
|
@className: 'Level'
|
||||||
@schema: require 'schemas/models/level'
|
@schema: require 'schemas/models/level'
|
||||||
|
@levels:
|
||||||
|
'dungeons-of-kithgard': '5411cb3769152f1707be029c'
|
||||||
|
'defense-of-plainswood': '541b67f71ccc8eaae19f3c62'
|
||||||
urlRoot: '/db/level'
|
urlRoot: '/db/level'
|
||||||
|
|
||||||
serialize: (supermodel, session, otherSession, cached=false) ->
|
serialize: (supermodel, session, otherSession, cached=false) ->
|
||||||
|
|
|
@ -3,6 +3,7 @@ cache = {}
|
||||||
CocoModel = require './CocoModel'
|
CocoModel = require './CocoModel'
|
||||||
util = require 'core/utils'
|
util = require 'core/utils'
|
||||||
ThangType = require './ThangType'
|
ThangType = require './ThangType'
|
||||||
|
Level = require './Level'
|
||||||
|
|
||||||
module.exports = class User extends CocoModel
|
module.exports = class User extends CocoModel
|
||||||
@className: 'User'
|
@className: 'User'
|
||||||
|
@ -90,7 +91,7 @@ module.exports = class User extends CocoModel
|
||||||
#heroes = _.values ThangType.heroes if me.isAdmin()
|
#heroes = _.values ThangType.heroes if me.isAdmin()
|
||||||
heroes
|
heroes
|
||||||
items: -> (me.get('earned')?.items ? []).concat(me.get('purchased')?.items ? []).concat([ThangType.items['simple-boots']])
|
items: -> (me.get('earned')?.items ? []).concat(me.get('purchased')?.items ? []).concat([ThangType.items['simple-boots']])
|
||||||
levels: -> (me.get('earned')?.levels ? []).concat(me.get('purchased')?.levels ? [])
|
levels: -> (me.get('earned')?.levels ? []).concat(me.get('purchased')?.levels ? []).concat(Level.levels['dungeons-of-kithgard'])
|
||||||
ownsHero: (heroOriginal) -> heroOriginal in @heroes()
|
ownsHero: (heroOriginal) -> heroOriginal in @heroes()
|
||||||
ownsItem: (itemOriginal) -> itemOriginal in @items()
|
ownsItem: (itemOriginal) -> itemOriginal in @items()
|
||||||
ownsLevel: (levelOriginal) -> levelOriginal in @levels()
|
ownsLevel: (levelOriginal) -> levelOriginal in @levels()
|
||||||
|
|
|
@ -253,13 +253,19 @@ kbd
|
||||||
border-image-source: url(/images/common/button-background-primary-active-border.png)
|
border-image-source: url(/images/common/button-background-primary-active-border.png)
|
||||||
&.btn-success
|
&.btn-success
|
||||||
border-image-source: url(/images/common/button-background-success-active-border.png)
|
border-image-source: url(/images/common/button-background-success-active-border.png)
|
||||||
|
color: darken(white, 5%)
|
||||||
&.btn-warning
|
&.btn-warning
|
||||||
border-image-source: url(/images/common/button-background-warning-active-border.png)
|
border-image-source: url(/images/common/button-background-warning-active-border.png)
|
||||||
|
color: darken(white, 5%)
|
||||||
&.btn-danger
|
&.btn-danger
|
||||||
border-image-source: url(/images/common/button-background-danger-active-border.png)
|
border-image-source: url(/images/common/button-background-danger-active-border.png)
|
||||||
|
|
||||||
&:hover
|
&:hover
|
||||||
color: lighten(rgb(248, 197, 146), 5%)
|
color: lighten(rgb(248, 197, 146), 5%)
|
||||||
|
&.btn-success
|
||||||
|
color: white
|
||||||
|
&.btn-warning
|
||||||
|
color: white
|
||||||
|
|
||||||
&:active
|
&:active
|
||||||
&.btn-lg
|
&.btn-lg
|
||||||
|
|
|
@ -63,6 +63,9 @@
|
||||||
left: 40px
|
left: 40px
|
||||||
width: 588px
|
width: 588px
|
||||||
|
|
||||||
|
.help-block
|
||||||
|
margin: 0
|
||||||
|
|
||||||
.alert
|
.alert
|
||||||
margin-top: -25px
|
margin-top: -25px
|
||||||
margin-bottom: 0
|
margin-bottom: 0
|
||||||
|
|
|
@ -2,55 +2,89 @@
|
||||||
@import "app/styles/bootstrap/variables"
|
@import "app/styles/bootstrap/variables"
|
||||||
|
|
||||||
#hero-victory-modal
|
#hero-victory-modal
|
||||||
|
$hero-yellow-text: rgb(252, 201, 53)
|
||||||
|
|
||||||
//- Top-level modal container
|
//- Top-level modal container
|
||||||
.modal-dialog
|
.modal-dialog
|
||||||
margin-top: 15px
|
margin-top: 0
|
||||||
padding-top: 0
|
padding-top: 0
|
||||||
|
width: 750px
|
||||||
|
|
||||||
|
.modal-content
|
||||||
|
position: relative
|
||||||
|
margin-top: -251px
|
||||||
|
|
||||||
|
&.full-achievements
|
||||||
|
@media only screen and (max-height: 720px)
|
||||||
|
.modal-dialog
|
||||||
|
margin-top: -76px
|
||||||
|
#victory-header
|
||||||
|
background: transparent
|
||||||
|
@media only screen and (max-height: 640px)
|
||||||
|
.modal-dialog
|
||||||
|
margin-top: -130px
|
||||||
|
#victory-header
|
||||||
|
display: none
|
||||||
|
|
||||||
//- Header
|
//- Header
|
||||||
|
|
||||||
.background-wrapper
|
.background-wrapper
|
||||||
//background: url("/images/pages/play/level/modal/victory_modal_background.png")
|
//background: url("/images/pages/play/level/modal/victory_modal_background.png")
|
||||||
width: 550px
|
width: 750px
|
||||||
background-color: transparent
|
background: transparent
|
||||||
border: 0px solid transparent
|
border: 0px solid transparent
|
||||||
border-width: 25px
|
border-image: url("/images/pages/play/level/modal/victory_modal_border_background.png") 250 0 100 0 fill round
|
||||||
border-image: url("/images/pages/play/level/modal/victory_modal_background.png") 25 fill round
|
border-width: 250px 0 100px 0
|
||||||
border-radius: 12px
|
border-radius: 12px
|
||||||
|
|
||||||
#victory-banner
|
.modal-header
|
||||||
|
border: none
|
||||||
position: absolute
|
position: absolute
|
||||||
left: -30px
|
left: 188px
|
||||||
z-index: 0
|
width: 378px
|
||||||
|
height: 134px
|
||||||
|
margin: 0
|
||||||
|
padding: 0
|
||||||
|
|
||||||
#victory-header
|
#victory-header
|
||||||
position: absolute
|
position: relative
|
||||||
left: 135px
|
|
||||||
display: block
|
|
||||||
margin: 10px auto 0
|
|
||||||
// http://easings.net/#easeOutBack plus tweaked a bit: http://cubic-bezier.com/#.18,.68,.75,2
|
// http://easings.net/#easeOutBack plus tweaked a bit: http://cubic-bezier.com/#.18,.68,.75,2
|
||||||
@include transition(0.5s cubic-bezier(0.18, 0.68, 0.75, 2))
|
@include transition(0.5s cubic-bezier(0.18, 0.68, 0.75, 2))
|
||||||
z-index: 1
|
z-index: 1
|
||||||
|
width: 100%
|
||||||
|
height: 100%
|
||||||
|
text-align: center
|
||||||
|
background: transparent url(/images/pages/play/level/modal/victory_hero.png/) no-repeat
|
||||||
|
background-position: center -88px
|
||||||
|
|
||||||
&.out
|
&.out
|
||||||
@include scale(0)
|
@include scale(0)
|
||||||
|
|
||||||
.modal-header
|
#victory-title
|
||||||
height: 85px
|
display: inline-block
|
||||||
border: none
|
margin-top: 74px
|
||||||
|
|
||||||
|
h1
|
||||||
|
text-transform: uppercase
|
||||||
|
text-align: center
|
||||||
|
color: $hero-yellow-text
|
||||||
|
font-size: 80px
|
||||||
|
margin: 0
|
||||||
|
padding: 0
|
||||||
|
text-shadow: black 8px 8px 0, black -8px -8px 0, black 8px -8px 0, black -8px 8px 0, black 8px 0px 0, black 0px -8px 0, black -8px 0px 0, black 0px 8px 0
|
||||||
|
|
||||||
//- Achievement panels
|
//- Achievement panels
|
||||||
|
|
||||||
.modal-body
|
.modal-body
|
||||||
padding: 0 20px
|
padding: 0 20px
|
||||||
min-height: 30px
|
min-height: 30px
|
||||||
|
margin-top: 160px
|
||||||
|
|
||||||
.achievement-panel
|
.achievement-panel
|
||||||
background: url("/images/pages/play/level/modal/achievement_plate.png")
|
background: transparent url("/images/pages/play/level/modal/victory_modal_shelf.png") no-repeat center 73px
|
||||||
width: 451px
|
width: 824px
|
||||||
height: 144px
|
height: 127px
|
||||||
margin: 5px auto
|
margin: 0px -37px 0px -57px
|
||||||
position: relative
|
position: relative
|
||||||
|
|
||||||
@include transition-duration(1s)
|
@include transition-duration(1s)
|
||||||
|
@ -71,12 +105,16 @@
|
||||||
|
|
||||||
.achievement-description
|
.achievement-description
|
||||||
@include opacity(0.75)
|
@include opacity(0.75)
|
||||||
|
z-index: 1
|
||||||
position: absolute
|
position: absolute
|
||||||
text-align: center
|
text-align: center
|
||||||
left: 95px
|
left: 95px
|
||||||
right: 98px
|
right: 98px
|
||||||
top: 10px
|
top: 86px
|
||||||
color: white
|
color: $hero-yellow-text
|
||||||
|
font-weight: bold
|
||||||
|
text-transform: uppercase
|
||||||
|
font-family: 'Open Sans Condensed'
|
||||||
white-space: nowrap
|
white-space: nowrap
|
||||||
overflow: hidden
|
overflow: hidden
|
||||||
text-overflow: ellipsis
|
text-overflow: ellipsis
|
||||||
|
@ -85,8 +123,7 @@
|
||||||
position: absolute
|
position: absolute
|
||||||
left: 25px
|
left: 25px
|
||||||
right: 23px
|
right: 23px
|
||||||
top: 41px
|
top: 0
|
||||||
bottom: 18px
|
|
||||||
@include flexbox()
|
@include flexbox()
|
||||||
@include flex-justify-center()
|
@include flex-justify-center()
|
||||||
|
|
||||||
|
@ -102,7 +139,7 @@
|
||||||
z-index: 1
|
z-index: 1
|
||||||
@include transition(0.25s ease)
|
@include transition(0.25s ease)
|
||||||
|
|
||||||
&.hero, &.item
|
&.hero, &.item, &.xp, &.gems
|
||||||
background: url("/images/pages/play/level/modal/reward_plate_wide.png")
|
background: url("/images/pages/play/level/modal/reward_plate_wide.png")
|
||||||
width: 120px
|
width: 120px
|
||||||
height: 83px
|
height: 83px
|
||||||
|
@ -185,28 +222,112 @@
|
||||||
.gems .pulse
|
.gems .pulse
|
||||||
@include animation(rewardPulse 0.25s infinite)
|
@include animation(rewardPulse 0.25s infinite)
|
||||||
|
|
||||||
//- Footer
|
|
||||||
|
|
||||||
.modal-footer
|
//- Footer - totals
|
||||||
padding-bottom: 0
|
|
||||||
|
|
||||||
p.sign-up-poke
|
|
||||||
color: white
|
|
||||||
|
|
||||||
.sign-up-button
|
|
||||||
float: right
|
|
||||||
margin: 2px 10px
|
|
||||||
|
|
||||||
#totals
|
#totals
|
||||||
color: white
|
width: 709px
|
||||||
|
height: 96px
|
||||||
|
background: transparent url(/images/pages/play/level/modal/xp_gems_parchment.png)
|
||||||
|
position: relative
|
||||||
|
text-align: left
|
||||||
|
|
||||||
|
.total-wrapper
|
||||||
|
position: absolute
|
||||||
|
top: 18px
|
||||||
|
|
||||||
|
&#xp-wrapper
|
||||||
|
left: 117px
|
||||||
|
width: 300px
|
||||||
|
|
||||||
|
&#gem-wrapper
|
||||||
|
left: 529px
|
||||||
|
|
||||||
|
.total-label
|
||||||
|
width: 90px
|
||||||
|
|
||||||
|
.total-count
|
||||||
|
float: left
|
||||||
|
font-size: 45px
|
||||||
|
font-weight: bold
|
||||||
|
color: rgb(40, 33, 22)
|
||||||
|
margin-right: 12px
|
||||||
|
|
||||||
|
.total-label
|
||||||
|
float: left
|
||||||
|
color: rgb(103, 92, 76)
|
||||||
|
text-transform: uppercase
|
||||||
|
font-weight: bold
|
||||||
|
font-family: 'Open Sans Condensed'
|
||||||
|
font-size: 18px
|
||||||
|
margin-top: 13px
|
||||||
|
line-height: 18px
|
||||||
|
|
||||||
|
.xp-bar-outer
|
||||||
|
background-color: rgb(40, 33, 22)
|
||||||
|
border: 4px solid rgb(40, 33, 22)
|
||||||
|
border-radius: 8px
|
||||||
|
width: 150px
|
||||||
|
height: 16px
|
||||||
|
margin-top: 3px
|
||||||
|
position: relative
|
||||||
|
float: left
|
||||||
|
|
||||||
|
.xp-bar-already-achieved
|
||||||
|
background-color: rgb(166, 213, 88)
|
||||||
|
//background-color: white
|
||||||
|
border-radius: 8px
|
||||||
|
height: 100%
|
||||||
|
position: absolute
|
||||||
|
z-index: 1
|
||||||
|
|
||||||
|
.xp-bar-total
|
||||||
|
background-color: rgb(253, 171, 45)
|
||||||
|
border: 1px solid rgb(239, 177, 73)
|
||||||
|
border-radius: 8px
|
||||||
|
height: 100%
|
||||||
|
position: absolute
|
||||||
|
|
||||||
|
|
||||||
|
//- Footer - other stuff
|
||||||
|
|
||||||
|
.modal-footer
|
||||||
|
// Negative bottom margin counteracts most of the extra the border image height.
|
||||||
|
margin: 0 0 -80px 0
|
||||||
|
padding: 0 20px
|
||||||
|
text-align: center
|
||||||
|
|
||||||
|
.sign-up-poke
|
||||||
|
width: 430px
|
||||||
|
|
||||||
|
.sign-up-blurb
|
||||||
|
width: 175px
|
||||||
|
font-family: 'Open Sans Condensed'
|
||||||
|
font-weight: bold
|
||||||
|
text-transform: uppercase
|
||||||
|
font-size: 18px
|
||||||
|
line-height: 18px
|
||||||
|
text-align: left
|
||||||
|
float: left
|
||||||
|
margin: 5px 0 0 5px
|
||||||
|
color: rgb(160, 150, 126)
|
||||||
|
|
||||||
|
.sign-up-button
|
||||||
|
width: 250px
|
||||||
|
height: 60px
|
||||||
|
line-height: 30px
|
||||||
|
margin: 0
|
||||||
|
float: left
|
||||||
|
|
||||||
|
|
||||||
.next-level-buttons
|
.next-level-buttons
|
||||||
float: right
|
float: right
|
||||||
|
|
||||||
.next-level-button
|
.next-level-button, .return-to-ladder-button
|
||||||
display: block
|
width: 258px
|
||||||
margin: 8px 10px
|
height: 60px
|
||||||
width: 150px
|
line-height: 30px
|
||||||
|
margin: 0 10px
|
||||||
|
|
||||||
.ladder-submission-view
|
.ladder-submission-view
|
||||||
display: inline-block
|
display: inline-block
|
||||||
|
@ -223,7 +344,11 @@
|
||||||
|
|
||||||
.hour-of-code-done
|
.hour-of-code-done
|
||||||
clear: both
|
clear: both
|
||||||
padding-top: 10px
|
margin: 5px auto 0 auto
|
||||||
|
padding: 10px
|
||||||
|
background-color: rgba(22, 34, 30, 0.5)
|
||||||
|
border-radius: 8px
|
||||||
|
display: inline-block
|
||||||
|
|
||||||
strong
|
strong
|
||||||
color: white
|
color: white
|
||||||
|
@ -241,23 +366,25 @@
|
||||||
|
|
||||||
html.no-borderimage
|
html.no-borderimage
|
||||||
#hero-victory-modal
|
#hero-victory-modal
|
||||||
|
.modal-dialog
|
||||||
|
margin-top: 251px
|
||||||
.background-wrapper
|
.background-wrapper
|
||||||
border: 0
|
border: 0
|
||||||
background: url("/images/pages/play/level/modal/victory_modal_background.png")
|
background: url("/images/pages/play/level/modal/victory_modal_background.png")
|
||||||
height: 650px
|
height: 713px
|
||||||
|
|
||||||
|
&.full-achievements
|
||||||
|
@media only screen and (max-height: 720px)
|
||||||
|
.modal-dialog
|
||||||
|
margin-top: 175px
|
||||||
#victory-header
|
#victory-header
|
||||||
margin-top: 40px
|
background: transparent
|
||||||
left: 160px
|
@media only screen and (max-height: 640px)
|
||||||
#victory-banner
|
.modal-dialog
|
||||||
left: 0px
|
margin-top: 121px
|
||||||
top: 40px
|
#victory-header
|
||||||
.modal-header
|
display: none
|
||||||
height: 110px
|
|
||||||
.modal-content
|
|
||||||
height: 650px
|
|
||||||
padding-bottom: 0
|
|
||||||
.modal-footer
|
|
||||||
bottom: 20px
|
|
||||||
|
|
||||||
body.ipad
|
body.ipad
|
||||||
#hero-victory-modal
|
#hero-victory-modal
|
||||||
|
|
|
@ -2,6 +2,16 @@
|
||||||
|
|
||||||
#item-details-view
|
#item-details-view
|
||||||
|
|
||||||
|
.big-font
|
||||||
|
text-transform: uppercase
|
||||||
|
font-family: "Open Sans Condensed"
|
||||||
|
font-weight: bold
|
||||||
|
|
||||||
|
.one-line
|
||||||
|
white-space: nowrap
|
||||||
|
overflow: hidden
|
||||||
|
text-overflow: ellipsis
|
||||||
|
|
||||||
.nano-content
|
.nano-content
|
||||||
padding: 10px
|
padding: 10px
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
$heroCanvasHeight: 265px
|
$heroCanvasHeight: 265px
|
||||||
|
|
||||||
#play-heroes-modal
|
#play-heroes-modal
|
||||||
|
@include user-select(none)
|
||||||
|
|
||||||
//- Clear modal defaults
|
//- Clear modal defaults
|
||||||
|
|
||||||
|
@ -187,6 +188,7 @@ $heroCanvasHeight: 265px
|
||||||
|
|
||||||
.hero-stats
|
.hero-stats
|
||||||
color: white
|
color: white
|
||||||
|
@include user-select(initial)
|
||||||
|
|
||||||
h2
|
h2
|
||||||
margin-top: 0px
|
margin-top: 0px
|
||||||
|
@ -261,6 +263,9 @@ $heroCanvasHeight: 265px
|
||||||
|
|
||||||
//- Different footer states
|
//- Different footer states
|
||||||
|
|
||||||
|
#hero-footer
|
||||||
|
@include user-select(initial)
|
||||||
|
|
||||||
#purchasable-hero-explanation, #loading-hero-explanation
|
#purchasable-hero-explanation, #loading-hero-explanation
|
||||||
position: absolute
|
position: absolute
|
||||||
left: 32px
|
left: 32px
|
||||||
|
|
|
@ -142,6 +142,29 @@ $gameControlMargin: 30px
|
||||||
border: 3px solid gold
|
border: 3px solid gold
|
||||||
@include box-shadow(0px 0px 35px skyblue)
|
@include box-shadow(0px 0px 35px skyblue)
|
||||||
|
|
||||||
|
img.banner
|
||||||
|
position: absolute
|
||||||
|
bottom: 38%
|
||||||
|
left: -50%
|
||||||
|
width: 200%
|
||||||
|
pointer-events: none
|
||||||
|
|
||||||
|
img.star
|
||||||
|
width: 100%
|
||||||
|
bottom: 7%
|
||||||
|
position: absolute
|
||||||
|
pointer-events: none
|
||||||
|
|
||||||
|
.glyphicon-star
|
||||||
|
position: absolute
|
||||||
|
color: lightblue
|
||||||
|
font-size: 21px
|
||||||
|
left: 1.5px
|
||||||
|
|
||||||
|
&.started .glyphicon-star
|
||||||
|
left: 0.5px
|
||||||
|
|
||||||
|
|
||||||
.level-shadow
|
.level-shadow
|
||||||
z-index: 1
|
z-index: 1
|
||||||
width: $levelDotShadowWidth
|
width: $levelDotShadowWidth
|
||||||
|
|
|
@ -1,7 +1,11 @@
|
||||||
extends /templates/core/modal-base
|
extends /templates/core/modal-base
|
||||||
block modal-header-content
|
block modal-header-content
|
||||||
img(src="/images/pages/play/level/modal/victory_modal_blue_banner.png")#victory-banner
|
#victory-header.out
|
||||||
img(src="/images/pages/play/level/modal/victory_word.png")#victory-header.out
|
#victory-title
|
||||||
|
if me.get('preferredLanguage') && me.get('preferredLanguage').split('-')[0] == 'en'
|
||||||
|
img(src="/images/pages/play/level/modal/victory_word.png", draggable="false")
|
||||||
|
else
|
||||||
|
h1(data-i18n="play_level.victory") Victory
|
||||||
|
|
||||||
block modal-body-content
|
block modal-body-content
|
||||||
|
|
||||||
|
@ -43,33 +47,41 @@ block modal-body-content
|
||||||
.reward-text= animate ? 'New Item' : item.get('name')
|
.reward-text= animate ? 'New Item' : item.get('name')
|
||||||
|
|
||||||
block modal-footer-content
|
block modal-footer-content
|
||||||
|
#totals
|
||||||
|
.total-wrapper#xp-wrapper
|
||||||
|
.total-count#xp-total 0
|
||||||
|
.total-label
|
||||||
|
span.spr(data-i18n="play_level.victory_experience_gained") XP Gained
|
||||||
|
| -
|
||||||
|
span.spl.spr(data-i18n="general.player_level") Level
|
||||||
|
span.level= me.level()
|
||||||
|
.xp-bar-outer
|
||||||
|
.xp-bar-already-achieved
|
||||||
|
.xp-bar-total
|
||||||
|
.total-wrapper#gem-wrapper
|
||||||
|
.total-count#gem-total 0
|
||||||
|
.total-label(data-i18n="play_level.victory_gems_gained") Gems Gained
|
||||||
|
|
||||||
if me.get('anonymous')
|
if me.get('anonymous')
|
||||||
p.sign-up-poke.hide
|
.sign-up-poke.hide
|
||||||
button.btn.btn-success.sign-up-button.btn-large(data-toggle="coco-modal", data-target="core/AuthModal", data-i18n="play_level.victory_sign_up") Sign Up to Save Progress
|
.sign-up-blurb(data-i18n="play_level.victory_sign_up_poke") Want to save your code? Create a free account!
|
||||||
span(data-i18n="play_level.victory_sign_up_poke") Want to save your code? Create a free account!
|
button.btn.btn-illustrated.btn-warning.sign-up-button.btn-lg(data-toggle="coco-modal", data-target="core/AuthModal", data-i18n="play_level.victory_sign_up") Sign Up to Save Progress
|
||||||
|
|
||||||
div#totals.pull-left
|
button.btn.btn-illustrated.btn-lg.btn-warning.hide#saving-progress-label(disabled, data-i18n="play_level.victory_saving_progress") Saving Progress
|
||||||
span.spr Experience Gained:
|
|
||||||
span#xp-total +0
|
|
||||||
br
|
|
||||||
span.spr Gems Gained:
|
|
||||||
span#gem-total +0
|
|
||||||
|
|
||||||
button.btn.btn-warning.hide#saving-progress-label(disabled, data-i18n="play_level.victory_saving_progress") Saving Progress
|
|
||||||
|
|
||||||
.next-level-buttons
|
.next-level-buttons
|
||||||
if readyToRank
|
if readyToRank
|
||||||
.ladder-submission-view
|
.ladder-submission-view
|
||||||
else if level.get('type') === 'hero-ladder'
|
else if level.get('type') === 'hero-ladder'
|
||||||
button.btn.btn-primary.return-to-ladder-button(data-href="/play/ladder/#{level.get('slug')}#my-matches", data-dismiss="modal", data-i18n="play_level.victory_return_to_ladder") Return to Ladder
|
button.btn.btn-illustrated.btn-primary.btn-lg.return-to-ladder-button(data-href="/play/ladder/#{level.get('slug')}#my-matches", data-dismiss="modal", data-i18n="play_level.victory_return_to_ladder") Return to Ladder
|
||||||
else
|
else
|
||||||
button.btn.btn-success.world-map-button.next-level-button.hide#continue-button(data-i18n="play_level.victory_play_continue") Continue
|
button.btn.btn-illustrated.btn-success.btn-lg.world-map-button.next-level-button.hide#continue-button(data-i18n="play_level.victory_play_continue") Continue
|
||||||
|
|
||||||
if showHourOfCodeDoneButton
|
if showHourOfCodeDoneButton
|
||||||
.hour-of-code-done
|
.hour-of-code-done
|
||||||
hr
|
|
||||||
a.image-link(href="http://code.org/api/hour/finish")
|
a.image-link(href="http://code.org/api/hour/finish")
|
||||||
img(src="/images/level/csedweek-logo-final-small.jpg", alt="CS Ed Week Hour of Code", title="I'm finished with my Hour of Code", width=80)
|
img(src="/images/level/csedweek-logo-final-small.jpg", alt="CS Ed Week Hour of Code", title="I'm finished with my Hour of Code", width=80)
|
||||||
strong(data-i18n="play_level.victory_hour_of_code_done") Are You Done?
|
strong(data-i18n="play_level.victory_hour_of_code_done") Are You Done?
|
||||||
a.text-link(href="http://code.org/api/hour/finish")
|
a.text-link(href="http://code.org/api/hour/finish")
|
||||||
span(data-i18n="play_level.victory_hour_of_code_done_yes") Yes, I'm finished with my Hour of Code!
|
span(data-i18n="play_level.victory_hour_of_code_done_yes") Yes, I'm finished with my Hour of Code!
|
||||||
|
.clearfix
|
|
@ -12,6 +12,12 @@
|
||||||
- seenNext = seenNext || next;
|
- seenNext = seenNext || next;
|
||||||
div(style="left: #{level.x}%; bottom: #{level.y}%; background-color: #{level.color}", class="level" + (next ? " next" : "") + (level.disabled ? " disabled" : "") + (level.locked ? " locked" : "") + " " + levelStatusMap[level.id] || "", data-level-id=level.id, title=level.name + (level.disabled ? ' (Coming Soon to Adventurers)' : ''))
|
div(style="left: #{level.x}%; bottom: #{level.y}%; background-color: #{level.color}", class="level" + (next ? " next" : "") + (level.disabled ? " disabled" : "") + (level.locked ? " locked" : "") + " " + levelStatusMap[level.id] || "", data-level-id=level.id, title=level.name + (level.disabled ? ' (Coming Soon to Adventurers)' : ''))
|
||||||
a(href=level.type == 'hero' ? '#' : level.disabled ? "/play" : "/play/#{level.levelPath || 'level'}/#{level.id}", disabled=level.disabled, data-level-id=level.id, data-level-path=level.levelPath || 'level', data-level-name=level.name)
|
a(href=level.type == 'hero' ? '#' : level.disabled ? "/play" : "/play/#{level.levelPath || 'level'}/#{level.id}", disabled=level.disabled, data-level-id=level.id, data-level-path=level.levelPath || 'level', data-level-name=level.name)
|
||||||
|
if level.requiresSubscription
|
||||||
|
img.star(src="/images/pages/play/star.png")
|
||||||
|
if levelStatusMap[level.id] === 'complete'
|
||||||
|
img.banner(src="/images/pages/play/level-banner-complete.png")
|
||||||
|
if levelStatusMap[level.id] === 'started'
|
||||||
|
img.banner(src="/images/pages/play/level-banner-started.png")
|
||||||
div(style="left: #{level.x}%; bottom: #{level.y}%", class="level-shadow" + (next ? " next" : "") + " " + levelStatusMap[level.id] || "")
|
div(style="left: #{level.x}%; bottom: #{level.y}%", class="level-shadow" + (next ? " next" : "") + " " + levelStatusMap[level.id] || "")
|
||||||
.level-info-container(data-level-id=level.id, data-level-path=level.levelPath || 'level', data-level-name=level.name)
|
.level-info-container(data-level-id=level.id, data-level-path=level.levelPath || 'level', data-level-name=level.name)
|
||||||
div(class="level-info " + (levelStatusMap[level.id] || ""))
|
div(class="level-info " + (levelStatusMap[level.id] || ""))
|
||||||
|
|
|
@ -10,6 +10,7 @@ MusicPlayer = require 'lib/surface/MusicPlayer'
|
||||||
storage = require 'core/storage'
|
storage = require 'core/storage'
|
||||||
AuthModal = require 'views/core/AuthModal'
|
AuthModal = require 'views/core/AuthModal'
|
||||||
SubscribeModal = require 'views/play/modal/SubscribeModal'
|
SubscribeModal = require 'views/play/modal/SubscribeModal'
|
||||||
|
Level = require 'models/Level'
|
||||||
|
|
||||||
trackedHourOfCode = false
|
trackedHourOfCode = false
|
||||||
|
|
||||||
|
@ -126,10 +127,10 @@ module.exports = class WorldMapView extends RootView
|
||||||
getRenderData: (context={}) ->
|
getRenderData: (context={}) ->
|
||||||
context = super(context)
|
context = super(context)
|
||||||
context.campaign = _.find campaigns, { id: @terrain }
|
context.campaign = _.find campaigns, { id: @terrain }
|
||||||
for level, index in context.campaign.levels
|
for level in context.campaign.levels
|
||||||
level.x ?= 10 + 80 * Math.random()
|
level.x ?= 10 + 80 * Math.random()
|
||||||
level.y ?= 10 + 80 * Math.random()
|
level.y ?= 10 + 80 * Math.random()
|
||||||
level.locked = index > 0 and not me.ownsLevel level.original
|
level.locked = not me.ownsLevel level.original
|
||||||
window.levelUnlocksNotWorking = true if level.locked and level.id is @nextLevel # Temporary
|
window.levelUnlocksNotWorking = true if level.locked and level.id is @nextLevel # Temporary
|
||||||
level.locked = false if window.levelUnlocksNotWorking # Temporary; also possible in HeroVictoryModal
|
level.locked = false if window.levelUnlocksNotWorking # Temporary; also possible in HeroVictoryModal
|
||||||
level.locked = false if @levelStatusMap[level.id] in ['started', 'complete']
|
level.locked = false if @levelStatusMap[level.id] in ['started', 'complete']
|
||||||
|
@ -138,12 +139,17 @@ module.exports = class WorldMapView extends RootView
|
||||||
level.color = 'rgb(255, 80, 60)'
|
level.color = 'rgb(255, 80, 60)'
|
||||||
if level.requiresSubscription
|
if level.requiresSubscription
|
||||||
level.color = 'rgb(80, 130, 200)'
|
level.color = 'rgb(80, 130, 200)'
|
||||||
|
level.hidden = level.locked or level.disabled
|
||||||
|
|
||||||
|
# put lower levels in last, so in the world map they layer over one another properly.
|
||||||
|
context.campaign.levels = (_.sortBy context.campaign.levels, 'y').reverse()
|
||||||
|
|
||||||
context.levelStatusMap = @levelStatusMap
|
context.levelStatusMap = @levelStatusMap
|
||||||
context.levelPlayCountMap = @levelPlayCountMap
|
context.levelPlayCountMap = @levelPlayCountMap
|
||||||
context.isIPadApp = application.isIPadApp
|
context.isIPadApp = application.isIPadApp
|
||||||
context.mapType = _.string.slugify @terrain
|
context.mapType = _.string.slugify @terrain
|
||||||
context.nextLevel = @nextLevel
|
context.nextLevel = @nextLevel
|
||||||
context.forestIsAvailable = @startedForestLevel or '541b67f71ccc8eaae19f3c62' in (me.get('earned')?.levels or [])
|
context.forestIsAvailable = @startedForestLevel or (Level.levels['defense-of-plainswood'] in (me.get('earned')?.levels or []))
|
||||||
context.requiresSubscription = @requiresSubscription
|
context.requiresSubscription = @requiresSubscription
|
||||||
context
|
context
|
||||||
|
|
||||||
|
@ -345,7 +351,7 @@ dungeon = [
|
||||||
name: 'Dungeons of Kithgard'
|
name: 'Dungeons of Kithgard'
|
||||||
type: 'hero'
|
type: 'hero'
|
||||||
id: 'dungeons-of-kithgard'
|
id: 'dungeons-of-kithgard'
|
||||||
original: '528110f30268d018e3000001'
|
original: '5411cb3769152f1707be029c'
|
||||||
description: 'Grab the gem, but touch nothing else. Start here.'
|
description: 'Grab the gem, but touch nothing else. Start here.'
|
||||||
x: 14
|
x: 14
|
||||||
y: 15.5
|
y: 15.5
|
||||||
|
|
|
@ -9,6 +9,8 @@ ThangType = require 'models/ThangType'
|
||||||
LadderSubmissionView = require 'views/play/common/LadderSubmissionView'
|
LadderSubmissionView = require 'views/play/common/LadderSubmissionView'
|
||||||
AudioPlayer = require 'lib/AudioPlayer'
|
AudioPlayer = require 'lib/AudioPlayer'
|
||||||
CampaignOptions = require 'lib/CampaignOptions'
|
CampaignOptions = require 'lib/CampaignOptions'
|
||||||
|
User = require 'models/User'
|
||||||
|
utils = require 'core/utils'
|
||||||
|
|
||||||
module.exports = class HeroVictoryModal extends ModalView
|
module.exports = class HeroVictoryModal extends ModalView
|
||||||
id: 'hero-victory-modal'
|
id: 'hero-victory-modal'
|
||||||
|
@ -36,6 +38,8 @@ module.exports = class HeroVictoryModal extends ModalView
|
||||||
@listenToOnce @achievements, 'sync', @onAchievementsLoaded
|
@listenToOnce @achievements, 'sync', @onAchievementsLoaded
|
||||||
@readyToContinue = false
|
@readyToContinue = false
|
||||||
@waitingToContinueSince = new Date()
|
@waitingToContinueSince = new Date()
|
||||||
|
@previousXP = me.get 'points', true
|
||||||
|
@previousLevel = me.level()
|
||||||
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'victory'
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'victory'
|
||||||
|
|
||||||
destroy: ->
|
destroy: ->
|
||||||
|
@ -47,6 +51,7 @@ module.exports = class HeroVictoryModal extends ModalView
|
||||||
super()
|
super()
|
||||||
|
|
||||||
onAchievementsLoaded: ->
|
onAchievementsLoaded: ->
|
||||||
|
@$el.toggleClass 'full-achievements', @achievements.models.length is 3
|
||||||
thangTypeOriginals = []
|
thangTypeOriginals = []
|
||||||
achievementIDs = []
|
achievementIDs = []
|
||||||
for achievement in @achievements.models
|
for achievement in @achievements.models
|
||||||
|
@ -133,6 +138,7 @@ module.exports = class HeroVictoryModal extends ModalView
|
||||||
return unless @supermodel.finished()
|
return unless @supermodel.finished()
|
||||||
@playSelectionSound hero, true for original, hero of @thangTypes # Preload them
|
@playSelectionSound hero, true for original, hero of @thangTypes # Preload them
|
||||||
@updateSavingProgressStatus()
|
@updateSavingProgressStatus()
|
||||||
|
@updateXPBars 0
|
||||||
@$el.find('#victory-header').delay(250).queue(->
|
@$el.find('#victory-header').delay(250).queue(->
|
||||||
$(@).removeClass('out').dequeue()
|
$(@).removeClass('out').dequeue()
|
||||||
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'victory-title-appear' # TODO: actually add this
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'victory-title-appear' # TODO: actually add this
|
||||||
|
@ -196,7 +202,8 @@ module.exports = class HeroVictoryModal extends ModalView
|
||||||
totalXP = @totalXPAnimated + newXP
|
totalXP = @totalXPAnimated + newXP
|
||||||
if totalXP isnt @lastTotalXP
|
if totalXP isnt @lastTotalXP
|
||||||
panel.textEl.text('+' + newXP)
|
panel.textEl.text('+' + newXP)
|
||||||
@XPEl.text('+' + totalXP)
|
@XPEl.text(totalXP)
|
||||||
|
@updateXPBars(totalXP)
|
||||||
xpTrigger = 'xp-' + (totalXP % 6) # 6 xp sounds
|
xpTrigger = 'xp-' + (totalXP % 6) # 6 xp sounds
|
||||||
Backbone.Mediator.publish 'audio-player:play-sound', trigger: xpTrigger, volume: 0.5 + ratio / 2
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: xpTrigger, volume: 0.5 + ratio / 2
|
||||||
@lastTotalXP = totalXP
|
@lastTotalXP = totalXP
|
||||||
|
@ -205,7 +212,7 @@ module.exports = class HeroVictoryModal extends ModalView
|
||||||
totalGems = @totalGemsAnimated + newGems
|
totalGems = @totalGemsAnimated + newGems
|
||||||
if totalGems isnt @lastTotalGems
|
if totalGems isnt @lastTotalGems
|
||||||
panel.textEl.text('+' + newGems)
|
panel.textEl.text('+' + newGems)
|
||||||
@gemEl.text('+' + totalGems)
|
@gemEl.text(totalGems)
|
||||||
gemTrigger = 'gem-' + (parseInt(panel.number * ratio) % 4) # 4 gem sounds
|
gemTrigger = 'gem-' + (parseInt(panel.number * ratio) % 4) # 4 gem sounds
|
||||||
Backbone.Mediator.publish 'audio-player:play-sound', trigger: gemTrigger, volume: 0.5 + ratio / 2
|
Backbone.Mediator.publish 'audio-player:play-sound', trigger: gemTrigger, volume: 0.5 + ratio / 2
|
||||||
@lastTotalGems = totalGems
|
@lastTotalGems = totalGems
|
||||||
|
@ -237,6 +244,32 @@ module.exports = class HeroVictoryModal extends ModalView
|
||||||
--t
|
--t
|
||||||
-0.5 * (t * (t - 2) - 1)
|
-0.5 * (t * (t - 2) - 1)
|
||||||
|
|
||||||
|
updateXPBars: (achievedXP) ->
|
||||||
|
previousXP = @previousXP
|
||||||
|
previousLevel = @previousLevel
|
||||||
|
|
||||||
|
currentXP = previousXP + achievedXP
|
||||||
|
currentLevel = User.levelFromExp currentXP
|
||||||
|
currentLevelXP = User.expForLevel currentLevel
|
||||||
|
|
||||||
|
nextLevel = currentLevel + 1
|
||||||
|
nextLevelXP = User.expForLevel nextLevel
|
||||||
|
|
||||||
|
leveledUp = currentLevel > previousLevel
|
||||||
|
totalXPNeeded = nextLevelXP - currentLevelXP
|
||||||
|
alreadyAchievedPercentage = 100 * (previousXP - currentLevelXP) / totalXPNeeded
|
||||||
|
alreadyAchievedPercentage = 0 if alreadyAchievedPercentage < 0 # In case of level up
|
||||||
|
if leveledUp
|
||||||
|
newlyAchievedPercentage = 100 * (currentXP - currentLevelXP) / totalXPNeeded
|
||||||
|
else
|
||||||
|
newlyAchievedPercentage = 100 * achievedXP / totalXPNeeded
|
||||||
|
|
||||||
|
xpEl = $('#xp-wrapper')
|
||||||
|
xpBarJustEarned = xpEl.find('.xp-bar-already-achieved').css('width', alreadyAchievedPercentage + '%')
|
||||||
|
xpBarTotal = xpEl.find('.xp-bar-total').css('width', (alreadyAchievedPercentage + newlyAchievedPercentage) + '%')
|
||||||
|
levelLabel = xpEl.find('.level')
|
||||||
|
utils.replaceText levelLabel, currentLevel
|
||||||
|
|
||||||
endSequentialAnimations: ->
|
endSequentialAnimations: ->
|
||||||
clearInterval @sequentialAnimationInterval
|
clearInterval @sequentialAnimationInterval
|
||||||
@animationComplete = true
|
@animationComplete = true
|
||||||
|
|
|
@ -446,7 +446,7 @@ module.exports = class InventoryModal extends ModalView
|
||||||
patchSession = patchMe = false
|
patchSession = patchMe = false
|
||||||
patchSession ||= not _.isEqual inventory, sessionHeroConfig.inventory
|
patchSession ||= not _.isEqual inventory, sessionHeroConfig.inventory
|
||||||
sessionHeroConfig.inventory = inventory
|
sessionHeroConfig.inventory = inventory
|
||||||
if hero = @selectedHero.get('original')
|
if hero = @selectedHero?.get('original')
|
||||||
patchSession ||= not _.isEqual hero, sessionHeroConfig.thangType
|
patchSession ||= not _.isEqual hero, sessionHeroConfig.thangType
|
||||||
sessionHeroConfig.thangType = hero
|
sessionHeroConfig.thangType = hero
|
||||||
patchMe ||= not _.isEqual inventory, lastHeroConfig.inventory
|
patchMe ||= not _.isEqual inventory, lastHeroConfig.inventory
|
||||||
|
@ -489,13 +489,14 @@ module.exports = class InventoryModal extends ModalView
|
||||||
@itemGroups.lockedItems.remove(item)
|
@itemGroups.lockedItems.remove(item)
|
||||||
# Redo all item sorting to make sure that we don't clobber state changes since last render.
|
# Redo all item sorting to make sure that we don't clobber state changes since last render.
|
||||||
equipped = _.values @getCurrentEquipmentConfig()
|
equipped = _.values @getCurrentEquipmentConfig()
|
||||||
@sortItem(item, equipped) for item in @items.models
|
@sortItem(otherItem, equipped) for otherItem in @items.models
|
||||||
@renderSelectors('#unequipped', '#gems-count')
|
@renderSelectors('#unequipped', '#gems-count')
|
||||||
|
|
||||||
@requireLevelEquipment()
|
@requireLevelEquipment()
|
||||||
@delegateEvents()
|
@delegateEvents()
|
||||||
@setUpDraggableEventsForAvailableEquipment()
|
@setUpDraggableEventsForAvailableEquipment()
|
||||||
@itemDetailsView.setItem(item)
|
@itemDetailsView.setItem(item)
|
||||||
|
@onScrollUnequipped()
|
||||||
|
|
||||||
Backbone.Mediator.publish 'store:item-purchased', item: item, itemSlug: item.get('slug')
|
Backbone.Mediator.publish 'store:item-purchased', item: item, itemSlug: item.get('slug')
|
||||||
else
|
else
|
||||||
|
@ -550,6 +551,7 @@ module.exports = class InventoryModal extends ModalView
|
||||||
gender = if @selectedHero?.get('slug') in heroGenders.male then 'male' else 'female'
|
gender = if @selectedHero?.get('slug') in heroGenders.male then 'male' else 'female'
|
||||||
@$el.find('#hero-image, #hero-image-hair, #hero-image-head, #hero-image-thumb').removeClass().addClass "#{gender} #{heroClass}"
|
@$el.find('#hero-image, #hero-image-hair, #hero-image-head, #hero-image-thumb').removeClass().addClass "#{gender} #{heroClass}"
|
||||||
equipment = @getCurrentEquipmentConfig()
|
equipment = @getCurrentEquipmentConfig()
|
||||||
|
@onScrollUnequipped()
|
||||||
return unless _.size(equipment) and @supermodel.finished()
|
return unless _.size(equipment) and @supermodel.finished()
|
||||||
@removeDollImages()
|
@removeDollImages()
|
||||||
slotsWithImages = []
|
slotsWithImages = []
|
||||||
|
@ -562,7 +564,6 @@ module.exports = class InventoryModal extends ModalView
|
||||||
@$el.find('#hero-image-thumb').toggle not ('gloves' in slotsWithImages)
|
@$el.find('#hero-image-thumb').toggle not ('gloves' in slotsWithImages)
|
||||||
|
|
||||||
@equipment = @options.equipment = equipment
|
@equipment = @options.equipment = equipment
|
||||||
@onScrollUnequipped()
|
|
||||||
|
|
||||||
removeDollImages: ->
|
removeDollImages: ->
|
||||||
@$el.find('.doll-image').remove()
|
@$el.find('.doll-image').remove()
|
||||||
|
|
|
@ -87,7 +87,6 @@ module.exports = class PlayHeroesModal extends ModalView
|
||||||
@onHeroChanged direction: null, relatedTarget: @$el.find('.hero-item')[heroIndex]
|
@onHeroChanged direction: null, relatedTarget: @$el.find('.hero-item')[heroIndex]
|
||||||
@$el.find('.hero-stat').tooltip()
|
@$el.find('.hero-stat').tooltip()
|
||||||
@buildCodeLanguages()
|
@buildCodeLanguages()
|
||||||
Backbone.Mediator.publish 'audio-player:play-sound', trigger: 'game-menu-open', volume: 1
|
|
||||||
|
|
||||||
rerenderFooter: ->
|
rerenderFooter: ->
|
||||||
@formatHero @visibleHero
|
@formatHero @visibleHero
|
||||||
|
|