1. 优化房间进房逻辑
2. 增加进房时麦位效果 3. 修正错误的代码单词
This commit is contained in:
@@ -292,48 +292,69 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
|
||||
[self exitOldRoom];
|
||||
|
||||
[self initSubViews];
|
||||
[self initSubViewConstraints];
|
||||
|
||||
[self loadRoomDataAndUsers];
|
||||
|
||||
[self setupNimSDK];
|
||||
|
||||
[self setupNotifications];
|
||||
|
||||
[self handleActivityContainerViewEvents];
|
||||
|
||||
if (self.isMiniEnter) {
|
||||
[XNDJTDDLoadingTool showAnchorLoading:self.navigationController.view];
|
||||
[self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid];
|
||||
} else {
|
||||
[XNDJTDDLoadingTool showAnchorLoading:self.navigationController.view];
|
||||
[self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid];
|
||||
}
|
||||
/// 公屏 福袋礼物爆出的礼物 需要依赖 当前房间中的礼物列表 需要提前获取礼物列表 可以拿到礼物 没有想到别的方法去解决这个问题 有需要改的在修改吧
|
||||
[self.presenter getNormalGiftList:self.roomUid];
|
||||
///获取房间超管列表
|
||||
[self.presenter getRoomSuperAdmin:self.roomUid];
|
||||
///获取免费礼物
|
||||
[self.presenter getFreeGiftData];
|
||||
if(self.redEnvelopeId != nil){
|
||||
[self.presenter getRedPacketInft:self.redEnvelopeId];
|
||||
}
|
||||
///获取首充次数
|
||||
// [self.presenter getRoomFirstCharegWindow:self.roomUid];
|
||||
///获取已解锁照片id列表
|
||||
[self.presenter getUnlockRoomAlbumPhotoListWithRoomUid:self.roomUid];
|
||||
//监听云信消息x
|
||||
// [self.presenter getUnlockRoomAlbumPhotoListWithRoomUid:self.roomUid];
|
||||
|
||||
[self startCheckOnlineCountTimer];
|
||||
|
||||
[self preLoadGifts];
|
||||
|
||||
[CountDownHelper shareHelper].delegate = self;
|
||||
[XPSkillCardPlayerManager shareInstance].isInRoom = YES;
|
||||
}
|
||||
|
||||
- (void)loadRoomDataAndUsers {
|
||||
[self showLoading];
|
||||
// [XNDJTDDLoadingTool showAnchorLoading:self.navigationController.view];
|
||||
[self.presenter initEnterRoom:self.roomUid user:[AccountInfoStorage instance].getUid];
|
||||
}
|
||||
|
||||
- (void)setupNotifications {
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myGiftEffectUpdate:) name:kRoomGiftEffectUpdateNotificationKey object:nil];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showRoomFirstChargeWindowFormNot:) name:kShowFirstRechargeView object:nil];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(openRedPacketNotification:) name:@"kOpenRedPacketNotification" object:nil];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showSendheadlineView:) name:@"kShowSendheadlineView" object:nil];
|
||||
}
|
||||
|
||||
- (void)setupNimSDK {
|
||||
//监听云信消息
|
||||
[[NIMSDK sharedSDK].chatroomManager addDelegate:self];
|
||||
[[NIMSDK sharedSDK].chatManager addDelegate:self];
|
||||
[[NIMSDK sharedSDK].loginManager addDelegate:self];
|
||||
[[NIMSDK sharedSDK].conversationManager addDelegate:self];
|
||||
[[NIMSDK sharedSDK].broadcastManager addDelegate:self];
|
||||
[CountDownHelper shareHelper].delegate = self;
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myGiftEffectUpdate:) name:kRoomGiftEffectUpdateNotificationKey object:nil];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showRoomFirstChargeWindowFormNot:) name:kShowFirstRechargeView object:nil];
|
||||
[XPSkillCardPlayerManager shareInstance].isInRoom = YES;
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(openRedPacketNotification:) name:@"kOpenRedPacketNotification" object:nil];
|
||||
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showSendheadlineView:) name:@"kShowSendheadlineView" object:nil];
|
||||
|
||||
[self addTimer];
|
||||
}
|
||||
|
||||
- (void)preLoadGifts {
|
||||
/// 公屏 福袋礼物爆出的礼物 需要依赖 当前房间中的礼物列表 需要提前获取礼物列表 可以拿到礼物 没有想到别的方法去解决这个问题 有需要改的在修改吧
|
||||
[self.presenter getNormalGiftList:self.roomUid];
|
||||
|
||||
///获取免费礼物
|
||||
[self.presenter getFreeGiftData];
|
||||
|
||||
if(self.redEnvelopeId != nil){
|
||||
[self.presenter getRedPacketInft:self.redEnvelopeId];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)showSendheadlineView:(NSNotification *)not{
|
||||
@@ -345,21 +366,22 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
releaseView.backgroundColor = [UIColor clearColor];
|
||||
[self.view addSubview:releaseView];
|
||||
}
|
||||
- (void)addTimer {
|
||||
- (void)startCheckOnlineCountTimer {
|
||||
@kWeakify(self);
|
||||
timer = [XPWeakTimer scheduledTimerWithTimeInterval:30 block:^(id userInfo) {
|
||||
@kStrongify(self);
|
||||
[self getOnlineCount];
|
||||
} userInfo:nil repeats:YES];
|
||||
}
|
||||
#pragma makr- MSSessionReleaseHeadlinesViewDelegate
|
||||
|
||||
#pragma mark - MSSessionReleaseHeadlinesViewDelegate
|
||||
-(void)releaseHeadlinesWithText:(NSString *)text{
|
||||
XPCandyTreeInsufficientBalanceView *balanceView = [[XPCandyTreeInsufficientBalanceView alloc]initWithFrame:CGRectMake(0, 0, KScreenWidth, KScreenHeight)];
|
||||
balanceView.delegate = self;
|
||||
[self.view addSubview:balanceView];
|
||||
|
||||
}
|
||||
#pragma mark- XPCandyTreeInsufficientBalanceViewDelegate
|
||||
#pragma mark - XPCandyTreeInsufficientBalanceViewDelegate
|
||||
- (void)payBalanceAction{
|
||||
XPIAPRechargeViewController * webVC =[[XPIAPRechargeViewController alloc] init];
|
||||
webVC.type = @"4";
|
||||
@@ -619,108 +641,132 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
[[NIMSDK sharedSDK].chatManager sendMessage:message toSession:session error:nil];
|
||||
}
|
||||
|
||||
- (void)changeStageViewOnRoomUpdate {
|
||||
if (self.roomInfo.roomModeType == RoomModeType_Open_Blind && ![self.stageView isKindOfClass:[DatingStageView class]]) {
|
||||
- (BOOL)updateStageView {
|
||||
Class stageViewClass = [self stageViewClassForRoomInfo:self.roomInfo];
|
||||
if (stageViewClass) { //&& ![self.stageView isKindOfClass:stageViewClass]) {
|
||||
[self.stageView removeFromSuperview];
|
||||
self.stageView = nil;
|
||||
self.stageView = [[DatingStageView alloc] initWithDelegate:self];
|
||||
} else if(self.roomInfo.datingState == RoomDatingStateChangeType_Close && ![self.stageView isKindOfClass:[SocialStageView class]]) {
|
||||
[self.stageView removeFromSuperview];
|
||||
self.stageView = nil;
|
||||
self.stageView = [[SocialStageView alloc] initWithDelegate:self];
|
||||
} else if (self.roomInfo.type == RoomType_Anchor) {
|
||||
if (self.roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode && ![self.stageView isKindOfClass:[AnchorPKStageView class]]) {
|
||||
[self.stageView removeFromSuperview];
|
||||
self.stageView = nil;
|
||||
self.stageView = [[AnchorPKStageView alloc] initWithDelegate:self];
|
||||
} else if(self.roomInfo.roomModeType == RoomModeType_Normal_Mode && ![self.stageView isKindOfClass:[AnchorStageView class]]) {
|
||||
[self.stageView removeFromSuperview];
|
||||
self.stageView = nil;
|
||||
self.stageView = [[AnchorStageView alloc] initWithDelegate:self];
|
||||
self.stageView = [[stageViewClass alloc] initWithDelegate:self];
|
||||
self.stageView.alpha = 0;
|
||||
return YES;
|
||||
}
|
||||
|
||||
return NO;
|
||||
}
|
||||
|
||||
- (Class)stageViewClassForRoomInfo:(RoomInfoModel *)roomInfo {
|
||||
if (roomInfo.roomModeType == RoomModeType_Open_Blind &&
|
||||
![self.stageView isKindOfClass:[DatingStageView class]]) {
|
||||
return [DatingStageView class];
|
||||
} else if (roomInfo.datingState == RoomDatingStateChangeType_Close &&
|
||||
![self.stageView isKindOfClass:[SocialStageView class]]) {
|
||||
return [SocialStageView class];
|
||||
} else if (roomInfo.type == RoomType_Anchor) {
|
||||
if (roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode &&
|
||||
![self.stageView isKindOfClass:[AnchorPKStageView class]]) {
|
||||
return [AnchorPKStageView class];
|
||||
} else if (roomInfo.roomModeType == RoomModeType_Normal_Mode &&
|
||||
![self.stageView isKindOfClass:[AnchorStageView class]]) {
|
||||
return [AnchorStageView class];
|
||||
}
|
||||
}else if(self.roomInfo.type == RoomType_MiniGame) {
|
||||
[self.stageView removeFromSuperview];
|
||||
self.stageView = nil;
|
||||
self.stageView = [[LittleGameScrollStageView alloc] initWithDelegate:self];
|
||||
} else if (roomInfo.type == RoomType_MiniGame) {
|
||||
return [LittleGameScrollStageView class];
|
||||
} else if (roomInfo.type == RoomType_15Mic) {
|
||||
return [FifteenMicStageView class];
|
||||
} else if (roomInfo.type == RoomType_10Mic) {
|
||||
return [TenMicStageView class];
|
||||
} else if (roomInfo.hadChangeRoomType && ![self.stageView isKindOfClass:[SocialStageView class]]) {
|
||||
return [SocialStageView class];
|
||||
}
|
||||
return [SocialStageView class];
|
||||
}
|
||||
|
||||
else if(self.roomInfo.type == RoomType_15Mic) {
|
||||
[self.stageView removeFromSuperview];
|
||||
self.stageView = nil;
|
||||
self.stageView = [[FifteenMicStageView alloc] initWithDelegate:self];
|
||||
}else if(self.roomInfo.type == RoomType_10Mic) {
|
||||
[self.stageView removeFromSuperview];
|
||||
self.stageView = nil;
|
||||
self.stageView = [[TenMicStageView alloc] initWithDelegate:self];
|
||||
}
|
||||
- (void)changeStageViewOnRoomUpdate {
|
||||
|
||||
else if(self.roomInfo.hadChangeRoomType && ![self.stageView isKindOfClass:[SocialStageView class]]) {
|
||||
[self.stageView removeFromSuperview];
|
||||
self.stageView = nil;
|
||||
self.stageView = [[SocialStageView alloc] initWithDelegate:self];
|
||||
} else {
|
||||
if (![self updateStageView]) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!self.stageView.superview) {
|
||||
[self.view insertSubview:self.stageView belowSubview:self.roomHeaderView];
|
||||
[self.view insertSubview:self.stageView
|
||||
belowSubview:self.roomHeaderView];
|
||||
}
|
||||
|
||||
if (self.stageView.alpha == 0) {
|
||||
self.stageView.transform = CGAffineTransformMakeScale(0.1, 0.1);
|
||||
self.stageView.alpha = 1.0;
|
||||
|
||||
[UIView animateWithDuration:0.5
|
||||
delay:0
|
||||
usingSpringWithDamping:0.5
|
||||
initialSpringVelocity:0.5
|
||||
options:UIViewAnimationOptionCurveEaseInOut
|
||||
animations:^{
|
||||
// 动画到原始大小
|
||||
self.stageView.transform = CGAffineTransformIdentity;
|
||||
} completion:nil];
|
||||
// [UIView animateWithDuration:2 animations:^{
|
||||
// self.stageView.alpha = 1;
|
||||
// } completion:^(BOOL finished) {
|
||||
//// self.stageView.hidden = hidden;
|
||||
// }];
|
||||
}
|
||||
|
||||
[self addExitGameButton];
|
||||
|
||||
if (self.roomInfo.type == RoomType_MiniGame) {
|
||||
[self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.view);
|
||||
make.top.mas_equalTo(self.roomHeaderView.mas_bottom).offset(26 + 4);
|
||||
make.height.mas_equalTo(self.stageView.hightForStageView);
|
||||
}];
|
||||
CGFloat height = 80;
|
||||
if (iPhoneXSeries) {
|
||||
height = 100;
|
||||
self.quickMessageContainerView.hidden = YES;
|
||||
[self.quickMessageContainerView mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(0);
|
||||
}];
|
||||
|
||||
switch (self.roomInfo.type) {
|
||||
case RoomType_MiniGame: {
|
||||
[self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.view);
|
||||
make.top.mas_equalTo(self.roomHeaderView.mas_bottom).offset(26 + 4);
|
||||
make.height.mas_equalTo(self.stageView.hightForStageView);
|
||||
}];
|
||||
CGFloat height = 80;
|
||||
if (iPhoneXSeries) {
|
||||
height = 100;
|
||||
}
|
||||
[self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(height);
|
||||
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
|
||||
make.leading.mas_equalTo(self.view);
|
||||
make.trailing.mas_equalTo(self.activityContainerView.mas_leading).offset(-10);
|
||||
}];
|
||||
|
||||
[self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(115);
|
||||
make.trailing.mas_equalTo(self.view);
|
||||
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
|
||||
make.width.mas_equalTo(87);
|
||||
}];
|
||||
}
|
||||
[self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(height);
|
||||
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
|
||||
make.leading.mas_equalTo(self.view);
|
||||
make.trailing.mas_equalTo(self.activityContainerView.mas_leading).offset(-10);
|
||||
}];
|
||||
self.quickMessageContainerView.hidden = YES;
|
||||
[self.quickMessageContainerView mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(0);
|
||||
}];
|
||||
[self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(115);
|
||||
make.trailing.mas_equalTo(self.view);
|
||||
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
|
||||
make.width.mas_equalTo(87);
|
||||
}];
|
||||
|
||||
} else {
|
||||
|
||||
self.quickMessageContainerView.hidden = YES;
|
||||
[self.quickMessageContainerView mas_updateConstraints:^(MASConstraintMaker *make) {
|
||||
make.height.mas_equalTo(0);
|
||||
}];
|
||||
[self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.view);
|
||||
make.top.mas_equalTo(self.roomHeaderView.mas_bottom);
|
||||
make.height.mas_equalTo(self.stageView.hightForStageView);
|
||||
}];
|
||||
|
||||
[self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.stageView.mas_bottom);
|
||||
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
|
||||
make.leading.mas_equalTo(self.view);
|
||||
make.trailing.mas_equalTo(self.activityContainerView.mas_leading).offset(-10);
|
||||
}];
|
||||
|
||||
[self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.messageContainerView);
|
||||
make.trailing.mas_equalTo(self.view);
|
||||
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
|
||||
make.width.mas_equalTo(87);
|
||||
}];
|
||||
|
||||
break;
|
||||
default: {
|
||||
[self.stageView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.leading.trailing.mas_equalTo(self.view);
|
||||
make.top.mas_equalTo(self.roomHeaderView.mas_bottom);
|
||||
make.height.mas_equalTo(self.stageView.hightForStageView);
|
||||
}];
|
||||
|
||||
[self.messageContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.stageView.mas_bottom);
|
||||
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
|
||||
make.leading.mas_equalTo(self.view);
|
||||
make.trailing.mas_equalTo(self.activityContainerView.mas_leading).offset(-10);
|
||||
}];
|
||||
|
||||
[self.activityContainerView mas_remakeConstraints:^(MASConstraintMaker *make) {
|
||||
make.top.mas_equalTo(self.messageContainerView);
|
||||
make.trailing.mas_equalTo(self.view);
|
||||
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
|
||||
make.width.mas_equalTo(87);
|
||||
}];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1098,9 +1144,9 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
}
|
||||
}
|
||||
-(void)requesstShieldingAction{
|
||||
[self.presenter requesstShieldingWtihType:@"1" objId:[NSString stringWithFormat:@"%ld",self.roomInfo.uid]];
|
||||
[self.presenter requestShieldingWithType:@"1" objId:[NSString stringWithFormat:@"%ld",self.roomInfo.uid]];
|
||||
}
|
||||
-(void)requesstShieldingSuccess{
|
||||
-(void)requestShieldingSuccess{
|
||||
[self showErrorToast:YMLocalizedString(@"RoomHeaderView11")];
|
||||
[self exitRoom];
|
||||
}
|
||||
@@ -1132,17 +1178,111 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
- (void)handleRoomWithPasswordAfterInitRoom {
|
||||
if (!self.isRequestSuperAdmin) {
|
||||
@kWeakify(self);
|
||||
[Api getRoomSuperAdminList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
@kStrongify(self);
|
||||
NSArray<GuildSuperAdminInfoModel *> * array = [GuildSuperAdminInfoModel modelsWithArray:data.data];
|
||||
self.superMangerList = array;
|
||||
[self superAdminEnterPwdRoom:self.roomInfo];
|
||||
} roomUid:self.roomUid];
|
||||
} else {
|
||||
[self superAdminEnterPwdRoom:self.roomInfo];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)handleRoomWithoutPasswordAfterInitRoom {
|
||||
self.roomInfo.datingState = (self.roomInfo.roomModeType == RoomModeType_Open_Blind) ?
|
||||
RoomDatingStateChangeType_Open :
|
||||
RoomDatingStateChangeType_Normal;
|
||||
|
||||
[self changeStageViewOnRoomUpdate];
|
||||
[self.roomHeaderView onRoomEntered];
|
||||
[self.activityContainerView onRoomEntered];
|
||||
|
||||
[self.menuContainerView onRoomEntered];
|
||||
[self.backContainerView onRoomEntered];
|
||||
[self.littleGameView onRoomEntered];
|
||||
|
||||
self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate;
|
||||
|
||||
if ([XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {
|
||||
[self.functionView onRoomEntered];
|
||||
[self.messageContainerView onRoomEntered];
|
||||
|
||||
// 通知云信重新进房
|
||||
[self.presenter enterNIMRoom:@(self.roomInfo.roomId).stringValue
|
||||
user:self.userInfo];
|
||||
} else {
|
||||
//虽然没退出房间 但是队列还是要拿的
|
||||
[self.stageView onRoomMiniEntered];
|
||||
|
||||
[self.functionView onRoomMiniEntered];
|
||||
[self.functionView onRoomEntered];
|
||||
// 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];
|
||||
}
|
||||
|
||||
[self cleanMiniRoomStatues];
|
||||
}
|
||||
|
||||
- (void)enterMyRoom {
|
||||
if (self.roomInfo.roomId > 0) { // 存在房间信息,直接使用房间信息开房
|
||||
if (self.roomInfo.type == RoomType_MiniGame &&
|
||||
self.roomInfo.mgId > 0) {
|
||||
self.mgId = [NSString stringWithFormat:@"%lld", self.roomInfo.mgId];
|
||||
}
|
||||
[self.presenter openRoom:self.roomInfo.title
|
||||
type:self.roomInfo.type
|
||||
roomPwd:self.roomInfo.roomPwd
|
||||
roomDesc:self.roomInfo.roomDesc
|
||||
backPic:@""
|
||||
mgId:self.mgId];
|
||||
} else { // 不存在房间信息,全新开房
|
||||
NSString* title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomViewController1"), self.userInfo.nick];
|
||||
RoomType type = RoomType_Game;
|
||||
if (self.mgId.length > 0) {
|
||||
type = RoomType_MiniGame;
|
||||
}
|
||||
[self.presenter openRoom:title
|
||||
type:type
|
||||
roomPwd:@""
|
||||
roomDesc:@""
|
||||
backPic:@""
|
||||
mgId:self.mgId];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)cleanMiniRoomStatues {
|
||||
[[XPRoomMiniManager shareManager] configRoomInfo:nil];
|
||||
[[XPRoomMiniManager shareManager] configUserInfo:nil];
|
||||
[[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO];
|
||||
}
|
||||
|
||||
- (void)initEnterRoomSuccess:(RoomInfoModel *)roomInfo user:(UserInfoModel *)userInfo {
|
||||
[XNDJTDDLoadingTool hideHUDInView:self.navigationController.view];
|
||||
// [XNDJTDDLoadingTool hideHUDInView:self.navigationController.view];
|
||||
[self hideHUD];
|
||||
|
||||
[XPSkillCardPlayerManager shareInstance].roomUid = @(roomInfo.uid).stringValue;
|
||||
|
||||
userInfo.fromUid = self.fromUid;
|
||||
userInfo.fromType = self.fromType;
|
||||
userInfo.fromNick = self.fromNick;
|
||||
|
||||
self.hasAnimationEffect = roomInfo.hasAnimationEffect;
|
||||
self.roomInfo = roomInfo;
|
||||
self.userInfo = userInfo;
|
||||
|
||||
@kWeakify(self);
|
||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
|
||||
@kStrongify(self);
|
||||
//获取一下红包信息
|
||||
[self.presenter getRedPacket:[NSString stringWithFormat:@"%ld", self.roomInfo.uid]];
|
||||
});
|
||||
@@ -1152,65 +1292,20 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
[self showAnchorScrollTipView];
|
||||
return;
|
||||
}
|
||||
|
||||
if (roomInfo.valid) { // 房间有效,直接进入房间
|
||||
if (roomInfo.roomPwd.length > 0 && roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue && [XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {//进房密码的情况
|
||||
if (!self.isRequestSuperAdmin) {
|
||||
[Api getRoomSuperAdminList:^(BaseModel * _Nullable data, NSInteger code, NSString * _Nullable msg) {
|
||||
NSArray<GuildSuperAdminInfoModel *> * array = [GuildSuperAdminInfoModel modelsWithArray:data.data];
|
||||
self.superMangerList = array;
|
||||
[self superAdminEnterPwdRoom:roomInfo];
|
||||
} roomUid:self.roomUid];
|
||||
} else {
|
||||
[self superAdminEnterPwdRoom:roomInfo];
|
||||
}
|
||||
if (roomInfo.roomPwd.length > 0 &&
|
||||
roomInfo.uid != [AccountInfoStorage instance].getUid.integerValue &&
|
||||
[XPRoomMiniManager shareManager].getRoomInfo.uid != self.roomUid.integerValue) {//进房密码的情况
|
||||
[self handleRoomWithPasswordAfterInitRoom];
|
||||
} else {
|
||||
self.roomInfo.datingState = roomInfo.roomModeType == RoomModeType_Open_Blind ? RoomDatingStateChangeType_Open : RoomDatingStateChangeType_Normal;
|
||||
[self changeStageViewOnRoomUpdate];
|
||||
[self.roomHeaderView onRoomEntered];
|
||||
[self.activityContainerView onRoomEntered];
|
||||
|
||||
[self.menuContainerView onRoomEntered];
|
||||
[self.backContainerView onRoomEntered];
|
||||
[self.littleGameView onRoomEntered];
|
||||
self.quickMessageContainerView.titleArray = self.roomInfo.speakTemplate;
|
||||
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];
|
||||
} else {
|
||||
//虽然没退出房间 但是队列还是要拿的
|
||||
|
||||
[self.stageView onRoomMiniEntered];
|
||||
[self.messageContainerView onRoomMiniEntered];
|
||||
[self.functionView onRoomMiniEntered];
|
||||
[self.functionView onRoomEntered];
|
||||
// PK 状态下,从最小化进房需要模仿出事化房间,丢 2 次 roominfo 进去
|
||||
if (roomInfo.roomModeType == RoomModeType_Open_AcrossRoomPK_mode ||
|
||||
roomInfo.roomModeType == RoomModeType_Open_PK_Mode) {
|
||||
[self.functionView onRoomEntered];
|
||||
}
|
||||
}
|
||||
[[XPRoomMiniManager shareManager] configRoomInfo:nil];
|
||||
[[XPRoomMiniManager shareManager] configUserInfo:nil];
|
||||
[[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO];
|
||||
[self handleRoomWithoutPasswordAfterInitRoom];
|
||||
}
|
||||
} else { // 房间无效,分是否为自己房间进行处理
|
||||
if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) { // 当前用户进入自己房间
|
||||
if (roomInfo.roomId > 0) { // 存在房间信息,直接使用房间信息开房
|
||||
if (roomInfo.type == RoomType_MiniGame && roomInfo.mgId > 0) {
|
||||
self.mgId = [NSString stringWithFormat:@"%lld", roomInfo.mgId];
|
||||
}
|
||||
[self.presenter openRoom:roomInfo.title type:roomInfo.type roomPwd:roomInfo.roomPwd roomDesc:roomInfo.roomDesc backPic:@"" mgId:self.mgId];
|
||||
} else { // 不存在房间信息,全新开房
|
||||
NSString* title = [NSString stringWithFormat:YMLocalizedString(@"XPRoomViewController1"), userInfo.nick];
|
||||
RoomType type = RoomType_Game;
|
||||
if (self.mgId.length > 0) {
|
||||
type = RoomType_MiniGame;
|
||||
}
|
||||
[self.presenter openRoom:title type:type roomPwd:@"" roomDesc:@"" backPic:@"" mgId:self.mgId];
|
||||
}
|
||||
if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", userInfo.uid]]) {
|
||||
// 当前用户进入自己房间
|
||||
[self enterMyRoom];
|
||||
} else { // 当前用户进入别人房间
|
||||
// TODO: 房主已经下线。
|
||||
[self showSuccessToast:YMLocalizedString(@"XPRoomViewController2")];
|
||||
[self enterRoomFail:0];
|
||||
}
|
||||
@@ -1277,7 +1372,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
}
|
||||
///请求房间超管成功
|
||||
///这个接口本来是想和roominfo 和userinfo 一起请求的 但是 进房的同步操作 只有超管进入密码房间才会有同步的问题
|
||||
- (void)getRoomSuperAdminScuccess:(NSArray *)list {
|
||||
- (void)getRoomSuperAdminSuccess:(NSArray *)list {
|
||||
self.isRequestSuperAdmin = YES;
|
||||
self.superMangerList = list;
|
||||
}
|
||||
@@ -1422,9 +1517,8 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
[self.functionView onRoomMiniEntered];
|
||||
[self.functionView onRoomEntered];
|
||||
}
|
||||
[[XPRoomMiniManager shareManager] configRoomInfo:nil];
|
||||
[[XPRoomMiniManager shareManager] configUserInfo:nil];
|
||||
[[XPRoomMiniManager shareManager] configCurrentMusic:nil isPlaying:NO];
|
||||
|
||||
[self cleanMiniRoomStatues];
|
||||
}
|
||||
} else { // 房间无效,分是否为自己房间进行处理
|
||||
if ([self.roomUid isEqualToString:[NSString stringWithFormat:@"%ld", self.userInfo.uid]]) { // 当前用户进入自己房间
|
||||
@@ -2471,6 +2565,7 @@ NSString * const kHadQuitOtherRoomKey = @"kHadQuitOtherRoomKey";//是否退出
|
||||
- (StageView *)stageView {
|
||||
if (!_stageView) {
|
||||
_stageView = [[SocialStageView alloc] initWithDelegate:self];
|
||||
_stageView.alpha = 0;
|
||||
}
|
||||
return _stageView;
|
||||
}
|
||||
|
Reference in New Issue
Block a user