From c9cacb388b6f9f9ce8909953165a1dd390dd6733 Mon Sep 17 00:00:00 2001 From: eggmanQQQ <3671373519@qq.com> Date: Thu, 17 Oct 2024 16:05:02 +0800 Subject: [PATCH] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E6=AD=A3=E9=83=A8?= =?UTF-8?q?=E5=88=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- YuMi/Modules/YMRTC/RtcManager.h | 4 +- YuMi/Modules/YMRTC/RtcManager.m | 4 -- .../Features/Boom/RoomBoomExplosionView.m | 31 ++++------ .../YMRoom/Features/Boom/RoomBoomManager.m | 6 ++ .../YMRoom/Features/Boom/RoomBoomResultView.m | 1 + .../YMRoom/Presenter/XPRoomPresenter.m | 2 +- .../XPRoomActivityContainerView.m | 2 +- .../XPRoomMenuContainerView.h | 2 - .../XPRoomMenuContainerView.m | 41 +++++++------ .../XPRoomMessageContainerView.m | 6 -- .../Modules/YMRoom/View/StageView/StageView.m | 8 +-- YuMi/Modules/YMRoom/View/XPMiniRoomView.m | 6 +- YuMi/Modules/YMRoom/View/XPRoomMiniManager.h | 3 +- YuMi/Modules/YMRoom/View/XPRoomMiniManager.m | 14 ----- .../YMRoom/View/XPRoomViewController.m | 57 ++++++++++++------- .../CardManager/XPSkillCardPlayerManager.h | 13 ++++- .../CardManager/XPSkillCardPlayerManager.m | 4 ++ 17 files changed, 104 insertions(+), 100 deletions(-) diff --git a/YuMi/Modules/YMRTC/RtcManager.h b/YuMi/Modules/YMRTC/RtcManager.h index 4ba4dd12..df6d4560 100644 --- a/YuMi/Modules/YMRTC/RtcManager.h +++ b/YuMi/Modules/YMRTC/RtcManager.h @@ -38,7 +38,7 @@ typedef NS_ENUM(NSInteger, BackMusicPlayState) { ///因为跨房pk结束后会闭麦,用这个限制不要关麦 @property(nonatomic,assign) BOOL isAnckorPk; ///因为最小化进房闭麦问题,用这个限制不要关麦 -@property(nonatomic,assign) BOOL isMiniEnterk; +@property(nonatomic,assign) BOOL isMiniEnter; /** * 是否静音(静别人) * YES:🔇虽然你们麦位上在说话,但是我就是不听。🙉 @@ -142,8 +142,6 @@ typedef NS_ENUM(NSInteger, BackMusicPlayState) { - (NSInteger)loadUserSound; -- (void)resetToDefault; - @property (nonatomic,assign) BOOL broadcast; @end diff --git a/YuMi/Modules/YMRTC/RtcManager.m b/YuMi/Modules/YMRTC/RtcManager.m index a82fddae..83647f08 100644 --- a/YuMi/Modules/YMRTC/RtcManager.m +++ b/YuMi/Modules/YMRTC/RtcManager.m @@ -160,10 +160,6 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; return [self.engine loadUserSound]; } -- (void)resetToDefault { - [self.engine updateUserSound:50]; -} - - (void)usersSpeaking:(NSMutableArray *)uids { if (self.engineDelegate) { [self.engineDelegate usersSpeaking:uids]; diff --git a/YuMi/Modules/YMRoom/Features/Boom/RoomBoomExplosionView.m b/YuMi/Modules/YMRoom/Features/Boom/RoomBoomExplosionView.m index fa5a7c4e..0b213d50 100644 --- a/YuMi/Modules/YMRoom/Features/Boom/RoomBoomExplosionView.m +++ b/YuMi/Modules/YMRoom/Features/Boom/RoomBoomExplosionView.m @@ -17,8 +17,6 @@ @property (nonatomic, strong) VAPView *vapView; @property (nonatomic, strong) XPRoomGiftAnimationParser *vapParser; -//@property (nonatomic, strong) Boom632Model *model; -//@property (nonatomic, strong) BoomInfoModel *boomInfo; @property (nonatomic, assign) NSInteger seq; @property (nonatomic, copy) NSString *countDownURLString; @@ -54,16 +52,15 @@ - (void)dealloc { - if (self.seq != 2) { - // 没有播放完就被移除,通知 manager - [[RoomBoomManager sharedManager] explosionEnd]; - } - [self.vapView stopHWDMP4]; [self.vapView removeFromSuperview]; self.vapView = nil; } +- (void)handleEnd { + [[RoomBoomManager sharedManager] explosionEnd]; +} + - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { @@ -78,22 +75,12 @@ return self; } -//- (void)setModel:(Boom632Model *)model { -// _model = model; -// self.countDownURLString = model.countDownVapUrl; -// self.endURLString = model.endVapUrl; -// [self play_count]; -//} -// -//- (void)setBoomInfo:(BoomInfoModel *)boomInfo { -// _boomInfo = boomInfo; -//} - - (void)play_count { self.seq = 1; NSString *path = [self.countDownURLString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (path.length == 0) { + [self handleEnd]; return; } @@ -106,7 +93,8 @@ [self.vapView playHWDMP4:videoUrl repeatCount:0 delegate:self]; } } failureBlock:^(NSError * _Nullable error) { - + @kStrongify(self); + [self handleEnd]; }]; } @@ -114,6 +102,7 @@ self.seq = 2; NSString *path = [self.endURLString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (path.length == 0) { + [self handleEnd]; return; } @@ -126,7 +115,8 @@ [self.vapView playHWDMP4:videoUrl repeatCount:0 delegate:self]; } } failureBlock:^(NSError * _Nullable error) { - + @kStrongify(self); + [self handleEnd]; }]; } @@ -154,6 +144,7 @@ - (void)viewDidStopPlayMP4:(NSInteger)lastFrameIndex view:(VAPView *)container { } + - (void)viewDidFailPlayMP4:(NSError *)error{ @kWeakify(self); dispatch_async(dispatch_get_main_queue(), ^{ diff --git a/YuMi/Modules/YMRoom/Features/Boom/RoomBoomManager.m b/YuMi/Modules/YMRoom/Features/Boom/RoomBoomManager.m index 6986ebf2..ae849267 100644 --- a/YuMi/Modules/YMRoom/Features/Boom/RoomBoomManager.m +++ b/YuMi/Modules/YMRoom/Features/Boom/RoomBoomManager.m @@ -269,6 +269,8 @@ } [self.bannerEventsQueue addObject:attachment]; + [self sortDataSource]; + [self checkAndStartBoomEvent]; [self checkAndStartBannerEvent]; } @@ -282,6 +284,10 @@ } } +- (void)sortDataSource { +// TODO: boom 和 banner 有新数据时要重新排序 +} + - (void)handleProgressUpdate:(BoomDetailModel *)model { [self updateBoomDetail:model]; diff --git a/YuMi/Modules/YMRoom/Features/Boom/RoomBoomResultView.m b/YuMi/Modules/YMRoom/Features/Boom/RoomBoomResultView.m index 8b8a6658..268f3d5e 100644 --- a/YuMi/Modules/YMRoom/Features/Boom/RoomBoomResultView.m +++ b/YuMi/Modules/YMRoom/Features/Boom/RoomBoomResultView.m @@ -52,6 +52,7 @@ - (NetImageView *)giftPic { if (!_giftPic) { _giftPic = [[NetImageView alloc] init]; + _giftPic.contentMode = UIViewContentModeScaleAspectFit; } return _giftPic; } diff --git a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m index eea81dd5..e1edf717 100644 --- a/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m +++ b/YuMi/Modules/YMRoom/Presenter/XPRoomPresenter.m @@ -348,7 +348,7 @@ fail:^(NSInteger code, NSString * _Nullable msg) { } - showLoading:NO] + showLoading:NO errorToast:NO] roomUid:roomUid]; } diff --git a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m index c4a0ef52..9df7fa58 100644 --- a/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m +++ b/YuMi/Modules/YMRoom/View/ActivityContainerView/XPRoomActivityContainerView.m @@ -22,7 +22,7 @@ ///Model #import "UserInfoModel.h" #import "RoomInfoModel.h" - +#import "BoomInfoModel.h" #import "AttachmentModel.h" #import "FirstRechargeModel.h" #import "TreasureFairyLimitModel.h" diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.h b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.h index 915dcd27..ebbc3b3f 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.h +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.h @@ -22,8 +22,6 @@ NS_ASSUME_NONNULL_BEGIN - (void)menuResignFirstResponder; - (void)recheckMicState; -- (NSInteger)micState; - @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m index 1ec27acf..7bf8d690 100644 --- a/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m +++ b/YuMi/Modules/YMRoom/View/MenuContainerView/XPRoomMenuContainerView.m @@ -37,6 +37,7 @@ #import "SVGA.h" #import "XPRoomMiniManager.h" +#import "XPSkillCardPlayerManager.h" UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; @@ -79,8 +80,6 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; @property (nonatomic, assign) BOOL isDisplayMicStatusControl; -@property (nonatomic, assign) NSInteger micStateType; - @end @@ -309,24 +308,24 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; default: break; } - + [self micButtonUpdate:sender.tag]; [self hideMicControlMenu]; [XNDJTDDLoadingTool showErrorWithMessage:message]; + [[XPSkillCardPlayerManager shareInstance] setMicState:sender.tag]; } - (void)micButtonUpdate:(NSInteger)type { - self.micStateType = type; switch (type) { - case 1: + case MICState_Open: // 开麦 [self.micButton setImage:kImage(@"room_menu_mic_open") forState:UIControlStateNormal]; break; - case 2: + case MICState_Close: // 闭麦 [self.micButton setImage:kImage(@"room_menu_mic_close") forState:UIControlStateNormal]; break; - case 3: + case MICState_Music: // 人声降为 0 [self.micButton setImage:kImage(@"room_menu_mic_close_but_music") forState:UIControlStateNormal]; break; @@ -337,16 +336,13 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; } - (void)recheckMicState { - if (self.micStateType == 3) { + if ([XPSkillCardPlayerManager shareInstance].micState == MICState_Music) { [RtcManager instance].localMuted = NO; [[RtcManager instance] updateUserSoundWithUserInMic:0]; + [self micButtonUpdate:MICState_Music]; } } -- (NSInteger)micState { - return self.micStateType; -} - #pragma mark - notification - (void)showGiftView:(NSNotification *)noti { NSDictionary *dict = noti.object; @@ -529,10 +525,13 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; [self micButtonUpdate:1]; } - // 處理最小化進房 - NSInteger miniRoomMicState = [[XPRoomMiniManager shareManager] loadMicState]; - if (miniRoomMicState != -1) { - [self micButtonUpdate:miniRoomMicState]; + if (model.microState.micState == MicroMicStateType_Open) { + self.micButton.enabled = YES; + [self recheckMicState]; + } else { + [[RtcManager instance] setLocalMuted:YES]; + [self micButtonUpdate:MICState_None]; + self.micButton.enabled = NO; } self.micButton.enabled = model.microState.micState == MicroMicStateType_Open; @@ -549,6 +548,16 @@ UIKIT_EXTERN NSString * kRoomBackMusicCaptureVolumeKey; - (void)onRoomEntered { NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; self.messageButton.selected = unreadCount > 0; + + [[RtcManager instance] setLocalMuted:YES]; + + [self onRoomUpdate]; +} + +- (void)onRoomMiniEntered { + NSInteger unreadCount = [[NIMSDK sharedSDK].conversationManager allUnreadCount]; + self.messageButton.selected = unreadCount > 0; + [self onRoomUpdate]; } diff --git a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m index 4b9c65fc..671defeb 100644 --- a/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m +++ b/YuMi/Modules/YMRoom/View/MessageContainerView/XPRoomMessageContainerView.m @@ -1000,11 +1000,6 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; ///最小化进房 不需要请求任何接口 但是如果不加延迟的话 无法滚动到底部 原因还不知道 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSArray * temArray = [XPRoomMiniManager shareManager].getLocalCurrentRoomMessage; - // 执行插入 -// for (NIMMessage *item in temArray) { -// [self.datasource addObject:[self.messageParser parseMessageAttribute:item]]; -// } - [temArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { if ([obj isKindOfClass:[NIMMessage class]]) { XPMessageInfoModel *model = [self.messageParser parseMessageAttribute:(NIMMessage *)obj]; @@ -1018,7 +1013,6 @@ NSString * const kRoomShowTopicKey = @"kRoomShowTopicKey"; }]; [self updateAllDataSource]; - [self.messageTableView reloadData]; //执行插入动画并滚动 [self scrollToBottom:YES]; diff --git a/YuMi/Modules/YMRoom/View/StageView/StageView.m b/YuMi/Modules/YMRoom/View/StageView/StageView.m index 1a3f42e2..0f03086e 100644 --- a/YuMi/Modules/YMRoom/View/StageView/StageView.m +++ b/YuMi/Modules/YMRoom/View/StageView/StageView.m @@ -76,11 +76,11 @@ if (self) { _hostDelegate = delegate; _isMiniEnter = NO; - [RtcManager instance].isMiniEnterk = self.hostDelegate.getIsMiniEnter; + [RtcManager instance].isMiniEnter = self.hostDelegate.getIsMiniEnter; RoomInfoModel *roomInfo = self.hostDelegate.getRoomInfo; if (roomInfo.roomModeType != RoomModeType_Open_AcrossRoomPK_mode ){ if ([RtcManager instance].isAnckorPk == NO){ - if ([RtcManager instance].isMiniEnterk == NO){ + if ([RtcManager instance].isMiniEnter == NO){ [RtcManager instance].localMuted = YES; } @@ -549,7 +549,7 @@ if (roomInfo.roomModeType != RoomModeType_Open_Blind){ if (userInfo.isNoProhibitMic == NO){ if (roomInfo.roomModeType != RoomModeType_Open_AcrossRoomPK_mode){ - if ([RtcManager instance].isMiniEnterk == NO){ + if ([RtcManager instance].isMiniEnter == NO){ [RtcManager instance].localMuted = YES; } @@ -557,7 +557,7 @@ } } dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [RtcManager instance].isMiniEnterk = NO; + [RtcManager instance].isMiniEnter = NO; }); } } diff --git a/YuMi/Modules/YMRoom/View/XPMiniRoomView.m b/YuMi/Modules/YMRoom/View/XPMiniRoomView.m index 9095a206..4a559cc0 100644 --- a/YuMi/Modules/YMRoom/View/XPMiniRoomView.m +++ b/YuMi/Modules/YMRoom/View/XPMiniRoomView.m @@ -810,8 +810,7 @@ UIKIT_EXTERN NSString *kRoomKickoutTime; int captureVolum = (int)[defaults integerForKey:kRoomBackMusicCaptureVolumeKey]; captureVolum = captureVolum > 0 ? captureVolum : 50; - - + self.currentMusic = music; self.currentIndex = index; NSString * documentsPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]; @@ -831,7 +830,7 @@ UIKIT_EXTERN NSString *kRoomKickoutTime; [self playNextMusic:self.currentIndex]; } }]; - [[RtcManager instance] updateUserSound:captureVolum]; +// [[RtcManager instance] updateUserSound:captureVolum]; [[RtcManager instance] updateMusicSound:musicVolum]; } @@ -850,7 +849,6 @@ UIKIT_EXTERN NSString *kRoomKickoutTime; if (!_backImageView) { _backImageView = [[UIImageView alloc] init]; _backImageView.userInteractionEnabled = YES; -// _backImageView.image = [UIImage imageNamed:@"room_mini_background"]; } return _backImageView; } diff --git a/YuMi/Modules/YMRoom/View/XPRoomMiniManager.h b/YuMi/Modules/YMRoom/View/XPRoomMiniManager.h index 98e30be7..f2408cc7 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomMiniManager.h +++ b/YuMi/Modules/YMRoom/View/XPRoomMiniManager.h @@ -36,8 +36,7 @@ NS_ASSUME_NONNULL_BEGIN ///最小化的时候也要保存一下当前播放的歌曲 - (void)configCurrentMusic:(Music * _Nullable)roomInfo isPlaying:(BOOL)isPlaying; -- (void)saveMicState:(NSInteger)type; -- (NSInteger)loadMicState; + @end NS_ASSUME_NONNULL_END diff --git a/YuMi/Modules/YMRoom/View/XPRoomMiniManager.m b/YuMi/Modules/YMRoom/View/XPRoomMiniManager.m index 8a0dba8b..9c3d2ee7 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomMiniManager.m +++ b/YuMi/Modules/YMRoom/View/XPRoomMiniManager.m @@ -20,7 +20,6 @@ ///用户信息 @property (nonatomic,strong) UserInfoModel *userInfo; -@property (nonatomic, assign) NSInteger micState; @end @implementation XPRoomMiniManager @@ -30,7 +29,6 @@ static XPRoomMiniManager *instance; dispatch_once(&onceToken, ^{ instance = [[XPRoomMiniManager alloc] init]; - instance.micState = -1; }); return instance; } @@ -81,7 +79,6 @@ - (void)resetLocalMessage { [self.messageArray removeAllObjects]; - self.micState = -1; } - (NSMutableArray *)messageArray { @@ -91,15 +88,4 @@ return _messageArray; } - -- (void)saveMicState:(NSInteger)type { - self.micState = type; -} - -- (NSInteger)loadMicState { - NSInteger state = self.micState; - self.micState = -1; - return state; -} - @end diff --git a/YuMi/Modules/YMRoom/View/XPRoomViewController.m b/YuMi/Modules/YMRoom/View/XPRoomViewController.m index 59ed3663..02d11457 100644 --- a/YuMi/Modules/YMRoom/View/XPRoomViewController.m +++ b/YuMi/Modules/YMRoom/View/XPRoomViewController.m @@ -296,12 +296,15 @@ XPCandyTreeInsufficientBalanceViewDelegate> [XPSkillCardPlayerManager shareInstance].isInRoomFirstRecharge = NO; [XPSkillCardPlayerManager shareInstance].isInRoom = NO; [XPSkillCardPlayerManager shareInstance].roomUid = @""; + + if([[XPRoomMiniManager shareManager] getRoomInfo]==nil){ [XPSkillCardPlayerManager shareInstance].isMineInMic = NO; } [[CountDownHelper shareHelper] stopCountDown]; [CountDownHelper shareHelper].delegate = nil; + [[NIMSDK sharedSDK].chatroomManager removeDelegate:self]; [[NIMSDK sharedSDK].chatManager removeDelegate:self]; [[NIMSDK sharedSDK].loginManager removeDelegate:self]; @@ -370,6 +373,7 @@ XPCandyTreeInsufficientBalanceViewDelegate> }]; }); + [self.presenter getBoomDetail:self.roomUid]; } target:self]; [[RoomBoomManager sharedManager] registerBoomGiftDisplay:^(id _Nonnull sth) { @@ -734,13 +738,18 @@ XPCandyTreeInsufficientBalanceViewDelegate> - (void)exitOldRoom { NSString * roomUid = [NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.uid]; - if (roomUid.integerValue > 0 && roomUid.integerValue != self.roomUid.integerValue) { - //有最小化房间 并且要进入的房间和最小化的房间不一样的话 就先退掉 最小化的房间 - NSString * roomId = [NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.roomId]; - [self.presenter exitNIMRoom:roomId]; - [[RtcManager instance] exitRoom]; - [[XPRoomMiniManager shareManager] resetLocalMessage]; - [self.presenter reportUserOutRoom:roomUid]; + if (roomUid.integerValue > 0) { + if ([roomUid isEqualToString:self.roomUid]) { + self.isMiniEnter = YES; + } else { + //有最小化房间 并且要进入的房间和最小化的房间不一样的话 就先退掉 最小化的房间 + NSString * roomId = [NSString stringWithFormat:@"%ld", [XPRoomMiniManager shareManager].getRoomInfo.roomId]; + [self.presenter exitNIMRoom:roomId]; + [[RtcManager instance] exitRoom]; + [[XPRoomMiniManager shareManager] resetLocalMessage]; + [self.presenter reportUserOutRoom:roomUid]; + [XPSkillCardPlayerManager shareInstance].micState = MICState_None; + } } } -(BOOL)getIsMiniEnter{ @@ -1136,20 +1145,21 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self changeStageViewOnRoomUpdate]; [self.roomHeaderView onRoomEntered]; [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; [self.littleGameView onRoomEntered]; if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; [self.functionView onRoomEntered]; [self.messageContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; } else { //虽然没退出房间 但是队列还是要拿的 [self.stageView onRoomMiniEntered]; [self.messageContainerView onRoomMiniEntered]; [self.functionView onRoomMiniEntered]; [self.functionView onRoomEntered]; - [[RtcManager instance] setLocalMuted:YES]; + [self.menuContainerView onRoomMiniEntered]; } [[XPRoomMiniManager shareManager] configRoomInfo:nil]; [[XPRoomMiniManager shareManager] configUserInfo:nil]; @@ -1207,20 +1217,21 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self.roomHeaderView onRoomEntered]; [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; [self.littleGameView onRoomEntered]; if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; [self.functionView onRoomEntered]; [self.messageContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; } else { //虽然没退出房间 但是队列还是要拿的 [self.stageView onRoomMiniEntered]; [self.messageContainerView onRoomMiniEntered]; [self.functionView onRoomMiniEntered]; [self.functionView onRoomEntered]; - [[RtcManager instance] setLocalMuted:YES]; + [self.menuContainerView onRoomMiniEntered]; } [[XPRoomMiniManager shareManager] configRoomInfo:nil]; [[XPRoomMiniManager shareManager] configUserInfo:nil]; @@ -1289,7 +1300,7 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self.roomHeaderView onRoomEntered]; [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; [self.littleGameView onRoomEntered]; @@ -1298,6 +1309,7 @@ XPCandyTreeInsufficientBalanceViewDelegate> if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) { [self.functionView onRoomEntered]; [self.messageContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; // 通知云信重新进房 [self.presenter enterNIMRoom:@(self.roomInfo.roomId).stringValue @@ -1308,16 +1320,15 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self.functionView onRoomMiniEntered]; [self.functionView onRoomEntered]; - // PK 状态下,从最小化进房需要模仿出事化房间,丢 2 次 roominfo 进去 functionView +// [self.menuContainerView onRoomMiniEntered]; + // PK 状态下,从最小化进房需要模仿初始化房间,丢 2 次 roominfo 进去 functionView if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode || self.roomInfo.roomModeType == RoomModeType_Open_PK_Mode) { [self.functionView onRoomEntered]; } [self.messageContainerView onRoomMiniEntered]; - [[RtcManager instance] setLocalMuted:YES]; } - [self cleanMiniRoomStatues]; } @@ -1402,6 +1413,8 @@ XPCandyTreeInsufficientBalanceViewDelegate> } } break; } + + [self.menuContainerView recheckMicState]; } - (void)openRoomSuccess:(RoomInfoModel *)roomInfo { @@ -1599,20 +1612,21 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self.roomHeaderView onRoomEntered]; [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; [self.littleGameView onRoomEntered]; if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {// 最小化进房 还是原来的房间的话 不需要重新进入云信 因为压根没退 [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; [self.functionView onRoomEntered]; [self.messageContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; } else { //虽然没退出房间 但是队列还是要拿的 [self.stageView onRoomMiniEntered]; [self.messageContainerView onRoomMiniEntered]; [self.functionView onRoomMiniEntered]; [self.functionView onRoomEntered]; - [[RtcManager instance] setLocalMuted:YES]; + [self.menuContainerView onRoomMiniEntered]; } [self cleanMiniRoomStatues]; @@ -2208,6 +2222,8 @@ XPCandyTreeInsufficientBalanceViewDelegate> } - (void)exitRoom { + [XPSkillCardPlayerManager shareInstance].micState = MICState_None; + [self.stageView exitRoom]; [self.menuContainerView menuResignFirstResponder]; [self.animationView resumeTimer]; @@ -2326,8 +2342,6 @@ XPCandyTreeInsufficientBalanceViewDelegate> [XPRoomMiniManager shareManager].curState = self.freeModel.curStage; } - [[XPRoomMiniManager shareManager] saveMicState:[self.menuContainerView micState]]; - [self.menuContainerView menuResignFirstResponder]; [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(showRoomFirstChargeWindow) object:nil]; NSDictionary *roomInfoDic = self.roomInfo.model2dictionary != nil ? self.roomInfo.model2dictionary : @{}; @@ -2509,7 +2523,7 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self.roomHeaderView onRoomEntered]; [self.activityContainerView onRoomEntered]; - [self.menuContainerView onRoomEntered]; + [self.backContainerView onRoomEntered]; [self.littleGameView onRoomEntered]; [self.littleGameView onRoomEntered]; @@ -2517,13 +2531,14 @@ XPCandyTreeInsufficientBalanceViewDelegate> [self.presenter enterNIMRoom:[NSString stringWithFormat:@"%ld", self.roomInfo.roomId] user:self.userInfo]; [self.functionView onRoomEntered]; [self.messageContainerView onRoomEntered]; + [self.menuContainerView onRoomEntered]; } else { //虽然没退出房间 但是队列还是要拿的 [self.stageView onRoomMiniEntered]; [self.messageContainerView onRoomMiniEntered]; [self.functionView onRoomMiniEntered]; [self.functionView onRoomEntered]; - [[RtcManager instance] setLocalMuted:YES]; + [self.menuContainerView onRoomMiniEntered]; } [[XPRoomMiniManager shareManager] configRoomInfo:nil]; [[XPRoomMiniManager shareManager] configUserInfo:nil]; diff --git a/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h index 60658d0d..3679de07 100644 --- a/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h +++ b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.h @@ -8,6 +8,13 @@ #import #import +typedef enum : NSUInteger { + MICState_None = 0, + MICState_Open = 1, + MICState_Close = 2, + MICState_Music = 3, +} MICState; + @interface XPSkillCardPlayerManager : NSObject ////获取已解锁照片id列表 @property(nonatomic,strong) NSMutableArray *photoIdList; @@ -15,7 +22,6 @@ @property (nonatomic, strong) AVAudioPlayer *player; ///是否正在播放 @property (nonatomic,assign) BOOL isPlay; - ///播放音量大小 @property (nonatomic, assign) CGFloat volume; @property (nonatomic,assign) BOOL isInRoomFirstRecharge; @@ -23,13 +29,16 @@ @property (nonatomic,assign) BOOL isInRoom; ///是否在房间控制器里,用于播放动画的判断 @property (nonatomic,assign) BOOL isInRoomVC; - ///是否在首充不弹出界面 ///所在房间的id @property (nonatomic,copy) NSString *roomUid; ///我是否在上麦,在麦上时不能录音 @property (nonatomic,assign) BOOL isMineInMic; +// 用户在 mic 的状态 +@property (nonatomic, assign) MICState micState; + + + (instancetype)shareInstance ; /** diff --git a/YuMi/Tools/CardManager/XPSkillCardPlayerManager.m b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.m index b7b95861..3585964d 100644 --- a/YuMi/Tools/CardManager/XPSkillCardPlayerManager.m +++ b/YuMi/Tools/CardManager/XPSkillCardPlayerManager.m @@ -40,6 +40,10 @@ return sharedInstance; } +- (void)setMicState:(MICState)micState { + _micState = micState; +} + - (void)playerVoiceWithPath:(NSString *)filePath completionBlock:(void (^)(void))completionBlock{ [self playerMusicWithPath:filePath volume:1 loop:NO completionBlock:completionBlock]; }