feat: 优化首页 tab 加载逻辑 | 补全 side menu 控制逻辑 | 基本完成 20 mic | 部分小需求 | 优化房间聊天气泡

This commit is contained in:
edwinQQQ
2024-12-28 15:41:56 +08:00
parent 2c5d72846d
commit 4abb686790
98 changed files with 3209 additions and 383 deletions

View File

@@ -41,7 +41,6 @@
#import "XPUserCardInfoModel.h"
///View
#import "BaseNavigationController.h"
#import "XPRoomActivityContainerView.h"
#import "XPRoomBackContainerView.h"
#import "XPRoomMenuContainerView.h"
#import "XPRoomQuickMessageContainView.h"
@@ -94,6 +93,7 @@
#import "XPSendGiftView.h"
#import "RoomSideMenu.h"
#import "RoomResourceManager.h"
UIKIT_EXTERN NSString * const kRoomGiftEffectUpdateNotificationKey;
UIKIT_EXTERN NSString * const kRoomMiniNotificationKey;
@@ -553,6 +553,14 @@ XPCandyTreeInsufficientBalanceViewDelegate>
}];
}
- (void)__layoutNineteenMicStage {
[self.stageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.trailing.mas_equalTo(self.view);
make.top.mas_equalTo(self.roomHeaderView.mas_bottom);
make.height.mas_equalTo(self.stageView.hightForStageView);
}];
}
- (void)__layoutFifteenMicStage {
[self.stageView mas_makeConstraints:^(MASConstraintMaker *make) {
make.leading.trailing.mas_equalTo(self.view);
@@ -829,11 +837,13 @@ XPCandyTreeInsufficientBalanceViewDelegate>
- (Class)stageViewClassForRoomInfo:(RoomInfoModel *)roomInfo {
if (roomInfo.roomModeType == RoomModeType_Open_Blind) {
return [DatingStageView class];
} else if (roomInfo.datingState == RoomDatingStateChangeType_Close &&
}
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 &&
}
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 &&
@@ -842,13 +852,12 @@ XPCandyTreeInsufficientBalanceViewDelegate>
}
} else if (roomInfo.type == RoomType_MiniGame) {
return [LittleGameScrollStageView class];
} else if (roomInfo.type == RoomType_19Mic) {
return [NineteenMicStageView class];
} else if (roomInfo.type == RoomType_20Mic) {
return [TwentyMicStageView class];
} else if (roomInfo.type == RoomType_15Mic) {
//#if DEBUG
// return [NineteenMicStageView class];
// return [TwentyMicStageView class];
//#endif
return [FifteenMicStageView class];
} else if (roomInfo.type == RoomType_10Mic) {
return [TenMicStageView class];
} else if (roomInfo.hadChangeRoomType && ![self.stageView isKindOfClass:[SocialStageView class]]) {
@@ -895,6 +904,7 @@ XPCandyTreeInsufficientBalanceViewDelegate>
make.trailing.mas_equalTo(self.sideMenu.mas_leading).offset(-10);
}];
[self.sideMenu displayForMiniGame];
[self.sideMenu mas_remakeConstraints:^(MASConstraintMaker *make) {
make.trailing.mas_equalTo(self.view);
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
@@ -916,12 +926,26 @@ XPCandyTreeInsufficientBalanceViewDelegate>
make.trailing.mas_equalTo(self.sideMenu.mas_leading).offset(-10);
}];
[self.sideMenu 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);
}];
if (self.roomInfo.type == RoomType_19Mic || self.roomInfo.type == RoomType_20Mic) {
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
// [self.sideMenu displayExpandButton:YES];
// });
[self.sideMenu mas_remakeConstraints:^(MASConstraintMaker *make) {
make.trailing.mas_equalTo(self.view);
make.height.mas_equalTo(160);
make.bottom.mas_equalTo(self.quickMessageContainerView.mas_top).offset(-5);
make.width.mas_equalTo(87);
}];
} else {
// [self.sideMenu displayExpandButton:NO];
[self.sideMenu 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;
}
@@ -981,6 +1005,10 @@ XPCandyTreeInsufficientBalanceViewDelegate>
return;
}
_roomInfo = roomInfo;
[[RoomResourceManager sharedManager] updateCurrentSkinID:roomInfo.usedMicSkinId
effectID:roomInfo.usedMicEffectId];
[self.sideMenu updateView];
}
@@ -1878,15 +1906,18 @@ XPCandyTreeInsufficientBalanceViewDelegate>
} else {
if (self.roomInfo.type == RoomType_Anchor) {
[self changeStageViewOnAnchorRoom];
} else if (self.roomInfo.type == RoomType_20Mic) {
[self __layoutTwentyMicStage];
[self changeStageViewOnRoomUpdate];
[self.twentyMicStageView onRoomUpdate];
} else if (self.roomInfo.type == RoomType_19Mic) {
[self __layoutNineteenMicStage];
[self changeStageViewOnRoomUpdate];
[self.nineteenMicStageView onRoomUpdate];
} else if (self.roomInfo.type == RoomType_15Mic) {
[self __layoutFifteenMicStage];
[self changeStageViewOnRoomUpdate];
//#if DEBUG
// [self.twentyMicStageView onRoomUpdate];
// [self.nineteenMicStageView onRoomUpdate];
//#else
[self.fifteenMicStageView onRoomUpdate];
//#endif
} else if (self.roomInfo.type == RoomType_10Mic) {
[self __layoutTenMicStage];
[self changeStageViewOnRoomUpdate];
@@ -2074,7 +2105,6 @@ XPCandyTreeInsufficientBalanceViewDelegate>
}
} else if (attachment.first == CustomMessageType_Custom_Room_Background) {
if (attachment.second == Custom_Message_Sub_Custom_Room_Background) {
// TODO:
if ([attachment.data isKindOfClass:[NSDictionary class]]) {
NSString *url = attachment.data[@"url"];
if (![NSString isEmpty:url]) {
@@ -2082,7 +2112,18 @@ XPCandyTreeInsufficientBalanceViewDelegate>
[self.backContainerView onRoomUpdate];
}
}
}
} else if (attachment.first == CustomMessageType_RoomLevel_Update) {
if (attachment.second == Custom_Message_Sub_RoomLevel_Update) {
if ([attachment.data isKindOfClass:[NSDictionary class]]) {
NSString *url = attachment.data[@"roomLevelIcon"];
NSNumber *roomLevel = attachment.data[@"roomLevel"];
if (![NSString isEmpty:url] && roomLevel.integerValue > self.roomHeaderView.tag) {
self.roomHeaderView.tag = roomLevel.integerValue;
[self.roomHeaderView updateLevel:url];
self.roomInfo.roomLevelIcon = url;
}
}
}
}
[self.messageContainerView handleNIMCustomMessage:message];