feat(每日充值活动页面): 宝箱的补充奖励信息使用滚动文本
This commit is contained in:
parent
d54b7da4a0
commit
5bb4d836ac
@ -508,5 +508,9 @@
|
|||||||
"active_game_rule_3": "(3) يجب إكمال المهمتين للانتقال إلى المستوى التالي.",
|
"active_game_rule_3": "(3) يجب إكمال المهمتين للانتقال إلى المستوى التالي.",
|
||||||
"active_game_rule_4": "(4) سيتم إعادة تعيين الشحن اليومي عند الساعة 00:00 (بتوقيت السعودية). يجب على المستخدمين الذين أكملوا مهمة إعادة التعيين المطالبة بمكافآتهم في الوقت المناسب. ستصبح المكافآت غير المطالب بها غير متاحة بعد إعادة التعيين.",
|
"active_game_rule_4": "(4) سيتم إعادة تعيين الشحن اليومي عند الساعة 00:00 (بتوقيت السعودية). يجب على المستخدمين الذين أكملوا مهمة إعادة التعيين المطالبة بمكافآتهم في الوقت المناسب. ستصبح المكافآت غير المطالب بها غير متاحة بعد إعادة التعيين.",
|
||||||
"active_game_vap_playback_failed": "فشل تشغيل VAP",
|
"active_game_vap_playback_failed": "فشل تشغيل VAP",
|
||||||
"active_game_claim_reward_failed": "فشل المطالبة بالمكافأة"
|
"active_game_claim_reward_failed": "فشل المطالبة بالمكافأة",
|
||||||
|
"active_game_reward_gift": "هدايا مخصصة *1",
|
||||||
|
"active_game_reward_frame": "إطارات مخصصة * 365 يوم",
|
||||||
|
"active_game_reward_ride": "مركبات مخصصة * 60 يوم",
|
||||||
|
"active_game_reward_banner": "لافتات مخصصة * 15 يوم"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -508,5 +508,9 @@
|
|||||||
"active_game_rule_3": "(3) পরবর্তী লেভেলে যেতে দুটি টাস্কই সম্পন্ন করতে হবে।",
|
"active_game_rule_3": "(3) পরবর্তী লেভেলে যেতে দুটি টাস্কই সম্পন্ন করতে হবে।",
|
||||||
"active_game_rule_4": "(4) দৈনিক রিচার্জ 00:00 (সৌদি আরব সময়) এ রিসেট হবে। যারা রিসেট টাস্ক সম্পন্ন করেছে, তাদের সময়মতো পুরস্কার দাবি করতে হবে। রিসেটের পর দাবি না করা পুরস্কার আর পাওয়া যাবে না।",
|
"active_game_rule_4": "(4) দৈনিক রিচার্জ 00:00 (সৌদি আরব সময়) এ রিসেট হবে। যারা রিসেট টাস্ক সম্পন্ন করেছে, তাদের সময়মতো পুরস্কার দাবি করতে হবে। রিসেটের পর দাবি না করা পুরস্কার আর পাওয়া যাবে না।",
|
||||||
"active_game_vap_playback_failed": "VAP প্লেব্যাক ব্যর্থ হয়েছে",
|
"active_game_vap_playback_failed": "VAP প্লেব্যাক ব্যর্থ হয়েছে",
|
||||||
"active_game_claim_reward_failed": "পুরস্কার দাবি করতে ব্যর্থ হয়েছে"
|
"active_game_claim_reward_failed": "পুরস্কার দাবি করতে ব্যর্থ হয়েছে",
|
||||||
|
"active_game_reward_gift": "কাস্টমাইজড গিফট *1",
|
||||||
|
"active_game_reward_frame": "কাস্টমাইজড ফ্রেম * 365 দিন",
|
||||||
|
"active_game_reward_ride": "কাস্টমাইজড ভেহিকল * 60 দিন",
|
||||||
|
"active_game_reward_banner": "কাস্টমাইজড ব্যানার * 15 দিন"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -508,5 +508,9 @@
|
|||||||
"active_game_rule_3": "(3) You must complete both tasks to proceed to the next level.",
|
"active_game_rule_3": "(3) You must complete both tasks to proceed to the next level.",
|
||||||
"active_game_rule_4": "(4) Daily recharge will reset at 00:00 (Saudi Arabia Time). Users who have completed the reset task must claim their rewards in time. Unclaimed rewards will become unavailable after the reset.",
|
"active_game_rule_4": "(4) Daily recharge will reset at 00:00 (Saudi Arabia Time). Users who have completed the reset task must claim their rewards in time. Unclaimed rewards will become unavailable after the reset.",
|
||||||
"active_game_vap_playback_failed": "VAP playback failed",
|
"active_game_vap_playback_failed": "VAP playback failed",
|
||||||
"active_game_claim_reward_failed": "Failed to claim reward"
|
"active_game_claim_reward_failed": "Failed to claim reward",
|
||||||
|
"active_game_reward_gift": "Customized Gifts *1",
|
||||||
|
"active_game_reward_frame": "Customized Frames * 365 Days",
|
||||||
|
"active_game_reward_ride": "Customized Vehicles * 60 Days",
|
||||||
|
"active_game_reward_banner": "Customized Banners * 15 Days"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -508,5 +508,9 @@
|
|||||||
"active_game_rule_3": "(3) Sonraki seviyeye geçmek için iki görevi de tamamlamalısınız.",
|
"active_game_rule_3": "(3) Sonraki seviyeye geçmek için iki görevi de tamamlamalısınız.",
|
||||||
"active_game_rule_4": "(4) Günlük yükleme saat 00:00'da (Suudi Arabistan Saati) sıfırlanır. Sıfırlama görevini tamamlayan kullanıcılar ödüllerini zamanında almalıdır. Alınmayan ödüller sıfırlamadan sonra kullanılamaz hale gelir.",
|
"active_game_rule_4": "(4) Günlük yükleme saat 00:00'da (Suudi Arabistan Saati) sıfırlanır. Sıfırlama görevini tamamlayan kullanıcılar ödüllerini zamanında almalıdır. Alınmayan ödüller sıfırlamadan sonra kullanılamaz hale gelir.",
|
||||||
"active_game_vap_playback_failed": "VAP oynatma başarısız",
|
"active_game_vap_playback_failed": "VAP oynatma başarısız",
|
||||||
"active_game_claim_reward_failed": "Ödül alınamadı"
|
"active_game_claim_reward_failed": "Ödül alınamadı",
|
||||||
|
"active_game_reward_gift": "Özel Hediyeler *1",
|
||||||
|
"active_game_reward_frame": "Özel Çerçeveler * 365 Gün",
|
||||||
|
"active_game_reward_ride": "Özel Araçlar * 60 Gün",
|
||||||
|
"active_game_reward_banner": "Özel Bannerlar * 15 Gün"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -508,5 +508,9 @@
|
|||||||
"active_game_rule_3": "(3)必须完成两个任务才能进入下一等级。",
|
"active_game_rule_3": "(3)必须完成两个任务才能进入下一等级。",
|
||||||
"active_game_rule_4": "(4)每日充值将在沙特时间 00:00 重置。已完成重置任务的用户需及时领取奖励,未领取的奖励将在重置后失效。",
|
"active_game_rule_4": "(4)每日充值将在沙特时间 00:00 重置。已完成重置任务的用户需及时领取奖励,未领取的奖励将在重置后失效。",
|
||||||
"active_game_vap_playback_failed": "VAP 播放失败",
|
"active_game_vap_playback_failed": "VAP 播放失败",
|
||||||
"active_game_claim_reward_failed": "领取奖励失败"
|
"active_game_claim_reward_failed": "领取奖励失败",
|
||||||
|
"active_game_reward_gift": "定制礼物 *1",
|
||||||
|
"active_game_reward_frame": "定制头像框 * 365 天",
|
||||||
|
"active_game_reward_ride": "定制座驾 * 60 天",
|
||||||
|
"active_game_reward_banner": "定制横幅 * 15 天"
|
||||||
}
|
}
|
||||||
|
|||||||
@ -348,7 +348,7 @@ justify-content: flex-start;
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<div>{{ formatRewardDisplay(mainReward.type, mainReward) }}</div>
|
<div>{{ getRewardDisplayText(mainReward) }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -387,12 +387,33 @@ justify-content: flex-start;
|
|||||||
style="
|
style="
|
||||||
flex: 1;
|
flex: 1;
|
||||||
min-height: 0;
|
min-height: 0;
|
||||||
|
width: 100%;
|
||||||
|
min-width: 0;
|
||||||
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
"
|
"
|
||||||
>
|
>
|
||||||
<div>{{ formatRewardDisplay(reward.type, reward) }}</div>
|
<div
|
||||||
|
v-if="isLocalRewardAsset(reward)"
|
||||||
|
class="reward-extra-scroll-viewport"
|
||||||
|
:class="{ 'reward-extra-scroll-viewport-rtl': isRtlLayout }"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="reward-extra-scroll-wrapper"
|
||||||
|
:class="{ 'reward-extra-scroll-wrapper-rtl': isRtlLayout }"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
v-for="value in 2"
|
||||||
|
:key="value"
|
||||||
|
class="reward-extra-scroll-content"
|
||||||
|
>
|
||||||
|
{{ getRewardDisplayText(reward) }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-else>{{ getRewardDisplayText(reward) }}</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -680,6 +701,10 @@ const isLocalRewardAsset = (reward) => {
|
|||||||
return Boolean(reward?.localRewardAsset)
|
return Boolean(reward?.localRewardAsset)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const getRewardDisplayText = (reward) => {
|
||||||
|
return formatRewardDisplay(reward.type, reward)
|
||||||
|
}
|
||||||
|
|
||||||
const getRewardRenderKey = (reward, index) => {
|
const getRewardRenderKey = (reward, index) => {
|
||||||
return [
|
return [
|
||||||
selectedRewardLevel.value,
|
selectedRewardLevel.value,
|
||||||
@ -698,33 +723,33 @@ const getExtraRewardsByLevel = (level) => {
|
|||||||
{
|
{
|
||||||
type: 'GIFT',
|
type: 'GIFT',
|
||||||
cover: imageUrl('reward_gift'),
|
cover: imageUrl('reward_gift'),
|
||||||
content: 1,
|
content: t('active_game_reward_gift'),
|
||||||
localRewardAsset: true,
|
localRewardAsset: true,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
case 9:
|
case 9:
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
type: 'PROPS',
|
type: 'GIFT',
|
||||||
detailType: 'AVATAR_FRAME',
|
detailType: 'AVATAR_FRAME',
|
||||||
cover: imageUrl('reward_frame'),
|
cover: imageUrl('reward_frame'),
|
||||||
quantity: 365,
|
content: t('active_game_reward_frame'),
|
||||||
localRewardAsset: true,
|
localRewardAsset: true,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
case 10:
|
case 10:
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
type: 'PROPS',
|
type: 'GIFT',
|
||||||
detailType: 'RIDE',
|
detailType: 'RIDE',
|
||||||
cover: imageUrl('reward_ride'),
|
cover: imageUrl('reward_ride'),
|
||||||
quantity: 60,
|
content: t('active_game_reward_ride'),
|
||||||
localRewardAsset: true,
|
localRewardAsset: true,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
type: 'BANNER',
|
type: 'GIFT',
|
||||||
cover: imageUrl('reward_banner'),
|
cover: imageUrl('reward_banner'),
|
||||||
quantity: 15,
|
content: t('active_game_reward_banner'),
|
||||||
localRewardAsset: true,
|
localRewardAsset: true,
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
@ -1096,6 +1121,61 @@ onMounted(() => {
|
|||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.reward-extra-scroll-viewport {
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
min-width: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
white-space: nowrap;
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reward-extra-scroll-viewport-rtl {
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reward-extra-scroll-wrapper {
|
||||||
|
display: flex;
|
||||||
|
width: fit-content;
|
||||||
|
animation-name: reward-scroll-left;
|
||||||
|
animation-duration: 6s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
will-change: transform;
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reward-extra-scroll-wrapper-rtl {
|
||||||
|
animation-name: reward-scroll-right;
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
|
||||||
|
.reward-extra-scroll-content {
|
||||||
|
flex: 0 0 auto;
|
||||||
|
padding: 0 2vw;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes reward-scroll-left {
|
||||||
|
0% {
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes reward-scroll-right {
|
||||||
|
0% {
|
||||||
|
transform: translateX(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
100% {
|
||||||
|
transform: translateX(50%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.scroll::-webkit-scrollbar {
|
.scroll::-webkit-scrollbar {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user