quest design update
BIN
Habitica/res/drawable-hdpi/icon_boss_health.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
Habitica/res/drawable-hdpi/icon_boss_rage.png
Normal file
|
After Width: | Height: | Size: 2.1 KiB |
BIN
Habitica/res/drawable-mdpi/icon_boss_health.png
Normal file
|
After Width: | Height: | Size: 2 KiB |
BIN
Habitica/res/drawable-mdpi/icon_boss_rage.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
Habitica/res/drawable-xhdpi/icon_boss_health.png
Normal file
|
After Width: | Height: | Size: 3.9 KiB |
BIN
Habitica/res/drawable-xhdpi/icon_boss_rage.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
Habitica/res/drawable-xxhdpi/icon_boss_health.png
Normal file
|
After Width: | Height: | Size: 5.5 KiB |
BIN
Habitica/res/drawable-xxhdpi/icon_boss_rage.png
Normal file
|
After Width: | Height: | Size: 3.8 KiB |
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<solid android:color="@color/green_50"/>
|
||||
<solid android:color="@color/green_100"/>
|
||||
<corners android:radius="20dip"/>
|
||||
<padding android:left="0dip" android:top="0dip" android:right="0dip" android:bottom="0dip" />
|
||||
</shape>
|
||||
</shape>
|
||||
|
|
|
|||
|
|
@ -64,8 +64,8 @@
|
|||
android:layout_marginVertical="@dimen/spacing_medium"
|
||||
android:gravity="center"
|
||||
android:lineSpacingExtra="4dp"
|
||||
android:textColor="@color/text_primary"
|
||||
android:textSize="20sp"
|
||||
android:textColor="@color/text_secondary"
|
||||
android:textSize="16sp"
|
||||
android:paddingHorizontal="12dp" />
|
||||
|
||||
<TextView
|
||||
|
|
@ -100,14 +100,19 @@
|
|||
app:textColor="@color/text_primary"
|
||||
android:layout_marginHorizontal="24dp" />
|
||||
|
||||
<FrameLayout
|
||||
<LinearLayout
|
||||
android:id="@+id/revive_subscriber_wrapper"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="@dimen/spacing_large">
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="65dp"
|
||||
android:paddingStart="24dp"
|
||||
android:paddingEnd="18dp"
|
||||
android:layout_marginTop="4dp"
|
||||
android:layout_marginBottom="@dimen/spacing_large">
|
||||
android:layout_marginBottom="8dp">
|
||||
<TextView
|
||||
android:id="@+id/revive_subscriber_button"
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -133,7 +138,16 @@
|
|||
android:layout_gravity="top|end"
|
||||
android:text="@string/sub_perk"/>
|
||||
</FrameLayout>
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/faint_subscriber_description"
|
||||
android:layout_marginHorizontal="42dp"
|
||||
android:gravity="center"
|
||||
android:textColor="@color/text_teal"
|
||||
style="@style/Body1"
|
||||
/>
|
||||
</LinearLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/subscriber_benefit_used_view"
|
||||
|
|
|
|||
|
|
@ -77,13 +77,14 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="The Wail of the Whale"
|
||||
android:textColor="@color/text_primary"
|
||||
/>
|
||||
<TextView
|
||||
android:id="@+id/quest_participation_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="3 Participants"
|
||||
android:textColor="@color/text_quad" />
|
||||
android:textColor="@color/text_ternary" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -111,6 +112,7 @@
|
|||
android:layout_gravity="center_horizontal"/>
|
||||
<com.habitrpg.android.habitica.ui.views.social.OldQuestProgressView
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
android:id="@+id/quest_progress_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
|
@ -125,11 +127,13 @@
|
|||
android:textColor="@color/green_1"
|
||||
tools:text="Pending Items"
|
||||
android:background="@color/green_100"
|
||||
android:minHeight="28dp"
|
||||
android:visibility="gone"/>
|
||||
<TextView
|
||||
android:id="@+id/quest_pending_damage_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:minHeight="28dp"
|
||||
android:textSize="13sp"
|
||||
style="@style/Caption2"
|
||||
android:paddingVertical="3dp"
|
||||
|
|
@ -146,7 +150,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
style="@style/Widget.Material3.Button.TextButton"
|
||||
android:text="@string/quest_mechanics"
|
||||
android:textColor="?colorAccent" />
|
||||
android:textColor="@color/brand_button" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/quest_participant_response_wrapper"
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
android:fadingEdge="horizontal"
|
||||
android:singleLine="true"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:textColor="@color/text_red"
|
||||
android:textColor="@color/maroon100_red100"
|
||||
tools:text="Title"/>
|
||||
|
||||
<TextView
|
||||
|
|
@ -48,4 +48,4 @@
|
|||
android:gravity="center_vertical"
|
||||
android:orientation="vertical"
|
||||
android:paddingStart="16dp" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
@ -12,7 +11,7 @@
|
|||
android:id="@+id/icon_view"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_margin="8dp" />
|
||||
android:layout_marginEnd="16dp" />
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
|
|
@ -22,7 +21,8 @@
|
|||
android:id="@+id/name_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textStyle="bold"
|
||||
style="@style/SubHeader1"
|
||||
android:textColor="@color/text_primary"
|
||||
tools:text="item to collect"
|
||||
android:layout_marginBottom="@dimen/spacing_small"/>
|
||||
<com.habitrpg.common.habitica.views.ValueBar
|
||||
|
|
@ -30,6 +30,8 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:lightBackground="true"
|
||||
app:barForegroundColor="@color/green_100"/>
|
||||
app:barBackgroundColor="@color/offset_background"
|
||||
app:barForegroundColor="@color/green_100"
|
||||
app:valueTextColor="@color/text_ternary"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:text="@string/quest_mechanics_damage_description"
|
||||
style="@style/ArmoireDescriptionTextView"
|
||||
android:layout_marginBottom="12dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
|
|
@ -66,6 +67,7 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:text="@string/quest_mechanics_pausing_description"
|
||||
style="@style/ArmoireDescriptionTextView"
|
||||
android:layout_marginBottom="12dp"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
|
|
|
|||
|
|
@ -6,40 +6,83 @@
|
|||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<TextView
|
||||
android:id="@+id/bossNameView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="Quest Boss"
|
||||
style="@style/Body1"
|
||||
android:layout_marginBottom="@dimen/spacing_medium"/>
|
||||
<com.habitrpg.common.habitica.views.ValueBar
|
||||
android:id="@+id/bossHealthView"
|
||||
<LinearLayout
|
||||
android:id="@+id/boss_health_wrapper"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:barForegroundColor="@color/red_100"
|
||||
app:barPendingColor="@color/yellow_50"
|
||||
app:lightBackground="true"
|
||||
app:valueTextColor="@color/red_100"
|
||||
app:labelSpacing="@dimen/spacing_medium"
|
||||
app:descriptionTextColor="@color/yellow_5"/>
|
||||
<com.habitrpg.common.habitica.views.ValueBar
|
||||
android:id="@+id/bossRageView"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:src="@drawable/icon_boss_health"/>
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:id="@+id/bossNameView"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/SubHeader1"
|
||||
tools:text="item to collect"
|
||||
android:textColor="@color/text_primary"
|
||||
android:layout_marginBottom="@dimen/spacing_small"/>
|
||||
<com.habitrpg.common.habitica.views.ValueBar
|
||||
android:id="@+id/bossHealthView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:barForegroundColor="@color/red_100"
|
||||
app:barBackgroundColor="@color/offset_background"
|
||||
app:barPendingColor="@color/yellow_50"
|
||||
app:lightBackground="true"
|
||||
app:valueTextColor="@color/text_ternary"
|
||||
app:labelSpacing="@dimen/spacing_small"
|
||||
app:descriptionTextColor="@color/yellow_5"/>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:id="@+id/boss_rage_wrapper"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:barForegroundColor="@color/orange_100"
|
||||
app:lightBackground="true"
|
||||
app:valueTextColor="@color/orange_100"
|
||||
app:labelSpacing="@dimen/spacing_medium" />
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal">
|
||||
<ImageView
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"
|
||||
android:layout_marginEnd="16dp"
|
||||
android:src="@drawable/icon_boss_rage"/>
|
||||
<LinearLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
<TextView
|
||||
android:id="@+id/boss_rage_name_view"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/SubHeader1"
|
||||
android:textColor="@color/text_primary"
|
||||
android:text=""
|
||||
android:layout_marginBottom="@dimen/spacing_small"/>
|
||||
<com.habitrpg.common.habitica.views.ValueBar
|
||||
android:id="@+id/bossRageView"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
app:barBackgroundColor="@color/offset_background"
|
||||
app:barForegroundColor="@color/orange_100"
|
||||
app:lightBackground="true"
|
||||
app:valueTextColor="@color/text_ternary"
|
||||
app:labelSpacing="@dimen/spacing_small" />
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/collectionContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"/>
|
||||
<TextView
|
||||
android:id="@+id/collectedItemsNumberView"
|
||||
android:layout_width="match_parent"
|
||||
android:gravity="end"
|
||||
android:layout_height="wrap_content"
|
||||
tools:text="+N items found"/>
|
||||
</merge>
|
||||
</merge>
|
||||
|
|
|
|||
|
|
@ -89,6 +89,5 @@
|
|||
android:layout_gravity="end"
|
||||
android:visibility="gone"
|
||||
android:layout_alignEnd="@id/container"
|
||||
android:layout_marginEnd="-4dp"
|
||||
style="@style/CountLabel"/>
|
||||
</RelativeLayout>
|
||||
|
|
|
|||
|
|
@ -1123,7 +1123,7 @@ Die Quest-Schriftrolle wird an den Quest-Besitzer zurückgegeben.</string>
|
|||
<string name="open_shop">Offener Laden</string>
|
||||
<string name="survey_menu_description">Fülle diese 5 Minuten Umfrage aus, um uns beim Wachsen zu helfen und eine Errungenschaft zu erhalten!</string>
|
||||
<string name="empty_equipment_description">Du hast noch keine Ausrüstung für diesen Typen. Du kannst Ausrüstung vom Markt mit dem Gold, das du verdient hast, kaufen.</string>
|
||||
<string name="damage_pending">ausstehend %.01f dmg</string>
|
||||
<string name="damage_pending">%s Schaden ausstehend</string>
|
||||
<string name="x_remaining">%s verbleibend</string>
|
||||
<string name="reset_counter">Zähler zurücksetzen</string>
|
||||
<string name="adjust_counter">Zähler anpassen</string>
|
||||
|
|
|
|||
|
|
@ -1116,7 +1116,7 @@
|
|||
<string name="user_is_blocked_explanation">Un usuario bloqueado no puede enviarte mensajes privados pero seguirás viendo sus comentarios en la Taberna o los Gremios.</string>
|
||||
<string name="one_month_one_time">Suscripción única de 1 mes</string>
|
||||
<string name="g1g1_promo_info_instructions">Pulsa sobre \"Regala una Suscripción\" y escribe el usuario de la cuenta a la que quieres regalársela. Luego, elige la duración de la suscripción que quieres regalar y realizar el pago. Tu cuenta será premiada automáticamente con una suscripción igual que la que acabas de regalar.</string>
|
||||
<string name="damage_pending">%.01f de daño restante</string>
|
||||
<string name="damage_pending">%s de daño restante</string>
|
||||
<string name="hatch">Eclosiona</string>
|
||||
<string name="invitation_title_no_leader">Has sido invitado a unirte a un equipo</string>
|
||||
<string name="survey_title">Formulario para usuarios de Habitica</string>
|
||||
|
|
|
|||
|
|
@ -1121,7 +1121,7 @@
|
|||
<string name="terms_of_service">Conditions d\'utilisation</string>
|
||||
<string name="privacy_policy">Politique de Confidentialité</string>
|
||||
<string name="all_tasks_completed">Vous avez fini toutes vos tâches. Bravo !</string>
|
||||
<string name="damage_pending">%.01f dégâts en cours</string>
|
||||
<string name="damage_pending">%s dégâts en cours</string>
|
||||
<string name="reset_counter">Réinitialiser le compteur</string>
|
||||
<string name="adjust_counter">Ajuster le compteur</string>
|
||||
<string name="x_remaining">%s restant</string>
|
||||
|
|
|
|||
|
|
@ -1082,7 +1082,7 @@
|
|||
<string name="g1g1_promo_info_limitations">Ovo je vremenski ograničeno događanje koje počinje %s (13:00 UTC) i završava %s (01:00 UTC). Ova promocija se samo primjenjuje kada poklanjaš drugom Habiticanu. Ako ti ili tvoj primatelj poklona već imate pretplatu, poklonjena pretplata će dodati mjesece kredita koji će biti iskorišteni samo nakon što je trenutna pretplata otkazana ili kad istekne.</string>
|
||||
<string name="empty_equipment_description">Još nemaš ovakvu opremu. Možeš kupiti opremu iz dućana koristeći zlato koje si zaradio/la.</string>
|
||||
<string name="empty_challenge_list">Nisi član nikakvih Izazova.</string>
|
||||
<string name="damage_pending">%.01f štete čeka</string>
|
||||
<string name="damage_pending">%s štete čeka</string>
|
||||
<string name="one_month_one_time">Jednokratna pretplata od 1 mjesec</string>
|
||||
<string name="empty_guilds_list">Nisi član nikakvih Cehova.</string>
|
||||
<string name="sale_ends_in">Rasprodaja završava za %s</string>
|
||||
|
|
|
|||
|
|
@ -1130,7 +1130,7 @@
|
|||
<string name="added_social_auth">Aggiunta autenticazione %s</string>
|
||||
<string name="copied_to_clipboard">%s copiato negli appunti</string>
|
||||
<string name="sale_ends_in">La vendita termina fra %s</string>
|
||||
<string name="damage_pending">%.01f danno in sospeso</string>
|
||||
<string name="damage_pending">%s danno in sospeso</string>
|
||||
<string name="discard">Scarta</string>
|
||||
<string name="class_confirmation_price">Vuoi cambiare la tua classe in %s per %d gemme\?</string>
|
||||
<string name="adventure_guide_description_new">Completa questi obbiettivi e guadagnerai <b>5 Medaglie</b> e <font color=#EE9109><b>100 Ori</b></font> quando avrai finito!</string>
|
||||
|
|
|
|||
|
|
@ -1121,7 +1121,7 @@
|
|||
<string name="terms_of_service">利用規約</string>
|
||||
<string name="privacy_policy">プライバシーポリシー</string>
|
||||
<string name="all_tasks_completed">すべてのタスクを完了しました。すばらしい!</string>
|
||||
<string name="damage_pending">%.01f ダメージを保留中</string>
|
||||
<string name="damage_pending">%s ダメージを保留中</string>
|
||||
<string name="adjust_counter">回数を修正</string>
|
||||
<string name="reset_counter">カウンターをリセット</string>
|
||||
<string name="x_remaining">残り%s</string>
|
||||
|
|
|
|||
|
|
@ -1143,7 +1143,7 @@
|
|||
<string name="empty_discover_description">탐색 탭으로 이동하여 참여할만한 것을 찾아보세요!</string>
|
||||
<string name="all_tasks_completed">모든 과제를 완료하셨습니다. 잘하셨어요!</string>
|
||||
<string name="privacy_policy">개인정보보호정책</string>
|
||||
<string name="damage_pending">%.01f피해 대기 중</string>
|
||||
<string name="damage_pending">%s피해 대기 중</string>
|
||||
<string name="login_methods">로그인 방법</string>
|
||||
<string name="add_password">비밀번호 추가</string>
|
||||
<string name="connect">연결</string>
|
||||
|
|
|
|||
|
|
@ -64,5 +64,6 @@
|
|||
<color name="gray200_gray400">@color/gray_400</color>
|
||||
<color name="gray700_gray10">@color/gray_10</color>
|
||||
<color name="maroon100_red100">@color/red_100</color>
|
||||
<color name="brand_button">@color/brand_600</color>
|
||||
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -1100,7 +1100,7 @@
|
|||
<string name="theme_color">Tema Colorido</string>
|
||||
<string name="terms_of_service">Termos de Serviço</string>
|
||||
<string name="empty_title">Nada aqui ainda</string>
|
||||
<string name="damage_pending">%.01f de dano pendente</string>
|
||||
<string name="damage_pending">%s de dano pendente</string>
|
||||
<string name="privacy_policy">Política de Privacidade</string>
|
||||
<string name="open_shop">Loja Aberta</string>
|
||||
<string name="avatar_style">Estilo</string>
|
||||
|
|
|
|||
|
|
@ -1120,7 +1120,7 @@
|
|||
<string name="terms_of_service">Условия Использования</string>
|
||||
<string name="privacy_policy">Политика Конфиденциальности</string>
|
||||
<string name="all_tasks_completed">Вы завершили все ваши задания. Отлично!</string>
|
||||
<string name="damage_pending">%.01f ожидаемого урона</string>
|
||||
<string name="damage_pending">%s ожидаемого урона</string>
|
||||
<string name="reset_counter">Сбросить счётчик</string>
|
||||
<string name="adjust_counter">Настроить счётчик</string>
|
||||
<string name="discard_changes_to_task_message">Вы уверены, что не хотите сохранять изменения в этой задаче\?</string>
|
||||
|
|
|
|||
|
|
@ -1045,7 +1045,7 @@
|
|||
<string name="not_now">Şimdi olmaz</string>
|
||||
<string name="need_help_header_description">Sorularınızın bir başka oyuncu tarafından cevaplanması için%s içinde bir mesaj gönderin.</string>
|
||||
<string name="setup_task_habit_1_notes">Bir Alışkanlık, Günlük İş veya Yapılacak İş</string>
|
||||
<string name="damage_pending">%.01f hasar bekliyor</string>
|
||||
<string name="damage_pending">%s hasar bekliyor</string>
|
||||
<string name="x_remaining">%s kaldı</string>
|
||||
<string name="won_achievement_description"><![CDATA[<b>%s</b> seni kazanan olarak seçti! Zaferin başarımlarının arasına eklendi.]]></string>
|
||||
<string name="twelve_months_one_time">12 aylık tek seferlik abonelik</string>
|
||||
|
|
|
|||
|
|
@ -1124,7 +1124,7 @@
|
|||
<string name="all_tasks_completed">Ви завершили всі свої завдання. Чудова робота!</string>
|
||||
<string name="privacy_policy">Політика конфіденційності</string>
|
||||
<string name="terms_of_service">Умови обслуговування</string>
|
||||
<string name="damage_pending">%.01f пошкоджень буде нанесено</string>
|
||||
<string name="damage_pending">%s пошкоджень буде нанесено</string>
|
||||
<string name="x_remaining">%s залишилось</string>
|
||||
<string name="sale_ends_in">Розпродаж закінчується %s</string>
|
||||
<string name="my_account">Мій акаунт</string>
|
||||
|
|
|
|||
|
|
@ -1179,7 +1179,7 @@
|
|||
<string name="class_confirmation_price">更改你的職業成為%s需要%d的寶石,確認更改\?</string>
|
||||
<string name="armoireEquipment_new">你在衣櫥裏找到了一個稀有裝備!</string>
|
||||
<string name="starting_objectives">新手任務</string>
|
||||
<string name="damage_pending">%.01f即將造成的傷害</string>
|
||||
<string name="damage_pending">%s即將造成的傷害</string>
|
||||
<string name="armoireFood_new">你在衣櫥搜查,然後找到了食物。那爲什麼在這裏?</string>
|
||||
<string name="adventure_guide_description_new">完成這些任務,即可贏得<b>5項成就</b>和<font color=#EE9109><b>100金幣</b></font>!</string>
|
||||
<string name="survey_title">Habitica 用戶問卷</string>
|
||||
|
|
|
|||
|
|
@ -1126,7 +1126,7 @@
|
|||
<string name="class_confirmation_price">转职为%s需要%d宝石,是否确定更改?</string>
|
||||
<string name="use_item">对队伍成员使用物品</string>>
|
||||
<string name="unsaved_changes">修改未保存</string>
|
||||
<string name="damage_pending">即将造成%.01f点伤害</string>
|
||||
<string name="damage_pending">即将造成%s点伤害</string>
|
||||
<string name="copied_to_clipboard">已将%s复制到剪贴板</string>
|
||||
<string name="adjust_counter">调整连击次数</string>
|
||||
<string name="reset_counter">重置连击次数</string>
|
||||
|
|
|
|||
|
|
@ -131,4 +131,5 @@
|
|||
<color name="gray200_gray400">@color/gray_200</color>
|
||||
<color name="gray700_gray10">@color/gray_700</color>
|
||||
<color name="maroon100_red100">@color/maroon_100</color>
|
||||
<color name="brand_button">@color/brand_400</color>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -1163,7 +1163,7 @@
|
|||
<string name="all_tasks_completed">You completed all your tasks. Well done!</string>
|
||||
<string name="privacy_policy">Privacy Policy</string>
|
||||
<string name="terms_of_service">Terms of Service</string>
|
||||
<string name="damage_pending">%.01f damage pending</string>
|
||||
<string name="damage_pending">%s Damage pending</string>
|
||||
<string name="x_remaining">%s remaining</string>
|
||||
<string name="sale_ends_in">Sale ends in %s</string>
|
||||
<string name="my_account">My Account</string>
|
||||
|
|
@ -1432,6 +1432,10 @@
|
|||
<string name="quest_mechanics_pausing_description">"If you’re struggling to complete your Dailies, you can pause damage from Settings for a break. This will prevent the Boss from hurting you or others, but also pause your own damage. Other members missed Dailies will still cause damage, so be careful out there! "</string>
|
||||
<string name="quest_mechanics_rage_title">Rage meters</string>
|
||||
<string name="quest_mechanics_rage_description">Some difficult bosses have an orange Rage meter under their HP. This meter fills up when participants miss Dailies. When it fills completely, the boss will let out a fearsome attack that does extra damage!</string>
|
||||
<string name="faint_subscriber_description">Your subscription lets you have a second chance each day if you run out of HP</string>
|
||||
<string name="rage">Rage</string>
|
||||
<string name="preference_push_invited_to_group_plan">Invited to Group Plan</string>
|
||||
<string name="preference_push_joined_group_plan_mention">\@Mentions in Group Plans</string>
|
||||
|
||||
<plurals name="you_x_others">
|
||||
<item quantity="zero">You</item>
|
||||
|
|
@ -1463,8 +1467,8 @@
|
|||
<item quantity="other">every %d years</item>
|
||||
</plurals>
|
||||
<plurals name="items_pending">
|
||||
<item quantity="zero">No items pending</item>
|
||||
<item quantity="one">%d item pending</item>
|
||||
<item quantity="other">%d items pending</item>
|
||||
<item quantity="zero">No Items pending</item>
|
||||
<item quantity="one">%d Item pending</item>
|
||||
<item quantity="other">%d Items pending</item>
|
||||
</plurals>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -867,8 +867,8 @@
|
|||
|
||||
<style name="ArmoireDescriptionTextView">
|
||||
<item name="android:fontFamily">@string/font_family_regular</item>
|
||||
<item name="android:textSize">12sp</item>
|
||||
<item name="android:letterSpacing">0.02</item>
|
||||
<item name="android:textSize">14sp</item>
|
||||
<item name="android:letterSpacing">0.03</item>
|
||||
<item name="android:textColor">@color/armoire_text</item>
|
||||
</style>
|
||||
|
||||
|
|
@ -882,7 +882,7 @@
|
|||
<item name="android:textColor">@color/red_10</item>
|
||||
</style>
|
||||
<style name="YellowTextLabel" parent="TextAppearance.AppCompat">
|
||||
<item name="android:textColor">@color/yellow_10</item>
|
||||
<item name="android:textColor">@color/yellow_5</item>
|
||||
</style>
|
||||
<style name="BlueTextLabel" parent="TextAppearance.AppCompat">
|
||||
<item name="android:textColor">@color/blue_10</item>
|
||||
|
|
|
|||
|
|
@ -265,7 +265,7 @@
|
|||
<CheckBoxPreference
|
||||
android:key="preference_push_invited_to_guild"
|
||||
android:defaultValue="true"
|
||||
android:title="@string/preference_push_invited_to_guild"
|
||||
android:title="@string/preference_push_invited_to_group_plan"
|
||||
android:layout="@layout/preference_child_summary"/>
|
||||
<CheckBoxPreference
|
||||
android:key="preference_push_your_quest_has_begun"
|
||||
|
|
@ -295,12 +295,7 @@
|
|||
<CheckBoxPreference
|
||||
android:key="preference_push_joined_guild_mention"
|
||||
android:defaultValue="true"
|
||||
android:title="@string/preference_push_joined_guild_mention"
|
||||
android:layout="@layout/preference_child_summary"/>
|
||||
<CheckBoxPreference
|
||||
android:key="preference_push_unjoined_guild_mention"
|
||||
android:defaultValue="true"
|
||||
android:title="@string/preference_push_unjoined_guild_mention"
|
||||
android:title="@string/preference_push_joined_group_plan_mention"
|
||||
android:layout="@layout/preference_child_summary"/>
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
||||
|
|
|
|||
|
|
@ -46,33 +46,26 @@ open class Customization : RealmObject(), BaseObject {
|
|||
return !(availableUntil != null && !availableUntil!!.after(today))
|
||||
}
|
||||
|
||||
fun getIconName(userSize: String?, hairColor: String?): String {
|
||||
return if (type == "background") {
|
||||
"icon_background_$identifier"
|
||||
} else {
|
||||
"icon_" + getImageName(userSize, hairColor)
|
||||
}
|
||||
fun getIconName(userSize: String?, hairColor: String?): String? {
|
||||
return "icon_" + (getImageName(userSize, hairColor) ?: return null)
|
||||
}
|
||||
|
||||
fun getImageName(userSize: String?, hairColor: String?): String {
|
||||
fun getImageName(userSize: String?, hairColor: String?): String? {
|
||||
if (identifier?.isNotBlank() != true || identifier == "none" || identifier == "0") return null
|
||||
when (type) {
|
||||
"skin" -> return "skin_$identifier"
|
||||
"shirt" -> return userSize + "_shirt_" + identifier
|
||||
"hair" -> {
|
||||
return if (identifier == "0") {
|
||||
"head_0"
|
||||
} else {
|
||||
when (this.category) {
|
||||
"color" -> "hair_bangs_1_$identifier"
|
||||
"flower" -> "hair_flower_$identifier"
|
||||
else -> "hair_" + this.category + "_" + identifier + "_" + hairColor
|
||||
}
|
||||
}
|
||||
}
|
||||
"background" -> return "background_$identifier"
|
||||
"chair" -> return "chair_$identifier"
|
||||
}
|
||||
return ""
|
||||
return null
|
||||
}
|
||||
|
||||
fun isUsable(purchased: Boolean): Boolean {
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ abstract class BaseActivity : AppCompatActivity() {
|
|||
)
|
||||
uri =
|
||||
resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues) ?: return
|
||||
fos = resolver.openOutputStream(uri) ?: return
|
||||
fos = resolver.openOutputStream(uri, "wt") ?: return
|
||||
} else {
|
||||
val imagesDir =
|
||||
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
|
||||
|
|
|
|||
|
|
@ -82,7 +82,13 @@ class CustomizationEquipmentRecyclerViewAdapter : androidx.recyclerview.widget.R
|
|||
|
||||
fun bind(equipment: Equipment) {
|
||||
this.equipment = equipment
|
||||
binding.imageView.loadImage("shop_" + this.equipment?.key)
|
||||
if (equipment.key?.isNotBlank() == true) {
|
||||
binding.imageView.loadImage("shop_" + equipment.key)
|
||||
} else {
|
||||
binding.imageView.bitmap = null
|
||||
binding.imageView.tag = null
|
||||
binding.imageView.setImageResource(R.drawable.empty_slot)
|
||||
}
|
||||
if (equipment.owned == true || equipment.value == 0.0) {
|
||||
binding.buyButton.visibility = View.GONE
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -172,12 +172,13 @@ class CustomizationRecyclerViewAdapter() : androidx.recyclerview.widget.Recycler
|
|||
fun bind(customization: Customization) {
|
||||
this.customization = customization
|
||||
|
||||
if (customization.type == "background" && customization.identifier == "") {
|
||||
val imageName = customization.getIconName(userSize, hairColor)
|
||||
if (imageName != null) {
|
||||
binding.imageView.loadImage(imageName)
|
||||
} else {
|
||||
binding.imageView.bitmap = null
|
||||
binding.imageView.tag = null
|
||||
binding.imageView.setImageResource(R.drawable.no_background)
|
||||
} else {
|
||||
binding.imageView.loadImage(customization.getIconName(userSize, hairColor))
|
||||
binding.imageView.setImageResource(R.drawable.empty_slot)
|
||||
}
|
||||
|
||||
if (customization.isUsable(ownedCustomizations.contains(customization.id))) {
|
||||
|
|
|
|||
|
|
@ -40,7 +40,6 @@ class PushNotificationsPreferencesFragment : BasePreferencesFragment(), SharedPr
|
|||
updatePreference("preference_push_party_activity", user?.preferences?.pushNotifications?.partyActivity)
|
||||
updatePreference("preference_push_party_mention", user?.preferences?.pushNotifications?.mentionParty)
|
||||
updatePreference("preference_push_joined_guild_mention", user?.preferences?.pushNotifications?.mentionJoinedGuild)
|
||||
updatePreference("preference_push_unjoined_guild_mention", user?.preferences?.pushNotifications?.mentionUnjoinedGuild)
|
||||
isSettingUser = false
|
||||
isInitialSet = false
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ import kotlinx.coroutines.Dispatchers
|
|||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.flow.firstOrNull
|
||||
import kotlinx.coroutines.launch
|
||||
import java.text.DecimalFormat
|
||||
import javax.inject.Inject
|
||||
|
||||
@AndroidEntryPoint
|
||||
|
|
@ -218,9 +219,10 @@ class PartyDetailFragment : BaseFragment<FragmentPartyDetailBinding>() {
|
|||
|
||||
if (viewModel.isQuestActive && viewModel.isUserOnQuest) {
|
||||
val value = (user.party?.quest?.progress?.up ?: 0F).toDouble()
|
||||
binding?.questPendingDamageView?.text = getString(R.string.damage_pending, value)
|
||||
val df = DecimalFormat("###.#")
|
||||
binding?.questPendingDamageView?.text = getString(R.string.damage_pending, df.format(value))
|
||||
val collectedItems = user.party?.quest?.progress?.collectedItems
|
||||
binding?.questPendingDamageView?.text = requireContext().resources.getQuantityString(R.plurals.items_pending, collectedItems ?: 0, collectedItems ?: 0)
|
||||
binding?.questPendingItemsView?.text = requireContext().resources.getQuantityString(R.plurals.items_pending, collectedItems ?: 0, collectedItems ?: 0)
|
||||
}
|
||||
|
||||
if ((user.invitations?.parties?.count() ?: 0) > 0) {
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import android.graphics.drawable.BitmapDrawable
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.content.res.AppCompatResources
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.habitrpg.android.habitica.R
|
||||
import com.habitrpg.android.habitica.databinding.RowShopitemBinding
|
||||
|
|
@ -87,6 +88,11 @@ class ShopItemViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), Vi
|
|||
if (item.key == "gem" && item.limitedNumberLeft == -1) {
|
||||
binding.itemDetailIndicator.background = AppCompatResources.getDrawable(context, R.drawable.item_indicator_subscribe)
|
||||
binding.itemDetailIndicator.visibility = View.VISIBLE
|
||||
} else if (item.key == "gem") {
|
||||
binding.itemDetailIndicator.background = AppCompatResources.getDrawable(context, R.drawable.pill_bg_green)
|
||||
binding.itemDetailIndicator.text = "${item.limitedNumberLeft}"
|
||||
binding.itemDetailIndicator.setTextColor(ContextCompat.getColor(context, R.color.white))
|
||||
binding.itemDetailIndicator.visibility = View.VISIBLE
|
||||
}
|
||||
|
||||
if (binding.itemDetailIndicator.visibility == View.VISIBLE) {
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ private fun BottomSheetWrapper(
|
|||
val radius = 20.dp
|
||||
ModalBottomSheetLayout(
|
||||
sheetBackgroundColor = Color.Transparent,
|
||||
scrimColor = colorResource(R.color.content_background).copy(alpha = 0.3f),
|
||||
scrimColor = colorResource(R.color.content_background).copy(alpha = 0.5f),
|
||||
sheetState = modalBottomSheetState,
|
||||
sheetShape = RoundedCornerShape(topStart = radius, topEnd = radius),
|
||||
sheetContent = {
|
||||
|
|
@ -93,11 +93,6 @@ private fun BottomSheetWrapper(
|
|||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
modifier = Modifier
|
||||
.padding(horizontal = 4.dp)
|
||||
.border(
|
||||
2.dp,
|
||||
colorResource(R.color.window_background),
|
||||
RoundedCornerShape(topStart = radius, topEnd = radius)
|
||||
)
|
||||
.background(
|
||||
MaterialTheme.colors.background,
|
||||
RoundedCornerShape(topStart = radius, topEnd = radius)
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ fun OverviewItem(
|
|||
modifier: Modifier = Modifier,
|
||||
isTwoHanded: Boolean = false
|
||||
) {
|
||||
val hasIcon = isTwoHanded || (iconName?.isNotBlank() == true && iconName != "shirt_" && !iconName.endsWith("_none") && !iconName.endsWith("_base_0"))
|
||||
val hasIcon = isTwoHanded || (iconName?.isNotBlank() == true && iconName != "shirt_" && !iconName.endsWith("_none") && !iconName.endsWith("_base_0") && !iconName.endsWith("_"))
|
||||
Column(
|
||||
horizontalAlignment = Alignment.CenterHorizontally,
|
||||
modifier = modifier
|
||||
|
|
|
|||
|
|
@ -435,7 +435,7 @@ class PurchaseDialog(
|
|||
}
|
||||
}
|
||||
val rightTextColor = when (item.currency) {
|
||||
"gold" -> ContextCompat.getColor(context, R.color.text_yellow)
|
||||
"gold" -> ContextCompat.getColor(context, R.color.yellow_5)
|
||||
"gems" -> ContextCompat.getColor(context, R.color.text_green)
|
||||
"hourglasses" -> ContextCompat.getColor(context, R.color.text_brand)
|
||||
else -> 0
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import com.habitrpg.android.habitica.models.inventory.QuestProgressCollect
|
|||
import com.habitrpg.android.habitica.models.user.User
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIcons
|
||||
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
|
||||
import com.habitrpg.common.habitica.extensions.dpToPx
|
||||
import com.habitrpg.common.habitica.extensions.getThemeColor
|
||||
import com.habitrpg.common.habitica.extensions.layoutInflater
|
||||
import com.habitrpg.common.habitica.extensions.loadImage
|
||||
|
|
@ -35,35 +36,32 @@ class OldQuestProgressView : LinearLayout {
|
|||
|
||||
private fun setupView(context: Context) {
|
||||
orientation = VERTICAL
|
||||
|
||||
binding.bossHealthView.valueSuffix = "HP"
|
||||
binding.bossRageView.valueSuffix = context.getString(R.string.rage)
|
||||
setScaledPadding(context, 16, 16, 16, 16)
|
||||
|
||||
binding.bossHealthView.setSecondaryIcon(HabiticaIconsHelper.imageOfHeartLightBg())
|
||||
binding.bossHealthView.setDescriptionIcon(HabiticaIconsHelper.imageOfDamage())
|
||||
binding.bossRageView.setSecondaryIcon(HabiticaIconsHelper.imageOfRage())
|
||||
}
|
||||
|
||||
fun setData(quest: QuestContent, progress: QuestProgress?) {
|
||||
binding.collectionContainer.removeAllViews()
|
||||
if (quest.isBossQuest) {
|
||||
binding.bossNameView.text = quest.boss?.name
|
||||
binding.bossHealthView.barHeight = 5.dpToPx(context)
|
||||
if (progress != null) {
|
||||
binding.bossHealthView.set(progress.hp, quest.boss?.hp?.toDouble() ?: 0.0)
|
||||
}
|
||||
if (quest.boss?.hasRage == true) {
|
||||
binding.bossRageView.visibility = View.VISIBLE
|
||||
binding.bossRageWrapper.visibility = VISIBLE
|
||||
binding.bossRageView.barHeight = 5.dpToPx(context)
|
||||
binding.bossRageView
|
||||
binding.bossRageView.set(progress?.rage ?: 0.0, quest.boss?.rage?.value ?: 0.0)
|
||||
binding.bossRageNameView.text = quest.boss?.rage?.title
|
||||
} else {
|
||||
binding.bossRageView.visibility = View.GONE
|
||||
binding.bossRageWrapper.visibility = GONE
|
||||
}
|
||||
binding.bossNameView.visibility = View.VISIBLE
|
||||
binding.bossHealthView.visibility = View.VISIBLE
|
||||
binding.collectedItemsNumberView.visibility = View.GONE
|
||||
binding.bossHealthWrapper.visibility = VISIBLE
|
||||
} else {
|
||||
binding.bossNameView.visibility = View.GONE
|
||||
binding.bossHealthView.visibility = View.GONE
|
||||
binding.bossRageView.visibility = View.GONE
|
||||
binding.collectedItemsNumberView.visibility = View.VISIBLE
|
||||
binding.bossHealthWrapper.visibility = GONE
|
||||
binding.bossRageWrapper.visibility = GONE
|
||||
|
||||
if (progress != null) {
|
||||
val inflater = LayoutInflater.from(context)
|
||||
|
|
@ -73,6 +71,7 @@ class OldQuestProgressView : LinearLayout {
|
|||
collectBinding.iconView.loadImage("quest_" + quest.key + "_" + collect.key)
|
||||
collectBinding.nameView.text = contentCollect.text
|
||||
collectBinding.valueView.set(collect.count.toDouble(), contentCollect.count.toDouble())
|
||||
collectBinding.valueView.barHeight = 5.dpToPx(context)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ class ValueBar(context: Context, attrs: AttributeSet?) : FrameLayout(context, at
|
|||
binding.progressBar.maxValue = value
|
||||
}
|
||||
|
||||
var valueSuffix: String? = null
|
||||
|
||||
var barForegroundColor: Int
|
||||
get() = binding.progressBar.barForegroundColor
|
||||
set(value) {
|
||||
|
|
@ -82,7 +84,7 @@ class ValueBar(context: Context, attrs: AttributeSet?) : FrameLayout(context, at
|
|||
private fun updateBar() {
|
||||
binding.progressBar.set(currentValue, maxValue)
|
||||
binding.progressBar.pendingValue = pendingValue
|
||||
setValueText(formatter.format(currentValue) + " / " + formatter.format(maxValue.toInt()))
|
||||
setValueText(formatter.format(currentValue) + " / " + formatter.format(maxValue.toInt()) + " " + valueSuffix)
|
||||
}
|
||||
|
||||
init {
|
||||
|
|
|
|||
|
|
@ -11,13 +11,13 @@
|
|||
<color name="text_inverted">@color/gray_10</color>
|
||||
<color name="text_brand">@color/brand_600</color>
|
||||
<color name="text_brand_neon">@color/brand_500</color>
|
||||
<color name="text_maroon">@color/maroon_100</color>
|
||||
<color name="text_red">@color/red_100</color>
|
||||
<color name="text_orange">@color/orange_100</color>
|
||||
<color name="text_yellow">@color/yellow_100</color>
|
||||
<color name="text_green">@color/green_100</color>
|
||||
<color name="text_blue">@color/blue_100</color>
|
||||
<color name="text_teal">@color/teal_100</color>
|
||||
<color name="text_maroon">@color/maroon_500</color>
|
||||
<color name="text_red">@color/red_500</color>
|
||||
<color name="text_orange">@color/orange_500</color>
|
||||
<color name="text_yellow">@color/yellow_500</color>
|
||||
<color name="text_green">@color/green_500</color>
|
||||
<color name="text_blue">@color/blue_500</color>
|
||||
<color name="text_teal">@color/teal_500</color>
|
||||
<color name="dim_background">#40502B94</color>
|
||||
<color name="divider_color">@color/gray_100</color>
|
||||
</resources>
|
||||
|
|
|
|||
|
|
@ -1,2 +1,2 @@
|
|||
NAME=4.3
|
||||
CODE=6391
|
||||
CODE=6421
|
||||