From 8d8beeaa2d848e1df55357bd46765e4e440dd70d Mon Sep 17 00:00:00 2001 From: edwinQQQ Date: Tue, 16 Sep 2025 15:55:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=88=BF=E9=97=B4=E8=A7=86?= =?UTF-8?q?=E5=9B=BE=E6=8E=A7=E5=88=B6=E5=99=A8=E4=B8=AD=E7=9A=84=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=20TurboModeStateManager=20=E5=AF=B9=E5=85=A8=E6=9C=8D?= =?UTF-8?q?=E7=A4=BC=E7=89=A9=E5=92=8C=E6=B8=B8=E6=88=8F=E9=A3=98=E5=B1=8F?= =?UTF-8?q?=E7=9A=84=E6=8E=A7=E5=88=B6=EF=BC=8C=E7=A7=BB=E9=99=A4=E4=B8=8D?= =?UTF-8?q?=E5=BF=85=E8=A6=81=E7=9A=84=E6=9C=AC=E5=9C=B0=E7=BC=93=E5=AD=98?= =?UTF-8?q?=EF=BC=8C=E7=A1=AE=E4=BF=9D=E5=AE=9E=E6=97=B6=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E3=80=82=E6=9B=B4=E6=96=B0=20BoomInfoViewCon?= =?UTF-8?q?troller=20=E4=B8=AD=E7=9A=84=E6=AF=94=E5=80=BC=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E6=96=B9=E5=BC=8F=EF=BC=8C=E6=8F=90=E5=8D=87=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E5=8F=AF=E8=AF=BB=E6=80=A7=E3=80=82=E8=B0=83=E6=95=B4?= =?UTF-8?q?=20XPEffectPanelViewController=20=E5=92=8C=20XPRoomMoreMenuView?= =?UTF-8?q?Controller=20=E7=9A=84=E5=B8=83=E5=B1=80=E7=BA=A6=E6=9D=9F?= =?UTF-8?q?=EF=BC=8C=E6=94=B9=E5=96=84=E7=94=A8=E6=88=B7=E7=95=8C=E9=9D=A2?= =?UTF-8?q?=E3=80=82=E7=A7=BB=E9=99=A4=E5=A4=9A=E5=A4=84=E8=B0=83=E8=AF=95?= =?UTF-8?q?=E6=97=A5=E5=BF=97=EF=BC=8C=E6=8F=90=E5=8D=87=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E6=95=B4=E6=B4=81=E6=80=A7=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Features/Boom/BoomInfoViewController.m | 2 +- .../View/AnimationView/BannerScheduler.m | 14 +- .../View/AnimationView/RoomAnimationView.m | 77 ++-- .../Cell/XPRoomMoreMenuCollectionViewCell.m | 7 - .../View/XPEffectPanelViewController.m | 41 +-- .../View/XPRoomMoreMenuViewController.m | 7 - .../View/SendGiftView/GiftComboManager.m | 8 - .../View/SendGiftView/View/GiftComboView.m | 1 - .../YMRoom/View/XPRoomViewController.m | 26 +- YuMi/uz-UZ.lproj/Localizable.strings | 346 ++++++++---------- 10 files changed, 232 insertions(+), 297 deletions(-) diff --git a/YuMi/Modules/YMRoom/Features/Boom/BoomInfoViewController.m b/YuMi/Modules/YMRoom/Features/Boom/BoomInfoViewController.m index 0498260e..6091fea9 100644 --- a/YuMi/Modules/YMRoom/Features/Boom/BoomInfoViewController.m +++ b/YuMi/Modules/YMRoom/Features/Boom/BoomInfoViewController.m @@ -690,7 +690,7 @@ // 更新比值 label 并保持发光效果 NSString *ratioText = [NSString stringWithFormat:@"%@/%@", - @(boom.exp * boom.speed / 100.0).stringValue, + @(floor(boom.exp * boom.speed / 100.0)).stringValue, @(boom.exp).stringValue]; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:ratioText]; diff --git a/YuMi/Modules/YMRoom/View/AnimationView/BannerScheduler.m b/YuMi/Modules/YMRoom/View/AnimationView/BannerScheduler.m index 55bc50c0..155e665e 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/BannerScheduler.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/BannerScheduler.m @@ -123,14 +123,12 @@ } - (void)resume { - if (!self.isPaused) { - NSLog(@"▶️ BannerScheduler: 恢复调度器"); - self.isPaused = NO; - - // 如果当前没有在播放,则开始处理队列 - if (!self.isPlaying) { - [self processNextBanner]; - } + NSLog(@"▶️ BannerScheduler: 恢复调度器"); + self.isPaused = NO; + + // 如果当前没有在播放,则开始处理队列 + if (!self.isPlaying) { + [self processNextBanner]; } } diff --git a/YuMi/Modules/YMRoom/View/AnimationView/RoomAnimationView.m b/YuMi/Modules/YMRoom/View/AnimationView/RoomAnimationView.m index fdd1c9f9..ac5a6ddb 100644 --- a/YuMi/Modules/YMRoom/View/AnimationView/RoomAnimationView.m +++ b/YuMi/Modules/YMRoom/View/AnimationView/RoomAnimationView.m @@ -191,11 +191,7 @@ BannerSchedulerDelegate // 🔧 移除:本地开关状态,改为使用 TurboModeStateManager @property (nonatomic, strong) NSString *currentRoomId; // 当前房间 ID -// 🔧 新增:本地开关状态缓存,减少频繁调用 TurboModeStateManager -@property (nonatomic, assign) BOOL cachedGiftEffectsEnabled; -@property (nonatomic, assign) BOOL cachedGlobalGiftScreenEnabled; -@property (nonatomic, assign) BOOL cachedGlobalGameScreenEnabled; -@property (nonatomic, assign) BOOL cachedCpMicEnabled; +// 移除本地开关缓存:直接向 TurboModeStateManager 询问实时值 @end @@ -601,8 +597,10 @@ BannerSchedulerDelegate effectPath:(NSString *)effectPath isCPEnter:(BOOL)isCP { - // 🔧 修改:使用本地缓存检查进房特效开关 - if (!self.cachedGiftEffectsEnabled) { + // 实时查询开关:礼物特效 + NSString *roomIdForTurbo = self.currentRoomId ?: @([self.hostDelegate getRoomInfo].roomId).stringValue; + BOOL giftEffectsEnabled = [[TurboModeStateManager sharedManager] isGiftEffectsEnabledForRoom:roomIdForTurbo]; + if (!giftEffectsEnabled) { NSLog(@"🎮 Turbo Mode进房特效已关闭,跳过进房动画"); return; } @@ -735,7 +733,9 @@ BannerSchedulerDelegate if (obj.second == Custom_Message_Sub_General_Floating_Screen_One_Room || obj.second == Custom_Message_Sub_General_Floating_Screen_All_Room) { // 游戏相关banner - if (!self.cachedGlobalGameScreenEnabled) { + NSString *roomIdForTurbo = self.currentRoomId ?: @([self.hostDelegate getRoomInfo].roomId).stringValue; + BOOL allowGameScreen = [[TurboModeStateManager sharedManager] isGlobalGameScreenEnabledForRoom:roomIdForTurbo]; + if (!allowGameScreen) { NSLog(@"🎮 Turbo Mode全局游戏屏幕已关闭,跳过游戏banner"); return; } @@ -743,7 +743,9 @@ BannerSchedulerDelegate obj.second == Custom_Message_Sub_Gift_ChannelNotify || obj.second == Custom_Message_Sub_LuckyPackage) { // 礼物相关banner - if (!self.cachedGlobalGiftScreenEnabled) { + NSString *roomIdForTurbo = self.currentRoomId ?: @([self.hostDelegate getRoomInfo].roomId).stringValue; + BOOL allowGiftScreen = [[TurboModeStateManager sharedManager] isGlobalGiftScreenEnabledForRoom:roomIdForTurbo]; + if (!allowGiftScreen) { NSLog(@"🎮 Turbo Mode全局礼物屏幕已关闭,跳过礼物banner"); return; } @@ -751,7 +753,9 @@ BannerSchedulerDelegate obj.second == Custom_Message_Sub_CP_Upgrade || obj.second == Custom_Message_Sub_CP_Binding) { // CP相关banner - 需要检查礼物特效开关 - if (!self.cachedGiftEffectsEnabled) { + NSString *roomIdForTurbo = self.currentRoomId ?: @([self.hostDelegate getRoomInfo].roomId).stringValue; + BOOL giftEffectsEnabled = [[TurboModeStateManager sharedManager] isGiftEffectsEnabledForRoom:roomIdForTurbo]; + if (!giftEffectsEnabled) { NSLog(@"🎮 Turbo Mode礼物特效已关闭,跳过CP banner"); return; } @@ -1358,10 +1362,14 @@ BannerSchedulerDelegate #pragma mark - Method: Send Gifts - (void)receiveGiftHandleSendGiftAnimationWith:(GiftReceiveInfoModel *)receiveInfo attachment:(AttachmentModel *)attachment { - // 🔧 修改:使用本地缓存检查礼物特效开关 - if (!self.cachedGiftEffectsEnabled) { + // 实时查询开关:礼物特效 + { + NSString *roomIdForTurbo = self.currentRoomId ?: @([self.hostDelegate getRoomInfo].roomId).stringValue; + BOOL giftEffectsEnabled = [[TurboModeStateManager sharedManager] isGiftEffectsEnabledForRoom:roomIdForTurbo]; + if (!giftEffectsEnabled) { NSLog(@"🎮 RoomAnimationView 礼物特效已关闭,跳过动画"); return; + } } if (!self.hostDelegate.getRoomInfo.hasAnimationEffect) { @@ -1860,7 +1868,7 @@ BannerSchedulerDelegate } AttachmentModel *attachment = (AttachmentModel *)obj.attachment; - { +#if DEBUG // 自定义消息处理入口排查日志:first/second、payload size、线程 NSData *payloadJSON = nil; @try { payloadJSON = [NSJSONSerialization dataWithJSONObject:attachment.data ?: @{} options:0 error:nil]; } @catch (__unused NSException *e) {} @@ -1869,7 +1877,7 @@ BannerSchedulerDelegate (unsigned long)payloadJSON.length, [NSThread isMainThread] ? @"YES" : @"NO", [[NSDate date] timeIntervalSince1970]); - } +#endif switch (attachment.first) { case CustomMessageType_User_Enter_Room: [self _handleEnterRoomMessage:message]; @@ -4064,14 +4072,10 @@ BannerSchedulerDelegate #pragma mark - BannerSchedulerDelegate - (void)bannerScheduler:(BannerScheduler *)scheduler shouldPlayBanner:(id)banner { -// NSLog(@"🎯 BannerSchedulerDelegate: 收到播放 Banner 请求"); -// NSLog(@"🎯 Banner 类型: %@", [banner class]); // 将 Banner 数据转换为 AttachmentModel 并播放 if ([banner isKindOfClass:[AttachmentModel class]]) { AttachmentModel *attachment = (AttachmentModel *)banner; -// NSLog(@"🎯 AttachmentModel 类型: %ld", (long)attachment.second); -// NSLog(@"🎯 AttachmentModel 数据: %@", attachment.data); [self _playBannerWithAttachment:attachment]; } else { NSLog(@"⚠️ BannerSchedulerDelegate: Banner 不是 AttachmentModel 类型"); @@ -4276,9 +4280,6 @@ BannerSchedulerDelegate - (void)handleTurboGiftEffectsChanged:(NSNotification *)notification { BOOL enabled = [notification.userInfo[@"on"] boolValue]; - // 🔧 新增:更新本地缓存 - self.cachedGiftEffectsEnabled = enabled; - // 如果关闭,清理当前效果 if (!enabled) { [self cleanupGiftEffects]; @@ -4291,9 +4292,6 @@ BannerSchedulerDelegate - (void)handleTurboGlobalGiftScreenChanged:(NSNotification *)notification { BOOL enabled = [notification.userInfo[@"on"] boolValue]; - // 🔧 新增:更新本地缓存 - self.cachedGlobalGiftScreenEnabled = enabled; - // 如果关闭,清理礼物相关 banner if (!enabled) { [self cleanupGiftBanners]; @@ -4306,9 +4304,6 @@ BannerSchedulerDelegate - (void)handleTurboGlobalGameScreenChanged:(NSNotification *)notification { BOOL enabled = [notification.userInfo[@"on"] boolValue]; - // 🔧 新增:更新本地缓存 - self.cachedGlobalGameScreenEnabled = enabled; - // 如果关闭,清理游戏相关 banner if (!enabled) { [self cleanupGameBanners]; @@ -4321,9 +4316,6 @@ BannerSchedulerDelegate - (void)handleTurboCpMicChanged:(NSNotification *)notification { BOOL enabled = [notification.userInfo[@"on"] boolValue]; - // 🔧 新增:更新本地缓存 - self.cachedCpMicEnabled = enabled; - // CP麦位开关的变化由 MicMidpointRectManager 处理,这里只记录日志 NSLog(@"🎮 RoomAnimationView CP麦位开关状态变化: %@", enabled ? @"开启" : @"关闭"); } @@ -4339,29 +4331,12 @@ BannerSchedulerDelegate [[TurboModeStateManager sharedManager] updateGiftEffectsForRoom:roomId enabled:self.hostDelegate.getRoomInfo.hasAnimationEffect]; - // 🔧 新增:更新本地缓存 - [self updateLocalSwitchCache]; - NSLog(@"🎮 RoomAnimationView: 收到房间ID设置通知,房间ID: %@", roomId); } } // 🔧 新增:更新本地开关状态缓存 -- (void)updateLocalSwitchCache { - if (!self.currentRoomId) return; - - TurboModeStateManager *manager = [TurboModeStateManager sharedManager]; - self.cachedGiftEffectsEnabled = [manager isGiftEffectsEnabledForRoom:self.currentRoomId]; - self.cachedGlobalGiftScreenEnabled = [manager isGlobalGiftScreenEnabledForRoom:self.currentRoomId]; - self.cachedGlobalGameScreenEnabled = [manager isGlobalGameScreenEnabledForRoom:self.currentRoomId]; - self.cachedCpMicEnabled = [manager isCpMicEnabledForRoom:self.currentRoomId]; - - NSLog(@"🎮 RoomAnimationView: 本地开关缓存已更新 - 礼物特效:%@, 全局礼物:%@, 全局游戏:%@, CP麦位:%@", - self.cachedGiftEffectsEnabled ? @"开启" : @"关闭", - self.cachedGlobalGiftScreenEnabled ? @"开启" : @"关闭", - self.cachedGlobalGameScreenEnabled ? @"开启" : @"关闭", - self.cachedCpMicEnabled ? @"开启" : @"关闭"); -} +// 移除本地缓存更新:统一直接查 TurboModeStateManager // 🔧 新增:处理 Turbo Mode 状态变化通知 - (void)handleTurboModeStateChanged:(NSNotification *)notification { @@ -4373,7 +4348,11 @@ BannerSchedulerDelegate NSLog(@"🎮 RoomAnimationView: Turbo Mode 已开启,停止所有 banner 和动画"); } else { // Turbo Mode 关闭时,恢复正常的 banner 和动画控制 - NSLog(@"🎮 RoomAnimationView: Turbo Mode 已关闭,恢复正常的 banner 和动画控制"); + if (self.bannerScheduler) { + // 关键:恢复调度器,清除 isPaused 并在空闲时自动触发下一条 + [self.bannerScheduler resume]; + } + NSLog(@"🎮 RoomAnimationView: Turbo Mode 已关闭,恢复 banner 调度"); } } diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m index adbf0543..d834e1b0 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m +++ b/YuMi/Modules/YMRoom/View/MoreView/View/Cell/XPRoomMoreMenuCollectionViewCell.m @@ -53,11 +53,6 @@ - (void)setItemModel:(XPRoomMoreItemModel *)itemModel { _itemModel = itemModel; if (_itemModel) { - NSLog(@"=== Cell 设置数据 ==="); - NSLog(@"标题: %@", _itemModel.title); - NSLog(@"图片: %@", _itemModel.imageName); - NSLog(@"类型: %ld", (long)_itemModel.type); - self.titleLabel.text = _itemModel.title; self.titleLabel.textColor = _itemModel.titleColor ? _itemModel.titleColor : [DJDKMIMOMColor mainTextColor]; if (itemModel.imageTintColor) { @@ -66,8 +61,6 @@ } else { self.logoImageView.image = [UIImage getLanguageImage:_itemModel.imageName]; } - - NSLog(@"图片是否加载成功: %@", self.logoImageView.image ? @"是" : @"否"); } } diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/XPEffectPanelViewController.m b/YuMi/Modules/YMRoom/View/MoreView/View/XPEffectPanelViewController.m index 85c76e50..4ae08d83 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/View/XPEffectPanelViewController.m +++ b/YuMi/Modules/YMRoom/View/MoreView/View/XPEffectPanelViewController.m @@ -76,60 +76,56 @@ make.trailing.mas_equalTo(self.bottomAreaBackground).offset(-20); make.width.height.mas_equalTo(44); }]; + + self.dismissButton.hidden = YES; } - (void)setupTitle { self.titleLabel = [[UILabel alloc] init]; self.titleLabel.text = YMLocalizedString(@"20.20.62_text_9"); // Turbo Mode self.titleLabel.textColor = [UIColor whiteColor]; - self.titleLabel.font = [UIFont boldSystemFontOfSize:18]; + self.titleLabel.font = kFontMedium(15); self.titleLabel.textAlignment = NSTextAlignmentCenter; [self.bottomAreaBackground addSubview:self.titleLabel]; // 设置约束 - 使用 Masonry [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.mas_equalTo(self.dismissButton); - make.centerX.mas_equalTo(self.bottomAreaBackground); - make.leading.mas_greaterThanOrEqualTo(self.bottomAreaBackground).offset(60); - make.trailing.mas_lessThanOrEqualTo(self.bottomAreaBackground).offset(-60); +// make.centerX.mas_equalTo(self.bottomAreaBackground); + make.leading.mas_greaterThanOrEqualTo(self.bottomAreaBackground).offset(16); +// make.trailing.mas_lessThanOrEqualTo(self.bottomAreaBackground).offset(-60); }]; } - (void)setupSwitches { // 礼物特效开关(临时状态) [self setupSwitchItem:YMLocalizedString(@"20.20.62_text_10") // Gift effects - switch:self.giftEffectsSwitch - atIndex:0]; + atIndex:0]; // 全局礼物屏幕开关(持久化) [self setupSwitchItem:YMLocalizedString(@"20.20.62_text_11") // Global gift screen - switch:self.globalGiftScreenSwitch - atIndex:1]; + atIndex:1]; // 全局游戏屏幕开关(持久化) [self setupSwitchItem:YMLocalizedString(@"20.20.62_text_12") // Global game screen - switch:self.globalGameScreenSwitch - atIndex:2]; + atIndex:2]; // CP麦位开关(持久化) [self setupSwitchItem:YMLocalizedString(@"20.20.62_text_21") // CP mic - switch:self.cpMicSwitch - atIndex:3]; + atIndex:3]; } - (void)setupSwitchItem:(NSString *)title - switch:(UISwitch *)switchControl atIndex:(NSInteger)index { - - UIView *switchView = [[UIView alloc] init]; - switchView.backgroundColor = [UIColor colorWithWhite:0.2 alpha:0.8]; - switchView.layer.cornerRadius = 12; + UIView *switchView = [[UIView alloc] init]; + switchView.backgroundColor = [UIColor clearColor]; + switchView.layer.cornerRadius = 12; [self.bottomAreaBackground addSubview:switchView]; UILabel *titleLabel = [[UILabel alloc] init]; titleLabel.text = title; titleLabel.textColor = [UIColor whiteColor]; - titleLabel.font = [UIFont systemFontOfSize:16]; + titleLabel.font = kFontRegular(14); [switchView addSubview:titleLabel]; UISwitch *switchViewControl = [[UISwitch alloc] init]; @@ -138,19 +134,18 @@ // 设置约束 - 使用 Masonry [switchView mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(self.bottomAreaBackground).offset(20); - make.trailing.mas_equalTo(self.bottomAreaBackground).offset(-20); - make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(30 + index * 70); + make.leading.trailing.mas_equalTo(self.bottomAreaBackground).inset(16); + make.top.mas_equalTo(self.titleLabel.mas_bottom).offset(20 + index * 50); make.height.mas_equalTo(50); }]; [titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.leading.mas_equalTo(switchView).offset(16); + make.leading.mas_equalTo(switchView); make.centerY.mas_equalTo(switchView); }]; [switchViewControl mas_makeConstraints:^(MASConstraintMaker *make) { - make.trailing.mas_equalTo(switchView).offset(-16); + make.trailing.mas_equalTo(switchView); make.centerY.mas_equalTo(switchView); }]; diff --git a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m index 7dd890d3..977bbae8 100644 --- a/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m +++ b/YuMi/Modules/YMRoom/View/MoreView/View/XPRoomMoreMenuViewController.m @@ -201,13 +201,6 @@ extern NSString *const kTurboModeButtonStateChanged; #pragma mark - XPMoreMenuProtocol - (void)getMoreMenuDataSuccess:(NSArray *)list { - NSLog(@"=== getMoreMenuDataSuccess ==="); - NSLog(@"接收到 %lu 个菜单项", (unsigned long)list.count); - - for (XPRoomMoreItemModel *item in list) { - NSLog(@"菜单项: 标题=%@, 图片=%@, 类型=%ld", item.title, item.imageName, (long)item.type); - } - self.datasource = list; [self.collectionView reloadData]; diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m b/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m index c3a99145..6017128e 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/GiftComboManager.m @@ -390,14 +390,6 @@ NSString * const kBoomStateForceResetNotification = @"BoomStateForceResetNotific // 新增:打印当前连击状态(用于调试) - (void)printComboState { NSDictionary *stateInfo = [self getComboStateInfo]; - NSLog(@"[Combo effect] 📊 当前连击状态:"); - NSLog(@"[Combo effect] - isCombing: %@", [stateInfo[@"isCombing"] boolValue] ? @"YES" : @"NO"); - NSLog(@"[Combo effect] - enableCombo: %@", [stateInfo[@"enableCombo"] boolValue] ? @"YES" : @"NO"); - NSLog(@"[Combo effect] - combo: %@", stateInfo[@"combo"]); - NSLog(@"[Combo effect] - hasGiftInfo: %@", [stateInfo[@"hasGiftInfo"] boolValue] ? @"YES" : @"NO"); - NSLog(@"[Combo effect] - targetCount: %@", stateInfo[@"targetCount"]); - NSLog(@"[Combo effect] - errorMessage: %@", stateInfo[@"errorMessage"]); - // 检查并修复连击计数异常 [self validateAndFixComboCount]; } diff --git a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m index a2117109..97d7f5e7 100644 --- a/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m +++ b/YuMi/Modules/YMRoom/View/SendGiftView/View/GiftComboView.m @@ -172,7 +172,6 @@ - (void)updateCount { // 在连击面板点击时,需要先更新连击计数 NSInteger comboCount = [[GiftComboManager sharedManager] currentCount]; - NSLog(@"[Combo effect] 🔢 更新连击次数显示 - combo: %ld", (long)comboCount); NSString *countStr = [NSString stringWithFormat:@"x%ld", comboCount]; NSShadow *shadow = [[NSShadow alloc] init]; shadow.shadowBlurRadius = 3; diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.m b/YuMi/Modules/YMRoom/View/XPRoomViewController.m index d8a7bd9a..705dc159 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomViewController.m +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.m @@ -2096,9 +2096,20 @@ XPCandyTreeInsufficientBalanceViewDelegate> NSLog(@"[Recv] --- Message Raw Attach Content: %@, %@, %ld", @(message.senderClientType), message.rawAttachContent, (long)message.messageType); - if ([message.rawAttachContent containsString:@"\"allRoomMsg\":1"]) { - NSLog(@"[Recv] --- 拦截旧的全房间消息"); - continue; + // 全服礼物/游戏飘屏按 TurboModeStateManager 的房间开关控制 + NSString *currentRoomIdForTurbo = @(self.roomInfo.roomId).stringValue; + BOOL containsAllRoomMsg = [message.rawAttachContent containsString:@"\"allRoomMsg\":1"]; // 全服礼物飘屏标记 + BOOL containsAllGameMsg = [message.rawAttachContent containsString:@"\"allGameMsg\":1"]; // 预留:全服游戏飘屏标记 + if (containsAllRoomMsg || containsAllGameMsg) { + BOOL allowGiftScreen = [[TurboModeStateManager sharedManager] isGlobalGiftScreenEnabledForRoom:currentRoomIdForTurbo]; + BOOL allowGameScreen = [[TurboModeStateManager sharedManager] isGlobalGameScreenEnabledForRoom:currentRoomIdForTurbo]; + if ((containsAllRoomMsg && !allowGiftScreen) || (containsAllGameMsg && !allowGameScreen)) { + NSLog(@"[Recv] ⛔️ 按 TurboMode 屏蔽全服飘屏 | gift=%@ game=%@ | roomId=%@", + allowGiftScreen ? @"ON" : @"OFF", + allowGameScreen ? @"ON" : @"OFF", + currentRoomIdForTurbo); + continue; + } } if (message.messageType == NIMMessageTypeNotification) { @@ -2915,6 +2926,15 @@ XPCandyTreeInsufficientBalanceViewDelegate> }else if(attachment.first == CustomMessageType_LuckyBag && attachment.second == Custom_Message_Sub_Room_Gift_LuckBag_FullScree){ isHave = YES; } + // 对全服飘屏按 TurboModeStateManager 的房间开关做二次过滤 + if (isHave && (attachment.first == CustomMessageType_General_Public_Screen && attachment.second == Custom_Message_Sub_General_Public_Screen_All_Room)) { + NSString *currentRoomIdForTurbo = @(self.roomInfo.roomId).stringValue; + BOOL allowGiftScreen = [[TurboModeStateManager sharedManager] isGlobalGiftScreenEnabledForRoom:currentRoomIdForTurbo]; + if (!allowGiftScreen) { + NSLog(@"[Broadcast] ⛔️ 按 TurboMode 屏蔽全服礼物飘屏 | roomId=%@", currentRoomIdForTurbo); + return; + } + } if (attachment.first == CustomMessageType_RedPacket && attachment.second == Custom_Message_Sub_AllDiamandRedPacket) { if(self.isShowRedPacket == YES)return; XPRedPacketModel *data = [XPRedPacketModel modelWithDictionary:attachment.data]; diff --git a/YuMi/uz-UZ.lproj/Localizable.strings b/YuMi/uz-UZ.lproj/Localizable.strings index 623e0641..13dc8d1d 100644 --- a/YuMi/uz-UZ.lproj/Localizable.strings +++ b/YuMi/uz-UZ.lproj/Localizable.strings @@ -808,197 +808,163 @@ "XPMineDataClanTableViewCell5" = "Hali hech qanday guildga a'zo emas"; "XPMineDataClanTableViewCell6" = "Profil"; "XPMineDataClanTableViewCell7" = "Burjalar:"; -// TODO: 漏的翻译 start -"XPMineDataClanTableViewCell8" = "Birthday:"; -"XPMineDataClanTableViewCell9" = "Room:"; -"XPMineDataClanTableViewCell10" = "Guild:"; -"XPMineDataClanTableViewCell11" = "This user has not joined any room yet"; -"XPMineDataClanTableViewCell12" = "Not joined any room yet"; -"XPMineDataClanTableViewCell13" = "Region:"; -"XPMineDataClanTableViewCell14" = "More"; -"XPMineUserInfoGiftWallViewController0" = "Gifts"; -"XPMineUserInfoGiftWallViewController1" = "Normal gifts"; -"XPMineUserInfoGiftWallViewController2" = "Lucky gifts"; -"XPMineUserInfoGiftWallViewController3" = "No photos yet"; -"XPMineUserInfoGiftWallViewController4" = "No gifts yet"; - -"XPMineUserInfoTableViewCell1" = "I am a default signature"; -"XPMineUserInfoTableViewCell2" = "Live"; - - -"XPMineVisitorEmptyTableViewCell0" = "No data"; - -"XPMineVisitorTableViewCell0" = "User nickname"; - -"XPMineRechargeTableViewCell0" = "Coins"; - -"XPMineUserInfoViewController0" = "Report"; -"XPMineUserInfoViewController1" = "Block User"; -"XPMineUserInfoViewController2" = "Remove from Blacklist"; -"XPMineUserInfoViewController3" = "By removing from blacklist, you will receive messages from this user as usual"; -"XPMineUserInfoViewController4" = "Add to Blacklist"; -"XPMineUserInfoViewController5" = "By adding to blacklist, you will no longer receive messages from this user"; -"XPMineUserInfoViewController6" = "Removed from blacklist successfully"; -"XPMineUserInfoViewController7" = "Added to blacklist successfully"; -"XPMineUserInfoViewController8" = "Chat"; -"XPMineUserInfoViewController9" = "Follow"; -"XPMineUserInfoViewController10" = "Following"; -"XPMineUserInfoViewController11" = "Profile"; -"XPMineUserInfoViewController12" = "Posts"; -"XPMineUserInfoViewController13" = "Gift Wall"; - -"XPMineUserInfoAlbumViewController0" = "My Albums"; -"XPMineUserInfoAlbumViewController1" = "Upload from Camera"; -"XPMineUserInfoAlbumViewController3" = "Camera access restricted. Tap OK to go to system settings"; -"XPMineUserInfoAlbumViewController5" = "Photo library access restricted. Tap OK to go to system settings"; -"XPMineUserInfoAlbumViewController6" = "Local Album"; -"XPMineUserInfoAlbumViewController8" = "Photo library access restricted. Tap OK to go to system settings"; -"XPMineUserInfoAlbumViewController10" = "Photo library access restricted. Tap OK to go to system settings"; -"XPMineUserInfoAlbumViewController11" = "You can only upload up to 8 photos"; -"XPMineUserInfoAlbumViewController12" = "Deletion is irreversible"; -"XPMineUserInfoAlbumViewController13" = "Do you want to delete?"; -"XPMineUserInfoAlbumViewController14" = "Photo under review, will be uploaded automatically after approval"; -"XPMineUserInfoAlbumViewController15" = "Deleted successfully"; -"XPMineUserInfoAlbumViewController16" = "Edit"; -"XPMineUserInfoAlbumViewController17" = "Done"; - -"XPMineUserDataViewController0" = "Application submitted, waiting for admin approval"; -"XPMineUserDataViewController1" = "Posts"; -"XPMineUserDataViewController2" = "Default posts cannot be liked"; -"XPMineUserDataViewController3" = "Default posts cannot be commented"; - -"XPMineSimpleUserInfoViewController0" = "Report"; -"XPMineSimpleUserInfoViewController1" = "We have received your request and will process it as soon as possible"; -"XPMineSimpleUserInfoViewController2" = "Block"; -"XPMineSimpleUserInfoViewController3" = "Remove from Blacklist"; -"XPMineSimpleUserInfoViewController4" = "By removing from blacklist, you will receive messages from this user as usual"; -"XPMineSimpleUserInfoViewController5" = "Add to Blacklist"; -"XPMineSimpleUserInfoViewController6" = "By adding to blacklist, you will no longer receive messages from this user"; -"XPMineSimpleUserInfoViewController7" = "Removed from blacklist successfully"; -"XPMineSimpleUserInfoViewController8" = "Added to blacklist successfully"; -"XPMineSimpleUserInfoViewController9" = "Chat with them"; -"XPMineSimpleUserInfoViewController10" = "Follow"; -"XPMineSimpleUserInfoViewController11" = "Following"; - -"XPMineUserInfoDesViewController0" = "Edit Personal Introduction"; -"XPMineUserInfoDesViewController1" = "Maximum %ld characters"; -"XPMineUserInfoDesViewController2" = "Write a self-introduction to let others know more about you~"; -"XPMineUserInfoDesViewController3" = "Done"; - -"XPMineUserInfoEditViewController0" = "Edit Profile"; -"XPMineUserInfoEditViewController1" = "Upload from Camera"; -"XPMineUserInfoEditViewController2" = "Camera unavailable"; -"XPMineUserInfoEditViewController3" = "Camera access restricted. Tap OK to go to system settings"; -"XPMineUserInfoEditViewController4" = "Camera unavailable"; -"XPMineUserInfoEditViewController5" = "Photo library access restricted. Tap OK to go to system settings"; -"XPMineUserInfoEditViewController6" = "Local Album"; -"XPMineUserInfoEditViewController7" = "Photo library access restricted. Tap OK to go to system settings"; -"XPMineUserInfoEditViewController8" = "Photo library access restricted. Tap OK to go to system settings"; -"XPMineUserInfoEditViewController9" = "Profile under review"; -"XPMineUserInfoEditViewController10" = "Profile under review, will be applied automatically after approval"; -"XPMineUserInfoEditViewController11" = "Updated successfully"; -"XPMineUserInfoEditViewController12" = "Avatar has been submitted for review, it will be automatically applied upon approval"; -"XPMineUserInfoEditViewController13" = "Update successful"; - - -"XPMineUserInfoNickViewController0" = "Edit Nickname"; -"XPMineUserInfoNickViewController1" = "Maximum character limit reached"; -"XPMineUserInfoNickViewController2" = "Maximum character limit reached"; -"XPMineUserInfoNickViewController3" = "Done"; - -"XPMineUserInfoGiftWallViewController0" = "Gifts"; - - -"XPMineVisitorViewController0" = "No more visitor records"; -"XPMineVisitorViewController1" = "Visitor records"; -"XPMineVisitorViewController2" = "No visitor records yet"; - -"XPMineViewController0" = "To create a safer online environment and protect your and others' property security, please complete real-name authentication first."; - -"XPMineViewController2" = "Real-name Authentication"; - -"XPSimpleMineViewController0" = "You don't have any guild yet"; -"XPSimpleMineViewController1" = "My Guild"; -"XPSimpleMineViewController2" = "Personalize"; -"XPSimpleMineViewController3" = "Fan Clubs"; -"XPSimpleMineViewController4" = "Teen Mode"; -"XPSimpleMineViewController5" = "Feedback"; -"XPSimpleMineViewController6" = "Settings"; - -"XPIAPRechargeHeaderView0" = "My Coins"; - -"XPIAPRechargeViewController0" = "Purchase Failed"; -"XPIAPRechargeViewController1" = "Unknown error occurred, please try again"; -"XPIAPRechargeViewController2" = "Confirm Recharge"; -"XPIAPRechargeViewController3" = "《User Recharge Agreement》"; -"XPIAPRechargeViewController4" = "I have read and agree"; -"XPIAPRechargeViewController5" = "For any questions, please contact customer service, MoliStar ID"; -"XPIAPRechargeViewController6" = "My Account"; -"XPIAPRechargeViewController7" = "Reminder"; -"XPIAPRechargeViewController8" = "Recharge failed. Please contact customer service for assistance."; -"XPIAPRechargeViewController9" = "Contact Customer Service"; -"XPIAPRechargeViewController10" = "Recharge failed. Currently only devices running iOS 15 and above can recharge. Please upgrade your system and try again."; -"XPIAPRechargeViewController11" = "Please select the number of Coins to be recharged"; - - -"XPMineRechargeViewController0" = "Purchase Failed"; -"XPMineRechargeViewController1" = "Unknown error occurred, please try again"; -"XPMineRechargeViewController2" = "《User Recharge Agreement"; -"XPMineRechargeViewController3" = "I have read and agree"; - -"XPMinePayPwdViewController0" = "Set Payment Password"; -"XPMinePayPwdViewController1" = "Failed to get phone number"; -"XPMinePayPwdViewController2" = "Verification code sent successfully"; -"XPMinePayPwdViewController3" = "Payment password set successfully"; -"XPMinePayPwdViewController4" = "Payment password must be 6-digit number"; -"XPMinePayPwdViewController5" = "Payment password must be numeric"; -"XPMinePayPwdViewController6" = "Passwords entered do not match"; -"XPMinePayPwdViewController7" = "Enter verification code"; - -"XPMinePayPwdViewController9" = "Verification code sent to your bound phone %@****%@"; -"XPMinePayPwdViewController10" = "Enter payment password"; -"XPMinePayPwdViewController11" = "Confirm payment password"; - -"XPMineBlackListViewController0" = "Blacklist"; -"XPMineBlackListViewController1" = "Remove"; - -"XPMineResetPayPwdViewController0" = "Reset Payment Password"; -"XPMineResetPayPwdViewController1" = "Payment password reset successfully"; -"XPMineResetPayPwdViewController2" = "Passwords entered do not match"; -"XPMineResetPayPwdViewController3" = "Enter payment password"; -"XPMineResetPayPwdViewController4" = "Confirm payment password"; - - -"XPMineSettingViewController0" = "Settings"; -"XPMineSettingViewController1" = "Please bind your phone number first"; -"XPMineSettingViewController2" = "Clear Cache"; -"XPMineSettingViewController3" = "Do you want to clear cache?"; -"XPMineSettingViewController4" = "Cache cleared"; -"XPMineSettingViewController5" = "Currently updated to the latest version"; -"XPMineSettingViewController6" = "Currently updated to the latest version"; -"XPMineSettingViewController7" = "Log out of current account"; -"XPMineSettingViewController8" = "Log out"; -"XPMineSettingViewController9" = "Set Login Password"; -"XPMineSettingViewController10" = "To facilitate your next login, please set a login password first"; - -"XPMineModifPayPwdViewController0" = "Modify Payment Password"; -"XPMineModifPayPwdViewController1" = "Payment password modified successfully"; -"XPMineModifPayPwdViewController2" = "Passwords entered do not match"; -"XPMineModifPayPwdViewController3" = "New payment password must be numeric"; -"XPMineModifPayPwdViewController4" = "Enter current payment password"; -"XPMineModifPayPwdViewController5" = "Enter payment password"; -"XPMineModifPayPwdViewController6" = "Confirm payment password"; - -"XPMineModifPayPwdViewController8" = "Forgot Password"; - -"XPMineFeedbackViewController0" = "Feedback"; -"XPMineFeedbackViewController1" = "Thank you for your valuable feedback, let's work together to create a better"; -"XPMineFeedbackViewController2" = "Problem Description"; -"XPMineFeedbackViewController3" = "Please describe in detail the problems and situations you encountered. Thank you for your valuable feedback."; -"XPMineFeedbackViewController4" = "Please enter your contact information"; -"XPMineFeedbackViewController5" = "Submit Feedback"; -// TODO: 漏的翻译 end +"XPMineDataClanTableViewCell8" = "Tug'ilgan kun:"; +"XPMineDataClanTableViewCell9" = "Xona:"; +"XPMineDataClanTableViewCell10" = "Gildiya:"; +"XPMineDataClanTableViewCell11" = "Bu foydalanuvchi hali hech qanday xonaga qo'shilmagan"; +"XPMineDataClanTableViewCell12" = "Hali hech qanday xonaga qo'shilmagan"; +"XPMineDataClanTableViewCell13" = "Hudud:"; +"XPMineDataClanTableViewCell14" = "Batafsil"; +"XPMineUserInfoGiftWallViewController0" = "Sovg'alar"; +"XPMineUserInfoGiftWallViewController1" = "Oddiy sovg'alar"; +"XPMineUserInfoGiftWallViewController2" = "Omadli sovg'alar"; +"XPMineUserInfoGiftWallViewController3" = "Hali rasmlar mavjud emas"; +"XPMineUserInfoGiftWallViewController4" = "Hali sovg'alar mavjud emas"; +"XPMineUserInfoTableViewCell1" = "Men standart imzodaman"; +"XPMineUserInfoTableViewCell2" = "Jonli"; +"XPMineVisitorEmptyTableViewCell0" = "Ma'lumot yo'q"; +"XPMineVisitorTableViewCell0" = "Foydalanuvchi taxallusi"; +"XPMineRechargeTableViewCell0" = "Tangalar"; +"XPMineUserInfoViewController0" = "Shikoyat qilish"; +"XPMineUserInfoViewController1" = "Foydalanuvchini bloklash"; +"XPMineUserInfoViewController2" = "Qora ro'yxatdan olib tashlash"; +"XPMineUserInfoViewController3" = "Qora ro'yxatdan olib tashlash orqali siz ushbu foydalanuvchidan xabarlarni odatdagidek olasiz"; +"XPMineUserInfoViewController4" = "Qora ro'yxatga qo'shish"; +"XPMineUserInfoViewController5" = "Qora ro'yxatga qo'shish orqali siz ushbu foydalanuvchidan boshqa xabarlar olmaysiz"; +"XPMineUserInfoViewController6" = "Qora ro'yxatdan muvaffaqiyatli olib tashlandi"; +"XPMineUserInfoViewController7" = "Qora ro'yxatga muvaffaqiyatli qo'shildi"; +"XPMineUserInfoViewController8" = "Suhbat"; +"XPMineUserInfoViewController9" = "Kuzatish"; +"XPMineUserInfoViewController10" = "Kuzatilmoqda"; +"XPMineUserInfoViewController11" = "Profil"; +"XPMineUserInfoViewController12" = "Postlar"; +"XPMineUserInfoViewController13" = "Sovg'alar devori"; +"XPMineUserInfoAlbumViewController0" = "Mening albomlarim"; +"XPMineUserInfoAlbumViewController1" = "Kameradan yuklash"; +"XPMineUserInfoAlbumViewController3" = "Kameraga kirish cheklangan. Tizim sozlamalariga o'tish uchun OK tugmasini bosing"; +"XPMineUserInfoAlbumViewController5" = "Fotoalbomga kirish cheklangan. Tizim sozlamalariga o'tish uchun OK tugmasini bosing"; +"XPMineUserInfoAlbumViewController6" = "Lokal albom"; +"XPMineUserInfoAlbumViewController8" = "Fotoalbomga kirish cheklangan. Tizim sozlamalariga o'tish uchun OK tugmasini bosing"; +"XPMineUserInfoAlbumViewController10" = "Fotoalbomga kirish cheklangan. Tizim sozlamalariga o'tish uchun OK tugmasini bosing"; +"XPMineUserInfoAlbumViewController11" = "Siz faqat 8 tagacha rasm yuklashingiz mumkin"; +"XPMineUserInfoAlbumViewController12" = "O'chirishni qaytarib bo'lmaydi"; +"XPMineUserInfoAlbumViewController13" = "O'chirmoqchimisiz?"; +"XPMineUserInfoAlbumViewController14" = "Rasm ko'rib chiqilmoqda, tasdiqlangandan keyin avtomatik yuklanadi"; +"XPMineUserInfoAlbumViewController15" = "Muvaffaqiyatli o'chirildi"; +"XPMineUserInfoAlbumViewController16" = "Tahrirlash"; +"XPMineUserInfoAlbumViewController17" = "Bajarildi"; +"XPMineUserDataViewController0" = "Ariza topshirildi, ma'mur tasdiqini kutmoqda"; +"XPMineUserDataViewController1" = "Postlar"; +"XPMineUserDataViewController2" = "Standart postlarni yoqtirish mumkin emas"; +"XPMineUserDataViewController3" = "Standart postlarga izoh qoldirish mumkin emas"; +"XPMineSimpleUserInfoViewController0" = "Shikoyat qilish"; +"XPMineSimpleUserInfoViewController1" = "Biz sizning so'rovingizni qabul qildik va imkon qadar tezda ko'rib chiqamiz"; +"XPMineSimpleUserInfoViewController2" = "Bloklash"; +"XPMineSimpleUserInfoViewController3" = "Qora ro'yxatdan olib tashlash"; +"XPMineSimpleUserInfoViewController4" = "Qora ro'yxatdan olib tashlash orqali siz ushbu foydalanuvchidan xabarlarni odatdagidek olasiz"; +"XPMineSimpleUserInfoViewController5" = "Qora ro'yxatga qo'shish"; +"XPMineSimpleUserInfoViewController6" = "Qora ro'yxatga qo'shish orqali siz ushbu foydalanuvchidan boshqa xabarlar olmaysiz"; +"XPMineSimpleUserInfoViewController7" = "Qora ro'yxatdan muvaffaqiyatli olib tashlandi"; +"XPMineSimpleUserInfoViewController8" = "Qora ro'yxatga muvaffaqiyatli qo'shildi"; +"XPMineSimpleUserInfoViewController9" = "Ularni suhbat qilish"; +"XPMineSimpleUserInfoViewController10" = "Kuzatish"; +"XPMineSimpleUserInfoViewController11" = "Kuzatilmoqda"; +"XPMineUserInfoDesViewController0" = "Shaxsiy ta'rifni tahrirlash"; +"XPMineUserInfoDesViewController1" = "Maksimal %ld belgi"; +"XPMineUserInfoDesViewController2" = "O'zingiz haqingizda batafsil yozing, boshqalar sizni yaxshiroq tanishsin~"; +"XPMineUserInfoDesViewController3" = "Bajarildi"; +"XPMineUserInfoEditViewController0" = "Profilni tahrirlash"; +"XPMineUserInfoEditViewController1" = "Kameradan yuklash"; +"XPMineUserInfoEditViewController2" = "Kamera mavjud emas"; +"XPMineUserInfoEditViewController3" = "Kameraga kirish cheklangan. Tizim sozlamalariga o'tish uchun OK tugmasini bosing"; +"XPMineUserInfoEditViewController4" = "Kamera mavjud emas"; +"XPMineUserInfoEditViewController5" = "Fotoalbomga kirish cheklangan. Tizim sozlamalariga o'tish uchun OK tugmasini bosing"; +"XPMineUserInfoEditViewController6" = "Lokal albom"; +"XPMineUserInfoEditViewController7" = "Fotoalbomga kirish cheklangan. Tizim sozlamalariga o'tish uchun OK tugmasini bosing"; +"XPMineUserInfoEditViewController8" = "Fotoalbomga kirish cheklangan. Tizim sozlamalariga o'tish uchun OK tugmasini bosing"; +"XPMineUserInfoEditViewController9" = "Profil ko'rib chiqilmoqda"; +"XPMineUserInfoEditViewController10" = "Profil ko'rib chiqilmoqda, tasdiqlangandan keyin avtomatik qo'llaniladi"; +"XPMineUserInfoEditViewController11" = "Muvaffaqiyatli yangilandi"; +"XPMineUserInfoEditViewController12" = "Avatar ko'rib chiqish uchun topshirildi, tasdiqlangandan keyin avtomatik qo'llaniladi"; +"XPMineUserInfoEditViewController13" = "Yangilash muvaffaqiyatli"; +"XPMineUserInfoNickViewController0" = "Taxallusni tahrirlash"; +"XPMineUserInfoNickViewController1" = "Maksimal belgi chegarasiga yetildi"; +"XPMineUserInfoNickViewController2" = "Maksimal belgi chegarasiga yetildi"; +"XPMineUserInfoNickViewController3" = "Bajarildi"; +"XPMineUserInfoGiftWallViewController0" = "Sovg'alar"; +"XPMineVisitorViewController0" = "Boshqa mehmon yozuvlari yo'q"; +"XPMineVisitorViewController1" = "Mehmon yozuvlari"; +"XPMineVisitorViewController2" = "Hali mehmon yozuvlari mavjud emas"; +"XPMineViewController0" = "Xavfsiz onlayn muhit yaratish va sizning va boshqalarning mulk xavfsizligini himoya qilish uchun, iltimos, avval haqiqiy ism autentifikatsiyasini to'ldiring."; +"XPMineViewController2" = "Haqiqiy ism autentifikatsiyasi"; +"XPSimpleMineViewController0" = "Sizda hali hech qanday gildiya yo'q"; +"XPSimpleMineViewController1" = "Mening gildiyam"; +"XPSimpleMineViewController2" = "Shaxsiylashtirish"; +"XPSimpleMineViewController3" = "Muxlislar klublari"; +"XPSimpleMineViewController4" = "Yosh rejimi"; +"XPSimpleMineViewController5" = "Fikr-mulohaza"; +"XPSimpleMineViewController6" = "Sozlamalar"; +"XPIAPRechargeHeaderView0" = "Mening tangalarim"; +"XPIAPRechargeViewController0" = "Xarida muvaffaqiyatsiz"; +"XPIAPRechargeViewController1" = "Noma'lum xato yuz berdi, iltimos qayta urinib ko'ring"; +"XPIAPRechargeViewController2" = "To'ldirishni tasdiqlash"; +"XPIAPRechargeViewController3" = "《Foydalanuvchi To'ldirish Shartnomasi》"; +"XPIAPRechargeViewController4" = "Men o'qidim va qabul qildim"; +"XPIAPRechargeViewController5" = "Savollar bo'lsa, iltimos mijozlar xizmatiga murojaat qiling, MoliStar ID"; +"XPIAPRechargeViewController6" = "Mening hisobim"; +"XPIAPRechargeViewController7" = "Eslatma"; +"XPIAPRechargeViewController8" = "To'ldirish muvaffaqiyatsiz. Iltimos yordam uchun mijozlar xizmatiga murojaat qiling."; +"XPIAPRechargeViewController9" = "Mijozlar xizmatiga murojaat qiling"; +"XPIAPRechargeViewController10" = "To'ldirish muvaffaqiyatsiz. Hozirda faqat iOS 15 va undan yuqori versiyalarda ishlaydigan qurilmalar to'ldirishi mumkin. Iltimos tizimingizni yangilang va qayta urinib ko'ring."; +"XPIAPRechargeViewController11" = "Iltimos to'ldiriladigan Tangalar sonini tanlang"; +"XPMineRechargeViewController0" = "Xarida muvaffaqiyatsiz"; +"XPMineRechargeViewController1" = "Noma'lum xato yuz berdi, iltimos qayta urinib ko'ring"; +"XPMineRechargeViewController2" = "《Foydalanuvchi To'ldirish Shartnomasi"; +"XPMineRechargeViewController3" = "Men o'qidim va qabul qildim"; +"XPMinePayPwdViewController0" = "To'lov parolini o'rnatish"; +"XPMinePayPwdViewController1" = "Telefon raqamini olish muvaffaqiyatsiz"; +"XPMinePayPwdViewController2" = "Tasdiqlash kodi muvaffaqiyatli yuborildi"; +"XPMinePayPwdViewController3" = "To'lov paroli muvaffaqiyatli o'rnatildi"; +"XPMinePayPwdViewController4" = "To'lov paroli 6 raqamli bo'lishi kerak"; +"XPMinePayPwdViewController5" = "To'lov paroli raqamli bo'lishi kerak"; +"XPMinePayPwdViewController6" = "Kiritilgan parollar mos kelmadi"; +"XPMinePayPwdViewController7" = "Tasdiqlash kodini kiriting"; +"XPMinePayPwdViewController9" = "Tasdiqlash kodi sizning bog'langan telefon raqamingiz %@****%@ ga yuborildi"; +"XPMinePayPwdViewController10" = "To'lov parolini kiriting"; +"XPMinePayPwdViewController11" = "To'lov parolini tasdiqlang"; +"XPMineBlackListViewController0" = "Qora ro'yxat"; +"XPMineBlackListViewController1" = "O'chirish"; +"XPMineResetPayPwdViewController0" = "To'lov parolini qayta o'rnatish"; +"XPMineResetPayPwdViewController1" = "To'lov paroli muvaffaqiyatli qayta o'rnatildi"; +"XPMineResetPayPwdViewController2" = "Kiritilgan parollar mos kelmadi"; +"XPMineResetPayPwdViewController3" = "To'lov parolini kiriting"; +"XPMineResetPayPwdViewController4" = "To'lov parolini tasdiqlang"; +"XPMineSettingViewController0" = "Sozlamalar"; +"XPMineSettingViewController1" = "Iltimos avval telefon raqamingizni bog'lang"; +"XPMineSettingViewController2" = "Keshni tozalash"; +"XPMineSettingViewController3" = "Keshni tozalamoqchimisiz?"; +"XPMineSettingViewController4" = "Kesh tozalandi"; +"XPMineSettingViewController5" = "Hozirda eng so'nggi versiyaga yangilandi"; +"XPMineSettingViewController6" = "Hozirda eng so'nggi versiyaga yangilandi"; +"XPMineSettingViewController7" = "Joriy hisobdan chiqish"; +"XPMineSettingViewController8" = "Chiqish"; +"XPMineSettingViewController9" = "Kirish parolini o'rnatish"; +"XPMineSettingViewController10" = "Keyingi kirishingizni qulaylashtirish uchun, iltimos avval kirish parolini o'rnating"; +"XPMineModifPayPwdViewController0" = "To'lov parolini o'zgartirish"; +"XPMineModifPayPwdViewController1" = "To'lov paroli muvaffaqiyatli o'zgartirildi"; +"XPMineModifPayPwdViewController2" = "Kiritilgan parollar mos kelmadi"; +"XPMineModifPayPwdViewController3" = "Yangi to'lov paroli raqamli bo'lishi kerak"; +"XPMineModifPayPwdViewController4" = "Joriy to'lov parolini kiriting"; +"XPMineModifPayPwdViewController5" = "To'lov parolini kiriting"; +"XPMineModifPayPwdViewController6" = "To'lov parolini tasdiqlang"; +"XPMineModifPayPwdViewController8" = "Parolni unutdingizmi"; +"XPMineFeedbackViewController0" = "Fikr-mulohaza"; +"XPMineFeedbackViewController1" = "Sizning qimmatli fikringiz uchun tashakkur, keling birgalikda yaxshiroq yarataylik"; +"XPMineFeedbackViewController2" = "Muammo tavsifi"; +"XPMineFeedbackViewController3" = "Iltimos, duch kelgan muammo va vaziyatlaringizni batafsil tasvirlang. Qimmatli fikringiz uchun tashakkur."; +"XPMineFeedbackViewController4" = "Iltimos aloqa ma'lumotlaringizni kiriting"; +"XPMineFeedbackViewController5" = "Fikr-mulohazani yuborish"; "XPMineAboutUsViewController0" = "Haqida"; "XPMineNotificaViewController0" = "Bildirishnoma sozlamalari";